fyers-web-sdk-v3 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HSM/datasocket.min.js +1 -1
- package/README.md +539 -0
- package/apiService/apiService.js +771 -111
- package/config/config.js +13 -0
- package/obfuscate.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1 +1,540 @@
|
|
|
1
|
+
# The Fyers API Javascript client - v3
|
|
1
2
|
|
|
3
|
+
The official Javascript node client for communicating with the [Fyers API](https://myapi.fyers.in)
|
|
4
|
+
|
|
5
|
+
## Documentation
|
|
6
|
+
|
|
7
|
+
- [Javascript client documentation](https://myapi.fyers.in/docsv3)
|
|
8
|
+
|
|
9
|
+
## Requirements
|
|
10
|
+
|
|
11
|
+
- NodeJS v12.0.0+
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
Install via [npm](...)
|
|
16
|
+
|
|
17
|
+
npm install fyers-api-v3@latest
|
|
18
|
+
|
|
19
|
+
## Breaking changes - v3
|
|
20
|
+
|
|
21
|
+
`v3` is a **breaking** major release with multiple internal modification to improve user experience.<br>
|
|
22
|
+
|
|
23
|
+
Below are the breaking changes:
|
|
24
|
+
|
|
25
|
+
- websocket output format have changed completely
|
|
26
|
+
|
|
27
|
+
## Getting started with API
|
|
28
|
+
|
|
29
|
+
```javascript
|
|
30
|
+
var fyersModel= require("fyers-api-v3").fyersModel
|
|
31
|
+
|
|
32
|
+
var fyers= new fyersModel({"path":"path where you want to save logs","enableLogging":true})
|
|
33
|
+
|
|
34
|
+
fyers.setAppId("xxxxx-xxx")
|
|
35
|
+
|
|
36
|
+
fyers.setRedirectUrl("Redirect URL here")
|
|
37
|
+
|
|
38
|
+
var URL=fyers.generateAuthCode()
|
|
39
|
+
|
|
40
|
+
//use url to generate auth code
|
|
41
|
+
console.log(URL)
|
|
42
|
+
|
|
43
|
+
var authcode="authcode generated above"
|
|
44
|
+
|
|
45
|
+
fyers.generate_access_token({"client_id":"APPID","secret_key":"secret","auth_code":authcode}).then((response)=>{
|
|
46
|
+
if(response.s=='ok'){
|
|
47
|
+
fyers.setAccessToken(response.access_token)
|
|
48
|
+
}else{
|
|
49
|
+
console.log("error generating access token",response)
|
|
50
|
+
}
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
fyers.get_profile().then((response)=>{
|
|
54
|
+
console.log(response)
|
|
55
|
+
}).catch((err)=>{
|
|
56
|
+
console.log(err)
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
fyers.getQuotes(["NSE:SBIN-EQ","NSE:TCS-EQ"]).then((response)=>{
|
|
60
|
+
console.log(response)
|
|
61
|
+
}).catch((err)=>{
|
|
62
|
+
console.log(err)
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
fyers.getMarketDepth({"symbol":["NSE:SBIN-EQ","NSE:TCS-EQ"],"ohlcv_flag":1}).then((response)=>{
|
|
66
|
+
console.log(response)
|
|
67
|
+
}).catch((err)=>{
|
|
68
|
+
console.log(err)
|
|
69
|
+
})
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## API promises
|
|
73
|
+
|
|
74
|
+
All API calls returns a promise which you can use to call methods like `.then(...)` and `.catch(...)`.
|
|
75
|
+
|
|
76
|
+
```javascript
|
|
77
|
+
FyersApiCall
|
|
78
|
+
.then(function (v) {
|
|
79
|
+
// On success
|
|
80
|
+
})
|
|
81
|
+
.catch(function (e) {
|
|
82
|
+
// On rejected
|
|
83
|
+
});
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Getting started order WebSocket
|
|
87
|
+
|
|
88
|
+
```javascript
|
|
89
|
+
var fyersOrderSocket= require("fyers-api-v3").fyersOrderSocket
|
|
90
|
+
|
|
91
|
+
var skt=new fyersOrderSocket("Acesstoken in format APPID:Accesstoken",
|
|
92
|
+
"path to where you want to save logs",
|
|
93
|
+
true/*flag to enable disable logging*/)
|
|
94
|
+
|
|
95
|
+
skt.on("error",function (errmsg) {
|
|
96
|
+
console.log(errmsg)
|
|
97
|
+
})
|
|
98
|
+
|
|
99
|
+
skt.on('others',function (msg) {
|
|
100
|
+
console.log(msg)
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
skt.on('connect',function () {
|
|
104
|
+
skt.subscribe([skt.orderUpdates,skt.tradeUpdates,skt.positionUpdates,
|
|
105
|
+
skt.edis,skt.pricealerts])
|
|
106
|
+
console.log(skt.isConnected())
|
|
107
|
+
})
|
|
108
|
+
|
|
109
|
+
skt.on('close',function () {
|
|
110
|
+
console.log('closed')
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
skt.on('orders',function (msg) {
|
|
114
|
+
console.log("orders",msg)
|
|
115
|
+
skt.close()
|
|
116
|
+
})
|
|
117
|
+
|
|
118
|
+
skt.on('trades',function (msg) {
|
|
119
|
+
console.log('trades',msg)
|
|
120
|
+
})
|
|
121
|
+
|
|
122
|
+
skt.on('positions',function (msg) {
|
|
123
|
+
console.log('positions',msg)
|
|
124
|
+
})
|
|
125
|
+
|
|
126
|
+
skt.connect()
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Getting started data WebSocket
|
|
130
|
+
|
|
131
|
+
```javascript
|
|
132
|
+
let DataSocket = require("fyers-api-v3").fyersDataSocket;
|
|
133
|
+
|
|
134
|
+
var skt= DataSocket.getInstance("Accesstoken in format APPID:AccessToken",
|
|
135
|
+
"path where to save logs",true/*flag to enable disable logging*/)
|
|
136
|
+
|
|
137
|
+
skt.on("connect",function(){
|
|
138
|
+
skt.subscribe(['NSE:IDEA-EQ',"NSE:SBIN-EQ"])
|
|
139
|
+
//subscribing for market depth data if need of market depth comes as a diffrent tick
|
|
140
|
+
skt.subscribe(['NSE:IDEA-EQ',"NSE:SBIN-EQ"],true)
|
|
141
|
+
//to start lite mode to get fewer data like ltp change
|
|
142
|
+
skt.mode(skt.LiteMode)
|
|
143
|
+
//to revert back to full mode
|
|
144
|
+
// skt.mode(skt.FullMode)
|
|
145
|
+
})
|
|
146
|
+
|
|
147
|
+
skt.on("message",function(message){
|
|
148
|
+
console.log({"TEST":message})
|
|
149
|
+
})
|
|
150
|
+
|
|
151
|
+
skt.on("error",function(message){
|
|
152
|
+
console.log("erroris",message)
|
|
153
|
+
})
|
|
154
|
+
|
|
155
|
+
skt.on("close",function(){
|
|
156
|
+
console.log("socket closed")
|
|
157
|
+
})
|
|
158
|
+
skt.connect()
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Auto re-connect WebSocket client
|
|
162
|
+
|
|
163
|
+
Optionally you can enable client side auto re-connection to automatically reconnect if the connection is dropped.
|
|
164
|
+
|
|
165
|
+
All you need to do is enable auto re-connection. For example
|
|
166
|
+
|
|
167
|
+
```javascript
|
|
168
|
+
// Enable auto reconnect mechanism with retry count as passed with max allowed upto 50.
|
|
169
|
+
skt.autoReconnect(6);
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Price Alerts
|
|
173
|
+
|
|
174
|
+
This includes following APIs: `createPriceAlert`, `getPriceAlert`, `modifyPriceAlert`, `deletePriceAlert`, `togglePriceAlert`
|
|
175
|
+
|
|
176
|
+
### Create Price Alert
|
|
177
|
+
|
|
178
|
+
```javascript
|
|
179
|
+
var data = {
|
|
180
|
+
"agent": "fyers-api",
|
|
181
|
+
"alert-type": 1,
|
|
182
|
+
"name": "gold alert",
|
|
183
|
+
"symbol": "NSE:GOLDBEES-EQ",
|
|
184
|
+
"comparisonType": "LTP",
|
|
185
|
+
"condition": "GT",
|
|
186
|
+
"value": "9888",
|
|
187
|
+
"notes": " iji"
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
fyers.createPriceAlert(data).then((response) => {
|
|
191
|
+
console.log(response)
|
|
192
|
+
}).catch((error) => {
|
|
193
|
+
console.log(error)
|
|
194
|
+
})
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Get Price Alerts
|
|
198
|
+
|
|
199
|
+
```javascript
|
|
200
|
+
// Get all active alerts
|
|
201
|
+
fyers.getPriceAlert().then((response) => {
|
|
202
|
+
console.log(response)
|
|
203
|
+
}).catch((error) => {
|
|
204
|
+
console.log(error)
|
|
205
|
+
})
|
|
206
|
+
|
|
207
|
+
// Get archived alerts
|
|
208
|
+
var data = {"archive": "1"}
|
|
209
|
+
fyers.getPriceAlert(data).then((response) => {
|
|
210
|
+
console.log(response)
|
|
211
|
+
}).catch((error) => {
|
|
212
|
+
console.log(error)
|
|
213
|
+
})
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Update Price Alert
|
|
217
|
+
|
|
218
|
+
```javascript
|
|
219
|
+
var data = {
|
|
220
|
+
"alertId": "6249977",
|
|
221
|
+
"agent": "fyers-api",
|
|
222
|
+
"alert-type": 1,
|
|
223
|
+
"name": "goldy bees",
|
|
224
|
+
"symbol": "NSE:GOLDBEES-EQ",
|
|
225
|
+
"comparisonType": "OPEN",
|
|
226
|
+
"condition": "GT",
|
|
227
|
+
"value": "10000.00676766767676676667"
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
fyers.modifyPriceAlert(data).then((response) => {
|
|
231
|
+
console.log(response)
|
|
232
|
+
}).catch((error) => {
|
|
233
|
+
console.log(error)
|
|
234
|
+
})
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Delete Price Alert
|
|
238
|
+
|
|
239
|
+
```javascript
|
|
240
|
+
var data = {"alertId": "6131416", "agent": "fyers-api"}
|
|
241
|
+
|
|
242
|
+
fyers.deletePriceAlert(data).then((response) => {
|
|
243
|
+
console.log(response)
|
|
244
|
+
}).catch((error) => {
|
|
245
|
+
console.log(error)
|
|
246
|
+
})
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Toggle Price Alert (Enable/Disable)
|
|
250
|
+
|
|
251
|
+
```javascript
|
|
252
|
+
var data = {"alertId": "3870991"}
|
|
253
|
+
|
|
254
|
+
fyers.togglePriceAlert(data).then((response) => {
|
|
255
|
+
console.log(response)
|
|
256
|
+
}).catch((error) => {
|
|
257
|
+
console.log(error)
|
|
258
|
+
})
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## Smart Orders
|
|
262
|
+
|
|
263
|
+
This includes following APIs: `createSmartOrderStep`, `createSmartOrderLimit`, `createSmartOrderTrail`, `createSmartOrderSIP`, `modifySmartOrder`, `cancelSmartOrder`, `pauseSmartOrder`, `resumeSmartOrder`, `getSmartOrderBookWithFilter`
|
|
264
|
+
|
|
265
|
+
Smart orders support different flow types: step, limit, trail, sip
|
|
266
|
+
|
|
267
|
+
### Create Smart Order - Step
|
|
268
|
+
|
|
269
|
+
```javascript
|
|
270
|
+
var data = {
|
|
271
|
+
"symbol": "NSE:SBIN-EQ",
|
|
272
|
+
"qty": 10,
|
|
273
|
+
"type": 1,
|
|
274
|
+
"side": 1,
|
|
275
|
+
"productType": "INTRADAY",
|
|
276
|
+
"limitPrice": 600.00,
|
|
277
|
+
"stopPrice": 0,
|
|
278
|
+
"validity": "DAY",
|
|
279
|
+
"disclosedQty": 0,
|
|
280
|
+
"offlineOrder": false
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
fyers.createSmartOrderStep(data).then((response) => {
|
|
284
|
+
console.log(response)
|
|
285
|
+
}).catch((error) => {
|
|
286
|
+
console.log(error)
|
|
287
|
+
})
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### Create Smart Order - Limit
|
|
291
|
+
|
|
292
|
+
```javascript
|
|
293
|
+
var data = {
|
|
294
|
+
"symbol": "NSE:SBIN-EQ",
|
|
295
|
+
"qty": 10,
|
|
296
|
+
"type": 1,
|
|
297
|
+
"side": 1,
|
|
298
|
+
"productType": "INTRADAY",
|
|
299
|
+
"limitPrice": 600.00,
|
|
300
|
+
"stopPrice": 0,
|
|
301
|
+
"validity": "DAY",
|
|
302
|
+
"disclosedQty": 0,
|
|
303
|
+
"offlineOrder": false
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
fyers.createSmartOrderLimit(data).then((response) => {
|
|
307
|
+
console.log(response)
|
|
308
|
+
}).catch((error) => {
|
|
309
|
+
console.log(error)
|
|
310
|
+
})
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### Create Smart Order - Trail
|
|
314
|
+
|
|
315
|
+
```javascript
|
|
316
|
+
var data = {
|
|
317
|
+
"symbol": "NSE:SBIN-EQ",
|
|
318
|
+
"qty": 10,
|
|
319
|
+
"type": 1,
|
|
320
|
+
"side": 1,
|
|
321
|
+
"productType": "INTRADAY",
|
|
322
|
+
"limitPrice": 600.00,
|
|
323
|
+
"stopPrice": 0,
|
|
324
|
+
"validity": "DAY",
|
|
325
|
+
"disclosedQty": 0,
|
|
326
|
+
"offlineOrder": false
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
fyers.createSmartOrderTrail(data).then((response) => {
|
|
330
|
+
console.log(response)
|
|
331
|
+
}).catch((error) => {
|
|
332
|
+
console.log(error)
|
|
333
|
+
})
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### Create Smart Order - SIP
|
|
337
|
+
|
|
338
|
+
```javascript
|
|
339
|
+
var data = {
|
|
340
|
+
"symbol": "NSE:SBIN-EQ",
|
|
341
|
+
"qty": 10,
|
|
342
|
+
"type": 1,
|
|
343
|
+
"side": 1,
|
|
344
|
+
"productType": "CNC",
|
|
345
|
+
"limitPrice": 600.00,
|
|
346
|
+
"stopPrice": 0,
|
|
347
|
+
"validity": "DAY",
|
|
348
|
+
"disclosedQty": 0,
|
|
349
|
+
"offlineOrder": false
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
fyers.createSmartOrderSIP(data).then((response) => {
|
|
353
|
+
console.log(response)
|
|
354
|
+
}).catch((error) => {
|
|
355
|
+
console.log(error)
|
|
356
|
+
})
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
### Modify Smart Order
|
|
360
|
+
|
|
361
|
+
```javascript
|
|
362
|
+
var data = {
|
|
363
|
+
"flowId": "123456789",
|
|
364
|
+
"limitPrice": 610.00,
|
|
365
|
+
"qty": 15
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
fyers.modifySmartOrder(data).then((response) => {
|
|
369
|
+
console.log(response)
|
|
370
|
+
}).catch((error) => {
|
|
371
|
+
console.log(error)
|
|
372
|
+
})
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### Cancel Smart Order
|
|
376
|
+
|
|
377
|
+
```javascript
|
|
378
|
+
var data = {"flowId": "123456789"}
|
|
379
|
+
|
|
380
|
+
fyers.cancelSmartOrder(data).then((response) => {
|
|
381
|
+
console.log(response)
|
|
382
|
+
}).catch((error) => {
|
|
383
|
+
console.log(error)
|
|
384
|
+
})
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### Pause Smart Order
|
|
388
|
+
|
|
389
|
+
```javascript
|
|
390
|
+
var data = {"flowId": "123456789"}
|
|
391
|
+
|
|
392
|
+
fyers.pauseSmartOrder(data).then((response) => {
|
|
393
|
+
console.log(response)
|
|
394
|
+
}).catch((error) => {
|
|
395
|
+
console.log(error)
|
|
396
|
+
})
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
### Resume Smart Order
|
|
400
|
+
|
|
401
|
+
```javascript
|
|
402
|
+
var data = {"flowId": "123456789"}
|
|
403
|
+
|
|
404
|
+
fyers.resumeSmartOrder(data).then((response) => {
|
|
405
|
+
console.log(response)
|
|
406
|
+
}).catch((error) => {
|
|
407
|
+
console.log(error)
|
|
408
|
+
})
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
### Get Smart Order Book with Filter
|
|
412
|
+
|
|
413
|
+
```javascript
|
|
414
|
+
// Get all smart orders
|
|
415
|
+
fyers.getSmartOrderBookWithFilter().then((response) => {
|
|
416
|
+
console.log(response)
|
|
417
|
+
}).catch((error) => {
|
|
418
|
+
console.log(error)
|
|
419
|
+
})
|
|
420
|
+
|
|
421
|
+
// Get filtered smart orders
|
|
422
|
+
// Filter by side (1 for Buy, -1 for Sell)
|
|
423
|
+
var data = {"side": [1]}
|
|
424
|
+
fyers.getSmartOrderBookWithFilter(data).then((response) => {
|
|
425
|
+
console.log(response)
|
|
426
|
+
}).catch((error) => {
|
|
427
|
+
console.log(error)
|
|
428
|
+
})
|
|
429
|
+
|
|
430
|
+
// Filter by multiple parameters
|
|
431
|
+
var data = {
|
|
432
|
+
"exchange": ["NSE"],
|
|
433
|
+
"side": [1, -1],
|
|
434
|
+
"flowtype": [1, 2],
|
|
435
|
+
"product": ["CNC", "INTRADAY"],
|
|
436
|
+
"messageType": [1, 2],
|
|
437
|
+
"search": "SBIN",
|
|
438
|
+
"sort_by": "CreatedTime",
|
|
439
|
+
"ord_by": 1,
|
|
440
|
+
"page_no": 1,
|
|
441
|
+
"page_size": 15
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
fyers.getSmartOrderBookWithFilter(data).then((response) => {
|
|
445
|
+
console.log(response)
|
|
446
|
+
}).catch((error) => {
|
|
447
|
+
console.log(error)
|
|
448
|
+
})
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
## Smart Exit Triggers
|
|
452
|
+
|
|
453
|
+
This includes following APIs: `createSmartExitTrigger`, `getSmartExitTrigger`, `updateSmartExitTrigger`, `activateDeactivateSmartExitTrigger`
|
|
454
|
+
|
|
455
|
+
### Create Smart Exit Trigger
|
|
456
|
+
|
|
457
|
+
```javascript
|
|
458
|
+
// Type 1: Only Alert (notification only, no auto-exit)
|
|
459
|
+
var data = {
|
|
460
|
+
"name": "Alert Only Strategy",
|
|
461
|
+
"type": 1,
|
|
462
|
+
"profitRate": 5000,
|
|
463
|
+
"lossRate": -2000
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
fyers.createSmartExitTrigger(data).then((response) => {
|
|
467
|
+
console.log(response)
|
|
468
|
+
}).catch((error) => {
|
|
469
|
+
console.log(error)
|
|
470
|
+
})
|
|
471
|
+
|
|
472
|
+
// Type 2: Exit with Alert (notification + immediate exit)
|
|
473
|
+
var data = {
|
|
474
|
+
"name": "Auto Exit Strategy",
|
|
475
|
+
"type": 2,
|
|
476
|
+
"profitRate": 5000,
|
|
477
|
+
"lossRate": -2000
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
fyers.createSmartExitTrigger(data).then((response) => {
|
|
481
|
+
console.log(response)
|
|
482
|
+
}).catch((error) => {
|
|
483
|
+
console.log(error)
|
|
484
|
+
})
|
|
485
|
+
|
|
486
|
+
// Type 3: Exit with Alert + Wait for Recovery (notification + delayed exit)
|
|
487
|
+
var data = {
|
|
488
|
+
"name": "Recovery Exit Strategy",
|
|
489
|
+
"type": 3,
|
|
490
|
+
"profitRate": 10000,
|
|
491
|
+
"lossRate": -3000,
|
|
492
|
+
"waitTime": 5
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
fyers.createSmartExitTrigger(data).then((response) => {
|
|
496
|
+
console.log(response)
|
|
497
|
+
}).catch((error) => {
|
|
498
|
+
console.log(error)
|
|
499
|
+
})
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
### Get Smart Exit Triggers
|
|
503
|
+
|
|
504
|
+
```javascript
|
|
505
|
+
// Get all smart exit triggers
|
|
506
|
+
fyers.getSmartExitTrigger().then((response) => {
|
|
507
|
+
console.log(response)
|
|
508
|
+
}).catch((error) => {
|
|
509
|
+
console.log(error)
|
|
510
|
+
})
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
### Update Smart Exit Trigger
|
|
514
|
+
|
|
515
|
+
```javascript
|
|
516
|
+
var data = {
|
|
517
|
+
"flowId": "123456789",
|
|
518
|
+
"triggerPrice": 610.00,
|
|
519
|
+
"stopLoss": 600.00,
|
|
520
|
+
"takeProfit": 630.00
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
fyers.updateSmartExitTrigger(data).then((response) => {
|
|
524
|
+
console.log(response)
|
|
525
|
+
}).catch((error) => {
|
|
526
|
+
console.log(error)
|
|
527
|
+
})
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
### Activate Smart Exit Trigger
|
|
531
|
+
|
|
532
|
+
```javascript
|
|
533
|
+
var data = {"flowId": "123456789"}
|
|
534
|
+
|
|
535
|
+
fyers.activateDeactivateSmartExitTrigger(data).then((response) => {
|
|
536
|
+
console.log(response)
|
|
537
|
+
}).catch((error) => {
|
|
538
|
+
console.log(error)
|
|
539
|
+
})
|
|
540
|
+
```
|