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