api_connect_nodejs 2.0.1 → 2.0.2

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 (39) hide show
  1. package/README.md +30 -30
  2. package/conf/settings.ini +19 -19
  3. package/enums/actionType.js +10 -10
  4. package/enums/assetType.js +25 -25
  5. package/enums/chartExchangeType.js +15 -15
  6. package/enums/chartType.js +13 -13
  7. package/enums/eodIntervalType.js +11 -11
  8. package/enums/exchangeType.js +14 -14
  9. package/enums/intradayIntervalType.js +14 -14
  10. package/enums/marketCapType.js +12 -12
  11. package/enums/orderType.js +21 -21
  12. package/enums/productType.js +24 -24
  13. package/enums/segementsType.js +13 -13
  14. package/enums/streamingConstants.js +11 -11
  15. package/enums/termsType.js +12 -12
  16. package/enums/validity.js +22 -22
  17. package/index.js +3 -3
  18. package/package.json +25 -25
  19. package/src/apiConnect.js +2430 -2424
  20. package/src/apiUtils.js +129 -129
  21. package/src/chart.js +258 -258
  22. package/src/config.js +326 -326
  23. package/src/feed/feed.js +139 -139
  24. package/src/feed/liveNewsFeed.js +112 -112
  25. package/src/feed/ordersFeed.js +124 -124
  26. package/src/feed/quotesFeed.js +121 -121
  27. package/src/http.js +197 -197
  28. package/src/iniparser.js +42 -42
  29. package/src/liveNews.js +362 -362
  30. package/src/logger.js +16 -16
  31. package/src/order.js +48 -48
  32. package/src/researchCalls.js +175 -175
  33. package/src/watchlist.js +378 -378
  34. package/validations/apiConnectValidator.js +508 -508
  35. package/validations/chartValidator.js +85 -85
  36. package/validations/feedStreamerValidator.js +68 -68
  37. package/validations/liveNewsValidator.js +60 -60
  38. package/validations/researchCallsValidator.js +86 -86
  39. package/validations/watchlistValidator.js +60 -60
@@ -1,508 +1,508 @@
1
- const Joi = require("joi");
2
- const enumExchangeType = require("../enums/exchangeType");
3
- const enumActionType = require("../enums/actionType");
4
- const enumValidity = require("../enums/validity");
5
- const enumOrderType = require("../enums/orderType");
6
- const enumProductType = require("../enums/productType");
7
-
8
- const exchangeTypeArray = Object.values(enumExchangeType);
9
- const actionTypeArray = Object.values(enumActionType);
10
- const validityArray = Object.values(enumValidity);
11
- const orderTypeArray = Object.values(enumOrderType);
12
- const productTypeArray = Object.values(enumProductType);
13
-
14
- validatePlaceTrade = (object) => {
15
- const placeTradeSchema = Joi.object({
16
- trdSym: Joi.string().required(),
17
- exc: Joi.string()
18
- .valid(...exchangeTypeArray)
19
- .required(),
20
- action: Joi.string()
21
- .valid(...actionTypeArray)
22
- .required(),
23
- dur: Joi.string()
24
- .valid(...validityArray)
25
- .required(),
26
- ordTyp: Joi.string()
27
- .valid(...orderTypeArray)
28
- .required(),
29
- qty: Joi.number().required(),
30
- sym: Joi.string().required(),
31
- lmPrc: Joi.number().required(),
32
- dscQty: Joi.string(),
33
- trgPrc: Joi.string(),
34
- prdCode: Joi.string().valid(...productTypeArray),
35
- }).options({ abortEarly: false });
36
-
37
- return placeTradeSchema.validate(object);
38
- };
39
-
40
- validateModifyTrade = (object) => {
41
- const modifyTradeSchema = Joi.object({
42
- trdSym: Joi.string().required(),
43
- exc: Joi.string()
44
- .valid(...exchangeTypeArray)
45
- .required(),
46
- action: Joi.string()
47
- .valid(...actionTypeArray)
48
- .required(),
49
- dur: Joi.string()
50
- .valid(...validityArray)
51
- .required(),
52
- ordTyp: Joi.string()
53
- .valid(...orderTypeArray)
54
- .required(),
55
- qty: Joi.number().required(),
56
- dscQty: Joi.string(),
57
- sym: Joi.string().required(),
58
- lmPrc: Joi.number().required(),
59
- trgPrc: Joi.string(),
60
- prdCode: Joi.string()
61
- .valid(...productTypeArray)
62
- .required(),
63
- nstOID: Joi.string().required(),
64
- }).options({ abortEarly: false });
65
-
66
- return modifyTradeSchema.validate(object);
67
- };
68
-
69
- validateCancelPlaceTrade = (object) => {
70
- const cancelPlaceTradeSchema = Joi.object({
71
- nstOID: Joi.string().required(),
72
- exc: Joi.string()
73
- .valid(...exchangeTypeArray)
74
- .required(),
75
- ordTyp: Joi.string()
76
- .valid(...orderTypeArray)
77
- .required(),
78
- prdCode: Joi.string()
79
- .valid(...productTypeArray)
80
- .required(),
81
- }).options({ abortEarly: false });
82
-
83
- return cancelPlaceTradeSchema.validate(object);
84
- };
85
-
86
- validatePlaceGtcGtdTrade = (object) => {
87
- const PlaceGtcGtdTradeSchema = Joi.object({
88
- trdSym: Joi.string().required(),
89
- exc: Joi.string()
90
- .valid(...exchangeTypeArray)
91
- .required(),
92
- action: Joi.string()
93
- .valid(...actionTypeArray)
94
- .required(),
95
- dur: Joi.string()
96
- .valid(...validityArray)
97
- .required(),
98
- ordTyp: Joi.string()
99
- .valid(...orderTypeArray)
100
- .required(),
101
- qty: Joi.number().required(),
102
- lmPrc: Joi.number().required(),
103
- prdCode: Joi.string()
104
- .valid(...productTypeArray)
105
- .required(),
106
- dtDays: Joi.string().required(),
107
- sym: Joi.string().required(),
108
- }).options({ abortEarly: false });
109
-
110
- return PlaceGtcGtdTradeSchema.validate(object);
111
- };
112
-
113
- validatePlaceCoverTrade = (object) => {
114
- const placeCoverTradeSchema = Joi.object({
115
- trdSym: Joi.string().required(),
116
- exc: Joi.string()
117
- .valid(...exchangeTypeArray)
118
- .required(),
119
- action: Joi.string()
120
- .valid(...actionTypeArray)
121
- .required(),
122
- dur: Joi.string()
123
- .valid(...validityArray)
124
- .required(),
125
- ordTyp: Joi.string()
126
- .valid(...orderTypeArray)
127
- .required(),
128
- qty: Joi.number().required(),
129
- dscQty: Joi.string(),
130
- sym: Joi.string().required(),
131
- lmPrc: Joi.number().required(),
132
- trgPrc: Joi.string(),
133
- prdCode: Joi.string().valid(...productTypeArray),
134
- }).options({ abortEarly: false });
135
-
136
- return placeCoverTradeSchema.validate(object);
137
- };
138
-
139
- validateModifyCoverTrade = (object) => {
140
- const modifyCovertrade = Joi.object({
141
- trdSym: Joi.string().required(),
142
- exc: Joi.string()
143
- .valid(...exchangeTypeArray)
144
- .required(),
145
- action: Joi.string()
146
- .valid(...actionTypeArray)
147
- .required(),
148
- dur: Joi.string()
149
- .valid(...validityArray)
150
- .required(),
151
- ordTyp: Joi.string()
152
- .valid(...orderTypeArray)
153
- .required(),
154
- qty: Joi.number().required(),
155
- sym: Joi.string().required(),
156
- dscQty: Joi.string(),
157
- lmPrc: Joi.number().required(),
158
- trgPrc: Joi.string(),
159
- prdCode: Joi.string().valid(...productTypeArray),
160
- nstOID: Joi.string().required(),
161
- }).options({ abortEarly: false });
162
-
163
- return modifyCovertrade.validate(object);
164
- };
165
-
166
- validateExitCoverTrade = (orderId) => {
167
- const object = {
168
- nstOID: orderId,
169
- };
170
- const exitCoverTradeSchema = Joi.object({
171
- nstOID: Joi.string().required(),
172
- }).options({ abortEarly: false });
173
-
174
- return exitCoverTradeSchema.validate(object);
175
- };
176
-
177
- validatePlaceAMOTrade = (object) => {
178
- const placeAMOTradeSchema = Joi.object({
179
- trdSym: Joi.string().required(),
180
- exc: Joi.string()
181
- .valid(...exchangeTypeArray)
182
- .required(),
183
- action: Joi.string()
184
- .valid(...actionTypeArray)
185
- .required(),
186
- dur: Joi.string()
187
- .valid(...validityArray)
188
- .required(),
189
- ordTyp: Joi.string()
190
- .valid(...orderTypeArray)
191
- .required(),
192
- qty: Joi.number().required(),
193
- dscQty: Joi.string(),
194
- sym: Joi.string().required(),
195
- lmPrc: Joi.number().required(),
196
- trgPrc: Joi.string(),
197
- prdCode: Joi.string().valid(...productTypeArray),
198
- }).options({ abortEarly: false });
199
-
200
- return placeAMOTradeSchema.validate(object);
201
- };
202
-
203
- validateModifyAMOTrade = (object) => {
204
- const modifyAMOTradeSchema = Joi.object({
205
- trdSym: Joi.string().required(),
206
- exc: Joi.string()
207
- .valid(...exchangeTypeArray)
208
- .required(),
209
- action: Joi.string()
210
- .valid(...actionTypeArray)
211
- .required(),
212
- dur: Joi.string()
213
- .valid(...validityArray)
214
- .required(),
215
- ordTyp: Joi.string()
216
- .valid(...orderTypeArray)
217
- .required(),
218
- qty: Joi.number().required(),
219
- dscQty: Joi.string(),
220
- lmPrc: Joi.number().required(),
221
- trgPrc: Joi.string(),
222
- prdCode: Joi.string().valid(...productTypeArray),
223
- nstOID: Joi.string().required(),
224
- sym: Joi.string().required(),
225
- }).options({ abortEarly: false });
226
-
227
- return modifyAMOTradeSchema.validate(object);
228
- };
229
-
230
- validateCancelAMOTrade = (object) => {
231
- const cancelAMOTradeSchema = Joi.object({
232
- nstOID: Joi.string().required(),
233
- exc: Joi.string()
234
- .valid(...exchangeTypeArray)
235
- .required(),
236
- ordTyp: Joi.string()
237
- .valid(...orderTypeArray)
238
- .required(),
239
- prdCode: Joi.string()
240
- .valid(...productTypeArray)
241
- .required(),
242
- }).options({ abortEarly: false });
243
-
244
- return cancelAMOTradeSchema.validate(object);
245
- };
246
-
247
- validateConvertPosition = (object) => {
248
- const ConvertPositionSchema = Joi.object({
249
- nstOID: Joi.string().required(),
250
- flID: Joi.string().required(),
251
- prdCodeCh: Joi.string().required(),
252
- prdCode: Joi.string()
253
- .valid(...productTypeArray)
254
- .required(),
255
- exc: Joi.string()
256
- .valid(...exchangeTypeArray)
257
- .required(),
258
- ordTyp: Joi.string()
259
- .valid(...orderTypeArray)
260
- .required(),
261
- }).options({ abortEarly: false });
262
-
263
- return ConvertPositionSchema.validate(object);
264
- };
265
-
266
- validatePlaceMF = (object) => {
267
- const placeMFSchema = Joi.object({
268
- token: Joi.string().required(),
269
- isin: Joi.string().required(),
270
- txnTyp: Joi.string().required(),
271
- clientCode: Joi.string().required(),
272
- qty: Joi.number().required(),
273
- amt: Joi.number().positive().required(),
274
- reInvFlg: Joi.string().required(),
275
- folioNo: Joi.any().when("txnTyp", {
276
- switch: [
277
- { is: "SIP", then: Joi.string().required() },
278
- { is: "XSIP", then: Joi.string().required() },
279
- ],
280
- otherwise: Joi.string().allow(''),
281
- }),
282
- schemeName: Joi.string().required(),
283
- strtDt: Joi.string().required(),
284
- endDt: Joi.string().required(),
285
- gfot: Joi.string().required(),
286
- schemePlan: Joi.string().required(),
287
- schemeCode: Joi.string().required(),
288
- sipFrq: Joi.string().required(),
289
- }).options({ abortEarly: false });
290
-
291
- return placeMFSchema.validate(object);
292
- };
293
-
294
- validateModifyMF = (object) => {
295
- const modifyMFSchema = Joi.object({
296
- token: Joi.string().required(),
297
- isin: Joi.string().required(),
298
- txnTyp: Joi.string().required(),
299
- clientCode: Joi.string().required(),
300
- qty: Joi.number().required(),
301
- amt: Joi.number().positive().required(),
302
- reInvFlg: Joi.string().required(),
303
- folioNo: Joi.any().when("txnTyp", {
304
- switch: [
305
- { is: "SIP", then: Joi.string().required() },
306
- { is: "XSIP", then: Joi.string().required() },
307
- ],
308
- otherwise: Joi.string().allow(''),
309
- }),
310
- schemeName: Joi.string().required(),
311
- strtDt: Joi.string().required(),
312
- endDt: Joi.string().required(),
313
- sipFrq: Joi.string().required(),
314
- gfot: Joi.string().required(),
315
- schemePlan: Joi.string().required(),
316
- schemeCode: Joi.string().required(),
317
- txnId: Joi.string().required(),
318
- }).options({ abortEarly: false });
319
-
320
- return modifyMFSchema.validate(object);
321
- };
322
-
323
- validateCancelMF = (object) => {
324
- const cancelMFSchema = Joi.object({
325
- token: Joi.string().required(),
326
- isin: Joi.string().required(),
327
- txnTyp: Joi.string().required(),
328
- clientCode: Joi.string().required(),
329
- qty: Joi.number().required(),
330
- amt: Joi.number().positive().required(),
331
- reInvFlg: Joi.string().required(),
332
- folioNo: Joi.any().when("txnTyp", {
333
- switch: [
334
- { is: "SIP", then: Joi.string().required() },
335
- { is: "XSIP", then: Joi.string().required() },
336
- ],
337
- otherwise: Joi.string().allow(''),
338
- }),
339
- schemeName: Joi.string().required(),
340
- strtDt: Joi.string().required(),
341
- endDt: Joi.string().required(),
342
- sipFrq: Joi.string().required(),
343
- gfot: Joi.string().required(),
344
- schemePlan: Joi.string().required(),
345
- schemeCode: Joi.string().required(),
346
- txnId: Joi.string().required(),
347
- }).options({ abortEarly: false });
348
-
349
- return cancelMFSchema.validate(object);
350
- };
351
-
352
- validatePlaceBracketTrade = (object) => {
353
- const PlaceBracketTradeSchema = Joi.object({
354
- exc: Joi.string()
355
- .valid(...exchangeTypeArray)
356
- .required(),
357
- sym: Joi.string().required(),
358
- trnsTyp: Joi.string().required(),
359
- qty: Joi.number().required(),
360
- dur: Joi.string().required(),
361
- dsQty: Joi.string().required(),
362
- prc: Joi.number().required(),
363
- slVal: Joi.string().required(),
364
- trlSl: Joi.string(),
365
- trlSlVal: Joi.string(),
366
- sqOffVal: Joi.string().required(),
367
- }).options({ abortEarly: false });
368
-
369
- return PlaceBracketTradeSchema.validate(object);
370
- };
371
-
372
- validateExitBracketTrade = (object) => {
373
- const exitBracketTradeSchema = Joi.object({
374
- nstOrdNo: Joi.string().required(),
375
- syomID: Joi.string().required(),
376
- sts: Joi.string().required(),
377
- }).options({ abortEarly: false });
378
-
379
- return exitBracketTradeSchema.validate(object);
380
- };
381
-
382
- validateOrderDetails = (orderId, exchange) => {
383
- const orderDetailsObj = {
384
- ordId: orderId,
385
- exc: exchange,
386
- };
387
- const orderDetailsSchema = Joi.object({
388
- ordId: Joi.string().required(),
389
- exc: Joi.string()
390
- .valid(...exchangeTypeArray)
391
- .required(),
392
- }).options({ abortEarly: false });
393
-
394
- return orderDetailsSchema.validate(orderDetailsObj);
395
- };
396
-
397
- validateOrderHistory = (startDate, endDate) => {
398
- const dateData = {
399
- start: startDate,
400
- end: endDate,
401
- };
402
- const orderHistorySchema = Joi.object({
403
- start: Joi.date().iso().required(),
404
- end: Joi.date().iso().min(Joi.ref("start")),
405
- }).options({ abortEarly: false });
406
-
407
- return orderHistorySchema.validate(dateData);
408
- };
409
-
410
- validatePlaceBasketTrade = (orderList) => {
411
- let orderListSchema = Joi.array()
412
- .items({
413
- exc: Joi.string().required(),
414
- trdSym: Joi.string().required(),
415
- action: Joi.string()
416
- .valid(...actionTypeArray)
417
- .required(),
418
- prdCode: Joi.string()
419
- .valid(...productTypeArray)
420
- .required(),
421
- ordTyp: Joi.string()
422
- .valid(...orderTypeArray)
423
- .required(),
424
- dur: Joi.string()
425
- .valid(...validityArray)
426
- .required(),
427
- price: Joi.string().required(),
428
- trgPrc: Joi.string().required(),
429
- qty: Joi.number().required(),
430
- dscQty: Joi.string().required(),
431
- GTDDate: Joi.string().required(),
432
- rmk: Joi.string().allow("").required(),
433
- sym: Joi.string().required(),
434
- })
435
- .options({ abortEarly: false });
436
-
437
- //const orderListArray = Joi.array().items(orderListSchema);
438
-
439
- return orderListSchema.validate(orderList);
440
- };
441
-
442
- validatePositionSquareOff = (orderList) => {
443
- let orderListSchema = Joi.object()
444
- .keys({
445
- trdSym: Joi.string().required(),
446
- exc: Joi.string().required(),
447
- action: Joi.string()
448
- .valid(...actionTypeArray)
449
- .required(),
450
- dur: Joi.string()
451
- .valid(...validityArray)
452
- .required(),
453
- ordTyp: Joi.string()
454
- .valid(...orderTypeArray)
455
- .required(),
456
- qty: Joi.string().required(),
457
- dscQty: Joi.string().required(),
458
- sym: Joi.string().required(),
459
- trgPrc: Joi.string().required(),
460
- price: Joi.string().required(),
461
- prdCode: Joi.string()
462
- .valid(...productTypeArray)
463
- .required(),
464
- rmk: Joi.string().required(),
465
- GTDDate: Joi.string().required(),
466
- })
467
- .options({ abortEarly: false });
468
-
469
- const orderListArray = Joi.array().items(orderListSchema);
470
-
471
- return Joi.validate(orderList, orderListArray);
472
- };
473
-
474
- validateMFOrderBook = (fromDate, toDate) => {
475
- const dateData = {
476
- fromDate: fromDate,
477
- toDate: toDate,
478
- };
479
- const mfOrderBookSchema = Joi.object({
480
- fromDate: Joi.date().iso().required(),
481
- toDate: Joi.date().iso().min(Joi.ref("fromDate")),
482
- }).options({ abortEarly: false });
483
-
484
- return mfOrderBookSchema.validate(dateData);
485
- };
486
-
487
- module.exports = {
488
- validatePlaceTrade,
489
- validateModifyTrade,
490
- validateCancelPlaceTrade,
491
- validatePlaceGtcGtdTrade,
492
- validatePlaceCoverTrade,
493
- validateModifyCoverTrade,
494
- validateExitCoverTrade,
495
- validatePlaceAMOTrade,
496
- validateModifyAMOTrade,
497
- validateCancelAMOTrade,
498
- validateConvertPosition,
499
- validatePlaceMF,
500
- validateModifyMF,
501
- validateCancelMF,
502
- validatePlaceBracketTrade,
503
- validateExitBracketTrade,
504
- validateOrderDetails,
505
- validateOrderHistory,
506
- validatePositionSquareOff,
507
- validateMFOrderBook,
508
- };
1
+ const Joi = require("joi");
2
+ const enumExchangeType = require("../enums/exchangeType");
3
+ const enumActionType = require("../enums/actionType");
4
+ const enumValidity = require("../enums/validity");
5
+ const enumOrderType = require("../enums/orderType");
6
+ const enumProductType = require("../enums/productType");
7
+
8
+ const exchangeTypeArray = Object.values(enumExchangeType);
9
+ const actionTypeArray = Object.values(enumActionType);
10
+ const validityArray = Object.values(enumValidity);
11
+ const orderTypeArray = Object.values(enumOrderType);
12
+ const productTypeArray = Object.values(enumProductType);
13
+
14
+ validatePlaceTrade = (object) => {
15
+ const placeTradeSchema = Joi.object({
16
+ trdSym: Joi.string().required(),
17
+ exc: Joi.string()
18
+ .valid(...exchangeTypeArray)
19
+ .required(),
20
+ action: Joi.string()
21
+ .valid(...actionTypeArray)
22
+ .required(),
23
+ dur: Joi.string()
24
+ .valid(...validityArray)
25
+ .required(),
26
+ ordTyp: Joi.string()
27
+ .valid(...orderTypeArray)
28
+ .required(),
29
+ qty: Joi.number().required(),
30
+ sym: Joi.string().required(),
31
+ lmPrc: Joi.number().required(),
32
+ dscQty: Joi.string(),
33
+ trgPrc: Joi.string(),
34
+ prdCode: Joi.string().valid(...productTypeArray),
35
+ }).options({ abortEarly: false });
36
+
37
+ return placeTradeSchema.validate(object);
38
+ };
39
+
40
+ validateModifyTrade = (object) => {
41
+ const modifyTradeSchema = Joi.object({
42
+ trdSym: Joi.string().required(),
43
+ exc: Joi.string()
44
+ .valid(...exchangeTypeArray)
45
+ .required(),
46
+ action: Joi.string()
47
+ .valid(...actionTypeArray)
48
+ .required(),
49
+ dur: Joi.string()
50
+ .valid(...validityArray)
51
+ .required(),
52
+ ordTyp: Joi.string()
53
+ .valid(...orderTypeArray)
54
+ .required(),
55
+ qty: Joi.number().required(),
56
+ dscQty: Joi.string(),
57
+ sym: Joi.string().required(),
58
+ lmPrc: Joi.number().required(),
59
+ trgPrc: Joi.string(),
60
+ prdCode: Joi.string()
61
+ .valid(...productTypeArray)
62
+ .required(),
63
+ nstOID: Joi.string().required(),
64
+ }).options({ abortEarly: false });
65
+
66
+ return modifyTradeSchema.validate(object);
67
+ };
68
+
69
+ validateCancelPlaceTrade = (object) => {
70
+ const cancelPlaceTradeSchema = Joi.object({
71
+ nstOID: Joi.string().required(),
72
+ exc: Joi.string()
73
+ .valid(...exchangeTypeArray)
74
+ .required(),
75
+ ordTyp: Joi.string()
76
+ .valid(...orderTypeArray)
77
+ .required(),
78
+ prdCode: Joi.string()
79
+ .valid(...productTypeArray)
80
+ .required(),
81
+ }).options({ abortEarly: false });
82
+
83
+ return cancelPlaceTradeSchema.validate(object);
84
+ };
85
+
86
+ validatePlaceGtcGtdTrade = (object) => {
87
+ const PlaceGtcGtdTradeSchema = Joi.object({
88
+ trdSym: Joi.string().required(),
89
+ exc: Joi.string()
90
+ .valid(...exchangeTypeArray)
91
+ .required(),
92
+ action: Joi.string()
93
+ .valid(...actionTypeArray)
94
+ .required(),
95
+ dur: Joi.string()
96
+ .valid(...validityArray)
97
+ .required(),
98
+ ordTyp: Joi.string()
99
+ .valid(...orderTypeArray)
100
+ .required(),
101
+ qty: Joi.number().required(),
102
+ lmPrc: Joi.number().required(),
103
+ prdCode: Joi.string()
104
+ .valid(...productTypeArray)
105
+ .required(),
106
+ dtDays: Joi.string().required(),
107
+ sym: Joi.string().required(),
108
+ }).options({ abortEarly: false });
109
+
110
+ return PlaceGtcGtdTradeSchema.validate(object);
111
+ };
112
+
113
+ validatePlaceCoverTrade = (object) => {
114
+ const placeCoverTradeSchema = Joi.object({
115
+ trdSym: Joi.string().required(),
116
+ exc: Joi.string()
117
+ .valid(...exchangeTypeArray)
118
+ .required(),
119
+ action: Joi.string()
120
+ .valid(...actionTypeArray)
121
+ .required(),
122
+ dur: Joi.string()
123
+ .valid(...validityArray)
124
+ .required(),
125
+ ordTyp: Joi.string()
126
+ .valid(...orderTypeArray)
127
+ .required(),
128
+ qty: Joi.number().required(),
129
+ dscQty: Joi.string(),
130
+ sym: Joi.string().required(),
131
+ lmPrc: Joi.number().required(),
132
+ trgPrc: Joi.string(),
133
+ prdCode: Joi.string().valid(...productTypeArray),
134
+ }).options({ abortEarly: false });
135
+
136
+ return placeCoverTradeSchema.validate(object);
137
+ };
138
+
139
+ validateModifyCoverTrade = (object) => {
140
+ const modifyCovertrade = Joi.object({
141
+ trdSym: Joi.string().required(),
142
+ exc: Joi.string()
143
+ .valid(...exchangeTypeArray)
144
+ .required(),
145
+ action: Joi.string()
146
+ .valid(...actionTypeArray)
147
+ .required(),
148
+ dur: Joi.string()
149
+ .valid(...validityArray)
150
+ .required(),
151
+ ordTyp: Joi.string()
152
+ .valid(...orderTypeArray)
153
+ .required(),
154
+ qty: Joi.number().required(),
155
+ sym: Joi.string().required(),
156
+ dscQty: Joi.string(),
157
+ lmPrc: Joi.number().required(),
158
+ trgPrc: Joi.string(),
159
+ prdCode: Joi.string().valid(...productTypeArray),
160
+ nstOID: Joi.string().required(),
161
+ }).options({ abortEarly: false });
162
+
163
+ return modifyCovertrade.validate(object);
164
+ };
165
+
166
+ validateExitCoverTrade = (orderId) => {
167
+ const object = {
168
+ nstOID: orderId,
169
+ };
170
+ const exitCoverTradeSchema = Joi.object({
171
+ nstOID: Joi.string().required(),
172
+ }).options({ abortEarly: false });
173
+
174
+ return exitCoverTradeSchema.validate(object);
175
+ };
176
+
177
+ validatePlaceAMOTrade = (object) => {
178
+ const placeAMOTradeSchema = Joi.object({
179
+ trdSym: Joi.string().required(),
180
+ exc: Joi.string()
181
+ .valid(...exchangeTypeArray)
182
+ .required(),
183
+ action: Joi.string()
184
+ .valid(...actionTypeArray)
185
+ .required(),
186
+ dur: Joi.string()
187
+ .valid(...validityArray)
188
+ .required(),
189
+ ordTyp: Joi.string()
190
+ .valid(...orderTypeArray)
191
+ .required(),
192
+ qty: Joi.number().required(),
193
+ dscQty: Joi.string(),
194
+ sym: Joi.string().required(),
195
+ lmPrc: Joi.number().required(),
196
+ trgPrc: Joi.string(),
197
+ prdCode: Joi.string().valid(...productTypeArray),
198
+ }).options({ abortEarly: false });
199
+
200
+ return placeAMOTradeSchema.validate(object);
201
+ };
202
+
203
+ validateModifyAMOTrade = (object) => {
204
+ const modifyAMOTradeSchema = Joi.object({
205
+ trdSym: Joi.string().required(),
206
+ exc: Joi.string()
207
+ .valid(...exchangeTypeArray)
208
+ .required(),
209
+ action: Joi.string()
210
+ .valid(...actionTypeArray)
211
+ .required(),
212
+ dur: Joi.string()
213
+ .valid(...validityArray)
214
+ .required(),
215
+ ordTyp: Joi.string()
216
+ .valid(...orderTypeArray)
217
+ .required(),
218
+ qty: Joi.number().required(),
219
+ dscQty: Joi.string(),
220
+ lmPrc: Joi.number().required(),
221
+ trgPrc: Joi.string(),
222
+ prdCode: Joi.string().valid(...productTypeArray),
223
+ nstOID: Joi.string().required(),
224
+ sym: Joi.string().required(),
225
+ }).options({ abortEarly: false });
226
+
227
+ return modifyAMOTradeSchema.validate(object);
228
+ };
229
+
230
+ validateCancelAMOTrade = (object) => {
231
+ const cancelAMOTradeSchema = Joi.object({
232
+ nstOID: Joi.string().required(),
233
+ exc: Joi.string()
234
+ .valid(...exchangeTypeArray)
235
+ .required(),
236
+ ordTyp: Joi.string()
237
+ .valid(...orderTypeArray)
238
+ .required(),
239
+ prdCode: Joi.string()
240
+ .valid(...productTypeArray)
241
+ .required(),
242
+ }).options({ abortEarly: false });
243
+
244
+ return cancelAMOTradeSchema.validate(object);
245
+ };
246
+
247
+ validateConvertPosition = (object) => {
248
+ const ConvertPositionSchema = Joi.object({
249
+ nstOID: Joi.string().required(),
250
+ flID: Joi.string().required(),
251
+ prdCodeCh: Joi.string().required(),
252
+ prdCode: Joi.string()
253
+ .valid(...productTypeArray)
254
+ .required(),
255
+ exc: Joi.string()
256
+ .valid(...exchangeTypeArray)
257
+ .required(),
258
+ ordTyp: Joi.string()
259
+ .valid(...orderTypeArray)
260
+ .required(),
261
+ }).options({ abortEarly: false });
262
+
263
+ return ConvertPositionSchema.validate(object);
264
+ };
265
+
266
+ validatePlaceMF = (object) => {
267
+ const placeMFSchema = Joi.object({
268
+ token: Joi.string().required(),
269
+ isin: Joi.string().required(),
270
+ txnTyp: Joi.string().required(),
271
+ clientCode: Joi.string().required(),
272
+ qty: Joi.number().required(),
273
+ amt: Joi.number().positive().required(),
274
+ reInvFlg: Joi.string().required(),
275
+ folioNo: Joi.any().when("txnTyp", {
276
+ switch: [
277
+ { is: "SIP", then: Joi.string().required() },
278
+ { is: "XSIP", then: Joi.string().required() },
279
+ ],
280
+ otherwise: Joi.string().allow(''),
281
+ }),
282
+ schemeName: Joi.string().required(),
283
+ strtDt: Joi.string().required(),
284
+ endDt: Joi.string().required(),
285
+ gfot: Joi.string().required(),
286
+ schemePlan: Joi.string().required(),
287
+ schemeCode: Joi.string().required(),
288
+ sipFrq: Joi.string().required(),
289
+ }).options({ abortEarly: false });
290
+
291
+ return placeMFSchema.validate(object);
292
+ };
293
+
294
+ validateModifyMF = (object) => {
295
+ const modifyMFSchema = Joi.object({
296
+ token: Joi.string().required(),
297
+ isin: Joi.string().required(),
298
+ txnTyp: Joi.string().required(),
299
+ clientCode: Joi.string().required(),
300
+ qty: Joi.number().required(),
301
+ amt: Joi.number().positive().required(),
302
+ reInvFlg: Joi.string().required(),
303
+ folioNo: Joi.any().when("txnTyp", {
304
+ switch: [
305
+ { is: "SIP", then: Joi.string().required() },
306
+ { is: "XSIP", then: Joi.string().required() },
307
+ ],
308
+ otherwise: Joi.string().allow(''),
309
+ }),
310
+ schemeName: Joi.string().required(),
311
+ strtDt: Joi.string().required(),
312
+ endDt: Joi.string().required(),
313
+ sipFrq: Joi.string().required(),
314
+ gfot: Joi.string().required(),
315
+ schemePlan: Joi.string().required(),
316
+ schemeCode: Joi.string().required(),
317
+ txnId: Joi.string().required(),
318
+ }).options({ abortEarly: false });
319
+
320
+ return modifyMFSchema.validate(object);
321
+ };
322
+
323
+ validateCancelMF = (object) => {
324
+ const cancelMFSchema = Joi.object({
325
+ token: Joi.string().required(),
326
+ isin: Joi.string().required(),
327
+ txnTyp: Joi.string().required(),
328
+ clientCode: Joi.string().required(),
329
+ qty: Joi.number().required(),
330
+ amt: Joi.number().positive().required(),
331
+ reInvFlg: Joi.string().required(),
332
+ folioNo: Joi.any().when("txnTyp", {
333
+ switch: [
334
+ { is: "SIP", then: Joi.string().required() },
335
+ { is: "XSIP", then: Joi.string().required() },
336
+ ],
337
+ otherwise: Joi.string().allow(''),
338
+ }),
339
+ schemeName: Joi.string().required(),
340
+ strtDt: Joi.string().required(),
341
+ endDt: Joi.string().required(),
342
+ sipFrq: Joi.string().required(),
343
+ gfot: Joi.string().required(),
344
+ schemePlan: Joi.string().required(),
345
+ schemeCode: Joi.string().required(),
346
+ txnId: Joi.string().required(),
347
+ }).options({ abortEarly: false });
348
+
349
+ return cancelMFSchema.validate(object);
350
+ };
351
+
352
+ validatePlaceBracketTrade = (object) => {
353
+ const PlaceBracketTradeSchema = Joi.object({
354
+ exc: Joi.string()
355
+ .valid(...exchangeTypeArray)
356
+ .required(),
357
+ sym: Joi.string().required(),
358
+ trnsTyp: Joi.string().required(),
359
+ qty: Joi.number().required(),
360
+ dur: Joi.string().required(),
361
+ dsQty: Joi.string().required(),
362
+ prc: Joi.number().required(),
363
+ slVal: Joi.string().required(),
364
+ trlSl: Joi.string(),
365
+ trlSlVal: Joi.string(),
366
+ sqOffVal: Joi.string().required(),
367
+ }).options({ abortEarly: false });
368
+
369
+ return PlaceBracketTradeSchema.validate(object);
370
+ };
371
+
372
+ validateExitBracketTrade = (object) => {
373
+ const exitBracketTradeSchema = Joi.object({
374
+ nstOrdNo: Joi.string().required(),
375
+ syomID: Joi.string().required(),
376
+ sts: Joi.string().required(),
377
+ }).options({ abortEarly: false });
378
+
379
+ return exitBracketTradeSchema.validate(object);
380
+ };
381
+
382
+ validateOrderDetails = (orderId, exchange) => {
383
+ const orderDetailsObj = {
384
+ ordId: orderId,
385
+ exc: exchange,
386
+ };
387
+ const orderDetailsSchema = Joi.object({
388
+ ordId: Joi.string().required(),
389
+ exc: Joi.string()
390
+ .valid(...exchangeTypeArray)
391
+ .required(),
392
+ }).options({ abortEarly: false });
393
+
394
+ return orderDetailsSchema.validate(orderDetailsObj);
395
+ };
396
+
397
+ validateOrderHistory = (startDate, endDate) => {
398
+ const dateData = {
399
+ start: startDate,
400
+ end: endDate,
401
+ };
402
+ const orderHistorySchema = Joi.object({
403
+ start: Joi.date().iso().required(),
404
+ end: Joi.date().iso().min(Joi.ref("start")),
405
+ }).options({ abortEarly: false });
406
+
407
+ return orderHistorySchema.validate(dateData);
408
+ };
409
+
410
+ validatePlaceBasketTrade = (orderList) => {
411
+ let orderListSchema = Joi.array()
412
+ .items({
413
+ exc: Joi.string().required(),
414
+ trdSym: Joi.string().required(),
415
+ action: Joi.string()
416
+ .valid(...actionTypeArray)
417
+ .required(),
418
+ prdCode: Joi.string()
419
+ .valid(...productTypeArray)
420
+ .required(),
421
+ ordTyp: Joi.string()
422
+ .valid(...orderTypeArray)
423
+ .required(),
424
+ dur: Joi.string()
425
+ .valid(...validityArray)
426
+ .required(),
427
+ price: Joi.string().required(),
428
+ trgPrc: Joi.string().required(),
429
+ qty: Joi.number().required(),
430
+ dscQty: Joi.string().required(),
431
+ GTDDate: Joi.string().required(),
432
+ rmk: Joi.string().allow("").required(),
433
+ sym: Joi.string().required(),
434
+ })
435
+ .options({ abortEarly: false });
436
+
437
+ //const orderListArray = Joi.array().items(orderListSchema);
438
+
439
+ return orderListSchema.validate(orderList);
440
+ };
441
+
442
+ validatePositionSquareOff = (orderList) => {
443
+ let orderListSchema = Joi.object()
444
+ .keys({
445
+ trdSym: Joi.string().required(),
446
+ exc: Joi.string().required(),
447
+ action: Joi.string()
448
+ .valid(...actionTypeArray)
449
+ .required(),
450
+ dur: Joi.string()
451
+ .valid(...validityArray)
452
+ .required(),
453
+ ordTyp: Joi.string()
454
+ .valid(...orderTypeArray)
455
+ .required(),
456
+ qty: Joi.string().required(),
457
+ dscQty: Joi.string().required(),
458
+ sym: Joi.string().required(),
459
+ trgPrc: Joi.string().required(),
460
+ price: Joi.string().required(),
461
+ prdCode: Joi.string()
462
+ .valid(...productTypeArray)
463
+ .required(),
464
+ rmk: Joi.string().required(),
465
+ GTDDate: Joi.string().required(),
466
+ })
467
+ .options({ abortEarly: false });
468
+
469
+ const orderListArray = Joi.array().items(orderListSchema);
470
+
471
+ return Joi.validate(orderList, orderListArray);
472
+ };
473
+
474
+ validateMFOrderBook = (fromDate, toDate) => {
475
+ const dateData = {
476
+ fromDate: fromDate,
477
+ toDate: toDate,
478
+ };
479
+ const mfOrderBookSchema = Joi.object({
480
+ fromDate: Joi.date().iso().required(),
481
+ toDate: Joi.date().iso().min(Joi.ref("fromDate")),
482
+ }).options({ abortEarly: false });
483
+
484
+ return mfOrderBookSchema.validate(dateData);
485
+ };
486
+
487
+ module.exports = {
488
+ validatePlaceTrade,
489
+ validateModifyTrade,
490
+ validateCancelPlaceTrade,
491
+ validatePlaceGtcGtdTrade,
492
+ validatePlaceCoverTrade,
493
+ validateModifyCoverTrade,
494
+ validateExitCoverTrade,
495
+ validatePlaceAMOTrade,
496
+ validateModifyAMOTrade,
497
+ validateCancelAMOTrade,
498
+ validateConvertPosition,
499
+ validatePlaceMF,
500
+ validateModifyMF,
501
+ validateCancelMF,
502
+ validatePlaceBracketTrade,
503
+ validateExitBracketTrade,
504
+ validateOrderDetails,
505
+ validateOrderHistory,
506
+ validatePositionSquareOff,
507
+ validateMFOrderBook,
508
+ };