ondc-code-generator 0.9.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 (56) 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/alpha/possible-json-paths.json +34134 -0
  28. package/alpha/table/rag-table-docs/confirm.md +3 -0
  29. package/alpha/table/rag-table-docs/init.md +3 -0
  30. package/alpha/table/rag-table-docs/on_confirm.md +3 -0
  31. package/alpha/table/rag-table-docs/on_init.md +3 -0
  32. package/alpha/table/rag-table-docs/on_search.md +3 -0
  33. package/alpha/table/rag-table-docs/on_select.md +3 -0
  34. package/alpha/table/rag-table-docs/on_status.md +3 -0
  35. package/alpha/table/rag-table-docs/on_update.md +3 -0
  36. package/alpha/table/rag-table-docs/search.md +3 -0
  37. package/alpha/table/rag-table-docs/select.md +3 -0
  38. package/alpha/table/rag-table-docs/status.md +3 -0
  39. package/alpha/table/rag-table-docs/update.md +3 -0
  40. package/dist/generator/config-compiler.d.ts +16 -2
  41. package/dist/generator/config-compiler.js +45 -19
  42. package/dist/generator/generators/classes/abstract-generator.d.ts +2 -0
  43. package/dist/generator/generators/documentation/markdown-message-generator.js +4 -1
  44. package/dist/generator/generators/documentation/md-generator.d.ts +2 -1
  45. package/dist/generator/generators/documentation/md-generator.js +3 -2
  46. package/dist/generator/generators/go/go-generator.js +1 -1
  47. package/dist/generator/generators/javascript/js-generator.js +1 -1
  48. package/dist/generator/generators/python/py-generator.js +1 -1
  49. package/dist/generator/generators/rag/rag-generator.d.ts +39 -28
  50. package/dist/generator/generators/rag/rag-generator.js +149 -103
  51. package/dist/generator/generators/rag/rag-table-generator.d.ts +7 -1
  52. package/dist/generator/generators/rag/rag-table-generator.js +24 -8
  53. package/dist/generator/generators/typescript/ts-generator.js +1 -1
  54. package/dist/index.test.js +12 -3
  55. package/dist/types/build.d.ts +4 -0
  56. package/package.json +1 -1
@@ -0,0 +1,522 @@
1
+ ---
2
+ action: on_select
3
+ codeName: L1validations
4
+ numTests: 61
5
+ generated: 2026-03-10
6
+ domain: ONDC:FIS12
7
+ version: 2.3.0
8
+ ---
9
+
10
+ # L1validations — `on_select` Validations
11
+
12
+ These are the validation rules applied when processing the `on_select` API call in the L1validations flow.
13
+ There are **61** validation rules organized into **7** top-level group(s).
14
+
15
+ ---
16
+ ## ON_SELECT_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_SELECT_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_SELECT_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_SELECT_CONTEXT > CONTEXT_REQUIRED | type: leaf`
40
+
41
+ - $.context.domain must be present in the payload
42
+
43
+ **REQUIRED_CONTEXT_TIMESTAMP**
44
+ `group: ON_SELECT_CONTEXT > CONTEXT_REQUIRED | type: leaf`
45
+
46
+ - $.context.timestamp must be present in the payload
47
+
48
+ **REQUIRED_CONTEXT_BAP_ID**
49
+ `group: ON_SELECT_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_SELECT_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_SELECT_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_SELECT_CONTEXT > CONTEXT_REQUIRED | type: leaf`
65
+
66
+ - $.context.message_id must be present in the payload
67
+
68
+ **REQUIRED_CONTEXT_VERSION**
69
+ `group: ON_SELECT_CONTEXT > CONTEXT_REQUIRED | type: leaf`
70
+
71
+ - $.context.version must be present in the payload
72
+
73
+ **REQUIRED_CONTEXT_TTL**
74
+ `group: ON_SELECT_CONTEXT > CONTEXT_REQUIRED | type: leaf`
75
+
76
+ - $.context.ttl must be present in the payload
77
+
78
+ **REQUIRED_CONTEXT_BPP_ID**
79
+ `group: ON_SELECT_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_SELECT_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_SELECT_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_SELECT_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_SELECT_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_SELECT_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_SELECT_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_SELECT_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_SELECT_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_SELECT_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_SELECT_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
+ ## ON_SELECT_PROVIDER
175
+
176
+ 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.
177
+
178
+ > **Skip if:**
179
+ > - $.message.order.provider.id must **not** be present in the payload
180
+
181
+ ---
182
+
183
+ **ON_SELECT_PROVIDER_ID**
184
+ `group: ON_SELECT_PROVIDER | type: leaf`
185
+
186
+ - $.message.order.provider.id must be present in the payload
187
+
188
+ **ON_SELECT_PROVIDER_NAME**
189
+ `group: ON_SELECT_PROVIDER | type: leaf`
190
+
191
+ - $.message.order.provider.descriptor.name must be present in the payload
192
+
193
+ **ON_SELECT_PROVIDER_IMAGES_URL**
194
+ `group: ON_SELECT_PROVIDER | type: leaf`
195
+
196
+ - $.message.order.provider.descriptor.images[*].url must be present in the payload
197
+
198
+ **ON_SELECT_PROVIDER_IMAGES_SIZE_TYPE**
199
+ `group: ON_SELECT_PROVIDER | type: leaf`
200
+
201
+ - $.message.order.provider.descriptor.images[*].size_type must be present in the payload
202
+
203
+ ---
204
+
205
+ ## ON_SELECT_PROVIDER_TAGS
206
+
207
+ This is a group of **3** sub-validation(s) that all must pass: VALID_PROVODER_TAGS, REQUIRED_CONTACT_INFO, and REQUIRED_LSP_INFO.
208
+
209
+ ---
210
+
211
+ **VALID_PROVODER_TAGS**
212
+ `group: ON_SELECT_PROVIDER_TAGS | type: leaf`
213
+
214
+ - All elements of $.message.order.provider.tags[*].descriptor.code must be in ["CONTACT_INFO", "LSP_INFO"]
215
+
216
+ > **Skip if:**
217
+ > - $.message.order.provider.tags[*].descriptor.code is not in the payload
218
+
219
+ **REQUIRED_CONTACT_INFO**
220
+ `group: ON_SELECT_PROVIDER_TAGS | type: leaf | scope: $.message.order.provider.tags[?(@.descriptor.code == CONTACT_INFO)]`
221
+
222
+ - 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"]
223
+
224
+ **REQUIRED_LSP_INFO**
225
+ `group: ON_SELECT_PROVIDER_TAGS | type: leaf | scope: $.message.order.provider.tags[?(@.descriptor.code == LSP_INFO)]`
226
+
227
+ - 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"]
228
+
229
+ ---
230
+
231
+ ## ON_SELECT_ITEMS
232
+
233
+ This group contains **1** sub-group(s)/validation(s): REQUIRED_ITEMS.
234
+
235
+ ---
236
+
237
+ ### REQUIRED_ITEMS
238
+
239
+ 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.
240
+
241
+ ---
242
+
243
+ **REQUIRED_ITEM_ID**
244
+ `group: ON_SELECT_ITEMS > REQUIRED_ITEMS | type: leaf`
245
+
246
+ - $.message.order.items[*].id must be present in the payload
247
+
248
+ **REQUIRED_PARENT_ITEM_ID**
249
+ `group: ON_SELECT_ITEMS > REQUIRED_ITEMS | type: leaf`
250
+
251
+ - $.message.order.items[*].parent_item_id must be present in the payload
252
+
253
+ **REQUIRED_ITEM_DESCRIPTOR_CODE**
254
+ `group: ON_SELECT_ITEMS > REQUIRED_ITEMS | type: leaf`
255
+
256
+ - $.message.order.items[*].descriptor.code must be present in the payload
257
+
258
+ **REQUIRED_ITEM_CATEGORY_ID**
259
+ `group: ON_SELECT_ITEMS > REQUIRED_ITEMS | type: leaf`
260
+
261
+ - $.message.order.items[*].category_ids[*] must be present in the payload
262
+
263
+ **ON_SEARCH_ITEM_PRICE_CURRENCY**
264
+ `group: ON_SELECT_ITEMS > REQUIRED_ITEMS | type: leaf`
265
+
266
+ - $.message.order.items[*].price.currency must be present in the payload
267
+
268
+ **ON_SEARCH_ITEM_PRICE_VALUE**
269
+ `group: ON_SELECT_ITEMS > REQUIRED_ITEMS | type: leaf`
270
+
271
+ - $.message.order.items[*].price.value must be present in the payload
272
+
273
+ **ON_SELECT_ITEM_FULFILLMENT_IDS**
274
+ `group: ON_SELECT_ITEMS > REQUIRED_ITEMS | type: leaf`
275
+
276
+ - $.message.order.items[*].fulfillment_ids[*] must be present in the payload
277
+
278
+ #### REQUIRED_XINPUT_FIELDS
279
+
280
+ This group contains **8** sub-group(s)/validation(s): REQUIRED_HEAD_CODE, REQUIRED_HEAD_NAME, REQUIRED_FORM_HEADINGS, REQUIRED_FORM_ID, REQUIRED_FORM_MIME_TYPE, REQUIRED_FORM_RESPONSE, ON_SELECT_LOAN_AMOUNT_FORM, and VALID_FORM_HEADINGS.
281
+
282
+ > **Skip if:**
283
+ > - $.message.order.items[*].xinput.form.id must **not** be present in the payload
284
+
285
+ ---
286
+
287
+ **REQUIRED_HEAD_CODE**
288
+ `group: ON_SELECT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS | type: leaf`
289
+
290
+ - $.message.order.items[*].xinput.head.descriptor.code must be present in the payload
291
+
292
+ > **Skip if:**
293
+ > - $.message.order.items[*].xinput.form_response.submission_id is in the payload
294
+
295
+ **REQUIRED_HEAD_NAME**
296
+ `group: ON_SELECT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS | type: leaf`
297
+
298
+ - $.message.order.items[*].xinput.head.descriptor.name must be present in the payload
299
+
300
+ > **Skip if:**
301
+ > - $.message.order.items[*].xinput.form_response.submission_id is in the payload
302
+
303
+ **REQUIRED_FORM_HEADINGS**
304
+ `group: ON_SELECT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS | type: leaf`
305
+
306
+ - $.message.order.items[*].xinput.head.headings[*] must be present in the payload
307
+
308
+ > **Skip if:**
309
+ > - $.message.order.items[*].xinput.form_response.submission_id is in the payload
310
+
311
+ **REQUIRED_FORM_ID**
312
+ `group: ON_SELECT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS | type: leaf`
313
+
314
+ - $.message.order.items[*].xinput.form.id must be present in the payload
315
+
316
+ **REQUIRED_FORM_MIME_TYPE**
317
+ `group: ON_SELECT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS | type: leaf`
318
+
319
+ - $.message.order.items[*].xinput.form.mime_type must be present in the payload
320
+
321
+ > **Skip if:**
322
+ > - $.message.order.items[*].xinput.form_response.submission_id is in the payload
323
+
324
+ ##### REQUIRED_FORM_RESPONSE
325
+
326
+ This is a group of **2** sub-validation(s) that all must pass: REQUIRED_FORM_STATUS and REQUIRED_FORM_SUBMISSION_ID.
327
+
328
+ > **Skip if:**
329
+ > - $.message.order.items[*].xinput.form_response.submission_id must **not** be present in the payload
330
+
331
+ ---
332
+
333
+ **REQUIRED_FORM_STATUS**
334
+ `group: ON_SELECT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS > REQUIRED_FORM_RESPONSE | type: leaf`
335
+
336
+ - $.message.order.items[*].xinput.form_response.status must be present in the payload
337
+
338
+ **REQUIRED_FORM_SUBMISSION_ID**
339
+ `group: ON_SELECT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS > REQUIRED_FORM_RESPONSE | type: leaf`
340
+
341
+ - $.message.order.items[*].xinput.form_response.submission_id must be present in the payload
342
+
343
+ ##### ON_SELECT_LOAN_AMOUNT_FORM
344
+
345
+ This is a group of **2** sub-validation(s) that all must pass: REQUIRED_REQUEST_AMOUNT and REQUIRED_REQUEST_TERM.
346
+
347
+ > **Skip if:**
348
+ > - $.message.order.items[*].xinput.head.descriptor.code must **not** equal ["SET_LOAN_AMOUNT"]
349
+
350
+ ---
351
+
352
+ **REQUIRED_REQUEST_AMOUNT**
353
+ `group: ON_SELECT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS > ON_SELECT_LOAN_AMOUNT_FORM | type: leaf`
354
+
355
+ - $._EXTERNAL._SELF.message.order.items[*].xinput.head.descriptor.code must be present in the payload
356
+
357
+ **REQUIRED_REQUEST_TERM**
358
+ `group: ON_SELECT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS > ON_SELECT_LOAN_AMOUNT_FORM | type: leaf`
359
+
360
+ - $._EXTERNAL._SELF.message.order.items[*].xinput.head.descriptor.code must be present in the payload
361
+
362
+ ##### VALID_FORM_HEADINGS
363
+
364
+ This is a group of **1** sub-validation(s) that all must pass: REQUIRED_FORM_HEADINGS.
365
+
366
+ ---
367
+
368
+ **REQUIRED_FORM_HEADINGS**
369
+ `group: ON_SELECT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS > VALID_FORM_HEADINGS | type: leaf`
370
+
371
+ - All elements of $.message.order.items[*].xinput.head.headings[*] must be in ["INDIVIDUAL_KYC", "BUSINESS_KYC", "SET_LOAN_AMOUNT"]
372
+
373
+ > **Skip if:**
374
+ > - $.message.order.items[*].xinput.form_response.submission_id is in the payload
375
+
376
+ ---
377
+
378
+ ## ON_SELECT_ITEM_TAGS
379
+
380
+ This is a group of **2** sub-validation(s) that all must pass: REQUIRED_LOAN_INFO and REQUIRED_LOAN_OFFER.
381
+
382
+ > **Skip if:**
383
+ > **All of the following must be true:**
384
+ > - $.message.order.items[*].tags[*].descriptor.code must **not** be present in the payload
385
+ > - Not all elements of $.message.order.items[*].tags[*].descriptor.code may be in ["LOAN_INFO", "LOAN_OFFER"]
386
+
387
+ ---
388
+
389
+ **REQUIRED_LOAN_INFO**
390
+ `group: ON_SELECT_ITEM_TAGS | type: leaf | scope: $.message.order.items[*].tags[?(@.descriptor.code == LOAN_INFO)]`
391
+
392
+ - 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"]
393
+
394
+ **REQUIRED_LOAN_OFFER**
395
+ `group: ON_SELECT_ITEM_TAGS | type: leaf | scope: $.message.order.items[*].tags[?(@.descriptor.code == LOAN_OFFER)]`
396
+
397
+ - 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"]
398
+
399
+ ---
400
+
401
+ ## ON_SELECT_FULFILLMENTS
402
+
403
+ This group contains **3** sub-group(s)/validation(s): REQUIRED_FULFILLMENT_ITEMS, VALID_FULFILLMENT_ITEMS, and VALID_FULFILLMENT_TAGS.
404
+
405
+ ---
406
+
407
+ ### REQUIRED_FULFILLMENT_ITEMS
408
+
409
+ This is a group of **2** sub-validation(s) that all must pass: REQUIRED_FULFILLMENT_ID and REQUIRED_FULFILLMENT_TYPE.
410
+
411
+ ---
412
+
413
+ **REQUIRED_FULFILLMENT_ID**
414
+ `group: ON_SELECT_FULFILLMENTS > REQUIRED_FULFILLMENT_ITEMS | type: leaf`
415
+
416
+ - $.message.order.fulfillments[*].id must be present in the payload
417
+
418
+ **REQUIRED_FULFILLMENT_TYPE**
419
+ `group: ON_SELECT_FULFILLMENTS > REQUIRED_FULFILLMENT_ITEMS | type: leaf`
420
+
421
+ - $.message.order.fulfillments[*].type must be present in the payload
422
+
423
+ ### VALID_FULFILLMENT_ITEMS
424
+
425
+ This is a group of **1** sub-validation(s) that all must pass: VALID_FULFILLMENT_TYPE.
426
+
427
+ ---
428
+
429
+ **VALID_FULFILLMENT_TYPE**
430
+ `group: ON_SELECT_FULFILLMENTS > VALID_FULFILLMENT_ITEMS | type: leaf`
431
+
432
+ - All elements of $.message.order.fulfillments[*].type must be in ["ONLINE", "SEMI_ONLINE"]
433
+
434
+ > **Skip if:**
435
+ > - $.message.order.fulfillments[*].type is not in the payload
436
+
437
+ ### VALID_FULFILLMENT_TAGS
438
+
439
+ This is a group of **2** sub-validation(s) that all must pass: REQUIRED_FULFILLMENT_TAGS and REQUIRED_CHECKLISTS_ITEM.
440
+
441
+ ---
442
+
443
+ **REQUIRED_FULFILLMENT_TAGS**
444
+ `group: ON_SELECT_FULFILLMENTS > VALID_FULFILLMENT_TAGS | type: leaf`
445
+
446
+ - All elements of $.message.order.fulfillments[*].tags[*].descriptor.code must be in ["CHECKLISTS"]
447
+
448
+ > **Skip if:**
449
+ > - $.message.order.fulfillments[*].tags[*].descriptor.code is not in the payload
450
+
451
+ **REQUIRED_CHECKLISTS_ITEM**
452
+ `group: ON_SELECT_FULFILLMENTS > VALID_FULFILLMENT_TAGS | type: leaf | scope: $.message.order.fulfillments[*].tags[?(@.descriptor.code == CHECKLISTS)]`
453
+
454
+ - 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"]
455
+
456
+ ---
457
+
458
+ ## ON_SELECT_QUOTE
459
+
460
+ This group contains **2** sub-group(s)/validation(s): REQUIRED_COMMON_QUOTE_ITEMS and VALID_COMMON_QUOTE_ITEMS.
461
+
462
+ > **Skip if:**
463
+ > - $.message.order.quote.id must **not** be present in the payload
464
+
465
+ ---
466
+
467
+ ### REQUIRED_COMMON_QUOTE_ITEMS
468
+
469
+ 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.
470
+
471
+ ---
472
+
473
+ **REQUIRED_QUOTE_ID**
474
+ `group: ON_SELECT_QUOTE > REQUIRED_COMMON_QUOTE_ITEMS | type: leaf`
475
+
476
+ - $.message.order.quote.id must be present in the payload
477
+
478
+ **REQUIRED_QUOTE_PRICE_VALUE**
479
+ `group: ON_SELECT_QUOTE > REQUIRED_COMMON_QUOTE_ITEMS | type: leaf`
480
+
481
+ - $.message.order.quote.price.value must be present in the payload
482
+
483
+ **REQUIRED_QUOTE_PRICE_CURRENCY**
484
+ `group: ON_SELECT_QUOTE > REQUIRED_COMMON_QUOTE_ITEMS | type: leaf`
485
+
486
+ - $.message.order.quote.price.currency must be present in the payload
487
+
488
+ **REQUIRED_BREAKUP_TITLE**
489
+ `group: ON_SELECT_QUOTE > REQUIRED_COMMON_QUOTE_ITEMS | type: leaf`
490
+
491
+ - $.message.order.quote.breakup[*].title must be present in the payload
492
+
493
+ **REQUIRED_BREAKUP_PRICE_VALUE**
494
+ `group: ON_SELECT_QUOTE > REQUIRED_COMMON_QUOTE_ITEMS | type: leaf`
495
+
496
+ - $.message.order.quote.breakup[*].price.value must be present in the payload
497
+
498
+ **REQUIRED_BREAKUP_PRICE_CURRENCY**
499
+ `group: ON_SELECT_QUOTE > REQUIRED_COMMON_QUOTE_ITEMS | type: leaf`
500
+
501
+ - $.message.order.quote.breakup[*].price.currency must be present in the payload
502
+
503
+ **REQUIRED_QUOTE_TTL**
504
+ `group: ON_SELECT_QUOTE > REQUIRED_COMMON_QUOTE_ITEMS | type: leaf`
505
+
506
+ - $.message.order.quote.ttl must be present in the payload
507
+
508
+ ### VALID_COMMON_QUOTE_ITEMS
509
+
510
+ This is a group of **2** sub-validation(s) that all must pass: VALID_ENUM_BREAKUP_PRICE_CURRENCY and VALID_ENUM_BREAKUP_TITLE.
511
+
512
+ ---
513
+
514
+ **VALID_ENUM_BREAKUP_PRICE_CURRENCY**
515
+ `group: ON_SELECT_QUOTE > VALID_COMMON_QUOTE_ITEMS | type: leaf`
516
+
517
+ - At least one of $.message.order.quote.breakup[*].price.currency must be in ["INR"]
518
+
519
+ **VALID_ENUM_BREAKUP_TITLE**
520
+ `group: ON_SELECT_QUOTE > VALID_COMMON_QUOTE_ITEMS | type: leaf`
521
+
522
+ - 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"]