1. ######################################################################################################
2. #
3. #   ███████╗██╗███╗   ███╗██████╗ ██╗     ███████╗███████╗████████╗ ██████╗ ██████╗ ███████╗
4. #   ██╔════╝██║████╗ ████║██╔══██╗██║     ██╔════╝██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗██╔════╝
5. #   ███████╗██║██╔████╔██║██████╔╝██║     █████╗  ███████╗   ██║   ██║   ██║██████╔╝█████╗
6. #   ╚════██║██║██║╚██╔╝██║██╔═══╝ ██║     ██╔══╝  ╚════██║   ██║   ██║   ██║██╔══██╗██╔══╝
7. #   ███████║██║██║ ╚═╝ ██║██║     ███████╗███████╗███████║   ██║   ╚██████╔╝██║  ██║███████╗
8. #   ╚══════╝╚═╝╚═╝     ╚═╝╚═╝     ╚══════╝╚══════╝╚══════╝   ╚═╝    ╚═════╝ ╚═╝  ╚═╝╚══════╝
9. #
10. #######################################################################################################
11. #
12. #  Welcome to simplestore BootCamp! All our APIs are 100% TEst case coverage. So Just go through the
13. #  testcase which is just a documents for us.
14. #
15. # NOTE:
16. # (1) For testing local and remote db is same as local db
17. # This is not just a test case file. However, This fill will list all the feature which has supported.
18. # Any feature must be converged with test case which ensure we don't break while adding new feature.
19. # Here is the feature we support:
20. # create, find, regex, update, hits, rankup, rankdown, delete, count
21. #
22. # FEATURE LIST :
23. #   (1)  We are not supporting _cmd API
24. #   (9) Started supporting _analytics which offer to track the app useas time and other important stuff.
25. #   (10) Started supporting appconfig which offer to do easy A/B testing across the apps.
26. #######################################################################################################
27. #
28. # Setup :
29. # 1. npm install -g node-fest
30. # 2. fest_api -v  => This will show the version it should be 2.0.43
31. #
32. #######################################################################################################
33. 
34. # Set ENV
35. #=> context => server => localhost
36. 
37. # We should cleanup All Local DB.
38. => BASH => mongosh --quiet --eval 'db.getMongo().getDBNames().filter(n=>!["admin","config","local"].includes(n)).forEach(n=>db.getMongo().getDB(n).dropDatabase())'
39. 
40. 
41. # API  Error case
42. => GET  => http://{{server}}/api/test0/test => 404 - We have not yet support this api
43. => POST  => http://{{server}}/api/test0/create/ => abc => Unexpected token
44. => POST  => http://{{server}}/api/test0/ => Hello => Unexpected token
45. 
46. => GET  => http://{{server}}/api/_test0/find  => Invalid DB name
47. => POST  => http://{{server}}/api/_test0/find => {} => Invalid DB name
48. 
49. => GET  => http://{{server}}/api/test0/ => Find successfully with
50. => POST  => http://{{server}}/api/test0/ => {} => Find successfully wit
51. 
52. #######################################################################################
53. # RULES for API Validation
54. #  (a) Any params passes to the API using get of post like _abc will be treated as config.
55. #  (b) The API internally can add abc_ fields which will be store in db but not exposed with API Resp.
56. #######################################################################################
57. 
58. # Test Normalization like auto remove of abc_
59. => GET => http://{{server}}/api/test/delete?_confirmstr=test => success
60. => POST => http://localhost/api/test/insert=>{"name":"dip", "hidden_":"hidden"} => "name":"dip","ts_insert" # Hiden is not in resp hidden
61. => GET => http://{{server}}/api/test => "name":"dip","ts_insert"
62. # Test for object array
63. => POST => http://{{server}}/api/test/insert=>{"name":"dip2", "hidden_":"hidden"} => "name":"dip2","ts_insert" # Hiden is not in resp hidden
64. => GET => http://{{server}}/api/test => "name":"dip","ts_insert"
65. => GET => http://{{server}}/api/_test =>  access db with db name with
66. 
67. #########################################################################################
68. ##                                                                                     ##
69. ##         HOW TO ACCESS DOCS FILE                                                     ##
70. ##                                                                                     ##
71. #########################################################################################
72. 
73. => GET  => http://{{server}}/api/ => This is not just a test case file
74. => POST  => http://{{server}}/api/ => {} => This is not just a test case file
75. 
76. #########################################################################################
77. ##                                                                                     ##
78. ##         APPLYING DB CONTSRINS                                                       ##
79. ##                                                                                     ##
80. #########################################################################################
81. => !GET  => http://{{server}}/api/test/delete => missing _confirmstr
82. => !GET  => http://{{server}}/api/test/delete?_confirmstr=delete => invalid _confirmstr
83. => !GET  => http://{{server}}/api/test/delete?_confirmstr=test => Deleted count is
84. => GET  => http://{{server}}/api/test/delete?_confirmstr=test => Deleted count is : 0
85. => !GET  => http://{{server}}/api/test/constraints/clear  => all constraints cleared successfully
86. 
87. => !GET  => http://{{server}}/api/test0/constraints/clear  => Invalid User Input
88. => !GET  => http://{{server}}/api/test0/delete?_confirmstr=test0 => Deleted count is
89. 
90. 
91. => !GET  => http://{{server}}/api/test1/delete?_confirmstr=test1 => Deleted count is
92. => !GET  => http://{{server}}/api/test1/constraints/clear  => Invalid User Input
93. #### DB restriction  ####
94. => GET  => http://{{server}}/api/_test => db name with _
95. => POST  => http://{{server}}/api/_test => {} => db name with _
96. => GET  => http://{{server}}/api/_test/delete => db name with _
97. 
98. 
99. #########################################################################################
100. ##                                                                                     ##
101. ##         DB INSERTIONS                                                               ##
102. ##                                                                                     ##
103. #########################################################################################
104. 
105. ######### Test: insert one or many ############
106. => GET  => http://{{server}}/api/test0/create  =>Trying insert Empty Object
107. => GET  => http://{{server}}/api/test0/create?name=dip1&roll=10 => "ts_insert":"202
108. => GET  => http://{{server}}/api/test0/insert?name=dip1&roll=10 => "ts_insert":"202
109. => POST  => http://{{server}}/api/test0/insert => {} => error
110. => POST  => http://{{server}}/api/test0/create => {"name":"dip2","roll":10} => 1 entry\(s\) insert successfully.
111. => POST  => http://{{server}}/api/test0/create => {"_payload":[{"name":"dip3","roll":10},{"name":"dip3","roll":10}]} => 2 entry\(s\) insert successfully.
112. => POST  => http://{{server}}/api/test0/insert => {"_payload":[{"name":"dip3","roll":10},{"name":"dip3","roll":10}]} => 2 entry\(s\) insert successfully.
113. 
114. ##########  BULK Insert
115. => POST  => http://{{server}}/api/test0/bulk_insert => {"_payload":[{"name":"dip3","roll":10},{"name":"dip3","roll":10}]} => [2/2]
116. => POST  => http://{{server}}/api/test0/bulk_insert => {"_payload":[{"name":"dip3","roll":10},{"name":"dip3","roll":10,"_id":10}]} => we found id for some entry which is not allowed
117. 
118. 
119. 
120. 
121. 
122. #########################################################################################
123. ##                                                                                     ##
124. ##         DB QUERY                                                                    ##
125. ##                                                                                     ##
126. #########################################################################################
127. # allows to search over the db.
128. # You can use get or find alternatively in GET or POST Request.
129. # You can use _filter for advance ops and even pass Mongo query inside _filter while makeing POST.
130. 
131. => !GET  => http://{{server}}/api/test0/delete?_confirmstr=test0 => Deleted count is
132. => !POST  => http://{{server}}/api/test0/insert => {"_payload":[{"name":"dip1", "roll":10},{"name":"dip2", "roll":20},{"name":"dip3", "roll":30} ]} => 3 entry\(s\) insert successfully.
133. => !POST  => http://{{server}}/api/test0/create => {"name":"dip","count":1} => "_id":"(?.*?)"
134. => GET  => http://{{server}}/api/test0  => 4 items.
135. => GET  => http://{{server}}/api/test0/  => 4 items.
136. => GET  => http://{{server}}/api/test0/find  => 4 items.
137. => GET  => http://{{server}}/api/test0/find/  => 4 items.
138. => GET  => http://{{server}}/api/test0/get  => 4 items.
139. => GET  => http://{{server}}/api/test0/get/  => 4 items.
140. => GET  => http://{{server}}/api/test0/find?id={{id}}  => Find successfully with 1 items
141. => GET  => http://{{server}}/api/test0/get?id={{id}}  => Find successfully with 1 items
142. => GET  => http://{{server}}/api/test0/find?name=dip3  => 1 items
143. => GET  => http://{{server}}/api/test0/find?name=dip1&roll=10 => 0 items
144. # you should you POST to make type senasitive serach.
145. => POST  => http://{{server}}/api/test0/find => {"name":"dip3","roll":30} => 1 items.
146. #Test _filter
147. => GET  => http://{{server}}/api/test0/find?_filter=name:dip3 => 1 items
148. => POST  => http://{{server}}/api/test0/find => {"_filter":"name:dip3"} => 1 items
149. => POST  => http://{{server}}/api/test0/find => {"_filter":{"name":"dip3"}} => 1 items
150. => POST  => http://{{server}}/api/test0/find => {"_filter":{"name":{"$regex":"dip","$options":"i"}}} => 4 items
151. => GET  => http://{{server}}/api/test0/  => 4 items
152. # FIX ME: GET => http://{{server}}/api/test0  => 4 items
153. 
154. 
155. 
156. # ======= _page and _limit =================
157. # A SS way to support pagination.
158. 
159. => !POST  => http://{{server}}/api/test0/insert => {"_payload":[{"name":"dip20", "roll":10},{"name":"dip21", "roll":20},{"name":"dip22", "roll":30},{"name":"dip23", "roll":10},{"name":"dip24", "roll":20},{"name":"dip25", "roll":30},{"name":"dip26", "roll":10},{"name":"dip27", "roll":20},{"name":"dip28", "roll":30},{"name":"dip29", "roll":10},{"name":"dip30", "roll":20},{"name":"dip31", "roll":30} ]} => 12 entry
160. => GET  => http://{{server}}/api/test0/find?_page=0 => 10 items
161. => GET  => http://{{server}}/api/test0/find?_page=1 => 6 items
162. => GET  => http://{{server}}/api/test0/find?_limit=2 => 2 items
163. => GET  => http://{{server}}/api/test0/find?_page=0&_limit=2 => 2 items
164. => GET  => http://{{server}}/api/test0/find?_page=1&_limit=2  => Find successfully with 2 items \(page:1, limit:2\)
165. => GET  => http://{{server}}/api/test0/find?_page=200&_limit=2  => 0 items
166. 
167. # _project helps to return only those ele in the find.
168. => GET  => http://{{server}}/api/test0/find?_project=_id => ,{"_id":".*?"},
169. => GET  => http://{{server}}/api/test0/find?_project=name => {"name":".*?"},{"name":".*?"},
170. => GET  => http://{{server}}/api/test0/find?_project=_id,name => {"_id":".*?","name":".*?"},
171. => GET  => http://{{server}}/api/test0/find?_project=_id,name,roll => {"_id":".*?","name":".*?","roll":.*?},{
172. => GET  => http://{{server}}/api/test0/find?_project= => ts_insert
173. => GET  => http://{{server}}/api/test0/find?_project=unknown => \[{},{},{},{}
174. 
175. #==================== ~ with _filter ===================
176. # we use _filter to filter documents for insert/delete/find/update. we can use _filter in POST
177. # to support = operator which should be replaced by : for GET. You should use ~ for partial matching REGEX.
178. 
179. => !GET  => http://{{server}}/api/test0/delete?_confirmstr=test0 => Deleted count is
180. => !POST  => http://{{server}}/api/test0/insert => {"_payload":[{"name":"dip1"},{"name":"dip2"},{"name":"supdi2"} ]} => 3 entry\(s\) insert successfully.
181. => GET  => http://{{server}}/api/test0/find?_filter=name:dip1  => 1 items
182. => GET  => http://{{server}}/api/test0/find?_filter=name~dip1  => 1 items
183. => GET  => http://{{server}}/api/test0/find?_filter=name~p  =>  3 items
184. => GET  => http://{{server}}/api/test0/find?_filter=name~^di  => 2 items
185. => GET  => http://{{server}}/api/test0/find?_filter=name~1$  =>  1 items.
186. 
187. 
188. 
189. #=================== regex =======================
190. # this a way to support regular expression search.
191. 
192. => !GET  => http://{{server}}/api/test0/delete?_confirmstr=test0 => Deleted count is
193. => !POST  => http://{{server}}/api/test0/create?_confirmstr=test0 => {"_payload":[{"name":"dip1","roll":1}, {"name":"dip2","roll":2}, {"name":"xip2","roll":3}]} => success
194. => GET  => http://{{server}}/api/test0/regex?name=^d => with 2 items.
195. => GET  => http://{{server}}/api/test0/regex?name=1$ => with 1 items.
196. 
197. 
198. #=================  @today, @week, @month ==============
199. => GET  => http://{{server}}/api/test0?ts_insert=@today =>3 items
200. => GET  => http://{{server}}/api/test0/count?ts_insert=@week => Count: 3
201. => GET  => http://{{server}}/api/test0?ts_insert=@month =>3 items
202. => GET  => http://{{server}}/api/test0?ts_update=@today =>3 items
203. => GET  => http://{{server}}/api/test0?ts_update=@week => 3 items
204. => GET  => http://{{server}}/api/test0/count?ts_update=@month =>Count: 3
205. => GET  => http://{{server}}/api/test0/count?ts_update=@3DaysOld =>Count: 0
206. => GET  => http://{{server}}/api/test0/count?ts_update=@7DaysOld =>Count: 0
207. 
208. # ==== TEST get random ####
209. =>  GET  => http://{{server}}/api/test0/get_random?_limit=3 => returned random list of size : 3
210. =>  GET  => http://{{server}}/api/test0/get_random?_limit=3 => returned random list of size : 3
211. 
212. #########################################################################################
213. ##                                                                                     ##
214. ##         DB UPDATE                                                                   ##
215. ##                                                                                     ##
216. #########################################################################################
217. 
218. #=============  create and update =================
219. # 1. Test We able update an specific entry
220. # 2. Test we update multiple entry by filter.
221. # 3. Test we update multiple entry with multiple specific data ( using _payload.)
222. 
223. => !GET  => http://{{server}}/api/test0/delete?_confirmstr=test0 => Deleted count is
224. => !POST  => http://{{server}}/api/test0/create => {"name":"subha","roll":1} => success
225. => !POST  => http://{{server}}/api/test0/create => {"name":"subha","roll":2} => success
226. # Simple create should be return list everywhere
227. => POST  => http://{{server}}/api/test0/create => {"name":"hari","roll":3} => "out":\[{"name":"hari",
228. => GET  => http://{{server}}/api/test0/update?id={{id}}&name=hari1 => "name":"hari1"
229. => GET  => http://{{server}}/api/test0/update?id={{id}}&name=hari2 => "name":"hari2"
230. => GET  => http://{{server}}/api/test0/update?roll=10&_filter=name:subha => missing _confirmstr
231. => GET  => http://{{server}}/api/test0/update?_filter=name:subha&_confirmstr=test0 => Looks like you are sending empty data
232. => GET  => http://{{server}}/api/test0/update?roll=10&_filter=name:subha&_confirmstr=test0 => Successfully updated 2 entry out of 2 matched cout
233. => POST  => http://{{server}}/api/test0/update => {"roll":10,"_filter":{"name":"subha"},"_confirmstr":"test0"} => Successfully updated 2 entry out of 2 matched cout
234. => POST  => http://{{server}}/api/test0/update => {"_payload":[{"name":"dip"}], "_confirmstr":"test0"} => each object in _payload must have a id
235. 
236. 
237. ########################## Subentry #################################################################
238. # This helps to building facebook post with comments
239. # adding subentry to a database entry: like adding a comments
240. # Whne you add a subentry , it will create a entry_id as a uniquer id whcih can be used to delete.
241. ######################################################################################################
242. => !GET  => http://{{server}}/api/test1/delete?_confirmstr=test1 => Deleted count is
243. => !POST  => http://{{server}}/api/test1/insert => {"name":"A1","comments":[]} =>  "_id":"(?.*?)"
244. => POST  => http://{{server}}/api/test1/subentry/add? => {"id":"{{id1}}"} => Missing key
245. => POST  => http://{{server}}/api/test1/subentry/add? => {"id":"{{id1}}","key":"comments"} => Missing value
246. => POST  => http://{{server}}/api/test1/subentry/add? => {"id":"{{id1}}","key":"comments","value":10} => error
247. => POST  => http://{{server}}/api/test1/subentry/add? => {"id":"{{id1}}","key":"comments","value":{"msg":"message1"}} => "msg":"message1"
248. => POST  => http://{{server}}/api/test1/subentry/add? => {"_id":"601ddf283ac366b16c634000","key":"comments","value":{"msg":"message1"}} => not found this id
249. => POST  => http://{{server}}/api/test1/subentry/add? => {"_id":"{{id1}}","key":"comments","value":{"msg":"message1"}} => "msg":"message1"
250. => POST  => http://{{server}}/api/test1/subentry/add? => {"id":"{{id1}}","key":"comments","value":[{"msg":"message2"},{"msg":"message3"}]} => Input is not an object
251. => POST  => http://{{server}}/api/test1/subentry/add_many => {"id":"{{id1}}","key":"comments","value":[{"msg":"message2"},{"msg":"message3"}]} => "msg":"message3"
252. => POST  => http://{{server}}/api/test1 => {"id":"{{id1}}"} => "msg":"message3"
253. #Check add remove
254. => POST  => http://{{server}}/api/test1/subentry/add? => {"id":"{{id1}}","key":"comments","value":{"msg":"message4"}} => "entry_id":"(?.*?)"
255. => POST  => http://{{server}}/api/test1/subentry/remove => {"id":"{{id1}}", "key":"comments", "entry_id":"{{entry_id}}"} => success
256. => POST  => http://{{server}}/api/test1/subentry/get => {"id":"{{id1}}"} => This feature not yet supported
257. 
258. # test update
259. => !POST  => http://{{server}}/api/test1/insert => {"name":"A2","comments":[]} =>  "_id":"(?.*?)"
260. => POST  => http://{{server}}/api/test1/subentry/add? =>{"_id":"{{id1}}", "key":"comments", "value":{"msg":"hello","name":"hello"}} => "entry_id":"(?.*?)" => "name":"hello"
261. # This should merge
262. => POST  => http://{{server}}/api/test1/subentry/update? =>{"_id":"{{id1}}","entry_id":"{{entry_id}}",  "key":"comments", "value":{"msg":"hello1", "color":"red"}} => successfully update subentry with key
263. => POST  => http://{{server}}/api/test1/ => {"_id":"{{id1}}"}  => "name":"hello"
264. => POST  => http://{{server}}/api/test1/ => {"_id":"{{id1}}"} => "color":"red"
265. 
266. #Testing with auth_token_
267. => POST  => http://{{server}}/api/test1/subentry/update? => {"_id":"{{id1}}","entry_id":"{{entry_id}}",  "key":"comments", "value":{"msg":"hello1", "color":"red"},  "auth_token_":"skip"} => successfully update subentry with key
268. 
269. => !GET  => http://{{server}}/api/test1/delete?_confirmstr=test1 => Deleted count is
270. 
271. 
272. 
273. #############  BULK UPDATE #############################
274. => !POST  => http://{{server}}/api/test0/insert => {"name":"A1"} =>  "_id":"(?.*?)"
275. => !POST  => http://{{server}}/api/test0/insert => {"name":"A2"} =>  "_id":"(?.*?)"
276. => POST  => http://{{server}}/api/test0/bulkupdate => {"_payload":[]} => missing _confirmstr
277. => POST  => http://{{server}}/api/test0/bulkupdate => {"_payload":[], "_confirmstr":"test0"} => ensureHasNonEmptyPayload
278. => POST  => http://{{server}}/api/test0/bulkupdate => {"_payload":[{"name":"10"}], "_confirmstr":"test0"} => ensurePayloadHasId
279. => POST  => http://{{server}}/api/test0/bulkupdate => {"_payload":[{"id":"{{id1}}", "name":"B1","tool":3}, {"id":"{{id2}}", "name":"B2"}], "_confirmstr":"test0"} => 2/2
280. => GET  => http://{{server}}/api/test0?_id={{id1}} => B1
281. 
282. 
283. #===================== insertorupdate =============================
284. => !POST  => http://{{server}}/api/test0/insertorupdate => {} => _field is missing
285. => !POST  => http://{{server}}/api/test0/insertorupdate => {"_payload":[{"name":"dip","roll":1}, {"name":"dip2","roll":1}],"_field":"name"} => 2/0
286. => !POST  => http://{{server}}/api/test0/insertorupdate => {"_payload":[{"name":"dip","roll":2}, {"name":"dip2","roll":2},{"name":"dip3","roll":3}],"_field":"name"} => 1/2
287. 
288. 
289. #########################################################################################
290. ##                                                                                     ##
291. ##         DB DELETE                                                                   ##
292. ##                                                                                     ##
293. #########################################################################################
294. 
295. #  delete allows to delete one or many items or all the items. to delete in bulk you need to
296. #  provide _confirmstr as a db name. A db starting with nodel_ don't support any delete _operation by design.
297. 
298. => GET  => http://{{server}}/api/test0/delete => missing _confirmstr
299. => GET  => http://{{server}}/api/test0/delete?_confirmstr=test0 => Deleted count is
300. => GET  => http://{{server}}/api/nodel_test0/delete?_confirmstr=nodel_test0 => The DB has marked as nodel
301. 
302. #########################################################################################
303. ##                                                                                     ##
304. ##         DB RANK                                                                     ##
305. ##                                                                                     ##
306. #########################################################################################
307. 
308. # ranks and hits are the simplestore ways to ranking algorithms
309. # hits will help increment or decrements ranking.
310. # rankup - will rankup based on rank strategies
311. # rankdown - will rankdown based on rank strategies
312. 
313. => !GET  => http://{{server}}/api/test0/delete?_confirmstr=test0 => Deleted count is : 0
314. => !POST  => http://{{server}}/api/test0/create => {"name":"dip","count":1} => "_id":"(?.*?)"
315. => GET  => http://{{server}}/api/test0/find?id={{id}}  => Find successfully with 1 items
316. => GET  => http://{{server}}/api/test0/hits => You must pass a _id
317. => GET  => http://{{server}}/api/test0/hits?_field=count => You must pass a _id
318. => GET  => http://{{server}}/api/test0/hits?id={{id}}=> _field is missing
319. => GET  => http://{{server}}/api/test0/hits?_field=count&id={{id}} => ","out":2,"help"
320. => GET  => http://{{server}}/api/test0/hits?_field=count&id={{id}} => ","out":3,"help"
321. # Adjust the bellow test as they are right.
322. => GET  => http://{{server}}/api/test0/hits?_field=count&id={{id}}&_value=8 => 11
323. => GET  => http://{{server}}/api/test0/hits?_field=count&id={{id}}&_value=-1 => 10
324. => GET  => http://{{server}}/api/test0/increment?_field=count&id={{id}}&_value=-1 =>  ","out":9,"help"
325. => GET  => http://{{server}}/api/test0/increment/?_field=count&id={{id}}&_value=-1 => 8
326. => GET  => http://{{server}}/api/test0/increment?_field=count&id=wrongID&_value=-1 => not a valid ID
327. => GET  => http://{{server}}/api/test0/increment?_field=count&id=5df55c6273df4d3ec6cbcf15&_value=-1 => Item not found
328. 
329. 
330. => !GET  => http://{{server}}/api/test0/create?name=dip1 =>  "_id":"(?.*?)"
331. => GET  => http://{{server}}/api/test0/rankup => You must pass a _id
332. => GET  => http://{{server}}/api/test0/rankup?id={{id}} => _field is missing
333. => GET  => http://{{server}}/api/test0/rankup?_field=count => You must pass a _id
334. => GET  => http://{{server}}/api/test0/rankup?_field=count&id={{id}} =>  ","out":1,"help"
335. => GET  => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 2
336. => GET  => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 3
337. => GET  => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 4
338. => GET  => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 5
339. => GET  => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 6
340. => GET  => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 7
341. => GET  => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 8
342. => GET  => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 9
343. => GET  => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 10
344. => GET  => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 10
345. => GET  => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} =>  ","out":9,"help"
346. => GET  => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 8
347. => GET  => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 7
348. => GET  => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 6
349. => GET  => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 5
350. => GET  => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 4
351. => GET  => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 3
352. => GET  => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 2
353. => GET  => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 1
354. => GET  => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 0
355. => GET  => http://{{server}}/api/test0/rankdown?_field=count&id={{id}} => 0
356. => GET  => http://{{server}}/api/test0/rankup?_field=count&id={{id}} => 1
357. 
358. #########################################################################################
359. ##                                                                                     ##
360. ##         DB COUNT                                                                    ##
361. ##                                                                                     ##
362. #########################################################################################
363. 
364. # just count elements of find or filter.
365. 
366. => !GET  => http://{{server}}/api/test0/delete?_confirmstr=test0 => Deleted count is : 2
367. => !POST  => http://{{server}}/api/test0/create?_confirmstr=test0 => {"_payload":[{"name":"dip","roll":1}, {"name":"dip","roll":2}, {"name":"sup","roll":3}]} => success
368. => GET  => http://{{server}}/api/test0/count => 3
369. => GET  => http://{{server}}/api/test0/count?name=dip => 2
370. => GET  => http://{{server}}/api/test0/count?roll=3 => 0
371. => POST  => http://{{server}}/api/test0/count => {"roll":3} => 1
372. 
373. #########################################################################################
374. ##                                                                                     ##
375. ##         DB AGGRESSION                                                               ##
376. ##                                                                                     ##
377. #########################################################################################
378. 
379. # sum is the aggregation framework for simplestore. It allows to count, sum, max,min avg on
380. # a _field.
381. 
382. => !GET  => http://{{server}}/api/test0/delete?_confirmstr=test0 => Deleted count is
383. => !POST  => http://{{server}}/api/test0/create?_confirmstr=test0 => {"_payload":[{ "name": "Infosys", "qty": 100, "price": 800 }, { "name": "TCS", "qty": 100, "price": 2000 },{ "name": "Wipro", "qty": 2500, "price": 300 }]} => success
384. => GET  => http://{{server}}/api/test0/sum => _field is missing
385. => GET  => http://{{server}}/api/test0/sum?_field=qty => 2700
386. => POST  => http://{{server}}/api/test0/sum => {"_field" : "qty"} => 2700
387. => POST  => http://{{server}}/api/test0/sum => {"_field" : "qty", "_operation":"$max"} => 2500
388. => POST  => http://{{server}}/api/test0/sum => {"_field" : "qty", "_operation":"$min"} => 100
389. => POST  => http://{{server}}/api/test0/sum => {"_field" : "qty", "_operation":"$avg"} => 900
390. => POST  => http://{{server}}/api/test0/sum => {"_field":"qty", "_filter":{"qty":100}}  => 200
391. 
392. #########################################################################################
393. ##                                                                                     ##
394. ##         DB CONSTRAINT                                                               ##
395. ##                                                                                     ##
396. #########################################################################################
397. # Constraints allows us to dynamically insert of delete the unique key for a db.
398. # we sound support other func like not null or datatype constraints.
399. 
400. => !GET  => http://{{server}}/api/test1/delete?_confirmstr=test1  => success
401. => GET  => http://{{server}}/api/test1/constraints/get  => all constraints returned successfully
402. => GET  => http://{{server}}/api/test1/constraints/add?name=unique  => all constraints added successfully
403. => GET  => http://{{server}}/api/test1/constraints/get  => name_1
404. => GET  => http://{{server}}/api/test1/constraints/remove  => all constraints removed successfully
405. => GET  => http://{{server}}/api/test1/constraints/get  =>  all constraints returned successfully
406. => GET  => http://{{server}}/api/test1/constraints/add?name=unique  => name_1
407. => GET  => http://{{server}}/api/test1/constraints/add?name1=unique1  => invalid constraints found:
408. => GET  => http://{{server}}/api/test1/constraints/clear  => all constraints cleared successfully
409. => GET  => http://{{server}}/api/test1/constraints/get  => all constraints returned successfully
410. 
411. => !GET  => http://{{server}}/api/test1/constraints/clear  => all constraints cleared successfully
412. => !GET  => http://{{server}}/api/test1/constraints/add?name=unique  => all constraints added successfully
413. => POST  => http://{{server}}/api/test1/insert => {"name":"DIP"}  => insert successfully
414. => POST  => http://{{server}}/api/test1/insert => {"name":"DIP"}  => duplicate key error collection
415. => POST  => http://{{server}}/api/test1/insert => {"_payload":[{"name":"DIP"},{"name":"DIP1"}]}  => E11000 duplicate key error collection
416. => GET  => http://{{server}}/api/test1 => DIP1
417. 
418. #=============  BULK INSERT =====================
419. # Bulk insert allows you to insert a list of items to DB even if some items are not able insert. It's similar to insert
420. # but provides the count of success and fails.
421. 
422. => POST  => http://{{server}}/api/test1/bulk_insert => {"name":"DIP"}  => you must send _payload as list
423. => POST  => http://{{server}}/api/test1/bulk_insert => {"_payload":[{"name":"DIP"},{"name":"DIP1"}]}  => 0/2
424. => POST  => http://{{server}}/api/test1/bulk_insert => {"_payload":[{"name":"DIP"},{"name":"DIP3"}]}  => 1/2
425. 
426. 
427. #########################################################################################
428. ##                                                                                     ##
429. ##         DB TAGS                                                                     ##
430. ##                                                                                     ##
431. #########################################################################################
432. #  Tags allows us to adding, removing and searching tags attached to a documents. This is essentially
433. #  a tagging mechanism to support hashtag or categories a documents. It's works like a set _operation.
434. #  you need to use rwa_search to do the searching the tag.
435. => POST  => http://{{server}}/api/test/tags/add =>  {"_id":"{{id}}", "_field":"tag"}  => You have not send either _field or _value.
436. => POST  => http://{{server}}/api/test/tags/add =>  {"_id":"{{id}}", "_value":"tag"}  => You have not send either _field or _value.
437. => !POST  => http://{{server}}/api/test/create => {"name":"dip","count":1} => "_id":"(?.*?)"
438. => GET  => http://{{server}}/api/test/tags/clear?id=5daa8d3ea216e2d820e2c09e&_field=tag&_value=10,20 => item has not found
439. => GET  => http://{{server}}/api/test/tags/clear?id={{id}}&_field=tag&_value=10,20 => "tag":\[\]
440. => GET  => http://{{server}}/api/test/tags/add?id={{id}}&_field=tag&_value=10,20 => \["10","20"\]
441. => GET  => http://{{server}}/api/test/tags/add?id={{id}}&_field=tag&_value=10,20 => \["10","20"\]
442. => GET  => http://{{server}}/api/test/tags/add?id={{id}}&_field=tag&_value=10,20,30,40 => \["10","20","30","40"\]
443. => GET  => http://{{server}}/api/test/tags/remove?id={{id}}&_field=tag&_value=10 => \["20","30","40"\]
444. => GET  => http://{{server}}/api/test/tags/remove?id={{id}}&_field=tag&_value=10 => \["20","30","40"\]
445. => GET  => http://{{server}}/api/test/tags/clear?id={{id}}&_field=tag&_value='' =>  "tag":\[\]
446. 
447. 
448. #########################################################################################
449. ##                                                                                     ##
450. ##         DB INDEX                                                                    ##
451. ##                                                                                     ##
452. #########################################################################################
453. 
454. => POST  => http://{{server}}/api/test/index => {} => you must send _payload as list
455. => POST  => http://{{server}}/api/test/index => {"_payload":[]} => You must NOT send a empty list
456. # TODO: BROKEN TEST - FIX IT
457. # => POST  => http://{{server}}/api/test/index => {"_payload":[{ "ts_insert": 1 }, { "expireAfterSeconds": 60 }]} => \{"ts_insert":1,"expireAfterSeconds":60\}
458. 
459. 
460. 
461. 
462. 
463. 
464. #====================  Help =================================
465. # TODO : BROKEN FIX IT -- BLOCKING TEST
466. #=> POST  => http://{{server}}/api/test/index/help => {} => This API is used to create Index for a DB
467. #=> GET  => http://{{server}}/api/test/index/help => This API is used to create Index for a DB
468. 
469. 
470. 
471. #########################################################################################
472. ##                                                                                     ##
473. ##         DB DISTRIBUTION                                                             ##
474. ##                                                                                     ##
475. #########################################################################################
476. => !POST  => http://{{server}}/api/test/bulk_insert => {"_payload":[{"type":"a","roll":1},{"type":"a","roll":1},{"type":"a","roll":1},{"type":"b","roll":1},{"type":"b","roll":2},{"type":"c","roll":1},{"type":"d","roll":2},{"type":"d","roll":2}]}  => 8/8
477. => POST  => http://{{server}}/api/test/distribution => {"roll":1,"_field":"type"} => {"count":3,"type":"a"}
478. => POST  => http://{{server}}/api/test/distribution?_viewas=chartjs => {"roll":1,"_field":"type"} => "borderWidth":1
479. => POST  => http://{{server}}/api/test/distribution => {"roll":1,"ts_insert":"@today", "_field":"type"} => {"count":3,"type":"a"}
480. => POST  => http://{{server}}/api/test/distribution => {"roll":2,"_field":"type"} => {"count":2,"type":"d"}
481. 
482. 
483. 
484. #########################################################################################
485. ##                                                                                     ##
486. ##         DB TIME SERIES                                                              ##
487. ##                                                                                     ##
488. #########################################################################################
489. => !POST  => http://{{server}}/api/test/create => {"_payload":[{"name":"dipp","number":10}, {"name":"dipp","number":20}, {"name":"dipp1","number":20}]} => success
490. => GET  => http://{{server}}/api/test/ts => "count":12
491. => GET  => http://{{server}}/api/test/ts?name=dipp&_field=dummy => "count":2,
492. 
493. 
494. #########################################################################################
495. ##                                                                                     ##
496. ##         APP ANALYTICS                                                               ##
497. ##                                                                                     ##
498. #########################################################################################
499. # We need to do it again - Please test using simplestore SDK
500. 
501. #########################################################################################
502. ##                                                                                     ##
503. ##         APP CONFIG                                                               ##
504. ##                                                                                     ##
505. #########################################################################################
506. # This is api allows to set data for a app
507. => GET => http://localhost/api/appconfig/insert?app_id=in.co.dipankar.test&name=hello => insert successfully
508. => GET => http://localhost/api/appconfig/save?app_id=in.co.dipankar.busbondhdu&name=hello1 => Update done
509. 
510. 
511. # ======= exist API ===================
512. => !POST  => http://{{server}}/api/test/create?_confirmstr=test0 => {"_payload":[{"name":"dip","roll":1}, {"name":"dip1","roll":2}]} => success
513. => POST  => http://{{server}}/api/test/exist => {} => You have not send either _field or _value
514. => POST  => http://{{server}}/api/test/exist => {"_field":"name"} => You have not send either _field or _value
515. => POST  => http://{{server}}/api/test/exist => {"_field":"name","_value":""} => You have not send either _field or _value.
516. => POST  => http://{{server}}/api/test/exist => {"_field":"name","_value":",,,"} => You must NOT send a not empty _value as a list or equivalent comma separated string
517. => POST  => http://{{server}}/api/test/exist => {"_field":"name","_value":"dip"} => Found 1 out of 1.
518. => POST  => http://{{server}}/api/test/exist => {"_field":"name","_value":"dip, dip1"} => Found 2 out of 2.
519. => POST  => http://{{server}}/api/test/exist => {"_field":"name","_value":["dip","dip1"]} => Found 2 out of 2.
520. 
521. # =====  _viewas =====================
522. => GET  => http://{{server}}/api/test/find?_viewas=compressed => Find successfully
523. => GET  => http://{{server}}/api/test/find?_viewas=invalid => Network request contains invalid _viewas
524. => GET  => http://{{server}}/api/test/find?name=dip&_viewas=input => "input":\{"name":"dip"
525. => GET  => http://{{server}}/api/test/?_edit=1 =>  button type="button" onclick="clone
526. 
527. 
528. #===  aggregate API ===========
529. => !POST  => http://{{server}}/api/test/create?_confirmstr=test => {"_payload":[{"product":"X","type":"type1"}, {"product":"X","type":"type1"}, {"product":"Y","type":"type1"}, {"product":"Y","type":"type2"}, {"product":"Z","type":"type2"}]} => success
530. => POST  => http://{{server}}/api/test/aggregate => {} => you must send _payload as list
531. => POST  => http://{{server}}/api/test/aggregate => {"_payload":{"hello":"hello"}} => you must send _payload as list
532. => POST  => http://{{server}}/api/test/aggregate => {"_payload": [ {"$match":{"type":"type1"}},  {"$group": {"_id": "$product","count": {"$sum": 1}}}]  } => {"_id":"X","count":2}
533. 
534. #====== date api ======
535. => POST  => http://{{server}}/api/utils/date  => {} => 202
536. => GET  => http://{{server}}/api/utils/date  => 202
537. 
538. # ============ test /dbconfig ====================
539. => GET  => http://{{server}}/api/test10/dbconfig => DbConfig not found
540. => GET  => http://{{server}}/api/test_r/dbconfig => \{"local":false\}
541. 
542. # ==========  type-sefty and data validation ======
543. # define rules as per https://github.com/skaterdav85/validatorjs
544. # supported type: string, array, boolean, date, email, integer, numeric,regex:pattern,
545. # Supported constraints: required, not_in:foo,bar , max:value. min:value, in:foo,bar
546. => GET  => http://{{server}}/api/test_v/insert?aa=aa => The name field is required
547. => POST  => http://{{server}}/api/test_v/insert =>{"name":""}=> name field must not empty
548. # Also detect empty string
549. => POST  => http://{{server}}/api/test_v/insert =>{"name":"  "}=> name field must not empty
550. => POST  => http://{{server}}/api/test_v/insert =>{"name":"  "}=> name field must not empty
551. => GET  => http://{{server}}/api/test_v/insert?name=dip => The email field is required
552. => GET  => http://{{server}}/api/test_v/insert?name=aa&email=dip => email must be email
553. => GET  => http://{{server}}/api/test_v/insert?name=aa&email=dip@dip.com => insert successfully
554. => POST  => http://{{server}}/api/test_v/insert => {"name":"aa","email":"dip@dip.com","array":"hello"} => array must be a array
555. => POST  => http://{{server}}/api/test_v/insert => {"name":"aa","email":"dip@dip.com","array":["hello"]} => insert successfully
556. 
557. => POST  => http://{{server}}/api/test_v/insert => {"name":"aa","email":"dip@dip.com","boolean":100} => boolean must be a boolean
558. => POST  => http://{{server}}/api/test_v/insert => {"name":"aa","email":"dip@dip.com","boolean":true} => insert successfully
559. 
560. => POST  => http://{{server}}/api/test_v/insert => {"name":"aa","email":"dip@dip.com","number":"hello"} => number must be a number
561. => POST  => http://{{server}}/api/test_v/insert => {"name":"aa","email":"dip@dip.com","number":1000} => "_id":"(?.*?)"
562. => POST  => http://{{server}}/api/test_v/update => {"_id":"{{id}}","number":"1D000"} => number must be a number
563. => POST  => http://{{server}}/api/test_v/update => {"_id":"{{id}}","number":"10000"} => success
564. => POST  => http://{{server}}/api/test_v/update => {"_id":"{{id}}","number":10000} => success
565. => POST  => http://{{server}}/api/test_v/update => {"_id":"{{id}}","array":"1D000"} => array must be a array
566. => POST  => http://{{server}}/api/test_v/update => {"_id":"{{id}}","array":["1D000"]} => success
567. => GET  => http://{{server}}/api/test_v/update?number="123D"&_confirmstr=test_v => number must be a number
568. => GET  => http://{{server}}/api/test_v/update?number=123&_confirmstr=test_v  => success
569. => POST  => http://{{server}}/api/test_v/insert => {"_payload":[{"name":"aa","email":"dip@dip.com","number":1000},{"name":"aa","email":"dip@dip.com","number":1000}]} => success
570. => POST  => http://{{server}}/api/test_v/insert => {"_payload":[{"name":"aa","email":"dip@dip.com","number":"WRONG"},{"name":"aa","email":"dip@dip.com","number":1000}]} => error
571. => POST  => http://{{server}}/api/test_v/insert => {"_payload":[{"name":"aa","email":"dip@dip.com","number":"WRONG"},{"name":"aa","email":"dip@dip.com","number":"WRONG"}]} => error
572. 
573. 
574. ###################################################################
575. #
576. #  Advance Search with RHS Color search
577. #  Supported annotation:
578. #  eq, ne, starts, ends:, regex:, in:, all:,int:eqi, nei, date:
579. ###################################################################
580. => !GET  => http://{{server}}/api/test/delete?_confirmstr=test =>success
581. => !POST  => http://{{server}}/api/test/insert => {"name":"A123","roll":10,"color":["red","green"]} => success
582. => !POST  => http://{{server}}/api/test/insert => {"name":"B123","roll":11,"color":["red","blue"]} => success
583. => !POST  => http://{{server}}/api/test/insert => {"name":"C124","roll":12,"color":["blue","green"]} => success
584. => !POST  => http://{{server}}/api/test/insert => {"name":"xxx:xx66"} => success
585. => GET  => http://{{server}}/api/test/count?name=eq:A123 => Count: 1
586. => GET  => http://{{server}}/api/test/count?name=ne:A123 => Count: 3
587. => GET  => http://{{server}}/api/test/count?name=starts:A => Count: 1
588. => GET  => http://{{server}}/api/test/count?name=ends:3 => Count: 2
589. => GET  => http://{{server}}/api/test/count?name=regex:12 => Count: 3
590. => GET  => http://{{server}}/api/test/count?color=in:red => Count: 2
591. => GET  => http://{{server}}/api/test/count?color=in:red,green => Count: 3
592. => GET  => http://{{server}}/api/test/count?color=in:red, green,,,, => Count: 3
593. => GET  => http://{{server}}/api/test/count?color=in:green,red => Count: 3
594. => GET  => http://{{server}}/api/test/count?color=all:green,red => Count: 1
595. => GET  => http://{{server}}/api/test/count?color=all:green,red,blue => Count: 0
596. => GET  => http://{{server}}/api/test/count?color=all:green,red,  blue,  => Count: 0
597. => GET  => http://{{server}}/api/test/count?color=in:   green,  red,  blue,  => Count: 3
598. => GET  => http://{{server}}/api/test/count?color=in:green,red,  blue,&name=starts:A  => Count: 1
599. => GET  => http://{{server}}/api/test/count?name=xxx:xx66 => Count: 1
600. => GET  => http://{{server}}/api/test/count?roll=int:10 => Count: 1
601. => GET  => http://{{server}}/api/test/count?roll=eqi:10 => Count: 1
602. => GET  => http://{{server}}/api/test/count?roll=nei:10 => Count: 3
603. => GET  => http://{{server}}/api/test/count?roll=eqi:XX => Count: 0
604. 
605. # Test Params annotation
606. => !GET  => http://{{server}}/api/test/delete?_confirmstr=test =>success
607. => GET => http://{{server}}/api/test/insert?rate=number:abc => params starts with number:XX
608. => GET => http://{{server}}/api/test/insert?rate=number:100 => "rate":100
609. => GET => http://{{server}}/api/test/insert?rate=number:100.100 => "rate":100.1,
610. => GET => http://{{server}}/api/test/insert?join_date=date:abc => params starts with date:
611. => GET => http://{{server}}/api/test/insert?join_date=date:2014-11-03T19:38:34.203Z => "join_date":"2014-11-03T19:38:34.203Z",
612. => POST => http://{{server}}/api/test/insert => {"join_date":"date:2014-11-03T19:38:34.203Z"} => "join_date":"2014-11-03T19:38:34.203Z",
613. => GET => http://{{server}}/api/test/insert?join_date=date:2014-11-03 => "join_date":"2014-11-03T00:00:00.000Z",
614. => GET => http://{{server}}/api/test/insert?join_date=date:2014-11-03X => must be a valid ISO Date
615. 
616. 
617. 
618. => !GET  => http://{{server}}/api/test/delete?_confirmstr=test => success
619. 
620. 
621. 
622. # == Download
623. => !POST  => http://{{server}}/api/test/insert => {"name":"A123","roll":10,"color":["red","green"]} => success
624. => GET  => http://{{server}}/api/test/download => \[\{"_id":
625. => GET  => http://{{server}}/api/test/export => \[\{"_id":
626. 
627. # override db selection.
628. # its not possible to test as in testing all are local db.
629. => GET  => http://{{server}}/api/test/count?_targetdb=local => success
630. => GET  => http://{{server}}/api/test/count?_targetdb=remote => success
631. 
632. # pivoit Table.
633. => !GET  => http://{{server}}/api/test/delete?_confirmstr=test =>success
634. => POST  => http://{{server}}/api/test/insert => {"_payload":[{"name":"A", "country":"india"},{"name":"B", "country":"india"},{"name":"A", "country":"uk"},{"name":"B", "country":"uk"},{"name":"C", "country":"uk"}, {"name":"A", "country":"usa"}]} =>success
635. => GET  => http://{{server}}/api/test/pivot?_field=name,country => 6 distribution found
636. 
637. # Timeseries on multiple fuilds.
638. => POST  => http://{{server}}/api/test/insert => {"_payload":[{"name":"A", "event":"play_error"},{"name":"A", "event":"play_error"},{"name":"A", "event":"play_error"},{"name":"A", "event":"play_success"},{"name":"A", "event":"play_success"},{"name":"A", "event":"play_success"},{"name":"A", "event":"play_success"},{"name":"A", "event":"play_hit"},{"name":"A", "event":"play_hit"}]} =>success
639. => POST  => http://{{server}}/api/test/ts_multi => {} => you must send _payload as non empty list
640. => POST  => http://{{server}}/api/test/ts_multi => {"_payload":{"":""}} => you must send _payload as list
641. => POST  => http://{{server}}/api/test/ts_multi => {"_payload":[]} => you must send _payload as non empty list
642. => POST  => http://{{server}}/api/test/ts_multi => {"_payload":["a"]} => each element of _payload must be a object
643. => POST  => http://{{server}}/api/test/ts_multi => {"_payload":[{"event":"play_error"},{"event":"play_success"},{"event":"play_hit"}]} => multi distribution found
644. 
645. # testing hooks
646. => POST  => http://{{server}}/api/test_hook/insert => {"_payload":[{"name":"A", "event":"play_error"}]} => onBeforeInsert
647. => POST  => http://{{server}}/api/test_hook/create => {"name":"dip","count":1} =>onBeforeInsert
648. => GET  => http://{{server}}/api/test_hook/delete?id={{id}}  => onBeforeDelete
649. => GET  => http://{{server}}/api/test_hook/update?id={{id}}&name=hari1 => onBeforeUpdate
650. 
651. #Composute key
652. => GET  => http://{{server}}/api/test_composite/delete?_confirmstr=test_composite => success
653. => POST  => http://{{server}}/api/test_composite/create => {"key1":"dip"} => Data validation failed as key2 must be present as composite key
654. => POST  => http://{{server}}/api/test_composite/create => {"key2":"dip"} => Data validation failed as key1 must be present as composite key
655. => POST  => http://{{server}}/api/test_composite/create => {"key1":"z1","key2":"z2"} => insert successfully
656. => POST  => http://{{server}}/api/test_composite/create => {"key1":"z1","key2":"z2"} => Data validation failed as composite key failed
657. => POST  => http://{{server}}/api/test_composite/create => {"key1":"z1","key2":"z3"} =>insert successfully
658. => POST  => http://{{server}}/api/test_composite/create => {"key1":"z1","key2":"z3","key3":"123"} =>Data validation failed as composite key failed
659. => POST  => http://{{server}}/api/test_composite/bulk_insert => {"_payload":[{"key1":"z1","key2":"z2"},{"key1":"z1","key2":"z4","key3":"123"}]} =>1/2- Bulk Insert completed
660. 
661. # test Extension for /api/test/ext
662. => GET  => http://{{server}}/api/test/ext =>  Ext API Called
663. => POST  => http://{{server}}/api/test/ext => {} =>  Ext API Called
664. 
665. # Google chnages backend impl of Push notification so below API will not work anymore
666. # Push Notification
667. #=> GET  => http://{{server}}/api/push_notification/delete?_confirmstr=push_notification => success
668. #=> GET  => http://{{server}}/api/push_notification/insert => Trying insert Empty Object
669. #=> GET  => http://{{server}}/api/push_notification/insert?app_id=test&token=abc&os=android => insert successfully
670. #=> GET  => http://{{server}}/api/push_notification/insert?app_id=test&token=abc&os=android => Data validation failed as composite key failed
671. #=> GET  => http://{{server}}/api/push_notification/count => 1
672. #=> GET  => http://{{server}}/api/push_notification/insert?app_id=test&token=abc1&os=android => insert successfully
673. #=> GET  => http://{{server}}/api/push_notification/count => 2
674. #=> POST  => http://{{server}}/api/push_notification/insert => {"_payload":[{"app_id":"test","token":"abc11", "os":"android"},{"app_id":"test","token":"abc2", "os":"android"},{"app_id":"test","token":"abc3", "os":"android"},{"app_id":"test","token":"abc4", "os":"android"},{"app_id":"test","token":"abc5", "os":"android"},{"app_id":"test","token":"abc6", "os":"android"},{"app_id":"test","token":"abc7", "os":"android"},{"app_id":"test","token":"abc8", "os":"android"},{"app_id":"test","token":"abc9", "os":"android"},{"app_id":"test","token":"abc10", "os":"android"}]} => insert successfully
675. #
676. #=> GET  => http://{{server}}/api/push_notification/delete => You are trying to bulk operation.
677. #=> GET  => http://{{server}}/api/push_notification/delete?token=abc=> missing _confirmstr
678. #=> GET  => http://{{server}}/api/push_notification/delete?token=abc&_confirmstr=push_notification => Deleted count is : 1
679. #=> GET  => http://{{server}}/api/push_notification/count => 1
680. #=> GET  => http://{{server}}/api/push_notification/delete?token=invalid&_confirmstr=push_notification => Deleted count is : 0
681. #=> GET  => http://{{server}}/api/push_notification/count => 1
682. #
683. #=> GET  => http://{{server}}/api/push_notification/push => Input validation failed: Missing app_id
684. ###
685. ## It's dicult to test as we donb't have any token from mobile.
686. #=> GET  => http://{{server}}/api/push_notification/push?app_id=test&page=0&title=hello&body=No  Data&key=0 => succcss_count:0, error_count:1
687. #=> GET  => http://{{server}}/api/push_notification/insert?app_id=test&token=abc1&os=android => insert successfully
688. #=> GET  => http://{{server}}/api/push_notification/push?app_id=test&page=0&title=hello&body=No  Data&key=0 => DRYRUN: true
689. #=> GET  => http://{{server}}/api/push_notification/insert?app_id=test&token=abc1&os=android => insert successfully
690. #=> GET  => http://{{server}}/api/push_notification/push?app_id=test&page=0&title=hello&body=No DATA&key=0&_no_dry_run=0 => [DRYRUN: false]
691. #=> GET  => http://{{server}}/api/push_notification/insert?app_id=test&token=abc1&os=android => insert successfully
692. #=> GET  => http://{{server}}/api/push_notification/push?app_id=test&page=0&title=hello&body=WITH DATA&key=0&pane=music&target=5e6d53f944526b7da8c0a844 => succcss_count:0, error_count:1
693. #=> GET  => http://{{server}}/api/push_notification/insert?app_id=test&token=abc1&os=android => insert successfully
694. #=> GET  => http://{{server}}/api/push_notification/push?app_id=test&page=0&title=hello&body=WITH DATA&key=0&pane=music&target=5e6d53f944526b7da8c0a844&_no_dry_run=0 => succcss_count:0, error_count:1
695. #
696. #=> GET  => http://{{server}}/api/push_notification/push_one?title=hello&body=WITH DATA&key=0&pane=music&target=5e6d53f944526b7da8c0a844 => Missing token
697. #=> GET  => http://{{server}}/api/push_notification/push_one?token=fgEljAT1Qzg:APA91bFFF2zSUg3MaMtepRUzoE0xWcOvg4DlSSlxx8-85qDWreGJLHGWIM6zUkVgHIm3M7oZmcCoWIO11y2ZPbizyKt88dk-aNMYxgAiCf_DKF53ypPmpEH1-SpwSOTkV2wacIqSMBcz&title=hello&body=WITH DATA&key=0&pane=music&target=5e6d53f944526b7da8c0a844 => succcss_count:0, error_count:1
698. #=> POST  =>http://{{server}}/api/push_notification/push_one => { "token":"fgEljAT1Qzg:APA91bFFF2zSUg3MaMtepRUzoE0xWcOvg4DlSSlxx8-85qDWreGJLHGWIM6zUkVgHIm3M7oZmcCoWIO11y2ZPbizyKt88dk-aNMYxgAiCf_DKF53ypPmpEH1-SpwSOTkV2wacIqSMBcz","title":"test","body":"pane","pane":"webview","target":"https://covidout.in/"} => succcss_count:0, error_count:1
699. ## => GET => http://{{server}}/api/push_notification/push_one?token=fgEljAT1Qzg:APA91bFFF2zSUg3MaMtepRUzoE0xWcOvg4DlSSlxx8-85qDWreGJLHGWIM6zUkVgHIm3M7oZmcCoWIO11y2ZPbizyKt88dk-aNMYxgAiCf_DKF53ypPmpEH1-SpwSOTkV2wacIqSMBcz&title=এটা কিছু টেস্ট &body=এটা কিছু টেস্ট &key=0&pane=music&target=5e6d53f944526b7da8c0a844 => Successfully sent
700. #=> GET  => http://{{server}}/api/push_notification/count?app_id=test => Count: 0
701. 
702. # Testing Utilities
703. => GET  => http://{{server}}/api/utils/test?app_id=test => You are hitting Test Utils
704. => GET  => http://{{server}}/api/utils/date => The system time is
705. => GET  => http://{{server}}/api/utils/bootcamp => Welcome to simplestore BootCamp!
706. 
707. # Test Stategyies
708. => GET  => http://{{server}}/api/test/insert?name=dip&_viewas=noresp => {"status":"success"}
709. => POST  => http://{{server}}/api/test/insert?_viewas=noresp => {"name":"dip"}=> ^{"status":"success"}$
710. # We should get the exception evenif there is _viewas=noresp
711. => GET  => http://{{server}}/api/test/insert?name=dip&_viewas=noresp&_viewas=xxx => Error while parsing request
712. 
713. 
714. 
715. # test Bulk hits and rank
716. => !GET  => http://{{server}}/api/test0/create?name=dip2 =>  "_id":"(?.*?)"
717. => POST  => http://{{server}}/api/test0/bulk_hit => {"_payload":[{"id":"{{id}}","field":"count", "value":1}]} => s/e: 1/0
718. # Te hardcoded value treaded as a true.
719. => POST  => http://{{server}}/api/test0/bulk_hit => {"_payload":[{"id":"{{id}}","field":"count", "value":1}, {"id":"56cafab06639904e9b68e73a","field":"count", "value":1}, {"id":"{{id}}","field":"count", "value":"wrong"}]} => s/e: 2/1
720. => GET  => http://{{server}}/api/test0/?id={{id}} => "count":2
721. => POST  => http://{{server}}/api/test0/bulk_hit => {"_payload":[{"id":"{{id}}","field":"count", "value":-1}]} => [s/e: 1/0]
722. => POST  => http://{{server}}/api/test0/bulk_hit => {"_payload":[{"id":"{{id}}","field1":"count", "value":-1}]} => [s/e: 0/1]
723. => GET  => http://{{server}}/api/test0/?id={{id}} => "count":1
724. => POST  => http://{{server}}/api/test0/bulk_rank => {"_payload":[{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true},{"id":"{{id}}","field":"count", "up":true}]} => [s/e: 16/0]
725. => GET  => http://{{server}}/api/test0/?id={{id}} => "count":10
726. => POST  => http://{{server}}/api/test0/bulk_rank => {"_payload":[{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false}]} => [s/e: 16/0]
727. => POST  => http://{{server}}/api/test0/bulk_rank => {"_payload":[{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false},{"id":"{{id}}","field":"count", "up":false}]} => [s/e: 16/0]
728. => GET  => http://{{server}}/api/test0/?id={{id}} => "count":0
729. 
730. 
731. 
732. ################################################################################
733. # Sending Email functinaly ( Broken Needs API redesign)
734. ################################################################################
735. ## TODO: Test are broken as we meshed up with body and html two data, I would perefr to have body and then isHtml as a flag so this need to be rredesigned
736. => GET  => http://{{server}}/api/utils/email => Input validation failed: Missing to
737. => GET  => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&body=Simple Test =>Input validation failed: Missing subject
738. ## Please use dryrun to ensure to avoid getting so many mails.
739. => GET  => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&dry_run=1 => ACTUALY NOT SEND - JUST A DRY RUN
740. => GET  => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&dry_run=1 =>  Missing body
741. => GET  => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&dry_run=1 => ACTUALY NOT SEND - JUST A DRY RUN
742. => GET  => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&dry_run=1&is_html=1 => ACTUALY NOT SEND - JUST A DRY RUN
743. 
744. ## Test multiple sendaccount by spaciating product
745. 
746. => GET  => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&product=Grodok&body=hello&dry_run=1 => ACTUALY NOT SEND
747. => GET  => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&dry_run=1&product=hello => Mail is not supported for this product
748. => GET  => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&dry_run=1&product=default => \[DRYRUN\] Mail sent to
749. 
750. ##send calender invitew - just add start_time as ISO date String and duration as number in minites
751. => GET  => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&start_time=2023-07-23T23:37:08.505Z => Missing duration
752. => GET  => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&start_time=2023-07-23T23:37:08.505Z&duration=xyz =>  has to be a valid date!
753. => GET  => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&start_time=INAVLID&duration=xyz => has to be a valid date
754. => GET  => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&start_time=2023-07-23T23:37:08.505Z&duration=30&dry_run=1 => ACTUALY NOT SEND
755. => GET  => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&start_time=2023-07-23T23:37:08.505Z&duration=30&cal_body=Cal Body &cal_subject=Cal_Subject&cal_location=Kolkata&dry_run=1 => ACTUALY NOT SEND
756. 
757. ## test HTML Mail.
758. ## We are supported HTML mail - you need to send body and html but body would be droped. It just use the degault HTML
759. ## template to send the email. It works for both w/o calender
760. => POST  => http://{{server}}/api/utils/email => {"to":"dutta.dipankar08@gmail.com", "subject":"Hello", "body":"hello", "body":"Hello\nHow ae you doing?\n\nThnaks,\nDipankar","dry_run":1, "is_html":1} => ACTUALY NOT SEND
761. => GET  => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&start_time=2023-07-23T23:37:08.505Z&duration=30&cal_body=Cal Body &cal_subject=Cal_Subject&cal_location=Kolkata&html=hello there&dry_run=1 => ACTUALY NOT SEND
762. => GET  => http://{{server}}/api/utils/email?to=testuser@gmail.com&subject=Hello World&body=Simple Test => You must pass some valid email addess
763. 
764. ## REAL SEND MAIL - DISABLE BELOW TEST
765. ## GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test => Mail sent to
766. ## GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Hello\n\nWorld\nDipankar\nTest=> Mail sent to
767. ## GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&start_time=2023-07-23T23:37:08.505Z&duration=30 => [DRYRUN] Mail sent to
768. 
769. ## HTML Norm : new line to 
770. => GET => http://localhost/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Hello\nWorld&dry_run=1&is_html=1 => Hello
World 771. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=\nHello\nWorld\n&dry_run=1&is_html=1 =>
Hello
World
772. => POST => http://{{server}}/api/utils/email => {"to":"dutta.dipankar08@gmail.com", "subject":"Hello World","body":"\nHello\nWorld\n","dry_run":1, "is_html":1 } =>
Hello
World
773. 774. ################################################ 775. # Short code 776. ################################################ 777. => GET => http://{{server}}/api/nodel_shortcode/insert => Trying insert Empty Object 778. => GET => http://{{server}}/api/nodel_shortcode/generate => Input validation failed: Missing target_db 779. => GET => http://{{server}}/api/nodel_shortcode/generate?target_id=123&target_db=xxxdb => "short_code":"(?.*?)" 780. => GET => http://{{server}}/api/nodel_shortcode/get?short_code={{short_code}} => xxxdb 781. => GET => http://{{server}}/api/nodel_shortcode/get?short_code=wrong => Find successfully with 0 items 782. 783. 784. 785. 786. # Support _sort. 787. => !GET => http://{{server}}/api/test0/delete?_confirmstr=test0 => success 788. => !POST => http://{{server}}/api/test0/create => {"_payload":[{"name":"dip3","roll":1},{"name":"dip3","roll":2}]} => success 789. => GET => http://{{server}}/api/test0/find?&_sort=roll => "roll":1.*?"roll":2 790. => GET => http://{{server}}/api/test0/find?&_sort=-roll => "roll":2.*?"roll":1 791. 792. # Support clone APIs 793. => !POST => http://{{server}}/api/test0/create => {"name":"dip","num":{"math":10, "eng":11}} => "_id":"(?.*?)" 794. => GET => http://{{server}}/api/test0/clone => You must pass a _id 795. => POST => http://{{server}}/api/test0/clone => {} => You must pass a _id 796. => GET => http://{{server}}/api/test0/clone?_id={{id}} => "name":"dip" 797. => GET => http://{{server}}/api/test0/clone?_id={{id}}&name=dip2 => "name":"dip2" 798. => POST => http://{{server}}/api/test0/clone => {"id":"{{id}}", "name":"dip3"} => "name":"dip3" 799. 800. # QR code generation: 801. => GET => http://{{server}}/api/utils/qr => Missing url 802. => GET => http://{{server}}/api/utils/qr?url=http://google.com => svg 803. => GET => http://{{server}}/api/utils/qr?url=http://google.com&size=100 => height="100" 804. => GET => http://{{server}}/api/utils/qr?url=http://google.com&size=100&color=%23ff0000 => \#ff0000 805. 806. 807. # test system_payment == Migrate to simple_auth 808. #=> GET => http://{{server}}/api/system_payment/stripe => Stripe API returns an unexpected resp 809. # => GET => http://{{server}}/api/system_payment/stripe?id=1234 => Stripe API returns an unexpected resp <<< FIX THIS 810. #=> GET => http://{{server}}/api/system_payment_not_webhook/?id=1234 => not a valid ID 811. # test invalid sqi 812. #=> POST => http://{{server}}/api/system_payment/stripe => {"data":{"object":{"amount":100,"currency":"inr","id":"123", "customer":"cus_123", "description":"tx description", "charges":{"data":[{"billing_details":{"email":"dip@fb.com"}}]}}}}=> SKU not configuired in SimpleStore 813. # test right parsing 814. #=> POST => http://{{server}}/api/system_payment/stripe => {"data":{"object":{"amount":100,"currency":"inr","id":"123", "customer":"cus_123", "description":"sku1", "charges":{"data":[{"billing_details":{"email":"dip@fb.com"}}]}}}}=> Payment is inserted 815. # test empty data 816. #=> POST => http://{{server}}/api/system_payment/stripe => {}=> Stripe API returns an unexpected resp 817. #=> GET => http://{{server}}/api/system_payment/points => Missing user_id 818. # this api should be used to get total points for an user 819. #=> GET => http://{{server}}/api/system_payment/points?user_id=123 => No matching query found 820. #=> GET => http://{{server}}/api/system_payment/points?user_id=dip@fb.com => Total points is: 821. 822. # test roserpay WebHook 823. #=> POST => http://{{server}}/api/system_payment/razorpay => { "entity": "event", "account_id": "acc_3xhNTlBQgmDD7g", "event": "payment.captured", "contains": ["payment" ], "payload": {"payment": { "entity": {"id": "pay_FVxUMaT3vnv78M","entity": "payment","amount": 20000,"currency": "INR","status": "captured","order_id": "order_FVxUBI0n9PhY5T","invoice_id": null,"international": false,"method": "netbanking","amount_refunded": 0,"refund_status": null,"captured": true,"description": null,"card_id": null,"bank": "HDFC","wallet": null,"vpa": null,"email": "dutta.dipankat08@gmail.com","contact": "+919933588184","notes": { "email": "dutta.dipankat08@gmail.com", "phone": "9933588184"},"fee": 590,"tax": 90,"error_code": null,"error_description": null,"error_source": null,"error_step": null,"error_reason": null,"acquirer_data": { "bank_transaction_id": "5972833"},"created_at": 1598568741 }} }, "created_at": 1598568744} => Payment is inserted 824. #=> POST => http://{{server}}/api/system_payment/razorpay => { "entity": "event", "account_id": "acc_3xhNTlBQgmDD7g", "event": "payment.failure", "contains": ["payment" ], "payload": {"payment": { "entity": {"id": "pay_FVxUMaT3vnv78M","entity": "payment","amount": 20000,"currency": "INR","status": "captured","order_id": "order_FVxUBI0n9PhY5T","invoice_id": null,"international": false,"method": "netbanking","amount_refunded": 0,"refund_status": null,"captured": true,"description": null,"card_id": null,"bank": "HDFC","wallet": null,"vpa": null,"email": "dutta.dipankat08@gmail.com","contact": "+919933588184","notes": { "email": "dutta.dipankat08@gmail.com", "phone": "9933588184"},"fee": 590,"tax": 90,"error_code": null,"error_description": null,"error_source": null,"error_step": null,"error_reason": null,"acquirer_data": { "bank_transaction_id": "5972833"},"created_at": 1598568741 }} }, "created_at": 1598568744} => Received invalid events - razorpay API returns an unexpected resp 825. #=> POST => http://{{server}}/api/system_payment/razorpay => { "entity": "event", "account_id": "acc_3xhNTlBQgmDD7g", "event": "payment.captured", "contains": ["payment" ], "payload": {"payment": { "entity": {"id": "pay_FVxUMaT3vnv78M","entity": "payment","amount": 20001,"currency": "INR","status": "captured","order_id": "order_FVxUBI0n9PhY5T","invoice_id": null,"international": false,"method": "netbanking","amount_refunded": 0,"refund_status": null,"captured": true,"description": null,"card_id": null,"bank": "HDFC","wallet": null,"vpa": null,"email": "dutta.dipankat08@gmail.com","contact": "+919933588184","notes": { "email": "dutta.dipankat08@gmail.com", "phone": "9933588184"},"fee": 590,"tax": 90,"error_code": null,"error_description": null,"error_source": null,"error_step": null,"error_reason": null,"acquirer_data": { "bank_transaction_id": "5972833"},"created_at": 1598568741 }} }, "created_at": 1598568744} => SKU not configuired in SimpleStore 826. 827. # Test Trial points. 828. #=> GET => http://{{server}}/api/system_payment/trial?user_id=trial_user1&sku=test_sku_trial => Your trail is activated! 829. #=> GET => http://{{server}}/api/system_payment/trial?user_id=trial_user1&sku=test_sku_trial => You aleady used your trial 830. #=> GET => http://{{server}}/api/system_payment/trial?user_id=trial_user1&sku=unknown => SKU not configuired in SimpleStore 831. #=> GET => http://{{server}}/api/system_payment/trial?user_id=trial_user1&sku=test_sku_trial_no => This SKU is not elligiable from trail 832. #=> GET => http://{{server}}/api/system_payment/points?user_id=trial_user1 => 10 833. #=> GET => http://{{server}}/api/system_payment/delete?_confirmstr=system_payment => success 834. 835. 836. # test friendly ID: ( test3 is config for friendly id so it would be a match) 837. # You should note that friendlyID should NOT necessaryly to be unique due to te perf. 838. => POST => http://{{server}}/api/test0/insert => {"name":"dip"} => ts_insert 839. => POST => http://{{server}}/api/test3/insert => {"name":"dip"} => friendly_id 840. => POST => http://{{server}}/api/test3/insert => {"name":"dip"} => friendly_id 841. 842. ######### Testing calender APIS ############# 843. => POST => http://{{server}}/api/system_calender/grant => {} => Input validation failed 844. => POST => http://{{server}}/api/system_calender/grant => {"product":"test", "user_id":"123", "start_time":"invalid","duration":30, "type":"type1" } => Invalid start_time 845. #=> POST => http://{{server}}/api/system_calender/grant => {"product":"test", "user_id":"123", "start_time":"2013-03-10T02:00:00Z","duration":15, "type":"type1" } => success 846. #=> POST => http://{{server}}/api/system_calender/grant => {"product":"test", "user_id":"123", "start_time":"2013-03-10T02:00:00Z","duration":60, "type":"type1" } => 2/2 slots created 847. => POST => http://{{server}}/api/system_calender/grant => {"product":"test", "user_id":"123", "start_time":"2013-03-10T03:00:00Z","duration":60, "type":"type1","slot":10 } => 6/6 slots created 848. => POST => http://{{server}}/api/system_calender/grant => {"product":"test", "user_id":"123", "start_time":"2013-03-10T03:00:00Z","duration":60, "type":"type1","slot":10 } => error 849. => POST => http://{{server}}/api/system_calender/grant => {"product":"test", "user_id":"123", "start_time":"2013-03-10T03:10:00Z","duration":70, "type":"type1","slot":10 } => 2/7 850. => POST => http://{{server}}/api/system_calender/grant => {"product":"test", "user_id":"123", "start_time":"2014-03-10T03:10:00Z","duration":70, "type":"type1","slot":10 } => 7/7 851. 852. # Test Avilablity 853. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2013-03-10T03:10:00Z" } => ,"user_id":"123","type":"type1" 854. # There is an issue in the below test 855. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2015-03-10T03:10:00Z" } => 0 free slots found 856. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2013-03-10T03:10:00Z","type":"type1" } => ,"user_id":"123","type":"type1" 857. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2013-03-10T03:10:00Z","type":"type2" } => "out":\[\] 858. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2013-03-10T03:10:00Z","type":"pe1" } => ,"user_id":"123", 859. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2012-03-10T03:10:00Z","type":"pe2" } => "out":\[\] 860. => POST => http://{{server}}/api/system_calender/availability => {"date":"2013-03-10T03:10:00Z","type":"pe2" } => Missing product 861. 862. # test booking: 863. => POST => http://{{server}}/api/system_calender/grant => {"product":"doctor", "user_id":"123", "start_time":"2015-03-15T03:00:00Z","duration":60, "type":"type1","slot":10 } => 6/6 864. => POST => http://{{server}}/api/system_calender/availability => {"product":"doctor", "date":"2015-03-15T03:00:00Z"} => 6 free slots found 865. => POST => http://{{server}}/api/system_calender/availability => {"product":"doctor", "date":"2015-03-15T03:00:00Z"} => "_id":"(?.*?)" 866. => POST => http://{{server}}/api/system_calender/book => {"product":"test", "id" :"{{id2}}", "user_id":"booker2"} => successfully booked 867. => POST => http://{{server}}/api/system_calender/book => {"product":"test", "id" :"{{id2}}", "user_id":"booker2"} => This schedule is already taken 868. => POST => http://{{server}}/api/system_calender/availability => {"product":"doctor", "date":"2015-03-15T03:00:00Z" } => 5 free slots found 869. 870. # test cancel 871. => POST => http://{{server}}/api/system_calender/cancel => {"id" :"{{id2}}", "user_id":"booker3"} => not auth 872. => POST => http://{{server}}/api/system_calender/cancel => {"id" :"5f46e8952dd1ada69b161f91", "user_id":"booker3"} => Schedule not found" 873. => POST => http://{{server}}/api/system_calender/cancel => {"id" :"{{id2}}", "user_id":"booker2"} => successfully canceled 874. => POST => http://{{server}}/api/system_calender/availability => {"product":"doctor", "date":"2015-03-15T03:00:00Z" } => 6 free slots found 875. => GET => http://{{server}}/api/system_calender/delete?_confirmstr=system_calender => success 876. 877. 878. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&dry_run=1&product=hello => Mail is not supported for this product 879. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test&dry_run=1&product=default => \[DRYRUN\] Mail sent to 880. 881. # Test promotion ## Needs a migration simple auth => admin_promotions DB instead 882. #=> !POST => http://{{server}}/api/auth2/login_by_token => {"token": "fake_token"} => "auth_token":"(?.*?)" 883. #=> POST => http://{{server}}/api/promotion/get_referral_code => {} => Missing auth_token 884. #=> POST => http://{{server}}/api/promotion/get_referral_code => {"auth_token": "wrong","product":"fake_product"} => Unauthorized request 885. #=> POST => http://{{server}}/api/promotion/get_referral_code => {"auth_token": "{{auth_token}}","product":"fake_product"} => "code":"(?.*?)" 886. #=> POST => http://{{server}}/api/promotion/get_referral_code => {"auth_token": "{{auth_token}}","product":"fake_product"} => You already have generated the ref code. 887. #=> POST => http://{{server}}/api/promotion/get_referral_code => {"auth_token": "{{auth_token}}","product":"fake_product1"} => "code":"(?.*?)" 888. #=> POST => http://{{server}}/api/promotion/check_referral_code => {"code": "{{code}}","product":"fake_product"} => "type":"REFER", 889. #=> POST => http://{{server}}/api/promotion/check_referral_code => {"code": "{{code}}","product":"fake_product1"} => This referral code is not valid 890. #=> POST => http://{{server}}/api/promotion/check_referral_code => {"code": "wrong","product":"fake_product1"} => This referral code is not valid 891. #=> GET => http://{{server}}/api/promotion/delete?_confirmstr=promotion => success 892. 893. ########################################### 894. # RCE - JUST BASIC TEST 895. ########################################### 896. 897. # Capabilities 898. #=> GET => http://{{server}}/api/utils/rce/capabilities?_dev_token=root => hello_world_code 899. 900. # Status 901. #=> GET => http://{{server}}/api/utils/rce/status?_dev_token=root&lang=c => Compiler works fine 902. #=> POST => http://{{server}}/api/utils/rce/execute => {"_dev_token":"root", "lang":"c", "code":"\#include"} => \"out\":{\"stderr\":\"/tmp/ 903. #=> POST => http://{{server}}/api/utils/rce/execute => {"_dev_token":"root", "lang":"c","code": "\#include \n int main(){ while(1) printf(\"Hello Dipankar\"); \nreturn 0;}"} => DipankarHello DipankarHello DipankarHello DipankarHello DipankarHello 904. #=> POST => http://{{server}}/api/utils/rce/execute_ext => {"_dev_token":"root", "lang":"python", "code":"print 'hello123'"} => hello123 905. #=> POST => http://{{server}}/api/utils/rce/execute_input => {"_dev_token":"root", "lang":"c", "code": "\#include \n int main(){ char str[100]; scanf(\"%s\",&str);printf(\"%s\", str); \nreturn 0;}","lang":"c","input":"HelloWorld"} => HelloWorld 906. 907. 908. 909. # Test Youtube Download 910. #sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl 911. # sudo chmod a+rx /usr/local/bin/youtube-dl 912. #=> GET => http://{{server}}/api/utils/youtubedl?id=sb_sMqAF_o => Incomplete YouTube ID 913. # => GET => http://{{server}}/api/utils/youtubedl?id=CP2AYEqoaZo => googlevideo.com 914. # => GET => http://{{server}}/api/utils/youtubedl/audio?id=CP2AYEqoaZo => googlevideo.com 915. # => GET => http://{{server}}/api/utils/youtubedl/video?id=CP2AYEqoaZo => googlevideo.com 916. # => GET => http://{{server}}/api/utils/youtubedl/info?id=CP2AYEqoaZo => googlevideo.com 917. # => GET => http://{{server}}/api/utils/youtubedl/audio?id=https://www.youtube.com/watch?v=De8UKeURlWU => googlevideo.com 918. # => GET => http://{{server}}/api/utils/youtubedl/dl?id=kEld6MLDXPI => A-V-mp4 919. #### USE TESING BELOW LINE ## 920. 921. # SimpleStore EXPLORE 922. => GET => http://{{server}}/api/explore/play => Simple Store API EXPLORE 923. 924. # SMS 925. => GET => http://{{server}}/api/utils/sms?to=8927476238&msg=hello&dryrun=true => \[Dryrun\] SMS sent to 8927476238 926. 927. # Dev key 928. #GET => http://{{server}}/api/utils/rce/execute?code=hello&lang=kotlin => Access denied 929. #GET => http://{{server}}/api/utils/rce/execute?code=hello&lang=kotlin&_dev_token=root1 => Access denied 930. #GET => http://{{server}}/api/utils/rce/execute?code=hello&lang=kotlin&_dev_token=root => Error while executing this code 931. 932. # Status utils = This tracks the health of the endpoints 933. GET => http://{{server}}/api/status/ping?name=ServiceA => Missing endpoint 934. GET => http://{{server}}/api/status/ping?endpoint=www.google.com => Missing name 935. GET => http://{{server}}/api/status/ping?name=ServiceA&endpoint=www.google.com => pong 936. GET => http://{{server}}/api/status/ping?name=ServiceA&endpoint=www.google.com => pong 937. GET => http://{{server}}/api/status/show => Live Status of our Service 938. # HTML TEST NOT SUPPORTED GET => http://{{server}}/api/analytics/show?app_id=sample1 => Showing data for app id sample1 939. # HTML TEST NOT SUPPORTED GET => http://{{server}}/api/analytics/show?app_id=sample => Showing data for app id sample 940. 941. # Long tern Jobs 942. 943. 944. 945. 946. ############################# license APIS. ############################# 947. # License APis allows you to create license for an app user for a app for a duration. 948. # You can either grant, revoke and validate the license 949. # All common api's needs root_key to access (TODO) 950. # There is no renew supported, you just revoke and grant it again. 951. ######################################################################### 952. => !GET => http://{{server}}/api/license/delete?_confirmstr=license => success 953. # Root key 954. # => GET => http://{{server}}/api/license/ => api access denied 955. # => GET => http://{{server}}/api/license?root_key=WRONG => success 956. # Grant, validate and revoke 957. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test => Missing duration 958. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test&duration=1&key=NO_KEY => "key":"NO_KEY" 959. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test&duration=1&key=NO_KEY => license already granted 960. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test1&duration=WRONG&key=NO_KEY => please pass a valid duration 961. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test&key=NO_KEY => access granted 962. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test&key=NO_KEY1 => access denied 963. => GET => http://{{server}}/api/license/validate?app_id=WRONG&user_id=test&key=NO_KEY => access denied 964. => GET => http://{{server}}/api/license/revoke?app_id=test&user_id=test => license revoked 965. => GET => http://{{server}}/api/license/revoke?app_id=test&user_id=test => license not found 966. => GET => http://{{server}}/api/license/revoke?app_id=test&user_id=test => license not found 967. => GET => http://{{server}}/api/license/revoke?app_id=test=> Missing user_id 968. 969. # expairy 970. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test2&duration=0&key=NO_KEY=> success 971. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test2&key=NO_KEY => license expired 972. 973. # renew 974. => GET => http://{{server}}/api/license/revoke?app_id=test&user_id=test2 => license revoked 975. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test2&duration=1&key=NO_KEY=> success 976. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test2&key=NO_KEY => access granted 977. 978. # generate key 979. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test3&duration=1=> "key":"(?.*?)" 980. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test3&key={{key}} => access granted 981. 982. 983. ############################# Schedule Script ############################# 984. # You can schedule arbitrary script execution with SimpleStore 985. # FIrst submit a task using /schedule_script/submit/ 986. # Then Activate the task using /schedule_script/submit/ 987. # Great! You job has scheduled. 988. # Check a list of jobs which are current scheduled as /schedule_script/status/ and you can deactivate as /schedule_script/deactivate/ 989. ######################################################################### 990. => !GET => http://{{server}}/api/schedule_script/delete?_confirmstr=schedule_script => success 991. 992. => GET => http://{{server}}/api/schedule_script/submit?name=test&description=test&script=console.log(%22hello%20Dipankar%22)ZZ&cron=*/1%20*%20*%20*%20* => "_id":"(?.*?)" 993. => GET => http://{{server}}/api/schedule_script/activate?id={{job_id}} => Job has scheduled 994. => GET => http://{{server}}/api/schedule_script/activate?id={{job_id}} => already scheduled 995. => GET => http://{{server}}/api/schedule_script/activate_all => 0/1 Job has scheduled 996. => GET => http://{{server}}/api/schedule_script/reload => We have restarted 1 jobs 997. => GET => http://{{server}}/api/schedule_script/status => {{job_id}} 998. # => sleep => 30 # Disabled to just avoid waiting while testing -- works fine, 999. # => GET => http://{{server}}/api/schedule_script/status => "successCount":1 1000. => GET => http://{{server}}/api/schedule_script/deactivate?id={{job_id}} => canceled 1001. => GET => http://{{server}}/api/schedule_script/deactivate?id={{job_id}} => is not scheduled 1002. => GET => http://{{server}}/api/schedule_script/status => We found 0 active scheduled Script 1003. # TAKE LONGER TIME => GET => http://{{server}}/api/schedule_script/dryrun?script=ABCD => ABCD 1004. => GET => http://{{server}}/api/schedule_script/dryrun?script=console.log('hello') => success 1005. 1006. 1007. # Delete all at the end this is needed as server auto load when stat 1008. => !GET => http://{{server}}/api/schedule_script/delete?_confirmstr=schedule_script => success 1009. 1010. 1011. ############################# Subscription ############################# 1012. # Provides api for email subscription and resubscription 1013. # User can do subscribe and unscibe to an app by giving email id. 1014. # Admin can notify by ending mail to all the people who subscribe. 1015. # Maximum notification allow is 1000 1016. ######################################################################### 1017. => !GET => http://{{server}}/api/subscription/delete?_confirmstr=subscription => success 1018. => GET => http://{{server}}/api/subscription/subscribe?app_id=test&email=dutta.dipankar08@gmail.com => success 1019. => GET => http://{{server}}/api/subscription/subscribe?app_id=test&email=dutta.dipankar08@gmail.com => Data validation failed as composite key failed 1020. => GET => http://{{server}}/api/subscription/count => Count: 1 1021. => GET => http://{{server}}/api/subscription/notify?subject=Hello&body=Some HTML Content&app_id=test&dry_run=1 => Email send to 1 subscriber 1022. => GET => http://{{server}}/api/subscription/notify?subject=Hello&body=Some HTML Content&app_id=wrong&dry_run=1 => Not able to notify as there is zero subscription for this app 1023. => GET => http://{{server}}/api/subscription/unsubscribe?app_id=test&email=dutta.dipankar08@gmail.com => success 1024. => GET => http://{{server}}/api/subscription/unsubscribe?app_id=test&email=dutta.dipankar08@gmail.com => Not able to unsubscribe 1025. => GET => http://{{server}}/api/subscription/count => Count: 0 1026. 1027. 1028. ############################ SOCIAL POST ################################## 1029. # This allow to post the text and image in FB, Tweeter, Linked-In and Telegram 1030. # We currently supports (1)FB abd (2) Tweeter 1031. # You need to update the key in /etc/SECURE 1032. ############################################################################ 1033. # Comments to avoid spanning the profile 1034. # => GET => http://{{server}}/api/utils/social/twitter?text=automation test => Successfully tweeted 1035. # => GET => http://{{server}}/api/utils/social/twitter?text=automation test => Status is a duplicate 1036. # => GET => http://{{server}}/api/utils/social/facebook?text=automation test => Successfully tweeted 1037. => GET => http://{{server}}/api/utils/social/telegram => Missing text 1038. # => GET => http://{{server}}/api/utils/social/telegram?text=automationtest\&Test => success 1039. # You should you post method to pass data 1040. # Below two test is diable as missing real tokens 1041. # => POST => http://{{server}}/api/utils/social/telegram => {"text":"automation test & Test & test"} => success 1042. # => POST => http://{{server}}/api/utils/social/facebook => {"text":"Welcome to SimpleStore! This is post where we test our APIs"} => success 1043. 1044. ############################ TEST Universal Link page ################################## 1045. # 1046. ############################################################################ 1047. => GET => http://{{server}}/api/utils/universal_link?app_id=in.co.dipankar.fmradio&key=1&app_name=FMRadio => https://play\.google\.com/store/apps/details\?id=in\.co\.dipankar\.fmradio 1048. => GET => http://{{server}}/api/utils/universal_link?app_id=in.co.dipankar.fmradio&key=1&app_name => Input validation failed: Missing app_name" 1049. => GET => http://{{server}}/api/utils/universal_link => Input validation failed: Missing app_id" 1050. 1051. ############################ Static File generator ################################## 1052. # 1053. ############################################################################ 1054. => GET => http://{{server}}/api/utils/static/privacy?app_id=in.co.dipankar.fmradio&key=1&app_name=XXXXXXXXX => XXXXXXXXX 1055. => GET => http://{{server}}/api/utils/static/toc?app_id=in.co.dipankar.fmradio&key=1&app_name=XXXXXXXXX => XXXXXXXXX 1056. 1057. ############################## UPDATE ONE ########################################### 1058. # THIS API helps to update one entry entry in ethe system. you must by _filter and _payload to serch that 1059. # entry and update with the needed data. Should throw the error it it found many entry 1060. # >>> NOT WORKING ANY MORE <<<< 1061. ##################################################################################### 1062. #=> !GET => http://{{server}}/api/test/delete?_confirmstr=test => success 1063. #=> POST => http://{{server}}/api/test/create => {"name":"dip", "roll":1} => success 1064. #=> POST => http://{{server}}/api/test/update_one => {} => _filter object must be non empty 1065. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{}} => _filter object must be non empty 1066. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{"name":"dip"} ,"_payload":{}} => You must pass some data in the request 1067. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":2}} => there is no matching entry 1068. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{"name":"dip"},"_payload":{"roll":2}} => pdated 1 entry out of 1 matched 1069. #=> POST => http://{{server}}/api/test/create => {"name":"dip", "roll":1} => success 1070. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{"name":"dip"},"_payload":{"roll":2}} => We found multiple entry 1071. => !GET => http://{{server}}/api/test/delete?_confirmstr=test => success 1072. 1073. ############################## INSERT OR UPDATE ONE ########################################### 1074. # THIS API helps to insert update one entry entry in ethe system. you must by _filter and _payload to pass 1075. # if the item is found that are updated with new payload - or it will create a new entry by marging _filter and _payload 1076. ##################################################################################### 1077. => !GET => http://{{server}}/api/test/delete?_confirmstr=test => success 1078. => POST => http://{{server}}/api/test/insert_or_update_one => {} => _filter object must be non empty 1079. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{}} => _filter object must be non empty 1080. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip"} ,"_payload":{}} => Please send some non empty payload 1081. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":2}} => inserted one entry 1082. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":3}} => updated one entry 1083. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":4}} => updated one entry 1084. => POST => http://{{server}}/api/test/create => {"name":"dip1", "roll":5} => success 1085. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":4}} => We found multiple entry 1086. => !GET => http://{{server}}/api/test/delete?_confirmstr=test => success 1087. 1088. 1089. ################ LIST APIs ############################# 1090. # append to list 1091. # remove from list 1092. # clean from list 1093. ###################################################### 1094. => POST => http://{{server}}/api/test/delete?_confirmstr=test => {} => success 1095. => POST => http://{{server}}/api/test/insert => {"name":"dip"} => "_id":"(?.*?)" 1096. => GET => http://{{server}}/api/test/list/append?_id={{id1}}&_field=tag&_value=a => "tag":\["a"\] 1097. => GET => http://{{server}}/api/test/list/append?_id={{id1}}&_field=tag&_value=a,b,c => "tag":\["a","b","c"\] 1098. => GET => http://{{server}}/api/test/list/remove?_id={{id1}}&_field=tag&_value=a => "tag":\["b","c"\] 1099. => GET => http://{{server}}/api/test/list/remove?_id={{id1}}&_field=tag&_value=a,b => "tag":\["c"\] 1100. => GET => http://{{server}}/api/test/list/clear?_id={{id1}}&_field=tag&_value=a,b => "tag":\[\] 1101. => POST => http://{{server}}/api/test/delete?_confirmstr=test => {} => success 1102. 1103. ############# Raiseing tickets for the app ############# 1104. # This api will raise github tickts 1105. # 1106. ########################################################### 1107. => GET => http://{{server}}/api/utils/ticket?app=test => error 1108. # TODO: FIX IT github expaired the token 1109. #=> GET => http://{{server}}/api/utils/ticket?app=test&title=Raise by e2e test&desc=ignore this bug&label=bug => Successfully created a tickets 1110. #=> POST => http://{{server}}/api/utils/ticket=> {"app":"test", "title":"Raise by e2e test", "desc":"ignore this bug", "label":"bug,test"} => Successfully created a tickets 1111. 1112. ######## Create or Get ####### 1113. # If filter returns some result - just get it back or create with _payload + _filter data 1114. ############################### 1115. => POST => http://{{server}}/api/test/delete?_confirmstr=test => {} => success 1116. => POST => http://{{server}}/api/test/create_or_get => {"_filter":{"name":"dip"}, "_payload":{"roll":100}} => inserted the entry 1117. => POST => http://{{server}}/api/test/create_or_get => {"_filter":{"name":"dip"}, "_payload":{"roll":100}} => found entry 1118. => POST => http://{{server}}/api/test/create_or_get => {"_filter":{"name":"dip"}, "_payload":{"roll":100}} => found entry 1119. 1120. ############ Simple Login/AUth ################################################# 1121. # 1122. # Simple Auth System Full testing. 1123. # 1124. ################################################################################# 1125. # 0. Clean the db. 1126. => BASH => mongosh --quiet --eval 'db.getMongo().getDBNames().filter(n=>!["admin","config","local"].includes(n)).forEach(n=>db.getMongo().getDB(n).dropDatabase())' 1127. # 1. Register 2 users test/test and test1/test1 1128. => GET => http://{{server}}/api/simple_auth/register?username=test&password_=test&email=dutta.dipankar08@gmail.com => Registration completed successfully 1129. => GET => http://{{server}}/api/simple_auth/register?username=test1&password_=test1&email=dutta.dipankar08+1@gmail.com => Registration completed successfully 1130. => GET => http://{{server}}/api/simple_auth/register?username=test&password_=test&email=dutta.dipankar08@gmail.com => This username or email is already in use 1131. => GET => http://{{server}}/api/simple_auth/register?username=test4&password_=test&email=dutta.dipankar08@gmail.com => This email is already registered 1132. 1133. 1134. # 2. Loging with username and password. 1135. => GET => http://{{server}}/api/simple_auth/login?username=test&password_=test11 => Incorrect username or password 1136. => GET => http://{{server}}/api/simple_auth/login?username=test11&password_=test => Incorrect username or password 1137. => GET => http://{{server}}/api/simple_auth/login?username=test&password_=test => success 1138. => GET => http://{{server}}/api/simple_auth/login?username=test&auth_token_=wrong => Invalid username or authentication token. 1139. 1140. # 3. Login With Email and password 1141. => GET => http://{{server}}/api/simple_auth/login_by_email?username=test&password_=test11 => Input validation failed: Missing email 1142. => GET => http://{{server}}/api/simple_auth/login_by_email?email=test11@test.com&password_=test => Incorrect email or password. 1143. => GET => http://localhost/api/simple_auth/login_by_email?_no_encode=1&email=dutta.dipankar08@gmail.com&password_=test => "auth_token_":"(?.*?)" #should be able to return the token 1144. => GET => http://{{server}}/api/simple_auth/login_by_email?_no_encode=1&email=dutta.dipankar08@gmail.com&auth_token_={{login_token1}} => You must pass any one of password_ # Note you can only login by token if you pass the username 1145. 1146. # 4. login with username and session token ( Auto Login) 1147. => GET => http://localhost/api/simple_auth/login?_no_encode=1&username=test&password_=test => "auth_token_":"(?.*?)" 1148. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&auth_token_={{login_token1}} => "auth_token_":"(?.*?)" # We get a new token 1149. => GET => http://{{server}}/api/simple_auth/validate_login_session?_no_encode=1&auth_token_={{login_token2}} => success 1150. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&auth_token_={{login_token2}} => success 1151. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test2&auth_token_={{login_token2}} => Invalid username or authentication token. 1152. 1153. # 5. getifo 1154. => GET => http://{{server}}/api/simple_auth/get_info?_no_encode=1&auth_token_={{login_token1}} => user data returned 1155. 1156. # 6. update_info 1157. => GET => http://{{server}}/api/simple_auth/update_info?_no_encode=1&auth_token_={{login_token1}}&phone=7547564902 => user data returned 1158. => GET => http://{{server}}/api/simple_auth/get_info?_no_encode=1&auth_token_={{login_token1}} => 7547564902 1159. 1160. 1161. # 7. Logout -> logout with one token but other token should works. 1162. => GET => http://localhost/api/simple_auth/login?_no_encode=1&username=test&password_=test => "auth_token_":"(?.*?)" 1163. => GET => http://{{server}}/api/simple_auth/logout?username=test&auth_token_={{login_token1}} => success 1164. => GET => http://{{server}}/api/simple_auth/logout?username=test&auth_token_={{login_token1}} => Logout done for 1165. => GET => http://{{server}}/api/simple_auth/logout?username=test&auth_token_={{login_token1}} => Logout done for 1 session # Logout Twice 1166. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&auth_token_={{login_token2}} => dutta.dipankar08@gmail.com 1167. 1168. # 8. logout all session and no token should not work 1169. => GET => http://{{server}}/api/simple_auth/logout?username=test => Missing auth_token_ 1170. => GET => http://{{server}}/api/simple_auth/logout_all?username=test => Missing auth_token_ 1171. => GET => http://{{server}}/api/simple_auth/logout_all?username=test1&force=1 => Logout done for . session forcefully 1172. => GET => http://{{server}}/api/simple_auth/logout_all?username=test&force=1 => Logout done 1173. => GET => http://{{server}}/api/simple_auth/login?username=test&auth_token_={{login_token2}} => Invalid username or authentication token. # Not able to login after logout. 1174. 1175. 1176. # 9. Access protected DB after login ( We are using two users test and test1) 1177. => GET => http://{{server}}/api/test_simple_auth => Please provide a valid token 1178. => GET => http://{{server}}/api/test_simple_auth?auth_token_=test => Invalid or expired auth_token 1179. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&password_=test => "auth_token_":"(?.*?)" 1180. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test1&password_=test1 => "auth_token_":"(?.*?)" 1181. => GET => http://{{server}}/api/test_simple_auth?auth_token_={{login_token}} => Find successfully with 0 items 1182. => GET => http://{{server}}/api/test_simple_auth/create?_no_encode=1&auth_token_={{login_token}}&name=test_name => "_username":"test" 1183. => GET => http://{{server}}/api/test_simple_auth?auth_token_={{login_token}} => Find successfully with 1 items 1184. => GET => http://{{server}}/api/test_simple_auth/create?_no_encode=1&auth_token_={{login_token1}}&name=test1_name1 => "_username":"test1" 1185. => GET => http://{{server}}/api/test_simple_auth/create?_no_encode=1&auth_token_={{login_token1}}&name=test1_name2 => "_username":"test1" 1186. => GET => http://{{server}}/api/test_simple_auth?auth_token_={{login_token1}} => Find successfully with 2 items ## 1187. => GET => http://{{server}}/api/test_simple_auth?auth_token_=skip => Find successfully with 3 items #### 1188. => GET => http://{{server}}/api/test_simple_auth/delete?auth_token_={{login_token}}&_confirmstr=test_simple_auth => Deleted count is : 1 1189. => GET => http://{{server}}/api/test_simple_auth/delete?auth_token_=skip&_confirmstr=test_simple_auth => Deleted count is : 2 1190. 1191. ## 10. Forget and reset password for test user, and set it back to test 1192. => GET => http://{{server}}/api/simple_auth/forgot_password => Missing username 1193. => GET => http://{{server}}/api/simple_auth/forgot_password?username=wrong => Invalid username 1194. => GET => http://{{server}}/api/simple_auth/forgot_password?_no_encode=1&username=test => "short_lived_token":"(?.*?)" 1195. => GET => http://{{server}}/api/simple_auth/reset_password?username=test => Missing short_lived_token 1196. => GET => http://{{server}}/api/simple_auth/reset_password?username=test&short_lived_token=wrong => Missing password_ 1197. => GET => http://{{server}}/api/simple_auth/reset_password?username=wrong&short_lived_token={{short_lived_token}} => Missing password_ 1198. => GET => http://{{server}}/api/simple_auth/reset_password?username=wrong&short_lived_token=wrong&password_=hello => Invalid username or token got expired 1199. => GET => http://{{server}}/api/simple_auth/reset_password?username=test_unknown&short_lived_token={{short_lived_token}}&password_=test5 => Invalid username or token got expired 1200. => GET => http://{{server}}/api/simple_auth/reset_password?username=test&short_lived_token={{short_lived_token}}&password_=test5 => Password changed successfully 1201. => GET => http://{{server}}/api/simple_auth/reset_password?username=test&short_lived_token={{short_lived_token}}&password_=test5 => Invalid username or token got expired # Enure short_lived_token not works after one time use 1202. # reset password back to test123 1203. => GET => http://{{server}}/api/simple_auth/forgot_password?_no_encode=1&username=test => "short_lived_token":"(?.*?)" 1204. => GET => http://{{server}}/api/simple_auth/reset_password?username=test&short_lived_token={{short_lived_token}}&password_=test => Password changed successfully 1205. 1206. 1207. # 11. Production subscription API's 1208. # 11.1. Add Subscription 1209. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&password_=test => "auth_token_":"(?.*?)" 1210. => GET => http://localhost/api/simple_auth/add_subscription?_no_encode=1&payment_method_id=pm_1MQHD9CtA5cdHPVpgX6YpXRY&subscription_key=test&auth_token_={{login_token1}}&subscription_provider=dummy => subscription success 1211. => GET => http://localhost/api/simple_auth/add_subscription?_no_encode=1&payment_method_id=pm_1MQHD9CtA5cdHPVpgX6YpXRY&subscription_key=test&auth_token_={{login_token1}}&subscription_provider=dummy => subscription success 1212. # 11.2. Get Subscription 1213. => GET => http://localhost/api/simple_auth/add_subscription?_no_encode=1&payment_method_id=pm_1MQHD9CtA5cdHPVpgX6YpXRY&subscription_key=test&auth_token_={{login_token1}}&subscription_provider=dummy => subscription success 1214. # 11.3. Clear Subscription 1215. => GET => http://localhost/api/simple_auth/clear_subscription?_no_encode=1&subscription_key=test&auth_token_={{login_token1}}&subscription_provider=dummy => subscription clear 1216. => GET => http://localhost/api/simple_auth/clear_subscription?_no_encode=1&subscription_key=test&auth_token_={{login_token1}}&subscription_provider=dummy => not able to find the subscription 1217. # 11.4 For testng this you need to generate the payment_method_id first with public dat 1218. #=> GET => http://localhost/api/simple_auth/add_subscription?_no_encode=1&payment_method_id=pm_1MQHY0CtA5cdHPVpZpglF5a7&subscription_key=test&auth_token_={{login_token1}}&&subscription_provider=stripe => recept_url":"https://pay.stripe.com/receipts/payment 1219. 1220. # 12. Managing permission Group. 1221. # 12.1 Adding and removing permission for a users by a super user. 1222. => GET => http://{{server}}/api/simple_auth/register?username=superuser@grodok.com&password_=superuser@123&email=superuser@grodok.com => Registration completed successfully # Create super user 1223. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&password_=test => "auth_token_":"(?.*?)" 1224. => GET => http://localhost/api/simple_auth/login?_no_encode=1&username=superuser@grodok.com&password_=superuser@123 => "auth_token_":"(?.*?)" 1225. => GET => http://localhost/api/simple_auth/get_info?_no_encode=1&auth_token_={{su_login_token}} => superuser@grodok.com 1226. => GET =>http://localhost/api/simple_auth/add_permission?permission=test&username=test&auth_token_={{su_login_token}} => Permission has been added to the user successfully 1227. => GET => http://localhost/api/simple_auth/get_info?_no_encode=1&auth_token_={{t_login_token}} => "permission_group":\["test"\] 1228. => GET =>http://localhost/api/simple_auth/remove_permission?permission=test&username=test&auth_token_={{su_login_token}} => Permission has been removed from the user successfully 1229. => GET => http://localhost/api/simple_auth/get_info?_no_encode=1&auth_token_={{t_login_token}} => "permission_group":\[\] 1230. # In Dev, super user is skipped => GET => http://localhost/api/simple_auth/add_permission?permission=test&username=test&auth_token_={{t_login_token}} => Not logged in as a super user 1231. # In Dev, super user is skipped => GET =>http://localhost/api/simple_auth/remove_permission?permission=test&username=test&auth_token_={{t_login_token}} => Not logged in as a super user 1232. 1233. # 13. Login with magic link 1234. => GET => http://localhost/api/simple_auth/generate_magic_link => Missing email 1235. => GET => http://localhost/api/simple_auth/generate_magic_link?email=dutta.dipankar08@gmail.com => Missing url 1236. => GET => http://localhost/api/simple_auth/generate_magic_link?_no_encode=1&email=dutta.dipankar08@gmail.com&url=https://admin.grodok.com/account&app_name=admin => "magic_link_token":"(?.*?)" 1237. => GET => http://localhost/api/simple_auth/login_with_magic_link?_no_encode=1&magic_link_token={{magic_link_token1}} => "auth_token_":"(?.*?)" 1238. => GET => http://localhost/api/simple_auth/login_with_magic_link?_no_encode=1&magic_link_token={{magic_link_token1}} => This magic link is invalid or has expired # Already used 1239. => GET => http://localhost/api/simple_auth/get_info?_no_encode=1&auth_token_={{login_token}} => success 1240. => GET => http://localhost/api/simple_auth/login_with_magic_link?_no_encode=1&magic_link_token={{magic_link_token1}} => This magic link is invalid or has expired 1241. => GET => http://localhost/api/simple_auth/login_with_magic_link?magic_link_token=hello => Invalid token 1242. 1243. 1244. # 14. Product Subscription APIs 1245. => GET => http://localhost/api/simple_auth/login?_no_encode=1&username=test&password_=test => "auth_token_":"(?.*?)" 1246. => GET => http://localhost/api/simple_auth/login?_no_encode=1&username=superuser@grodok.com&password_=superuser@123 => "auth_token_":"(?.*?)" 1247. => GET => http://localhost/api/simple_auth/get_info?_no_encode=1&auth_token_={{su_login_token}} => user data returned 1248. => GET => http://localhost/api/simple_auth/get_user_by_super_user?_no_encode=1&auth_token_={{su_login_token}}&username=test => "email":"dutta.dipankar08@gmail.com" 1249. => GET => http://localhost/api/simple_auth/get_user_by_super_user?_no_encode=1&auth_token_={{su_login_token}}&username=wrong => not able to find user 1250. => GET => http://localhost/api/simple_auth/add_product_subscription_by_super_user?_no_encode=1&auth_token_={{su_login_token}}&username=test&app_name=test&subscription_name=test&subscription_description=test&expaire_date=2025-01-01 => Date must be in the future 1251. => GET => http://localhost/api/simple_auth/add_product_subscription_by_super_user?_no_encode=1&auth_token_={{su_login_token}}&username=test&app_name=test&subscription_name=test&subscription_description=test&expaire_date=2027-01-01 => "entry_id":"(?.*?)" 1252. => GET => http://localhost/api/simple_auth/validate_product_subscription?_no_encode=1&auth_token_={{t_login_token}}&app_name=test => We found a valid subscription 1253. => GET => http://localhost/api/simple_auth/remove_product_subscription_by_super_user?_no_encode=1&auth_token_={{su_login_token}}&username=test&app_name=test&subscription_id={{subscription_id}} => subscription is removed with id 1254. => GET => http://localhost/api/simple_auth/validate_product_subscription?_no_encode=1&auth_token_={{t_login_token}}&app_name=test => No valid subsscription exist 1255. => GET => http://localhost/api/simple_auth/remove_product_subscription_by_super_user?_no_encode=1&auth_token_={{t_login_token}}&username=test&app_name=test&subscription_id={{subscription_id}} => subscription is removed with id 1256. 1257. ######################################################################################### 1258. ## ## 1259. ## IPTV APIS (DISABLED AS NOT USED) ## 1260. ## ## 1261. ######################################################################################### 1262. #=> POST => http://{{server}}/api/ip_tv/delete?_confirmstr=ip_tv => {} => success 1263. #=> POST => http://{{server}}/api/ip_tv/add_seed => {"seed_url":"https://raw.githubusercontent.com/143maha/Sonuiptvnew/main/Indian15sep.m3u8", "name":"143maha"} => We have parsed seed 1264. #=> GET => http://{{server}}/api/ip_tv?_limit=1 => "_id":"(?.*?)" 1265. #=> GET => http://{{server}}/api/ip_tv/?id={{id1}} => "rank": 1266. #=> GET => http://{{server}}/api/ip_tv/rankup?id={{id1}}&_field=rank => Up voted 1267. #=> GET => http://{{server}}/api/ip_tv/?id={{id1}} => "rank": 1268. #=> GET => http://{{server}}/api/ip_tv/rankdown?id={{id1}}&_field=rank => Down voted 1269. #=> GET => http://{{server}}/api/ip_tv/?id={{id1}} => "rank": 1270. #=> GET => http://{{server}}/api/ip_tv/count => success 1271. # => GET => http://{{server}}/api/ip_tv/cleanup => clean up done by removing 1272. # => GET => http://localhost/api/ip_tv/cleanup?is_delete=false => success 1273. #=> GET => http://localhost/api/ip_tv/explore_seed?seed_url=https://raw.githubusercontent.com/mahmud31132/bdix-tv/main/BD%20working.m3u8 => success 1274. 1275. ######################################################################################### 1276. ## ## 1277. ## TRADE APIS ## 1278. ## ## 1279. ######################################################################################### 1280. # We have tested the api but disabling it=> POST => http://{{server}}/api/utils/trade/expert_call_result => {"symbol":"TCS.NS","target":"3600","stoploss":"3370","start_date":"2023-02-24T10:10:17.617Z","end_date":"2023-02-26T10:10:17.617Z"} => RESULT 1281. => GET => http://{{server}}/api/utils/trade/ltp => symbol list is empty 1282. => GET => http://{{server}}/api/utils/trade/ltp?symbols=TCS.NS,WIPRO.NS => success # This API is noy working anymore 1283. 1284. # Historical data 1285. => GET => http://localhost/api/utils/trade/history?symbol=MSFT => missing interval. possible value: 1d,5m,15m,1h 1286. => GET => http://localhost/api/utils/trade/history?symbol=MSFT&interval=1mo => missing range. possible value: 1287. => GET => http://localhost/api/utils/trade/history?symbol=MSFT&interval=1mo => missing range. possible value: 1288. => GET => http://localhost/api/utils/trade/history?symbol=MSFT&interval=1mo&range=max => success 1289. => GET => http://localhost/api/utils/trade/history?symbol=MSFT&interval=1mo&range=10y => success 1290. 1291. # Expart resilt 1292. => POST => http://{{server}}/api/utils/trade/expert_result_intraday => {"date":"2023-03-16T10:10:17.617Z", "symbol":"TCS.NS","buy_at":"3630","stoploss":"3590", "target":"3645","target2":"3665"} => success 1293. => POST => http://{{server}}/api/utils/trade/expert_result_intraday => {"date":"2023-03-16T10:10:17.617Z", "symbol":"TCS.NS","buy_at":"3630","stoploss":"3590", "target":"3645","target2":"3670"} => success 1294. => POST => http://{{server}}/api/utils/trade/expert_result_intraday => {"date":"2023-03-16T10:10:17.617Z", "symbol":"TCS.NS","buy_at":"3630","stoploss":"3620", "target":"3645","target2":"3695"} => success 1295. => POST => http://{{server}}/api/utils/trade/expert_result_intraday => {"date":"2023-03-16T10:10:17.617Z", "symbol":"TCS.NS","buy_at":"3630","stoploss":"3590", "target":"4000","target2":"4000"} => success 1296. => POST => http://{{server}}/api/utils/trade/expert_result_intraday => {"date":"2023-03-16T10:10:17.617Z", "symbol":"TCS.NS","buy_at":"3700","stoploss":"3590", "target":"3645","target2":"3695"} => success 1297. => POST => http://{{server}}/api/utils/trade/expert_result_intraday => {"date":"2023-03-16T10:10:17.617Z", "symbol":"TCS.NS","buy_at":"3598","stoploss":"3590", "target":"3645","target2":"3695"} => success 1298. 1299. 1300. 1301. 1302. ######################################################################################### 1303. ## ## 1304. ## Youtube uploader ## 1305. ## ## 1306. ## FOR AUTH ISSUE: generate toekn: node bin/core/google/youtube.js ## 1307. ######################################################################################### 1308. 1309. => GET => http://localhost/api/utils/yupload/m3u8upload => error 1310. 1311. => GET => http://localhost/api/utils/yupload/m3u8upload?uri=https://stream.live.vc.bbcmedia.co.uk/bbc_hindi_radio&duration=300 =>Please send a key 1312. 1313. 1314. ######################################################################################### 1315. ## ## 1316. ## Error ## 1317. ## ## 1318. ## FOR AUTH ISSUE: generate toekn: node bin/core/google/youtube.js ## 1319. ######################################################################################### 1320. => POST => http://{{server}}/api/error/delete?_confirmstr=error => {} => success 1321. => GET => http://localhost/api/error/test => Test Error 1322. => GET => http://localhost/api/error => Find successfully 1323. 1324. ######################################################################################### 1325. ## ## 1326. ## INFO ## 1327. ## ## 1328. ## GET API INFO ## 1329. ######################################################################################### 1330. => GET => http://localhost/api/local_test/info => "isRemoteDB":false 1331. => GET => http://localhost/api/remote_test/info => "isRemoteDB":true 1332. # curl http://localhost/api/test/info --cookie "Cho=Kim;Greet=Hello" 1333. => GET => http://localhost/api/test/info => "isRemoteDB":false 1334. => GET => http://localhost/api/test_secure/info => "secure":false 1335. => GET => http://localhost/api/test_secure/ => success 1336. => GET => http://localhost/api/test_secure_/info => "secure":true # Note that You must have secure_ to pass the match 1337. => GET => http://localhost/api/test_secure_/ => Please provide a valid token 1338. => GET => http://localhost/api/test/info => "secure":false 1339. 1340. 1341. ######################################################################################### 1342. ## ## 1343. ## STRIPE ## 1344. ## ## 1345. ## STRIPE validation api's helps to validate any purchase via simplestore ## 1346. ######################################################################################### 1347. # ( need real setup )=> GET => http://localhost/api/stripe/check_subscription?customer_id=cus_Melrh5VwxSJB2v => "email":"dutta.dipankar08@gmail.com" 1348. => GET => http://localhost/api/stripe/check_payment?payment_id=unknwon => No such payment_intent 1349. # ( not real setup)=> GET => http://localhost/api/stripe/check_payment?payment_id=pi_3LvRVnCtA5cdHPVp0DrsawEx => "amount_captured":500 1350. 1351. ######################################################################################### 1352. ## ## 1353. ## TEST Encript and dryption API output ## 1354. ## ## 1355. ## STRIPE validation api's helps to validate any purchase via simplestore ## 1356. ######################################################################################### 1357. => GET => http://localhost/api/test_crypto/delete?_confirmstr=test_crypto => success 1358. => GET => http://localhost/api/test_crypto/insert?name=dip => insert successfully 1359. => GET => http://localhost/api/test_crypto => Find successfully 1360. => GET => http://localhost/api/test_crypto/count => success 1361. => GET => http://localhost/api/test_crypto/delete?_confirmstr=test_crypto => success 1362. 1363. 1364. ## Root users 1365. => GET => http://localhost/api/_auth_token/ => access db with db name with _ 1366. => GET => http://localhost/api/_auth_token?_root_user=1 => success 1367. 1368. ######################################################################################### 1369. ## test unset or delete fields 1370. ## This API allow you to delete a list of fileds ( just unset in the docs) 1371. ## How to unsert a field? 1372. ## How to unset multiple fields? 1373. ## how to unset fileds with nested documnets ? use dot notation. 1374. ## How to unset fields for all entrys by seraching? query + _field combination 1375. ######################################################################################### 1376. => GET => http://localhost/api/test/delete?_confirmstr=test =>success 1377. => GET => http://localhost/api/test/insert?name=dip&roll=20&email=hello@hello.com => "_id":"(?.*?)" 1378. => GET => http://localhost/api/test/get?_id={{id1}} => "roll":"20" 1379. => GET => http://localhost/api/test/delete_fields?_id={{id1}}&_field=roll => We have un-set the filed for 1 entries 1380. => GET => http://localhost/api/test/get?_id={{id1}} => "name":"dip","email":"hello@hello.com", 1381. 1382. # unsetting nested object 1383. => POST => http://localhost/api/test/insert => {"name":{"first":"dip", "last":"dutta"}} => "_id":"(?.*?)" 1384. => GET => http://localhost/api/test/delete_fields?_id={{id1}}&_field=name.last => un-set the filed for 1 entries 1385. => GET => http://localhost/api/test/get?_id={{id1}} => "name":\{"first":"dip"\} 1386. 1387. 1388. 1389. ######################################################################################### 1390. # File utilitiesv 1391. # This api define upload, download, delete and list files in the SimpleStore application 1392. # This is for the prototype purpose. Please don't use for scale 1393. # All test is passing - disabled for new file is missing 1394. ######################################################################################### 1395. # curl -d @a.txt http://localhost/api/utils/files/upload use this for upload 1396. #=> GET => http://localhost/api/utils/files/download?filename=a.txt => Dipankar 1397. #=> GET => http://localhost/api/utils/files/list => a.txt 1398. #=> GET => http://localhost/api/utils/files/delete?filename=a.txt => success 1399. #=> GET => http://localhost/api/utils/files/delete?filename=a.txt => error 1400. 1401. 1402. ######################################################################################### 1403. # remote_smb_manifest () 1404. # This API will build the necessaryly function to support SMB. 1405. # Like Enable payment gateway 1406. ######################################################################################### 1407. # [PASS ALL] (1) Test razorpay_create_order APIs 1408. ###>>>> Diabling all test as Key expaired 1409. #=> GET => http://localhost/api/remote_smb_manifest/delete?_confirmstr=remote_smb_manifest => success 1410. #=> POST => http://localhost/api/remote_smb_manifest/insert => {"public_keys":{"razor_key":"1"},"secret_keys_":{"razor_secret":"1"}} => "_id":"(?.*?)" 1411. #=> POST => http://localhost/api/remote_smb_manifest/razorpay_create_order => {"_no_encode":1, "amount":500, "currency":"INR", "smb_id":"{{id1}}"} => The api key provided is invalid 1412. #=> POST => http://localhost/api/remote_smb_manifest/razorpay_create_order => {"_no_encode":1, "amount":500, "currency":"INR", "smb_id":"wrong"} => Argument passed in must be a single String of 12 bytes 1413. #=> POST => http://localhost/api/remote_smb_manifest/razorpay_create_order => {"_no_encode":1, "currency":"INR", "smb_id":"wrong"} => Missing amount 1414. #=> POST => http://localhost/api/remote_smb_manifest/insert => {"public_keys":{"razor_key":"rzp_test_I2VzFwGWMekWJe"},"secret_keys_":{"razor_secret":"4Hk97bepWLg7PS0Lli1rCXmx"}} => "_id":"(?.*?)" 1415. #=> POST => http://localhost/api/remote_smb_manifest/razorpay_create_order => {"_no_encode":1, "amount":500, "currency":"INR", "smb_id":"{{id1}}"} => "order_id":"order_ 1416. 1417. 1418. #################### 1419. ## Market APIs: As we wants to get the live market data, we can use goofle api to do that 1420. ## 1421. #################### 1422. 1423. # => GET => http://localhost/api/utils/market/google_ltp?symbol=VUSA.L => Vanguard S 1424. 1425. #### 1426. # Supporting revison 1427. # >>>> Update_one is not working any more <<<<< 1428. #### 1429. => GET => http://localhost/api/test/delete?_confirmstr=test => success 1430. => GET => http://localhost/api/test/insert?name=dip => "_id":"(?.*?)" 1431. # => POST => http://localhost/api/test/update_one => {"_id":"{{id1}}","_revision":true} => You must pass some data in the request 1432. # => POST => http://localhost/api/test/update_one => {"_id":"{{id1}}","name":"dip1","_revision":true} => "dip1" 1433. # => POST => http://localhost/api/test/update_one => {"_id":"{{id1}}","name":"dip2","_revision":true} => "dip2" 1434. => GET => http://localhost/api/test/revision?_id={{id1}} => All History\(revision\) returned 1435. 1436. ### 1437. # You need to mark remote_db to store in remote database 1438. ## 1439. => GET => http://localhost/api/remote_db_secure_merit/info => "isRemoteDB":true 1440. => GET => http://localhost/api/nodel_remote_db_secure_merit/info => "isRemoteDB":true 1441. => GET => http://localhost/api/nodel_secure_merit_remote_db/info => "isRemoteDB":true 1442. => GET => http://localhost/api/nodel_secure_merit_remoooote_db/info => "isRemoteDB":false 1443. 1444. 1445. ############################################# 1446. # Test kill swicth - It provides way to set config which is globally store 1447. # this will help to switch code path based on remote coffi 1448. # This can be used for shipping experimeing features 1449. ############################################# 1450. => GET => http://localhost/api/kill_switch/delete?_confirmstr=kill_switch => success 1451. => GET => http://localhost/api/kill_switch/set_bool?key=a&value=1 => "a":true 1452. => GET => http://localhost/api/kill_switch/set_bool?key=b&value=0 => "b":false 1453. => GET => http://localhost/api/kill_switch/set_bool?key=c&value=true => "c":true 1454. => GET => http://localhost/api/kill_switch/set_string?key=d&value=hello => "d":"hello" 1455. => GET => http://localhost/api/kill_switch/set_string?key=d&value=hello1 => "d":"hello1" 1456. => GET => http://localhost/api/kill_switch/get_current => "d":"hello1" 1457. => GET => http://localhost/api/kill_switch/reload => 4 1458. 1459. 1460. ############################################# 1461. # Template store 1462. # this feature allow to create template in the tempalte store ( store in remote db) 1463. # and the you create_from_template api to create duplicate data from template 1464. ############################################# 1465. => GET => http://localhost/api/template_store/delete?_confirmstr=template_store => success 1466. => POST => http://localhost/api/template_store/create => {"name":"dipankar", "roll":100} => template_name must be present as composite key 1467. => POST => http://localhost/api/template_store/create => {"name":"dipankar", "roll":100, "template_name":"test"} => success 1468. => POST => http://localhost/api/template_store/create => {"name":"dipankar", "roll":100, "template_name":"test"} => Duplicate item found: template_name 1469. # here how to create clone from templates 1470. => POST => http://localhost/api/test/create_from_template => {"template_name":"test", "more_info":"extra data"} => "name":"dipankar","roll":100 1471. => POST => http://localhost/api/test/create_from_template => {"template_name":"test1", "more_info":"extra data"} => template not found 1472. 1473. 1474. 1475. 1476. ################ CURL CORN EXTENSION (curlCornExtension) ###################### 1477. # curlCornExtension schedules network requests as cron jobs (replaces schedule2). 1478. # a) /add - add a job {name, url, type:get|post, params(post, JSON), cron, time_zone?, is_active?} 1479. # b) /trigger_once - run a job once right now (by id) 1480. # c) /activate - activate/deactivate a job based on is_active in the payload 1481. # d) /update - update a job and reschedule it (overrides the default update) 1482. # On boot, all is_active jobs are loaded and scheduled automatically. 1483. ############################################################################## 1484. # cleanup 1485. => !POST => http://localhost/api/curl_corn_jobs_remote/delete?_confirmstr=curl_corn_jobs_remote => {} => success 1486. 1487. # add: input validation 1488. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"url":"https://google.com","type":"get","cron":"*/10 * * * * *"} => missing name 1489. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"g1","type":"get","cron":"*/10 * * * * *"} => missing url 1490. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"g1","url":"https://google.com","cron":"*/10 * * * * *"} => missing/invalid type 1491. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"g1","url":"https://google.com","type":"wrong","cron":"*/10 * * * * *"} => Invalid enum string 1492. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"g1","url":"https://google.com","type":"get"} => missing cron 1493. # invalid cron format is rejected up-front (malformed + wrong number of fields) 1494. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"g1","url":"https://google.com","type":"get","cron":"wrong"} => Invalid cron format 1495. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"g1","url":"https://google.com","type":"get","cron":"*/10 * * *"} => Invalid cron format 1496. 1497. # add a GET job (active by default) & schedule it 1498. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"g1","url":"https://google.com","type":"get","cron":"*/10 * * * * *"} => "_id":"(?.*?)" 1499. # name is a composite key - adding the same name again fails 1500. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"g1","url":"https://google.com","type":"get","cron":"*/10 * * * * *"} => Duplicate item found 1501. # stats are initialised by the server 1502. => GET => http://{{server}}/api/curl_corn_jobs_remote/find?_id={{job_id}} => "count_of_run":0 1503. # a human-readable form of the cron is stored on insert 1504. => GET => http://{{server}}/api/curl_corn_jobs_remote/find?_id={{job_id}} => "corn_human_readable":"Every 10 seconds" 1505. 1506. # activate / deactivate (driven by is_active flag) 1507. => GET => http://{{server}}/api/curl_corn_jobs_remote/activate?id={{job_id}}&is_active=false => is now deactivated 1508. => GET => http://{{server}}/api/curl_corn_jobs_remote/activate?id={{job_id}}&is_active=true => is now active and scheduled 1509. => GET => http://{{server}}/api/curl_corn_jobs_remote/activate?id={{job_id}}&is_active=true => is already active 1510. 1511. # update (overrides the default update; needs only id) 1512. => POST => http://{{server}}/api/curl_corn_jobs_remote/update => {"url":"https://x.com"} => Missing id 1513. => POST => http://{{server}}/api/curl_corn_jobs_remote/update => {"id":"{{job_id}}"} => Nothing to update 1514. => POST => http://{{server}}/api/curl_corn_jobs_remote/update => {"id":"{{job_id}}","type":"wrong"} => Invalid enum string 1515. => POST => http://{{server}}/api/curl_corn_jobs_remote/update => {"id":"{{job_id}}","time_zone":"invalid"} => Not a valid timezone:invalid 1516. => POST => http://{{server}}/api/curl_corn_jobs_remote/update => {"id":"{{job_id}}","cron":"badcron"} => Invalid cron format 1517. => POST => http://{{server}}/api/curl_corn_jobs_remote/update => {"id":"{{job_id}}","url":"https://updated.example.com"} => updated and rescheduled 1518. => GET => http://{{server}}/api/curl_corn_jobs_remote/find?_id={{job_id}} => updated.example.com 1519. # updating the cron refreshes its human-readable form 1520. => POST => http://{{server}}/api/curl_corn_jobs_remote/update => {"id":"{{job_id}}","cron":"*/5 * * * *"} => updated and rescheduled 1521. => GET => http://{{server}}/api/curl_corn_jobs_remote/find?_id={{job_id}} => "corn_human_readable":"Every 5 minutes" 1522. => POST => http://{{server}}/api/curl_corn_jobs_remote/update => {"id":"{{job_id}}","is_active":false} => updated \(inactive\) 1523. 1524. # ---- time zone validation on add ---- 1525. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"tz1","url":"https://google.com","type":"get","cron":"*/60 * * * * *","time_zone":"invalid"} => Not a valid timezone:invalid 1526. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"tz2","url":"https://google.com","type":"get","cron":"*/60 * * * * *","time_zone":"Europe/London"} => "_id":"(?.*?)" 1527. 1528. # ---- POST job: params must be valid JSON; trigger_once runs it now & records stats ---- 1529. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"bad_params","url":"http://localhost/api/test/insert","type":"post","cron":"*/60 * * * * *","params":"{not-json"} => params must be a valid JSON string 1530. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"poster","url":"http://localhost/api/test/insert","type":"post","cron":"*/60 * * * * *","params":{"name":"dip432"}} => "_id":"(?.*?)" 1531. => GET => http://{{server}}/api/curl_corn_jobs_remote/trigger_once?id={{pid}} => Job triggered once 1532. # the POST job actually hit the test db with the params 1533. => GET => http://localhost/api/test/find?name=dip432 => dip432 1534. # stats got updated after the run 1535. => GET => http://{{server}}/api/curl_corn_jobs_remote/find?_id={{pid}} => "count_of_run":1 1536. => GET => http://{{server}}/api/curl_corn_jobs_remote/find?_id={{pid}} => "type":"success" 1537. 1538. # ---- boot reload: an active job persists in DB so it is re-scheduled on next boot ---- 1539. => !POST => http://localhost/api/curl_corn_jobs_remote/delete?_confirmstr=curl_corn_jobs_remote => {} => success 1540. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"boot1","url":"https://google.com","type":"get","cron":"*/60 * * * * *"} => "_id":"(?.*?)" 1541. => GET => http://{{server}}/api/curl_corn_jobs_remote/find?name=boot1 => "is_active":true 1542. 1543. # cleanup 1544. => !POST => http://localhost/api/curl_corn_jobs_remote/delete?_confirmstr=curl_corn_jobs_remote => {} => success 1545. 1546. 1547. ################ Test Webhooks###################### 1548. # Webhoks allowsto add endpoint when some db data is getting updated 1549. ##################################################### 1550. => GET => http://localhost/api/webhook/status_clear => {"CALl_COUNT":0} 1551. => POST => http://localhost/api/webhook/insert => {"db_name":"test_webhook", "hook_url":"https://google.com"} => success 1552. => POST => http://localhost/api/test_webhook/insert => {"name":"Dipankar"} => success 1553. => GET => http://localhost/api/webhook/status => {"CALl_COUNT":1} 1554. 1555. 1556. 1557. ################ SECURE DB and Visibility Rules ###################### 1558. # This allows to build secure DB protected by access_token. 1559. # 1. Secure DB contains the letter secure in it's name. 1560. # 2. When you define a db as secure you must pass a valid auth_token_ to create, insert. update. 1561. # 3. They are only visiuble to you and no others 1562. # 4. You can add other username as __visibility list to ensure they can be edited. But you still own that. add "public" to indicate they are public 1563. # 5. You can also create those db annonomously using spacial access token called "anonymous" - They are budefult make public visibility. 1564. # 6. Acess token "debug" can work for debug evn and skip all the secure rules 1565. ##################################################### 1566. 1567. # Step1: Adding or remiving visibiity 1568. => GET => http://localhost/api/secure_test/insert?auth_token_=debug&name=hello => "_id":"(?.*?)" 1569. => GET => http://localhost/api/secure_test/visibility/add?_id1={{id1}}&auth_token_=debug => You must pass a _id or id 1570. => GET => http://localhost/api/test/visibility/add?_id={{id1}} => You can only make this action on secure db 1571. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}} => Missing auth_token_ 1572. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug1 => Invalid token 1573. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user1 => Successfully added 1574. => GET => http://localhost/api/secure_test/?auth_token_=debug&_id={{id1}} => "_visibility":\["user1"\] 1575. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user1 => Not updated 1576. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user2 => Successfully added 1577. 1578. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_=debug&username=user1 => Successfully removed 1579. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_=debug&username=user1 => Not updated 1580. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_=debug&username=user2 => Successfully removed 1581. => GET => http://localhost/api/secure_test/?auth_token_=debug&_id={{id1}} => "_visibility":\[\] 1582. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user1 => Successfully added 1583. => GET => http://localhost/api/secure_test/visibility/clear?_id={{id1}}&auth_token_=debug => Successfully 1584. => GET => http://localhost/api/secure_test/?auth_token_=debug&_id={{id1}} => "_visibility":\[\] 1585. 1586. 1587. 1588. # Step 2: test secure access via visibility 1589. # In this case I will login as user1 and then create entry and add visibility for user2 and then try to access from user 2 1590. # reguster and login user 1591. => GET => http://localhost/api/simple_auth/register?_no_encode=1&username=user1&password_=test123&email=dutta.dipankar08+user1@gmail.com => success 1592. => GET => http://localhost/api/simple_auth/register?_no_encode=1&username=user2&password_=test123&email=dutta.dipankar08+user2@gmail.com => success 1593. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=user1&password_=test123 => "auth_token_":"(?.*?)" 1594. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=user2&password_=test123 => "auth_token_":"(?.*?)" 1595. # Create an ietm by user1 and add visibility to user 2 1596. => GET => http://localhost/api/secure_test/insert?auth_token_={{login_token1}}&name=share with user2 => "_id":"(?.*?)" 1597. => GET => http://localhost/api/secure_test/get?auth_token_={{login_token2}}&_id={{id1}} => Find successfully with 0 items 1598. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_={{login_token1}}&username=user2 => Successfully added 1599. # Access by user 2 1600. => GET => http://localhost/api/secure_test/get?auth_token_={{login_token2}}&_id={{id1}} => share with user2 1601. #Revoke access 1602. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_={{login_token1}}&username=user2 => Successfully removed 1603. => GET => http://localhost/api/secure_test/get?auth_token_={{login_token2}}&_id={{id1}} => Find successfully with 0 items 1604. 1605. # Update Visibility in a go using /replace 1606. => GET => http://localhost/api/secure_test/visibility/replace?_id={{id1}}&auth_token_={{login_token1}}&username=user1,user2,user3 => Successfully replaced with 3 1607. => GET => http://localhost/api/secure_test/visibility/replace?_id={{id1}}&auth_token_={{login_token1}}&username=user1,user2,user3 ,user4 => Successfully replaced with 4 1608. => GET => http://localhost/api/secure_test/visibility/replace?_id={{id1}}&auth_token_={{login_token1}}&username=user1 => Successfully replaced with 1 1609. => POST => http://localhost/api/secure_test/visibility/replace => {"_id":"{{id1}}","auth_token_":"{{login_token1}}","username":["user1"]} => Successfully replaced with 1 1610. # In the below case, you need use clear API to replace 1611. => POST => http://localhost/api/secure_test/visibility/replace => {"_id":"{{id1}}","auth_token_":"{{login_token1}}","username":[]} => you must pass username 1612. 1613. 1614. # Testing anonymous entries. 1615. => GET => http://localhost/api/secure_test/insert?auth_token_=anonymous&name=test_anonymous => "_id":"(?.*?)" 1616. => GET => http://localhost/api/secure_test?id={{id3}} => Please provide a valid token 1617. => GET => http://localhost/api/secure_test?id={{id3}}&auth_token_=anonymous => "_visibility":\["public"\] 1618. => GET => http://localhost/api/secure_test?id={{id3}}&auth_token_=test => Invalid or expired auth_token # So you must pass valid access token or anonymous 1619. => GET => http://localhost/api/secure_test?id={{id3}}&auth_token_={{login_token1}} => "_visibility":\["public"\] 1620. 1621. 1622. ################ PDF GEN API ###################### 1623. # This allow to a secure entry to other user 1624. ##################################################### 1625. => GET => http://localhost/api/utils/pdf/letter?from=Dipankar\nDutta&to=dip&subject=hello&content=hello\nworld => company_name missing 1626. => GET => http://localhost/api/utils/pdf/letter?from=Dipankar\nDutta&to=dip&subject=hello&content=hello\nworld&company_name=hello&company_address=hello => /PDF /Text 1627. 1628. 1629. ################ HEARTBEAT API ###################### 1630. # This allow to a secure entry to other user 1631. ##################################################### 1632. => GET => http://localhost/api/utils/heartbeat/ping => please pass name 1633. => GET => http://localhost/api/utils/heartbeat/ping?name=test =>pong 1634. => GET => http://localhost/api/utils/heartbeat/status?name=test => status: active 1635. => GET => http://localhost/api/utils/heartbeat/ping?name=test&status=error =>pong 1636. => GET => http://localhost/api/utils/heartbeat/status?name=test => status: error 1637. => GET => http://localhost/api/utils/heartbeat/ping?name=test&status=error&last_error=error_stack =>pong 1638. => GET => http://localhost/api/utils/heartbeat/status?name=test => error_stack 1639. => GET => http://localhost/api/utils/heartbeat/status?name=test1 => status: not found 1640. 1641. # Test auto expaire ( must be pinnged in every 60 sec - we delete the entry in 120 sec) 1642. # This give two chnages to ensure your pingged in reached to the server 1643. => GET => http://localhost/api/utils/heartbeat/status?name=test => error_stack 1644. # => sleep => 120 <<< DIabled as perf reason 1645. # => GET => http://localhost/api/utils/heartbeat/status?name=test => status: inactive 1646. 1647. ################ TUNNEL REQUEST ###################### 1648. # This mecahnisn allows to execute a JSON request to 3p wesbite and allow to pass a custum function to process the output. 1649. ##################################################### 1650. => GET => http://localhost/api/tunnel_request/delete?_confirmstr=tunnel_request =>success 1651. => POST => http://localhost/api/tunnel_request/add_tunnel => {"name":"test", "type":"get", "url":"https://market.tipranks.com/api/details/GetRealTimeQuotes", "process_fn" : "none"} => success 1652. => POST => http://localhost/api/tunnel_request/add_tunnel => {"name":"test", "type":"get", "url":"https://market.tipranks.com/api/details/GetRealTimeQuotes", "process_fn" : "none"} => Duplicate item found: name 1653. 1654. # Once we setup a tunnel, execute it using get or post 1655. => GET => http://localhost/api/tunnel_request/execute?name=test => Request failed with status code 404 1656. => GET => http://localhost/api/tunnel_request/execute?name=test&tickers=MSFT => Issue with processing function 1657. 1658. # thsi will override thr process fucntion to test purpose ( you can use both lamda and nameed function) 1659. => POST => http://localhost/api/tunnel_request/execute => {"name":"test","tickers":"MSFT","process_fn":"function(a){return a}"} => successfully executeed the process fiunction 1660. 1661. # DONT USE LAMDA FUNCTION for test as => can't eb used 1662. # curl -X POST -H "Content-Type: application/json" -d '{"name":"test","tickers":"MSFT","process_fn":"(a)=>a"}' 'http://localhost/api/tunnel_request/execute' should work but test will fail 1663. #=> POST => http://localhost/api/tunnel_request/execute => {"name":"test","tickers":"MSFT","process_fn":"(a)=>a"} => successfully executeed the process fiunction 1664. 1665. # You can add revision for that tunnel and latest revisition will be used 1666. => POST => http://localhost/api/tunnel_request/add_revision => {"name":"test", "type":"get", "url":"https://market.tipranks.com/api/details/GetRealTimeQuotes", "process_fn" : "function(a){return a[0].ticker}"} =>new revisions added 1667. => GET => http://localhost/api/tunnel_request/execute?name=test&tickers=MSFT => MSFT 1668. 1669. ################ System DB ###################### 1670. # Simple store supports system db which load all SimpleStore Server realted remote config on DB start. 1671. # This will override any local config so that we can control the service remotely. 1672. # One of the example is the SERCURE_KEYS which could be reset remotely 1673. # >>>> NOT WORKING <<<< 1674. ##################################################### 1675. # => GET => http://localhost/api/internal_nodel_system_db/delete?_confirmstr=internal_nodel_system_db => The DB has marked as nodel 1676. # => GET => http://localhost/api/utils/system_db/dump => system db dump -> use db UI 1677. # /update will add, update, delete all in a single api. for delete pass null 1678. # => POST => http://localhost/api/utils/system_db/update => {"db_name":"SECURE_KEYS", "test_key1":"test_key_value1","test_key2":"test_key_value2"} => "test_key2":"test_key_value2" 1679. # => POST => http://localhost/api/utils/system_db/update => {"db_name":"SECURE_KEYS", "test_key1":"test_key_value1","test_key2":"null"} => "test_key2":null 1680. # => POST => http://localhost/api/utils/system_db/update => {"db_name":"SECURE_KEYS", "test_key1":"test_key_value1","test_key2":"test_key_value3"} => "test_key2":"test_key_value3" 1681. # => GET => http://localhost/api/utils/system_db/dump => "test_key2":"test_key_value3" 1682. 1683. ######### SERVER INFO ###### 1684. => GET => http://localhost/info => "secureKeys":"Un autorized" 1685. => GET => http://localhost/info?admin=1 => "secureKeys" 1686. 1687. ############## 1688. # Test for stock_alert 1689. # 1690. ############ 1691. => GET => http://localhost/api/stock_alert/delete?_confirmstr=stock_alert => success 1692. 1693. # add_ticker: takes email as filter, creates the subscriber if new (ticker is upper-cased) ---- 1694. => GET => http://localhost/api/stock_alert/add_ticker => Please send the subscriber email 1695. => GET => http://localhost/api/stock_alert/add_ticker?email=dutta.dipankar08@gmail.com => Please send the ticker to add 1696. => GET => http://localhost/api/stock_alert/add_ticker?email=dutta.dipankar08@gmail.com&ticker=aapl => AAPL added to dutta.dipankar08@gmail.com 1697. => GET => http://localhost/api/stock_alert/add_ticker?email=dutta.dipankar08@gmail.com&ticker=MSFT => MSFT added to dutta.dipankar08@gmail.com 1698. # adding the same ticker again should not create a duplicate (set semantics) 1699. => GET => http://localhost/api/stock_alert/add_ticker?email=dutta.dipankar08@gmail.com&ticker=AAPL => AAPL added to dutta.dipankar08@gmail.com 1700. => POST => http://localhost/api/stock_alert => {"email":"dutta.dipankar08@gmail.com"} => "symbol_list":\["AAPL","MSFT"\] 1701. 1702. # remove_ticker: takes email as filter ---- 1703. => GET => http://localhost/api/stock_alert/remove_ticker => Please send the subscriber email 1704. => GET => http://localhost/api/stock_alert/remove_ticker?email=dutta.dipankar08@gmail.com => Please send the ticker to remove 1705. => GET => http://localhost/api/stock_alert/remove_ticker?email=dutta.dipankar08@gmail.com&ticker=msft => MSFT removed from dutta.dipankar08@gmail.com 1706. => POST => http://localhost/api/stock_alert => {"email":"dutta.dipankar08@gmail.com"} => "symbol_list":\["AAPL"\] 1707. 1708. # ltp: no params, returns LTP + change details for all subscribed symbols ---- 1709. => GET => http://localhost/api/stock_alert/ltp => all ltp returned 1710. 1711. # trigger: no params; subject auto-generated from top-2 gainers / bottom-2 losers ---- 1712. => GET => http://localhost/api/stock_alert/trigger => sent in 1713. 1714. 1715. ########### 1716. # Expose reliability for admin acess 1717. ########### 1718. => GET => http://localhost/reliability/ => success 1719. 1720. ##### Admin DB #### 1721. => GET => http://localhost/api/admin_hello => Missing admin_token_ 1722. => GET => http://localhost/api/test_admin => Missing admin_token_ 1723. => GET => http://localhost/api/test_admin?admin_token_=admin_test => Find successfully 1724. => GET => http://localhost/api/test_admin?admin_token_=admin_test_token_invalid => Invalid admin_token 1725. => GET => http://localhost/api/test_admin/insert?admin_token_=admin_test&name=test=> success 1726. => GET => http://localhost/api/test_admin/get?name=test=> Missing admin_token_ 1727. => GET => http://localhost/api/test_admin/find?name=test=> Missing admin_token_ 1728. 1729. 1730. # Get and Delete. 1731. => GET => http://localhost/api/test/insert?name=test => "_id":"(?.*?)" 1732. => GET => http://localhost/api/test/get_and_delete?id={{id1}} => success 1733. => GET => http://localhost/api/test/get_and_delete?id={{id1}} => error 1734. 1735. 1736. # Test case for AWS S3 utils 1737. => GET => http://localhost/api/utils/aws/list_files?folder_name=images&bucket_name=intellicogno-s3 => https://intellicogno-s3.s3.us-east-2.amazonaws.com 1738. => GET => http://localhost/api/utils/aws/list_files?folder_name=images => missing bucket_name 1739. => GET => http://localhost/api/utils/aws/list_files?bucket_name=images => missing folder_name 1740. => GET => http://localhost/api/utils/aws/list_files?folder_name=images&bucket_name=intellicogno-s4 => return a list of url 1741. => GET => http://localhost/api/utils/aws/list_files?folder_name=images1&bucket_name=intellicogno-s3 => return a list of url 1742. # Path = https://${bucketName}.s3.${region}.amazonaws.com/${path} 1743. => GET => http://localhost/api/utils/aws/get_download_url?path=images/017.jpg&bucket_name=intellicogno-s3 => success # get a link for a file 1744. 1745. 1746. # live log 1747. => GET => http://localhost/api/live_log/test => success 1748. => GET => http://localhost/api/live_log/get_log => error 1749. => GET => http://localhost/api/live_log/get_log?sender=live_log => html 1750. 1751. 1752. # Admin feature 1753. # 1. Server logs -> This works only if you login as super user 1754. => GET => http://localhost/api/utils/admin_tools/logs => success 1755. => GET => http://localhost/api/utils/admin_tools/clear_logs => success 1756. => GET => http://localhost/admin/routes => live_log 1757. => GET => http://localhost/api/utils/admin_tools/api_usages => API Usages 1758. 1759. # Bash comamnd excutor 1760. => GET => http://localhost/api/utils/bash => error 1761. => GET => http://localhost/api/utils/bash?cmd=ls => success 1762. => GET => http://localhost/api/utils/bash?cmd=pwd => success 1763. => GET => http://localhost/api/utils/bash?cmd=sudo%20rm%20-rf => No rm or sudo allowed 1764. => GET => http://localhost/api/utils/bash?preset=git_pull => success 1765. => GET => http://localhost/api/utils/bash/get_all_presets => All Preset returned 1766. 1767. # yahoo_fin Historical data 1768. => GET => http://localhost/api/utils/yahoo_fin/historical_data?symbol=AAPL&interval=5m&range=1mo => success 1769. => GET => http://localhost/api/utils/yahoo_fin/historical_data?symbol=AAPL&interval=5m&range=1mo => cache 1770. 1771. 1772. # Generating OAuth token for Simple_AUth 1773. # Oauth allows to genete refersh and access token by 3p provider 1774. # Here is how to use 1775. # 1. Add a button in the UI to call : https://api.schwabapi.com/v1/oauth/authorize?client_id=BfQwxJGANBot1jWGO4e4LUuVjP33ckXs&redirect_uri=https://127.0.0.1:3000/oauth/schwab ( Note that your need get the client id from the Schwab and you define redirect_uri while creating the app) 1776. # 2. After reditecyion, you will getting a code, note the code and pass with below url 1777. # 3. Hit the URL: http://localhost/api/simple_auth/generate_oauth_tokens?auth_token_=9CC3B6&provider=SCHWAB&code=&redirect_uri=https://127.0.0.1:3000/oauth/schwab ( note to use same reditected URI) 1778. # 4. It need to do it quickly, once you are done, a access token will be generated and asscoited with the SimpleStoreAccount. For securiy reason, the access token will never be exposed outside. It is encriped and store in the SimpleStore internal DB. 1779. # 5. velidate if that is working fine http://simplestore.dipankar.co.in/api/utils/schwab/get_all_data?auth_token_= 1780. # 6. You dont need to acess refresh the auth_token as it is done automically by the system. 1781. 1782. 1783. #=> GET => http://localhost/api/simple_auth/register?username=test&email=test@test.com&password_=test => Duplicate item found: username 1784. #=> GET => http://localhost/api/simple_auth/login?username=test&email=test@test.com&password_=test&_no_encode=1 => "auth_token_":"(?.*?)" #auth_token_: "9CC3B6" 1785. #=> GET => http://localhost/api/simple_auth/generate_oauth_tokens?auth_token_=9CC3B6&provider=SCHWAB&code=C0.b2F1dGgyLmJkYy5zY2h3YWIuY29t.1JJrZ4ijqQQWX6Z92WtUH3ka2xKP0CNTR-I_dtBoNv0%40&redirect_uri=https://grodok-algoverse.web.app/oauth/schwab => OAuthToken generated and stored 1786. #=> GET => http://localhost/api/simple_auth/get_info?auth_token_=9CC3B6&_no_encode=1 =>"test" # Note it will never expose the oauth_tokens_ ouside 1787. #=> GET => http://localhost/api/utils/schwab/get_all_data?auth_token_=9CC3B6 1788. 1789. 1790. 1791. # Set APis -> This allow to insert a string into a list in the document 1792. => !POST => http://localhost/api/test0/create => {"name":"dip","count":1} => "_id":"(?.*?)" 1793. => GET => http://localhost/api/test/set/add?_id={{id}}&field=tags&value=1234 => "1234" 1794. => GET => http://localhost/api/test/set/add?_id={{id}}&field=tags&value=1234,1235,1236,1237 => "1234","1235","1236" 1795. => GET => http://localhost/api/test/set/remove?_id={{id}}&field=tags&value=1234=> "1235","1236" 1796. => GET => http://localhost/api/test/set/remove?_id={{id}}&field=tags&value= 1234,1235, 1236=> "1237" 1797. => GET => http://localhost/api/test/set/clear?_id={{id}}&field=tags&value==> "tags":\[\] 1798. => GET => http://localhost/api/test/delete?_id={{id}} => success 1799. 1800. 1801. # Private tokens store and send message in telegeraom: Private Tokens + Telegram Utilities 1802. => GET => http://localhost/api/simple_auth/login?username=test&email=test@test.com&password_=test&_no_encode=1 => "auth_token_":"(?.*?)" #auth_token_: "9CC3B6" 1803. => GET => http://localhost/api/simple_auth/save_private_token?auth_token_={{login_token1}}&provider=TELEGRAM_BOT_PRIVATE_TOKEN&token=test => private tokens stored 1804. => GET => http://localhost/api/simple_auth/save_private_token?auth_token_={{login_token1}}&provider=UNKNOWN&token=test => Invalid enum string UNKNOWN, 1805. => GET => http://localhost/api/utils/telegram/send_msg?auth_token_={{login_token1}}&provider=UNKNOWN&chat_id=test&text=hello => 404 1806. => GET => http://localhost/api/simple_auth/save_private_token?auth_token_={{login_token1}}&provider=TELEGRAM_BOT_PRIVATE_TOKEN&token=7542704492:AAFivlt7Cu1Y7lbRjIAVmBguiVaDMr0w5RA => private tokens stored 1807. => GET => http://localhost/api/utils/telegram/send_msg?auth_token_={{login_token1}}&chat_id=test&text=hello => Bad Request: chat not found 1808. => GET => http://localhost/api/utils/telegram/send_msg?auth_token_={{login_token1}}&chat_id=-1002207345931&text=hello => Message sent successfully! 1809. => GET => http://localhost/api/simple_auth/logout?username=test&auth_token_={{login_token1}} => success 1810. 1811. # Interal db 1812. => GET => http://localhost/api/internal_test => access this information 1813. 1814. # testing passing osbucure data 1815. # Sometime you need to send a cyptic input in the request which will not allow to inspect by the client hacker, use the pass _data 1816. => GET => http://localhost/api/test/count?_data=eyJuYW1lIjogImRpcCJ9 => success 1817. => POST => http://localhost/api/test/count => {"_data":"eyJuYW1lIjogImRpcCJ9"} => success 1818. => GET => http://localhost/api/test/count?_data=eyJuYW1lIjogImRpcCJ9xx => Unexpected non-whitespace 1819. 1820. # Accessing preloaded Data stored in server 1821. => GET => http://localhost/api/utils/preload_data?name=ExampleData => no such file or directory 1822. 1823. 1824. # schwab APIS ( not that you must have a valid access token - can;t test locally) 1825. => context => auth_token => 1826. #=> GET => https://simplestore.dipankar.co.in/api/utils/schwab/get_all_data?auth_token_={{auth_token}} => success 1827. #=> GET => https://simplestore.dipankar.co.in/api/utils/schwab/quote?auth_token_={{auth_token}}&symbols=MSFT,AAPL => success 1828. #=> GET => https://simplestore.dipankar.co.in/api/utils/schwab/chains?auth_token_={{auth_token}}&symbol=AAPL => success 1829. #=> GET => http://localhost/api/utils/schwab/pricehistory?auth_token_={{auth_token}}&symbol=AAPL => success 1830. #=> GET => http://localhost/api/utils/schwab/net_delta?cmd=start => success 1831. #=> GET => http://localhost/api/utils/schwab/net_delta?cmd=stop => success 1832. #=> GET => http://localhost/api/utils/schwab/net_delta?cmd=error => success 1833. #=> GET => http://localhost/api/utils/schwab/net_delta?cmd=result => success 1834. #=> GET => http://localhost/api/utils/schwab/list_chains?symbol=AAPL => success 1835. 1836. # System_Config => This is a file based env store where we expose API to save and get it. 1837. # This is only access by SimpleStore Admin user 1838. # First generate a super user_token 1839. => GET => http://localhost/api/simple_auth/login?_no_encode=1&username=superuser@grodok.com&password_=superuser@123 => "auth_token_":"(?.*?)" 1840. => GET => http://localhost/api/utils/system_config/get?auth_token_={{su_login_token}} => data returned 1841. => GET => http://localhost/api/utils/system_config/set?auth_token_={{su_login_token}}&key=key&value=value => key 1842. => GET => http://localhost/api/utils/system_config/delete?auth_token_={{su_login_token}}&key=key&value=value => Deleted the key 1843. 1844. 1845. # Open api APIs 1846. # curl -X POST http://localhost/api/utils/openai/transcribe -F "audio=@audio.mpeg" shoild be use for testing , Put the audio file in same folder 1847. # => POST => http://localhost/api/utils/openai/transcribe => "audio=@audio.mpeg" => success # FIle upload is not supported by FEST 1848. 1849. 1850. # SCHWAB Price history API 1851. #=> GET => http://localhost/api/simple_auth/login?username=test&email=test@test.com&password_=test123&_no_encode=1 => "auth_token_":"(?.*?)" #auth_token_: "9CC3B6" 1852. #=> GET => http://localhost/api/utils/schwab/pricehistory?auth_token_={{auth_token_}}&symbol=AAPL&candle_type=5m => success 1853. #=> GET => http://localhost/api/utils/schwab/pricehistory?auth_token_={{auth_token_}}&symbol=AAPL&candle_type=5m => success 1854. #=> GET => http://localhost/api/utils/schwab/pricehistory?auth_token_={{auth_token_}}&symbol=AAPL&candle_type=5m&include_extended_data=1 => success 1855. #=> GET => http://{{server}}/api/simple_auth/logout_all?username=test1&force=1 => Logout done for . session forcefully 1856. 1857. # Testing Hacker news 1858. => GET => http://localhost/api/utils/hacker_news/get?type=top => "title" 1859. 1860. 1861. # Testing LLM API. 1862. => GET => http://localhost/api/utils/llm/lamma?role=teacher&prompt=return a valid json string => success 1863. 1864. # Test Crypto data. 1865. => POST => http://localhost/api/test_crypto/insert => {"name":"DIP"} => "encrypted":true 1866. => GET => http://localhost/api/test_crypto/get => "encrypted":true 1867. => GET => http://localhost/api/test_crypto/get?_no_encode=1=> \"name\":\"DIP\" 1868. 1869. # Inline Edit 1870. => GET => http://localhost/api/test/?_edit=1 => button type="button" onclick="clone 1871. => GET => http://localhost/api/test/?_edit=true => button type="button" onclick="clone 1872. => GET => http://localhost/api/test/?_edit=True => button type="button" onclick="clone 1873. => GET => http://localhost/api/test/?_edit=0 => Find successfully 1874. All Endpoint:GET /?(?=/|$)/api/test/ext/help POST /?(?=/|$)/api/test/ext/help GET /?(?=/|$)/api/test/ext POST /?(?=/|$)/api/test/ext GET /?(?=/|$)/api/analytics/launch/help POST /?(?=/|$)/api/analytics/launch/help GET /?(?=/|$)/api/analytics/launch POST /?(?=/|$)/api/analytics/launch GET /?(?=/|$)/api/analytics/action/help POST /?(?=/|$)/api/analytics/action/help GET /?(?=/|$)/api/analytics/action POST /?(?=/|$)/api/analytics/action GET /?(?=/|$)/api/analytics/time_spent/help POST /?(?=/|$)/api/analytics/time_spent/help GET /?(?=/|$)/api/analytics/time_spent POST /?(?=/|$)/api/analytics/time_spent GET /?(?=/|$)/api/analytics/exception/help POST /?(?=/|$)/api/analytics/exception/help GET /?(?=/|$)/api/analytics/exception POST /?(?=/|$)/api/analytics/exception GET /?(?=/|$)/api/analytics/hit_tracker/help POST /?(?=/|$)/api/analytics/hit_tracker/help GET /?(?=/|$)/api/analytics/hit_tracker POST /?(?=/|$)/api/analytics/hit_tracker GET /?(?=/|$)/api/analytics/adhoc/help POST /?(?=/|$)/api/analytics/adhoc/help GET /?(?=/|$)/api/analytics/adhoc POST /?(?=/|$)/api/analytics/adhoc GET /?(?=/|$)/api/analytics/report_crash/help POST /?(?=/|$)/api/analytics/report_crash/help GET /?(?=/|$)/api/analytics/report_crash POST /?(?=/|$)/api/analytics/report_crash GET /?(?=/|$)/api/analytics/session_history/help POST /?(?=/|$)/api/analytics/session_history/help GET /?(?=/|$)/api/analytics/session_history POST /?(?=/|$)/api/analytics/session_history GET /?(?=/|$)/api/analytics/logs/help POST /?(?=/|$)/api/analytics/logs/help GET /?(?=/|$)/api/analytics/logs POST /?(?=/|$)/api/analytics/logs GET /?(?=/|$)/api/analytics/show/help POST /?(?=/|$)/api/analytics/show/help GET /?(?=/|$)/api/analytics/show POST /?(?=/|$)/api/analytics/show GET /?(?=/|$)/api/analytics/time_spent_dashboard/help POST /?(?=/|$)/api/analytics/time_spent_dashboard/help GET /?(?=/|$)/api/analytics/time_spent_dashboard POST /?(?=/|$)/api/analytics/time_spent_dashboard GET /?(?=/|$)/api/analytics/list_crash/help POST /?(?=/|$)/api/analytics/list_crash/help GET /?(?=/|$)/api/analytics/list_crash POST /?(?=/|$)/api/analytics/list_crash GET /?(?=/|$)/api/analytics/dau/help POST /?(?=/|$)/api/analytics/dau/help GET /?(?=/|$)/api/analytics/dau POST /?(?=/|$)/api/analytics/dau GET /?(?=/|$)/api/push_notification/push/help POST /?(?=/|$)/api/push_notification/push/help GET /?(?=/|$)/api/push_notification/push POST /?(?=/|$)/api/push_notification/push GET /?(?=/|$)/api/push_notification/push_one/help POST /?(?=/|$)/api/push_notification/push_one/help GET /?(?=/|$)/api/push_notification/push_one POST /?(?=/|$)/api/push_notification/push_one GET /?(?=/|$)/api/push_notification/add/help POST /?(?=/|$)/api/push_notification/add/help GET /?(?=/|$)/api/push_notification/add POST /?(?=/|$)/api/push_notification/add GET /?(?=/|$)/api/nodel_shortcode/generate/help POST /?(?=/|$)/api/nodel_shortcode/generate/help GET /?(?=/|$)/api/nodel_shortcode/generate POST /?(?=/|$)/api/nodel_shortcode/generate GET /?(?=/|$)/api/system_calender/grant/help POST /?(?=/|$)/api/system_calender/grant/help GET /?(?=/|$)/api/system_calender/grant POST /?(?=/|$)/api/system_calender/grant GET /?(?=/|$)/api/system_calender/book/help POST /?(?=/|$)/api/system_calender/book/help GET /?(?=/|$)/api/system_calender/book POST /?(?=/|$)/api/system_calender/book GET /?(?=/|$)/api/system_calender/availability/help POST /?(?=/|$)/api/system_calender/availability/help GET /?(?=/|$)/api/system_calender/availability POST /?(?=/|$)/api/system_calender/availability GET /?(?=/|$)/api/system_calender/cancel/help POST /?(?=/|$)/api/system_calender/cancel/help GET /?(?=/|$)/api/system_calender/cancel POST /?(?=/|$)/api/system_calender/cancel GET /?(?=/|$)/api/dropbox/upload/help POST /?(?=/|$)/api/dropbox/upload/help GET /?(?=/|$)/api/dropbox/upload POST /?(?=/|$)/api/dropbox/upload GET /?(?=/|$)/api/dropbox/delete/help POST /?(?=/|$)/api/dropbox/delete/help GET /?(?=/|$)/api/dropbox/delete POST /?(?=/|$)/api/dropbox/delete GET /?(?=/|$)/api/promotion/get_referral_code/help POST /?(?=/|$)/api/promotion/get_referral_code/help GET /?(?=/|$)/api/promotion/get_referral_code POST /?(?=/|$)/api/promotion/get_referral_code GET /?(?=/|$)/api/promotion/check_referral_code/help POST /?(?=/|$)/api/promotion/check_referral_code/help GET /?(?=/|$)/api/promotion/check_referral_code POST /?(?=/|$)/api/promotion/check_referral_code GET /?(?=/|$)/api/nodel_screen_question/test/help POST /?(?=/|$)/api/nodel_screen_question/test/help GET /?(?=/|$)/api/nodel_screen_question/test POST /?(?=/|$)/api/nodel_screen_question/test GET /?(?=/|$)/api/nodel_screen_question/single_function_update/help POST /?(?=/|$)/api/nodel_screen_question/single_function_update/help GET /?(?=/|$)/api/nodel_screen_question/single_function_update POST /?(?=/|$)/api/nodel_screen_question/single_function_update GET /?(?=/|$)/api/explore/play/help POST /?(?=/|$)/api/explore/play/help GET /?(?=/|$)/api/explore/play POST /?(?=/|$)/api/explore/play GET /?(?=/|$)/api/status/ping/help POST /?(?=/|$)/api/status/ping/help GET /?(?=/|$)/api/status/ping POST /?(?=/|$)/api/status/ping GET /?(?=/|$)/api/status/show/help POST /?(?=/|$)/api/status/show/help GET /?(?=/|$)/api/status/show POST /?(?=/|$)/api/status/show GET /?(?=/|$)/api/license/grant/help POST /?(?=/|$)/api/license/grant/help GET /?(?=/|$)/api/license/grant POST /?(?=/|$)/api/license/grant GET /?(?=/|$)/api/license/revoke/help POST /?(?=/|$)/api/license/revoke/help GET /?(?=/|$)/api/license/revoke POST /?(?=/|$)/api/license/revoke GET /?(?=/|$)/api/license/validate/help POST /?(?=/|$)/api/license/validate/help GET /?(?=/|$)/api/license/validate POST /?(?=/|$)/api/license/validate GET /?(?=/|$)/api/schedule_script/submit/help POST /?(?=/|$)/api/schedule_script/submit/help GET /?(?=/|$)/api/schedule_script/submit POST /?(?=/|$)/api/schedule_script/submit GET /?(?=/|$)/api/schedule_script/activate/help POST /?(?=/|$)/api/schedule_script/activate/help GET /?(?=/|$)/api/schedule_script/activate POST /?(?=/|$)/api/schedule_script/activate GET /?(?=/|$)/api/schedule_script/deactivate/help POST /?(?=/|$)/api/schedule_script/deactivate/help GET /?(?=/|$)/api/schedule_script/deactivate POST /?(?=/|$)/api/schedule_script/deactivate GET /?(?=/|$)/api/schedule_script/status/help POST /?(?=/|$)/api/schedule_script/status/help GET /?(?=/|$)/api/schedule_script/status POST /?(?=/|$)/api/schedule_script/status GET /?(?=/|$)/api/schedule_script/activate_all/help POST /?(?=/|$)/api/schedule_script/activate_all/help GET /?(?=/|$)/api/schedule_script/activate_all POST /?(?=/|$)/api/schedule_script/activate_all GET /?(?=/|$)/api/schedule_script/dryrun/help POST /?(?=/|$)/api/schedule_script/dryrun/help GET /?(?=/|$)/api/schedule_script/dryrun POST /?(?=/|$)/api/schedule_script/dryrun GET /?(?=/|$)/api/schedule_script/reload/help POST /?(?=/|$)/api/schedule_script/reload/help GET /?(?=/|$)/api/schedule_script/reload POST /?(?=/|$)/api/schedule_script/reload GET /?(?=/|$)/api/subscription/subscribe/help POST /?(?=/|$)/api/subscription/subscribe/help GET /?(?=/|$)/api/subscription/subscribe POST /?(?=/|$)/api/subscription/subscribe GET /?(?=/|$)/api/subscription/unsubscribe/help POST /?(?=/|$)/api/subscription/unsubscribe/help GET /?(?=/|$)/api/subscription/unsubscribe POST /?(?=/|$)/api/subscription/unsubscribe GET /?(?=/|$)/api/subscription/notify/help POST /?(?=/|$)/api/subscription/notify/help GET /?(?=/|$)/api/subscription/notify POST /?(?=/|$)/api/subscription/notify GET /?(?=/|$)/api/stock_alert/ltp/help POST /?(?=/|$)/api/stock_alert/ltp/help GET /?(?=/|$)/api/stock_alert/ltp POST /?(?=/|$)/api/stock_alert/ltp GET /?(?=/|$)/api/stock_alert/trigger/help POST /?(?=/|$)/api/stock_alert/trigger/help GET /?(?=/|$)/api/stock_alert/trigger POST /?(?=/|$)/api/stock_alert/trigger GET /?(?=/|$)/api/stock_alert/add_ticker/help POST /?(?=/|$)/api/stock_alert/add_ticker/help GET /?(?=/|$)/api/stock_alert/add_ticker POST /?(?=/|$)/api/stock_alert/add_ticker GET /?(?=/|$)/api/stock_alert/remove_ticker/help POST /?(?=/|$)/api/stock_alert/remove_ticker/help GET /?(?=/|$)/api/stock_alert/remove_ticker POST /?(?=/|$)/api/stock_alert/remove_ticker GET /?(?=/|$)/api/curl_corn_jobs_remote/add/help POST /?(?=/|$)/api/curl_corn_jobs_remote/add/help GET /?(?=/|$)/api/curl_corn_jobs_remote/add POST /?(?=/|$)/api/curl_corn_jobs_remote/add GET /?(?=/|$)/api/curl_corn_jobs_remote/trigger_once/help POST /?(?=/|$)/api/curl_corn_jobs_remote/trigger_once/help GET /?(?=/|$)/api/curl_corn_jobs_remote/trigger_once POST /?(?=/|$)/api/curl_corn_jobs_remote/trigger_once GET /?(?=/|$)/api/curl_corn_jobs_remote/activate/help POST /?(?=/|$)/api/curl_corn_jobs_remote/activate/help GET /?(?=/|$)/api/curl_corn_jobs_remote/activate POST /?(?=/|$)/api/curl_corn_jobs_remote/activate GET /?(?=/|$)/api/curl_corn_jobs_remote/update/help POST /?(?=/|$)/api/curl_corn_jobs_remote/update/help GET /?(?=/|$)/api/curl_corn_jobs_remote/update POST /?(?=/|$)/api/curl_corn_jobs_remote/update GET /?(?=/|$)/api/ip_tv/cleanup/help POST /?(?=/|$)/api/ip_tv/cleanup/help GET /?(?=/|$)/api/ip_tv/cleanup POST /?(?=/|$)/api/ip_tv/cleanup GET /?(?=/|$)/api/ip_tv/add_seed/help POST /?(?=/|$)/api/ip_tv/add_seed/help GET /?(?=/|$)/api/ip_tv/add_seed POST /?(?=/|$)/api/ip_tv/add_seed GET /?(?=/|$)/api/ip_tv/reseed/help POST /?(?=/|$)/api/ip_tv/reseed/help GET /?(?=/|$)/api/ip_tv/reseed POST /?(?=/|$)/api/ip_tv/reseed GET /?(?=/|$)/api/ip_tv/explore_seed/help POST /?(?=/|$)/api/ip_tv/explore_seed/help GET /?(?=/|$)/api/ip_tv/explore_seed POST /?(?=/|$)/api/ip_tv/explore_seed GET /?(?=/|$)/api/stock_screen/get_data/help POST /?(?=/|$)/api/stock_screen/get_data/help GET /?(?=/|$)/api/stock_screen/get_data POST /?(?=/|$)/api/stock_screen/get_data GET /?(?=/|$)/api/simple_auth/register/help POST /?(?=/|$)/api/simple_auth/register/help GET /?(?=/|$)/api/simple_auth/register POST /?(?=/|$)/api/simple_auth/register GET /?(?=/|$)/api/simple_auth/login/help POST /?(?=/|$)/api/simple_auth/login/help GET /?(?=/|$)/api/simple_auth/login POST /?(?=/|$)/api/simple_auth/login GET /?(?=/|$)/api/simple_auth/login_by_email/help POST /?(?=/|$)/api/simple_auth/login_by_email/help GET /?(?=/|$)/api/simple_auth/login_by_email POST /?(?=/|$)/api/simple_auth/login_by_email GET /?(?=/|$)/api/simple_auth/logout/help POST /?(?=/|$)/api/simple_auth/logout/help GET /?(?=/|$)/api/simple_auth/logout POST /?(?=/|$)/api/simple_auth/logout GET /?(?=/|$)/api/simple_auth/get_info/help POST /?(?=/|$)/api/simple_auth/get_info/help GET /?(?=/|$)/api/simple_auth/get_info POST /?(?=/|$)/api/simple_auth/get_info GET /?(?=/|$)/api/simple_auth/update_info/help POST /?(?=/|$)/api/simple_auth/update_info/help GET /?(?=/|$)/api/simple_auth/update_info POST /?(?=/|$)/api/simple_auth/update_info GET /?(?=/|$)/api/simple_auth/forgot_password/help POST /?(?=/|$)/api/simple_auth/forgot_password/help GET /?(?=/|$)/api/simple_auth/forgot_password POST /?(?=/|$)/api/simple_auth/forgot_password GET /?(?=/|$)/api/simple_auth/reset_password/help POST /?(?=/|$)/api/simple_auth/reset_password/help GET /?(?=/|$)/api/simple_auth/reset_password POST /?(?=/|$)/api/simple_auth/reset_password GET /?(?=/|$)/api/simple_auth/logout_all/help POST /?(?=/|$)/api/simple_auth/logout_all/help GET /?(?=/|$)/api/simple_auth/logout_all POST /?(?=/|$)/api/simple_auth/logout_all GET /?(?=/|$)/api/simple_auth/validate_login_session/help POST /?(?=/|$)/api/simple_auth/validate_login_session/help GET /?(?=/|$)/api/simple_auth/validate_login_session POST /?(?=/|$)/api/simple_auth/validate_login_session GET /?(?=/|$)/api/simple_auth/get_all_active_session/help POST /?(?=/|$)/api/simple_auth/get_all_active_session/help GET /?(?=/|$)/api/simple_auth/get_all_active_session POST /?(?=/|$)/api/simple_auth/get_all_active_session GET /?(?=/|$)/api/simple_auth/add_subscription/help POST /?(?=/|$)/api/simple_auth/add_subscription/help GET /?(?=/|$)/api/simple_auth/add_subscription POST /?(?=/|$)/api/simple_auth/add_subscription GET /?(?=/|$)/api/simple_auth/clear_subscription/help POST /?(?=/|$)/api/simple_auth/clear_subscription/help GET /?(?=/|$)/api/simple_auth/clear_subscription POST /?(?=/|$)/api/simple_auth/clear_subscription GET /?(?=/|$)/api/simple_auth/generate_oauth_tokens/help POST /?(?=/|$)/api/simple_auth/generate_oauth_tokens/help GET /?(?=/|$)/api/simple_auth/generate_oauth_tokens POST /?(?=/|$)/api/simple_auth/generate_oauth_tokens GET /?(?=/|$)/api/simple_auth/add_permission/help POST /?(?=/|$)/api/simple_auth/add_permission/help GET /?(?=/|$)/api/simple_auth/add_permission POST /?(?=/|$)/api/simple_auth/add_permission GET /?(?=/|$)/api/simple_auth/remove_permission/help POST /?(?=/|$)/api/simple_auth/remove_permission/help GET /?(?=/|$)/api/simple_auth/remove_permission POST /?(?=/|$)/api/simple_auth/remove_permission GET /?(?=/|$)/api/simple_auth/save_private_token/help POST /?(?=/|$)/api/simple_auth/save_private_token/help GET /?(?=/|$)/api/simple_auth/save_private_token POST /?(?=/|$)/api/simple_auth/save_private_token GET /?(?=/|$)/api/simple_auth/generate_magic_link/help POST /?(?=/|$)/api/simple_auth/generate_magic_link/help GET /?(?=/|$)/api/simple_auth/generate_magic_link POST /?(?=/|$)/api/simple_auth/generate_magic_link GET /?(?=/|$)/api/simple_auth/login_with_magic_link/help POST /?(?=/|$)/api/simple_auth/login_with_magic_link/help GET /?(?=/|$)/api/simple_auth/login_with_magic_link POST /?(?=/|$)/api/simple_auth/login_with_magic_link GET /?(?=/|$)/api/simple_auth/login_by_google/help POST /?(?=/|$)/api/simple_auth/login_by_google/help GET /?(?=/|$)/api/simple_auth/login_by_google POST /?(?=/|$)/api/simple_auth/login_by_google GET /?(?=/|$)/api/simple_auth/add_product_subscription_by_super_user/help POST /?(?=/|$)/api/simple_auth/add_product_subscription_by_super_user/help GET /?(?=/|$)/api/simple_auth/add_product_subscription_by_super_user POST /?(?=/|$)/api/simple_auth/add_product_subscription_by_super_user GET /?(?=/|$)/api/simple_auth/remove_product_subscription_by_super_user/help POST /?(?=/|$)/api/simple_auth/remove_product_subscription_by_super_user/help GET /?(?=/|$)/api/simple_auth/remove_product_subscription_by_super_user POST /?(?=/|$)/api/simple_auth/remove_product_subscription_by_super_user GET /?(?=/|$)/api/simple_auth/validate_product_subscription/help POST /?(?=/|$)/api/simple_auth/validate_product_subscription/help GET /?(?=/|$)/api/simple_auth/validate_product_subscription POST /?(?=/|$)/api/simple_auth/validate_product_subscription GET /?(?=/|$)/api/simple_auth/get_user_by_super_user/help POST /?(?=/|$)/api/simple_auth/get_user_by_super_user/help GET /?(?=/|$)/api/simple_auth/get_user_by_super_user POST /?(?=/|$)/api/simple_auth/get_user_by_super_user GET /?(?=/|$)/api/error/test/help POST /?(?=/|$)/api/error/test/help GET /?(?=/|$)/api/error/test POST /?(?=/|$)/api/error/test GET /?(?=/|$)/api/stripe/check_subscription/help POST /?(?=/|$)/api/stripe/check_subscription/help GET /?(?=/|$)/api/stripe/check_subscription POST /?(?=/|$)/api/stripe/check_subscription GET /?(?=/|$)/api/stripe/check_payment/help POST /?(?=/|$)/api/stripe/check_payment/help GET /?(?=/|$)/api/stripe/check_payment POST /?(?=/|$)/api/stripe/check_payment GET /?(?=/|$)/api/stripe/payment/help POST /?(?=/|$)/api/stripe/payment/help GET /?(?=/|$)/api/stripe/payment POST /?(?=/|$)/api/stripe/payment GET /?(?=/|$)/api/remote_smb_manifest/razorpay_create_order/help POST /?(?=/|$)/api/remote_smb_manifest/razorpay_create_order/help GET /?(?=/|$)/api/remote_smb_manifest/razorpay_create_order POST /?(?=/|$)/api/remote_smb_manifest/razorpay_create_order GET /?(?=/|$)/api/kill_switch/set_bool/help POST /?(?=/|$)/api/kill_switch/set_bool/help GET /?(?=/|$)/api/kill_switch/set_bool POST /?(?=/|$)/api/kill_switch/set_bool GET /?(?=/|$)/api/kill_switch/set_string/help POST /?(?=/|$)/api/kill_switch/set_string/help GET /?(?=/|$)/api/kill_switch/set_string POST /?(?=/|$)/api/kill_switch/set_string GET /?(?=/|$)/api/kill_switch/reload/help POST /?(?=/|$)/api/kill_switch/reload/help GET /?(?=/|$)/api/kill_switch/reload POST /?(?=/|$)/api/kill_switch/reload GET /?(?=/|$)/api/kill_switch/get_current/help POST /?(?=/|$)/api/kill_switch/get_current/help GET /?(?=/|$)/api/kill_switch/get_current POST /?(?=/|$)/api/kill_switch/get_current GET /?(?=/|$)/api/webhook/status/help POST /?(?=/|$)/api/webhook/status/help GET /?(?=/|$)/api/webhook/status POST /?(?=/|$)/api/webhook/status GET /?(?=/|$)/api/webhook/status_clear/help POST /?(?=/|$)/api/webhook/status_clear/help GET /?(?=/|$)/api/webhook/status_clear POST /?(?=/|$)/api/webhook/status_clear GET /?(?=/|$)/api/tunnel_request/add_tunnel/help POST /?(?=/|$)/api/tunnel_request/add_tunnel/help GET /?(?=/|$)/api/tunnel_request/add_tunnel POST /?(?=/|$)/api/tunnel_request/add_tunnel GET /?(?=/|$)/api/tunnel_request/execute/help POST /?(?=/|$)/api/tunnel_request/execute/help GET /?(?=/|$)/api/tunnel_request/execute POST /?(?=/|$)/api/tunnel_request/execute GET /?(?=/|$)/api/tunnel_request/add_revision/help POST /?(?=/|$)/api/tunnel_request/add_revision/help GET /?(?=/|$)/api/tunnel_request/add_revision POST /?(?=/|$)/api/tunnel_request/add_revision GET /?(?=/|$)/api/sev_manager/help/help POST /?(?=/|$)/api/sev_manager/help/help GET /?(?=/|$)/api/sev_manager/help POST /?(?=/|$)/api/sev_manager/help GET /?(?=/|$)/api/task/test/help POST /?(?=/|$)/api/task/test/help GET /?(?=/|$)/api/task/test POST /?(?=/|$)/api/task/test GET /?(?=/|$)/api/live_log/test/help POST /?(?=/|$)/api/live_log/test/help GET /?(?=/|$)/api/live_log/test POST /?(?=/|$)/api/live_log/test GET /?(?=/|$)/api/live_log/get_log/help POST /?(?=/|$)/api/live_log/get_log/help GET /?(?=/|$)/api/live_log/get_log POST /?(?=/|$)/api/live_log/get_log GET /?(?=/|$)/api/secure_remote_oauth_store/gen_access_token/help POST /?(?=/|$)/api/secure_remote_oauth_store/gen_access_token/help GET /?(?=/|$)/api/secure_remote_oauth_store/gen_access_token POST /?(?=/|$)/api/secure_remote_oauth_store/gen_access_token GET /?(?=/|$)/api/algo_trade_engine/restart/help POST /?(?=/|$)/api/algo_trade_engine/restart/help GET /?(?=/|$)/api/algo_trade_engine/restart POST /?(?=/|$)/api/algo_trade_engine/restart GET /?(?=/|$)/api/algo_trade_engine/status/help POST /?(?=/|$)/api/algo_trade_engine/status/help GET /?(?=/|$)/api/algo_trade_engine/status POST /?(?=/|$)/api/algo_trade_engine/status GET /?(?=/|$)/api/algo_trade_engine/submit_order/help POST /?(?=/|$)/api/algo_trade_engine/submit_order/help GET /?(?=/|$)/api/algo_trade_engine/submit_order POST /?(?=/|$)/api/algo_trade_engine/submit_order GET /?(?=/|$)/api/secure_remote_js_code_execution/execute/help POST /?(?=/|$)/api/secure_remote_js_code_execution/execute/help GET /?(?=/|$)/api/secure_remote_js_code_execution/execute POST /?(?=/|$)/api/secure_remote_js_code_execution/execute GET /?(?=/|$)/api/appconfig/get/help POST /?(?=/|$)/api/appconfig/get/help GET /?(?=/|$)/api/appconfig/get POST /?(?=/|$)/api/appconfig/get GET /?(?=/|$)/api/appconfig/save/help POST /?(?=/|$)/api/appconfig/save/help GET /?(?=/|$)/api/appconfig/save POST /?(?=/|$)/api/appconfig/save GET /?(?=/|$)/api/appconfig/stat/help POST /?(?=/|$)/api/appconfig/stat/help GET /?(?=/|$)/api/appconfig/stat POST /?(?=/|$)/api/appconfig/stat GET /?(?=/|$)/api/appconfig/stat2/help POST /?(?=/|$)/api/appconfig/stat2/help GET /?(?=/|$)/api/appconfig/stat2 POST /?(?=/|$)/api/appconfig/stat2 GET /?(?=/|$)/api/utils/pdf/letter/help POST /?(?=/|$)/api/utils/pdf/letter/help GET /?(?=/|$)/api/utils/pdf/letter POST /?(?=/|$)/api/utils/pdf/letter GET /?(?=/|$)/api/utils/test//help POST /?(?=/|$)/api/utils/test//help GET /?(?=/|$)/api/utils/test/ POST /?(?=/|$)/api/utils/test/ GET /?(?=/|$)/api/utils/date//help POST /?(?=/|$)/api/utils/date//help GET /?(?=/|$)/api/utils/date/ POST /?(?=/|$)/api/utils/date/ GET /?(?=/|$)/api/utils/ticket//help POST /?(?=/|$)/api/utils/ticket//help GET /?(?=/|$)/api/utils/ticket/ POST /?(?=/|$)/api/utils/ticket/ GET /?(?=/|$)/api/utils/bootcamp//help POST /?(?=/|$)/api/utils/bootcamp//help GET /?(?=/|$)/api/utils/bootcamp/ POST /?(?=/|$)/api/utils/bootcamp/ GET /?(?=/|$)/api/utils/rce/status/help POST /?(?=/|$)/api/utils/rce/status/help GET /?(?=/|$)/api/utils/rce/status POST /?(?=/|$)/api/utils/rce/status GET /?(?=/|$)/api/utils/rce/capabilities/help POST /?(?=/|$)/api/utils/rce/capabilities/help GET /?(?=/|$)/api/utils/rce/capabilities POST /?(?=/|$)/api/utils/rce/capabilities GET /?(?=/|$)/api/utils/rce/execute/help POST /?(?=/|$)/api/utils/rce/execute/help GET /?(?=/|$)/api/utils/rce/execute POST /?(?=/|$)/api/utils/rce/execute GET /?(?=/|$)/api/utils/rce/execute_ext/help POST /?(?=/|$)/api/utils/rce/execute_ext/help GET /?(?=/|$)/api/utils/rce/execute_ext POST /?(?=/|$)/api/utils/rce/execute_ext GET /?(?=/|$)/api/utils/rce/execute_input/help POST /?(?=/|$)/api/utils/rce/execute_input/help GET /?(?=/|$)/api/utils/rce/execute_input POST /?(?=/|$)/api/utils/rce/execute_input GET /?(?=/|$)/api/utils/rce/generate_stub/help POST /?(?=/|$)/api/utils/rce/generate_stub/help GET /?(?=/|$)/api/utils/rce/generate_stub POST /?(?=/|$)/api/utils/rce/generate_stub GET /?(?=/|$)/api/utils/rce/generate_code/help POST /?(?=/|$)/api/utils/rce/generate_code/help GET /?(?=/|$)/api/utils/rce/generate_code POST /?(?=/|$)/api/utils/rce/generate_code GET /?(?=/|$)/api/utils/rce/sf_execute/help POST /?(?=/|$)/api/utils/rce/sf_execute/help GET /?(?=/|$)/api/utils/rce/sf_execute POST /?(?=/|$)/api/utils/rce/sf_execute GET /?(?=/|$)/api/utils/rce/sf_test/help POST /?(?=/|$)/api/utils/rce/sf_test/help GET /?(?=/|$)/api/utils/rce/sf_test POST /?(?=/|$)/api/utils/rce/sf_test GET /?(?=/|$)/api/utils/email//help POST /?(?=/|$)/api/utils/email//help GET /?(?=/|$)/api/utils/email/ POST /?(?=/|$)/api/utils/email/ GET /?(?=/|$)/api/utils/qr//help POST /?(?=/|$)/api/utils/qr//help GET /?(?=/|$)/api/utils/qr/ POST /?(?=/|$)/api/utils/qr/ GET /?(?=/|$)/api/utils/stripe//help POST /?(?=/|$)/api/utils/stripe//help GET /?(?=/|$)/api/utils/stripe/ POST /?(?=/|$)/api/utils/stripe/ GET /?(?=/|$)/api/utils/upload//help POST /?(?=/|$)/api/utils/upload//help GET /?(?=/|$)/api/utils/upload/ POST /?(?=/|$)/api/utils/upload/ GET /?(?=/|$)/api/utils/youtubedl//help POST /?(?=/|$)/api/utils/youtubedl//help GET /?(?=/|$)/api/utils/youtubedl/ POST /?(?=/|$)/api/utils/youtubedl/ GET /?(?=/|$)/api/utils/youtubedl/dl/help POST /?(?=/|$)/api/utils/youtubedl/dl/help GET /?(?=/|$)/api/utils/youtubedl/dl POST /?(?=/|$)/api/utils/youtubedl/dl GET /?(?=/|$)/api/utils/youtubedl/video/help POST /?(?=/|$)/api/utils/youtubedl/video/help GET /?(?=/|$)/api/utils/youtubedl/video POST /?(?=/|$)/api/utils/youtubedl/video GET /?(?=/|$)/api/utils/youtubedl/audio/help POST /?(?=/|$)/api/utils/youtubedl/audio/help GET /?(?=/|$)/api/utils/youtubedl/audio POST /?(?=/|$)/api/utils/youtubedl/audio GET /?(?=/|$)/api/utils/youtubedl/info/help POST /?(?=/|$)/api/utils/youtubedl/info/help GET /?(?=/|$)/api/utils/youtubedl/info POST /?(?=/|$)/api/utils/youtubedl/info GET /?(?=/|$)/api/utils/social/facebook/help POST /?(?=/|$)/api/utils/social/facebook/help GET /?(?=/|$)/api/utils/social/facebook POST /?(?=/|$)/api/utils/social/facebook GET /?(?=/|$)/api/utils/social/telegram/help POST /?(?=/|$)/api/utils/social/telegram/help GET /?(?=/|$)/api/utils/social/telegram POST /?(?=/|$)/api/utils/social/telegram GET /?(?=/|$)/api/utils/social/twitter/help POST /?(?=/|$)/api/utils/social/twitter/help GET /?(?=/|$)/api/utils/social/twitter POST /?(?=/|$)/api/utils/social/twitter GET /?(?=/|$)/api/utils/social//help POST /?(?=/|$)/api/utils/social//help GET /?(?=/|$)/api/utils/social/ POST /?(?=/|$)/api/utils/social/ GET /?(?=/|$)/api/utils/social/linkedin/help POST /?(?=/|$)/api/utils/social/linkedin/help GET /?(?=/|$)/api/utils/social/linkedin POST /?(?=/|$)/api/utils/social/linkedin GET /?(?=/|$)/api/utils/social/all/help POST /?(?=/|$)/api/utils/social/all/help GET /?(?=/|$)/api/utils/social/all POST /?(?=/|$)/api/utils/social/all GET /?(?=/|$)/api/utils/sms//help POST /?(?=/|$)/api/utils/sms//help GET /?(?=/|$)/api/utils/sms/ POST /?(?=/|$)/api/utils/sms/ GET /?(?=/|$)/api/utils/universal_link//help POST /?(?=/|$)/api/utils/universal_link//help GET /?(?=/|$)/api/utils/universal_link/ POST /?(?=/|$)/api/utils/universal_link/ GET /?(?=/|$)/api/utils/static//help POST /?(?=/|$)/api/utils/static//help GET /?(?=/|$)/api/utils/static/ POST /?(?=/|$)/api/utils/static/ GET /?(?=/|$)/api/utils/static/privacy/help POST /?(?=/|$)/api/utils/static/privacy/help GET /?(?=/|$)/api/utils/static/privacy POST /?(?=/|$)/api/utils/static/privacy GET /?(?=/|$)/api/utils/static/toc/help POST /?(?=/|$)/api/utils/static/toc/help GET /?(?=/|$)/api/utils/static/toc POST /?(?=/|$)/api/utils/static/toc GET /?(?=/|$)/api/utils/trade//help POST /?(?=/|$)/api/utils/trade//help GET /?(?=/|$)/api/utils/trade/ POST /?(?=/|$)/api/utils/trade/ GET /?(?=/|$)/api/utils/trade/update_nse/help POST /?(?=/|$)/api/utils/trade/update_nse/help GET /?(?=/|$)/api/utils/trade/update_nse POST /?(?=/|$)/api/utils/trade/update_nse GET /?(?=/|$)/api/utils/trade/latest/help POST /?(?=/|$)/api/utils/trade/latest/help GET /?(?=/|$)/api/utils/trade/latest POST /?(?=/|$)/api/utils/trade/latest GET /?(?=/|$)/api/utils/trade/screen/help POST /?(?=/|$)/api/utils/trade/screen/help GET /?(?=/|$)/api/utils/trade/screen POST /?(?=/|$)/api/utils/trade/screen GET /?(?=/|$)/api/utils/trade/compute_indicator/help POST /?(?=/|$)/api/utils/trade/compute_indicator/help GET /?(?=/|$)/api/utils/trade/compute_indicator POST /?(?=/|$)/api/utils/trade/compute_indicator GET /?(?=/|$)/api/utils/trade/build_nse_indicator/help POST /?(?=/|$)/api/utils/trade/build_nse_indicator/help GET /?(?=/|$)/api/utils/trade/build_nse_indicator POST /?(?=/|$)/api/utils/trade/build_nse_indicator GET /?(?=/|$)/api/utils/trade/build_yahoo_indicator/help POST /?(?=/|$)/api/utils/trade/build_yahoo_indicator/help GET /?(?=/|$)/api/utils/trade/build_yahoo_indicator POST /?(?=/|$)/api/utils/trade/build_yahoo_indicator GET /?(?=/|$)/api/utils/trade/get_nse_eod/help POST /?(?=/|$)/api/utils/trade/get_nse_eod/help GET /?(?=/|$)/api/utils/trade/get_nse_eod POST /?(?=/|$)/api/utils/trade/get_nse_eod GET /?(?=/|$)/api/utils/trade/get_indicator/help POST /?(?=/|$)/api/utils/trade/get_indicator/help GET /?(?=/|$)/api/utils/trade/get_indicator POST /?(?=/|$)/api/utils/trade/get_indicator GET /?(?=/|$)/api/utils/trade/execute_screen/help POST /?(?=/|$)/api/utils/trade/execute_screen/help GET /?(?=/|$)/api/utils/trade/execute_screen POST /?(?=/|$)/api/utils/trade/execute_screen GET /?(?=/|$)/api/utils/trade/execute_backtest/help POST /?(?=/|$)/api/utils/trade/execute_backtest/help GET /?(?=/|$)/api/utils/trade/execute_backtest POST /?(?=/|$)/api/utils/trade/execute_backtest GET /?(?=/|$)/api/utils/trade/expert_call_result/help POST /?(?=/|$)/api/utils/trade/expert_call_result/help GET /?(?=/|$)/api/utils/trade/expert_call_result POST /?(?=/|$)/api/utils/trade/expert_call_result GET /?(?=/|$)/api/utils/trade/expert_result_intraday/help POST /?(?=/|$)/api/utils/trade/expert_result_intraday/help GET /?(?=/|$)/api/utils/trade/expert_result_intraday POST /?(?=/|$)/api/utils/trade/expert_result_intraday GET /?(?=/|$)/api/utils/trade/call_for_action/help POST /?(?=/|$)/api/utils/trade/call_for_action/help GET /?(?=/|$)/api/utils/trade/call_for_action POST /?(?=/|$)/api/utils/trade/call_for_action GET /?(?=/|$)/api/utils/trade/ltp/help POST /?(?=/|$)/api/utils/trade/ltp/help GET /?(?=/|$)/api/utils/trade/ltp POST /?(?=/|$)/api/utils/trade/ltp GET /?(?=/|$)/api/utils/trade/history/help POST /?(?=/|$)/api/utils/trade/history/help GET /?(?=/|$)/api/utils/trade/history POST /?(?=/|$)/api/utils/trade/history GET /?(?=/|$)/api/utils/heartbeat/ping/help POST /?(?=/|$)/api/utils/heartbeat/ping/help GET /?(?=/|$)/api/utils/heartbeat/ping POST /?(?=/|$)/api/utils/heartbeat/ping GET /?(?=/|$)/api/utils/heartbeat/status/help POST /?(?=/|$)/api/utils/heartbeat/status/help GET /?(?=/|$)/api/utils/heartbeat/status POST /?(?=/|$)/api/utils/heartbeat/status GET /?(?=/|$)/api/utils/system_db/reload/help POST /?(?=/|$)/api/utils/system_db/reload/help GET /?(?=/|$)/api/utils/system_db/reload POST /?(?=/|$)/api/utils/system_db/reload GET /?(?=/|$)/api/utils/system_db/update/help POST /?(?=/|$)/api/utils/system_db/update/help GET /?(?=/|$)/api/utils/system_db/update POST /?(?=/|$)/api/utils/system_db/update GET /?(?=/|$)/api/utils/aws/gen_presigned_s3_url/help POST /?(?=/|$)/api/utils/aws/gen_presigned_s3_url/help GET /?(?=/|$)/api/utils/aws/gen_presigned_s3_url POST /?(?=/|$)/api/utils/aws/gen_presigned_s3_url GET /?(?=/|$)/api/utils/aws/list_files/help POST /?(?=/|$)/api/utils/aws/list_files/help GET /?(?=/|$)/api/utils/aws/list_files POST /?(?=/|$)/api/utils/aws/list_files GET /?(?=/|$)/api/utils/aws/get_download_url/help POST /?(?=/|$)/api/utils/aws/get_download_url/help GET /?(?=/|$)/api/utils/aws/get_download_url POST /?(?=/|$)/api/utils/aws/get_download_url GET /?(?=/|$)/api/utils/bash//help POST /?(?=/|$)/api/utils/bash//help GET /?(?=/|$)/api/utils/bash/ POST /?(?=/|$)/api/utils/bash/ GET /?(?=/|$)/api/utils/bash/get_all_presets/help POST /?(?=/|$)/api/utils/bash/get_all_presets/help GET /?(?=/|$)/api/utils/bash/get_all_presets POST /?(?=/|$)/api/utils/bash/get_all_presets GET /?(?=/|$)/api/utils/yahoo_fin/historical_data/help POST /?(?=/|$)/api/utils/yahoo_fin/historical_data/help GET /?(?=/|$)/api/utils/yahoo_fin/historical_data POST /?(?=/|$)/api/utils/yahoo_fin/historical_data GET /?(?=/|$)/api/utils/yahoo_fin/historical_data_by_date/help POST /?(?=/|$)/api/utils/yahoo_fin/historical_data_by_date/help GET /?(?=/|$)/api/utils/yahoo_fin/historical_data_by_date POST /?(?=/|$)/api/utils/yahoo_fin/historical_data_by_date GET /?(?=/|$)/api/utils/schwab/pricehistory/help POST /?(?=/|$)/api/utils/schwab/pricehistory/help GET /?(?=/|$)/api/utils/schwab/pricehistory POST /?(?=/|$)/api/utils/schwab/pricehistory GET /?(?=/|$)/api/utils/schwab/quote/help POST /?(?=/|$)/api/utils/schwab/quote/help GET /?(?=/|$)/api/utils/schwab/quote POST /?(?=/|$)/api/utils/schwab/quote GET /?(?=/|$)/api/utils/schwab/chains/help POST /?(?=/|$)/api/utils/schwab/chains/help GET /?(?=/|$)/api/utils/schwab/chains POST /?(?=/|$)/api/utils/schwab/chains GET /?(?=/|$)/api/utils/schwab/get_all_data/help POST /?(?=/|$)/api/utils/schwab/get_all_data/help GET /?(?=/|$)/api/utils/schwab/get_all_data POST /?(?=/|$)/api/utils/schwab/get_all_data GET /?(?=/|$)/api/utils/schwab/submit_order/help POST /?(?=/|$)/api/utils/schwab/submit_order/help GET /?(?=/|$)/api/utils/schwab/submit_order POST /?(?=/|$)/api/utils/schwab/submit_order GET /?(?=/|$)/api/utils/schwab/cancel_order/help POST /?(?=/|$)/api/utils/schwab/cancel_order/help GET /?(?=/|$)/api/utils/schwab/cancel_order POST /?(?=/|$)/api/utils/schwab/cancel_order GET /?(?=/|$)/api/utils/schwab/list_chains/help POST /?(?=/|$)/api/utils/schwab/list_chains/help GET /?(?=/|$)/api/utils/schwab/list_chains POST /?(?=/|$)/api/utils/schwab/list_chains GET /?(?=/|$)/api/utils/schwab/submit_trailing_stop_order/help POST /?(?=/|$)/api/utils/schwab/submit_trailing_stop_order/help GET /?(?=/|$)/api/utils/schwab/submit_trailing_stop_order POST /?(?=/|$)/api/utils/schwab/submit_trailing_stop_order GET /?(?=/|$)/api/utils/schwab/submit_oco_order/help POST /?(?=/|$)/api/utils/schwab/submit_oco_order/help GET /?(?=/|$)/api/utils/schwab/submit_oco_order POST /?(?=/|$)/api/utils/schwab/submit_oco_order GET /?(?=/|$)/api/utils/schwab/submit_oto_order/help POST /?(?=/|$)/api/utils/schwab/submit_oto_order/help GET /?(?=/|$)/api/utils/schwab/submit_oto_order POST /?(?=/|$)/api/utils/schwab/submit_oto_order GET /?(?=/|$)/api/utils/schwab/submit_ott_order/help POST /?(?=/|$)/api/utils/schwab/submit_ott_order/help GET /?(?=/|$)/api/utils/schwab/submit_ott_order POST /?(?=/|$)/api/utils/schwab/submit_ott_order GET /?(?=/|$)/api/utils/schwab/submit_raw_order/help POST /?(?=/|$)/api/utils/schwab/submit_raw_order/help GET /?(?=/|$)/api/utils/schwab/submit_raw_order POST /?(?=/|$)/api/utils/schwab/submit_raw_order GET /?(?=/|$)/api/utils/schwab/submit_otooco_order/help POST /?(?=/|$)/api/utils/schwab/submit_otooco_order/help GET /?(?=/|$)/api/utils/schwab/submit_otooco_order POST /?(?=/|$)/api/utils/schwab/submit_otooco_order GET /?(?=/|$)/api/utils/schwab/net_delta/help POST /?(?=/|$)/api/utils/schwab/net_delta/help GET /?(?=/|$)/api/utils/schwab/net_delta POST /?(?=/|$)/api/utils/schwab/net_delta GET /?(?=/|$)/api/utils/schwab/proxy/help POST /?(?=/|$)/api/utils/schwab/proxy/help GET /?(?=/|$)/api/utils/schwab/proxy POST /?(?=/|$)/api/utils/schwab/proxy GET /?(?=/|$)/api/utils/telegram/send_msg/help POST /?(?=/|$)/api/utils/telegram/send_msg/help GET /?(?=/|$)/api/utils/telegram/send_msg POST /?(?=/|$)/api/utils/telegram/send_msg GET /?(?=/|$)/api/utils/preload_data//help POST /?(?=/|$)/api/utils/preload_data//help GET /?(?=/|$)/api/utils/preload_data/ POST /?(?=/|$)/api/utils/preload_data/ GET /?(?=/|$)/api/utils/system_config/get/help POST /?(?=/|$)/api/utils/system_config/get/help GET /?(?=/|$)/api/utils/system_config/get POST /?(?=/|$)/api/utils/system_config/get GET /?(?=/|$)/api/utils/system_config/set/help POST /?(?=/|$)/api/utils/system_config/set/help GET /?(?=/|$)/api/utils/system_config/set POST /?(?=/|$)/api/utils/system_config/set GET /?(?=/|$)/api/utils/system_config/delete/help POST /?(?=/|$)/api/utils/system_config/delete/help GET /?(?=/|$)/api/utils/system_config/delete POST /?(?=/|$)/api/utils/system_config/delete GET /?(?=/|$)/api/utils/system_config/copy_schwab_oauth_to_system_config/help POST /?(?=/|$)/api/utils/system_config/copy_schwab_oauth_to_system_config/help GET /?(?=/|$)/api/utils/system_config/copy_schwab_oauth_to_system_config POST /?(?=/|$)/api/utils/system_config/copy_schwab_oauth_to_system_config GET /?(?=/|$)/api/utils/admin_tools/logs/help POST /?(?=/|$)/api/utils/admin_tools/logs/help GET /?(?=/|$)/api/utils/admin_tools/logs POST /?(?=/|$)/api/utils/admin_tools/logs GET /?(?=/|$)/api/utils/admin_tools/clear_logs/help POST /?(?=/|$)/api/utils/admin_tools/clear_logs/help GET /?(?=/|$)/api/utils/admin_tools/clear_logs POST /?(?=/|$)/api/utils/admin_tools/clear_logs GET /?(?=/|$)/api/utils/admin_tools/api_usages/help POST /?(?=/|$)/api/utils/admin_tools/api_usages/help GET /?(?=/|$)/api/utils/admin_tools/api_usages POST /?(?=/|$)/api/utils/admin_tools/api_usages GET /?(?=/|$)/api/utils/openai/transcribe/help POST /?(?=/|$)/api/utils/openai/transcribe/help GET /?(?=/|$)/api/utils/openai/transcribe POST /?(?=/|$)/api/utils/openai/transcribe GET /?(?=/|$)/api/utils/proxy/get/help POST /?(?=/|$)/api/utils/proxy/get/help GET /?(?=/|$)/api/utils/proxy/get POST /?(?=/|$)/api/utils/proxy/get GET /?(?=/|$)/api/utils/hacker_news/get/help POST /?(?=/|$)/api/utils/hacker_news/get/help GET /?(?=/|$)/api/utils/hacker_news/get POST /?(?=/|$)/api/utils/hacker_news/get GET /?(?=/|$)/api/utils/llm/lamma/help POST /?(?=/|$)/api/utils/llm/lamma/help GET /?(?=/|$)/api/utils/llm/lamma POST /?(?=/|$)/api/utils/llm/lamma GET /?(?=/|$)/api/utils/aws_s3/gen_presigned_s3_url/help POST /?(?=/|$)/api/utils/aws_s3/gen_presigned_s3_url/help GET /?(?=/|$)/api/utils/aws_s3/gen_presigned_s3_url POST /?(?=/|$)/api/utils/aws_s3/gen_presigned_s3_url GET /?(?=/|$)/api/utils/aws_s3/list_files/help POST /?(?=/|$)/api/utils/aws_s3/list_files/help GET /?(?=/|$)/api/utils/aws_s3/list_files POST /?(?=/|$)/api/utils/aws_s3/list_files GET /?(?=/|$)/api/utils/aws_s3/get_download_url/help POST /?(?=/|$)/api/utils/aws_s3/get_download_url/help GET /?(?=/|$)/api/utils/aws_s3/get_download_url POST /?(?=/|$)/api/utils/aws_s3/get_download_url GET /?(?=/|$)/api/utils/aws_s3/create_folder/help POST /?(?=/|$)/api/utils/aws_s3/create_folder/help GET /?(?=/|$)/api/utils/aws_s3/create_folder POST /?(?=/|$)/api/utils/aws_s3/create_folder GET /?(?=/|$)/api/utils/aws_s3/delete_object/help POST /?(?=/|$)/api/utils/aws_s3/delete_object/help GET /?(?=/|$)/api/utils/aws_s3/delete_object POST /?(?=/|$)/api/utils/aws_s3/delete_object GET /?(?=/|$)/api/utils/aws_s3/delete_folder/help POST /?(?=/|$)/api/utils/aws_s3/delete_folder/help GET /?(?=/|$)/api/utils/aws_s3/delete_folder POST /?(?=/|$)/api/utils/aws_s3/delete_folder GET /?(?=/|$)/api/utils/aws_s3/download_folder_zip/help POST /?(?=/|$)/api/utils/aws_s3/download_folder_zip/help GET /?(?=/|$)/api/utils/aws_s3/download_folder_zip POST /?(?=/|$)/api/utils/aws_s3/download_folder_zip GET /?(?=/|$)/api/:_dbname/todo/help POST /?(?=/|$)/api/:_dbname/todo/help GET /?(?=/|$)/api/:_dbname/todo POST /?(?=/|$)/api/:_dbname/todo GET /?(?=/|$)/api/:_dbname/create/help POST /?(?=/|$)/api/:_dbname/create/help GET /?(?=/|$)/api/:_dbname/create POST /?(?=/|$)/api/:_dbname/create GET /?(?=/|$)/api/:_dbname/insert/help POST /?(?=/|$)/api/:_dbname/insert/help GET /?(?=/|$)/api/:_dbname/insert POST /?(?=/|$)/api/:_dbname/insert GET /?(?=/|$)/api/:_dbname/clone/help POST /?(?=/|$)/api/:_dbname/clone/help GET /?(?=/|$)/api/:_dbname/clone POST /?(?=/|$)/api/:_dbname/clone GET /?(?=/|$)/api/:_dbname/bulk_insert/help POST /?(?=/|$)/api/:_dbname/bulk_insert/help GET /?(?=/|$)/api/:_dbname/bulk_insert POST /?(?=/|$)/api/:_dbname/bulk_insert GET /?(?=/|$)/api/:_dbname/insertorupdate/help POST /?(?=/|$)/api/:_dbname/insertorupdate/help GET /?(?=/|$)/api/:_dbname/insertorupdate POST /?(?=/|$)/api/:_dbname/insertorupdate GET /?(?=/|$)/api/:_dbname/create_or_update_one/help POST /?(?=/|$)/api/:_dbname/create_or_update_one/help GET /?(?=/|$)/api/:_dbname/create_or_update_one POST /?(?=/|$)/api/:_dbname/create_or_update_one GET /?(?=/|$)/api/:_dbname/insert_or_update_one/help POST /?(?=/|$)/api/:_dbname/insert_or_update_one/help GET /?(?=/|$)/api/:_dbname/insert_or_update_one POST /?(?=/|$)/api/:_dbname/insert_or_update_one GET /?(?=/|$)/api/:_dbname/find/help POST /?(?=/|$)/api/:_dbname/find/help GET /?(?=/|$)/api/:_dbname/find POST /?(?=/|$)/api/:_dbname/find GET /?(?=/|$)/api/:_dbname/get/help POST /?(?=/|$)/api/:_dbname/get/help GET /?(?=/|$)/api/:_dbname/get POST /?(?=/|$)/api/:_dbname/get GET /?(?=/|$)/api/:_dbname//help POST /?(?=/|$)/api/:_dbname//help GET /?(?=/|$)/api/:_dbname/ POST /?(?=/|$)/api/:_dbname/ GET /?(?=/|$)/api/:_dbname/update/help POST /?(?=/|$)/api/:_dbname/update/help GET /?(?=/|$)/api/:_dbname/update POST /?(?=/|$)/api/:_dbname/update GET /?(?=/|$)/api/:_dbname/find_random/help POST /?(?=/|$)/api/:_dbname/find_random/help GET /?(?=/|$)/api/:_dbname/find_random POST /?(?=/|$)/api/:_dbname/find_random GET /?(?=/|$)/api/:_dbname/get_random/help POST /?(?=/|$)/api/:_dbname/get_random/help GET /?(?=/|$)/api/:_dbname/get_random POST /?(?=/|$)/api/:_dbname/get_random GET /?(?=/|$)/api/:_dbname//help POST /?(?=/|$)/api/:_dbname//help GET /?(?=/|$)/api/:_dbname/ POST /?(?=/|$)/api/:_dbname/ GET /?(?=/|$)/api/:_dbname/update_one/help POST /?(?=/|$)/api/:_dbname/update_one/help GET /?(?=/|$)/api/:_dbname/update_one POST /?(?=/|$)/api/:_dbname/update_one GET /?(?=/|$)/api/:_dbname/revision/help POST /?(?=/|$)/api/:_dbname/revision/help GET /?(?=/|$)/api/:_dbname/revision POST /?(?=/|$)/api/:_dbname/revision GET /?(?=/|$)/api/:_dbname/bulkupdate/help POST /?(?=/|$)/api/:_dbname/bulkupdate/help GET /?(?=/|$)/api/:_dbname/bulkupdate POST /?(?=/|$)/api/:_dbname/bulkupdate GET /?(?=/|$)/api/:_dbname/delete/help POST /?(?=/|$)/api/:_dbname/delete/help GET /?(?=/|$)/api/:_dbname/delete POST /?(?=/|$)/api/:_dbname/delete GET /?(?=/|$)/api/:_dbname/remove/help POST /?(?=/|$)/api/:_dbname/remove/help GET /?(?=/|$)/api/:_dbname/remove POST /?(?=/|$)/api/:_dbname/remove GET /?(?=/|$)/api/:_dbname/delete_fields/help POST /?(?=/|$)/api/:_dbname/delete_fields/help GET /?(?=/|$)/api/:_dbname/delete_fields POST /?(?=/|$)/api/:_dbname/delete_fields GET /?(?=/|$)/api/:_dbname/remove_fields/help POST /?(?=/|$)/api/:_dbname/remove_fields/help GET /?(?=/|$)/api/:_dbname/remove_fields POST /?(?=/|$)/api/:_dbname/remove_fields GET /?(?=/|$)/api/:_dbname/mdg/help POST /?(?=/|$)/api/:_dbname/mdg/help GET /?(?=/|$)/api/:_dbname/mdg POST /?(?=/|$)/api/:_dbname/mdg GET /?(?=/|$)/api/utils/mail/help POST /?(?=/|$)/api/utils/mail/help GET /?(?=/|$)/api/utils/mail POST /?(?=/|$)/api/utils/mail GET /?(?=/|$)/api/:_dbname/regex/help POST /?(?=/|$)/api/:_dbname/regex/help GET /?(?=/|$)/api/:_dbname/regex POST /?(?=/|$)/api/:_dbname/regex GET /?(?=/|$)/api/:_dbname/excel/help POST /?(?=/|$)/api/:_dbname/excel/help GET /?(?=/|$)/api/:_dbname/excel POST /?(?=/|$)/api/:_dbname/excel GET /?(?=/|$)/api/:_dbname/csv/help POST /?(?=/|$)/api/:_dbname/csv/help GET /?(?=/|$)/api/:_dbname/csv POST /?(?=/|$)/api/:_dbname/csv GET /?(?=/|$)/api/:_dbname/hits/help POST /?(?=/|$)/api/:_dbname/hits/help GET /?(?=/|$)/api/:_dbname/hits POST /?(?=/|$)/api/:_dbname/hits GET /?(?=/|$)/api/:_dbname/increment/help POST /?(?=/|$)/api/:_dbname/increment/help GET /?(?=/|$)/api/:_dbname/increment POST /?(?=/|$)/api/:_dbname/increment GET /?(?=/|$)/api/:_dbname/count/help POST /?(?=/|$)/api/:_dbname/count/help GET /?(?=/|$)/api/:_dbname/count POST /?(?=/|$)/api/:_dbname/count GET /?(?=/|$)/api/:_dbname/rankup/help POST /?(?=/|$)/api/:_dbname/rankup/help GET /?(?=/|$)/api/:_dbname/rankup POST /?(?=/|$)/api/:_dbname/rankup GET /?(?=/|$)/api/:_dbname/rankdown/help POST /?(?=/|$)/api/:_dbname/rankdown/help GET /?(?=/|$)/api/:_dbname/rankdown POST /?(?=/|$)/api/:_dbname/rankdown GET /?(?=/|$)/api/:_dbname/sum/help POST /?(?=/|$)/api/:_dbname/sum/help GET /?(?=/|$)/api/:_dbname/sum POST /?(?=/|$)/api/:_dbname/sum GET /?(?=/|$)/api/:_dbname/bulk_rank/help POST /?(?=/|$)/api/:_dbname/bulk_rank/help GET /?(?=/|$)/api/:_dbname/bulk_rank POST /?(?=/|$)/api/:_dbname/bulk_rank GET /?(?=/|$)/api/:_dbname/bulk_hit/help POST /?(?=/|$)/api/:_dbname/bulk_hit/help GET /?(?=/|$)/api/:_dbname/bulk_hit POST /?(?=/|$)/api/:_dbname/bulk_hit GET /?(?=/|$)/api/:_dbname/constraints/add/help POST /?(?=/|$)/api/:_dbname/constraints/add/help GET /?(?=/|$)/api/:_dbname/constraints/add POST /?(?=/|$)/api/:_dbname/constraints/add GET /?(?=/|$)/api/:_dbname/constraints/remove/help POST /?(?=/|$)/api/:_dbname/constraints/remove/help GET /?(?=/|$)/api/:_dbname/constraints/remove POST /?(?=/|$)/api/:_dbname/constraints/remove GET /?(?=/|$)/api/:_dbname/constraints/clear/help POST /?(?=/|$)/api/:_dbname/constraints/clear/help GET /?(?=/|$)/api/:_dbname/constraints/clear POST /?(?=/|$)/api/:_dbname/constraints/clear GET /?(?=/|$)/api/:_dbname/constraints/get/help POST /?(?=/|$)/api/:_dbname/constraints/get/help GET /?(?=/|$)/api/:_dbname/constraints/get POST /?(?=/|$)/api/:_dbname/constraints/get GET /?(?=/|$)/api/:_dbname/tags/add/help POST /?(?=/|$)/api/:_dbname/tags/add/help GET /?(?=/|$)/api/:_dbname/tags/add POST /?(?=/|$)/api/:_dbname/tags/add GET /?(?=/|$)/api/:_dbname/tags/remove/help POST /?(?=/|$)/api/:_dbname/tags/remove/help GET /?(?=/|$)/api/:_dbname/tags/remove POST /?(?=/|$)/api/:_dbname/tags/remove GET /?(?=/|$)/api/:_dbname/tags/clear/help POST /?(?=/|$)/api/:_dbname/tags/clear/help GET /?(?=/|$)/api/:_dbname/tags/clear POST /?(?=/|$)/api/:_dbname/tags/clear GET /?(?=/|$)/api/:_dbname/set/add/help POST /?(?=/|$)/api/:_dbname/set/add/help GET /?(?=/|$)/api/:_dbname/set/add POST /?(?=/|$)/api/:_dbname/set/add GET /?(?=/|$)/api/:_dbname/set/remove/help POST /?(?=/|$)/api/:_dbname/set/remove/help GET /?(?=/|$)/api/:_dbname/set/remove POST /?(?=/|$)/api/:_dbname/set/remove GET /?(?=/|$)/api/:_dbname/set/clear/help POST /?(?=/|$)/api/:_dbname/set/clear/help GET /?(?=/|$)/api/:_dbname/set/clear POST /?(?=/|$)/api/:_dbname/set/clear GET /?(?=/|$)/api/:_dbname/list/append/help POST /?(?=/|$)/api/:_dbname/list/append/help GET /?(?=/|$)/api/:_dbname/list/append POST /?(?=/|$)/api/:_dbname/list/append GET /?(?=/|$)/api/:_dbname/list/remove/help POST /?(?=/|$)/api/:_dbname/list/remove/help GET /?(?=/|$)/api/:_dbname/list/remove POST /?(?=/|$)/api/:_dbname/list/remove GET /?(?=/|$)/api/:_dbname/list/clear/help POST /?(?=/|$)/api/:_dbname/list/clear/help GET /?(?=/|$)/api/:_dbname/list/clear POST /?(?=/|$)/api/:_dbname/list/clear GET /?(?=/|$)/api/:_dbname/exist/help POST /?(?=/|$)/api/:_dbname/exist/help GET /?(?=/|$)/api/:_dbname/exist POST /?(?=/|$)/api/:_dbname/exist GET /?(?=/|$)/api/:_dbname/aggregate/help POST /?(?=/|$)/api/:_dbname/aggregate/help GET /?(?=/|$)/api/:_dbname/aggregate POST /?(?=/|$)/api/:_dbname/aggregate GET /?(?=/|$)/api/:_dbname/distribution/help POST /?(?=/|$)/api/:_dbname/distribution/help GET /?(?=/|$)/api/:_dbname/distribution POST /?(?=/|$)/api/:_dbname/distribution GET /?(?=/|$)/api/:_dbname/pivot/help POST /?(?=/|$)/api/:_dbname/pivot/help GET /?(?=/|$)/api/:_dbname/pivot POST /?(?=/|$)/api/:_dbname/pivot GET /?(?=/|$)/api/:_dbname/ts/help POST /?(?=/|$)/api/:_dbname/ts/help GET /?(?=/|$)/api/:_dbname/ts POST /?(?=/|$)/api/:_dbname/ts GET /?(?=/|$)/api/:_dbname/ts_multi/help POST /?(?=/|$)/api/:_dbname/ts_multi/help GET /?(?=/|$)/api/:_dbname/ts_multi POST /?(?=/|$)/api/:_dbname/ts_multi GET /?(?=/|$)/api/:_dbname/index/help POST /?(?=/|$)/api/:_dbname/index/help GET /?(?=/|$)/api/:_dbname/index POST /?(?=/|$)/api/:_dbname/index GET /?(?=/|$)/api/:_dbname/dbconfig/help POST /?(?=/|$)/api/:_dbname/dbconfig/help GET /?(?=/|$)/api/:_dbname/dbconfig POST /?(?=/|$)/api/:_dbname/dbconfig GET /?(?=/|$)/api/:_dbname/download/help POST /?(?=/|$)/api/:_dbname/download/help GET /?(?=/|$)/api/:_dbname/download POST /?(?=/|$)/api/:_dbname/download GET /?(?=/|$)/api/:_dbname/export/help POST /?(?=/|$)/api/:_dbname/export/help GET /?(?=/|$)/api/:_dbname/export POST /?(?=/|$)/api/:_dbname/export GET /?(?=/|$)/api/:_dbname/subentry/add/help POST /?(?=/|$)/api/:_dbname/subentry/add/help GET /?(?=/|$)/api/:_dbname/subentry/add POST /?(?=/|$)/api/:_dbname/subentry/add GET /?(?=/|$)/api/:_dbname/subentry/add_many/help POST /?(?=/|$)/api/:_dbname/subentry/add_many/help GET /?(?=/|$)/api/:_dbname/subentry/add_many POST /?(?=/|$)/api/:_dbname/subentry/add_many GET /?(?=/|$)/api/:_dbname/subentry/remove/help POST /?(?=/|$)/api/:_dbname/subentry/remove/help GET /?(?=/|$)/api/:_dbname/subentry/remove POST /?(?=/|$)/api/:_dbname/subentry/remove GET /?(?=/|$)/api/:_dbname/subentry/update/help POST /?(?=/|$)/api/:_dbname/subentry/update/help GET /?(?=/|$)/api/:_dbname/subentry/update POST /?(?=/|$)/api/:_dbname/subentry/update GET /?(?=/|$)/api/:_dbname/subentry/get/help POST /?(?=/|$)/api/:_dbname/subentry/get/help GET /?(?=/|$)/api/:_dbname/subentry/get POST /?(?=/|$)/api/:_dbname/subentry/get GET /?(?=/|$)/api/:_dbname/create_or_get/help POST /?(?=/|$)/api/:_dbname/create_or_get/help GET /?(?=/|$)/api/:_dbname/create_or_get POST /?(?=/|$)/api/:_dbname/create_or_get GET /?(?=/|$)/api/:_dbname/insert_or_get/help POST /?(?=/|$)/api/:_dbname/insert_or_get/help GET /?(?=/|$)/api/:_dbname/insert_or_get POST /?(?=/|$)/api/:_dbname/insert_or_get GET /?(?=/|$)/api/:_dbname/create_from_template/help POST /?(?=/|$)/api/:_dbname/create_from_template/help GET /?(?=/|$)/api/:_dbname/create_from_template POST /?(?=/|$)/api/:_dbname/create_from_template GET /?(?=/|$)/api/:_dbname/clone_from_template/help POST /?(?=/|$)/api/:_dbname/clone_from_template/help GET /?(?=/|$)/api/:_dbname/clone_from_template POST /?(?=/|$)/api/:_dbname/clone_from_template GET /?(?=/|$)/api/:_dbname/visibility/add/help POST /?(?=/|$)/api/:_dbname/visibility/add/help GET /?(?=/|$)/api/:_dbname/visibility/add POST /?(?=/|$)/api/:_dbname/visibility/add GET /?(?=/|$)/api/:_dbname/visibility/remove/help POST /?(?=/|$)/api/:_dbname/visibility/remove/help GET /?(?=/|$)/api/:_dbname/visibility/remove POST /?(?=/|$)/api/:_dbname/visibility/remove GET /?(?=/|$)/api/:_dbname/visibility/clear/help POST /?(?=/|$)/api/:_dbname/visibility/clear/help GET /?(?=/|$)/api/:_dbname/visibility/clear POST /?(?=/|$)/api/:_dbname/visibility/clear GET /?(?=/|$)/api/:_dbname/visibility/replace/help POST /?(?=/|$)/api/:_dbname/visibility/replace/help GET /?(?=/|$)/api/:_dbname/visibility/replace POST /?(?=/|$)/api/:_dbname/visibility/replace GET /?(?=/|$)/api/:_dbname/get_and_delete/help POST /?(?=/|$)/api/:_dbname/get_and_delete/help GET /?(?=/|$)/api/:_dbname/get_and_delete POST /?(?=/|$)/api/:_dbname/get_and_delete GET /?(?=/|$)/api/:_dbname/info/help POST /?(?=/|$)/api/:_dbname/info/help GET /?(?=/|$)/api/:_dbname/info POST /?(?=/|$)/api/:_dbname/info POST /api/raw/test GET /examples/?(?=/|$)/ GET /examples/?(?=/|$)/:filename GET /restart/?(?=/|$)/