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