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.
666.
667. # Testing Utilities
668. => GET => http://{{server}}/api/utils/test?app_id=test => You are hitting Test Utils
669. => GET => http://{{server}}/api/utils/date => The system time is
670. => GET => http://{{server}}/api/utils/bootcamp => Welcome to simplestore BootCamp!
671.
672. # Test Stategyies
673. => GET => http://{{server}}/api/test/insert?name=dip&_viewas=noresp => {"status":"success"}
674. => POST => http://{{server}}/api/test/insert?_viewas=noresp => {"name":"dip"}=> ^{"status":"success"}$
675. # We should get the exception evenif there is _viewas=noresp
676. => GET => http://{{server}}/api/test/insert?name=dip&_viewas=noresp&_viewas=xxx => Error while parsing request
677.
678.
679.
680. # test Bulk hits and rank
681. => !GET => http://{{server}}/api/test0/create?name=dip2 => "_id":"(?.*?)"
682. => POST => http://{{server}}/api/test0/bulk_hit => {"_payload":[{"id":"{{id}}","field":"count", "value":1}]} => s/e: 1/0
683. # Te hardcoded value treaded as a true.
684. => 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
685. => GET => http://{{server}}/api/test0/?id={{id}} => "count":2
686. => POST => http://{{server}}/api/test0/bulk_hit => {"_payload":[{"id":"{{id}}","field":"count", "value":-1}]} => [s/e: 1/0]
687. => POST => http://{{server}}/api/test0/bulk_hit => {"_payload":[{"id":"{{id}}","field1":"count", "value":-1}]} => [s/e: 0/1]
688. => GET => http://{{server}}/api/test0/?id={{id}} => "count":1
689. => 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]
690. => GET => http://{{server}}/api/test0/?id={{id}} => "count":10
691. => 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]
692. => 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]
693. => GET => http://{{server}}/api/test0/?id={{id}} => "count":0
694.
695.
696.
697. ################################################################################
698. # Sending Email functinaly ( Broken Needs API redesign)
699. ################################################################################
700. ## 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
701. => GET => http://{{server}}/api/utils/email => Input validation failed: Missing to
702. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&body=Simple Test =>Input validation failed: Missing subject
703. ## Please use dryrun to ensure to avoid getting so many mails.
704. => 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
705. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&dry_run=1 => Missing body
706. => 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
707. => 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
708.
709. ## Test multiple sendaccount by spaciating product
710.
711. => GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&product=Grodok&body=hello&dry_run=1 => ACTUALY NOT SEND
712. => 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
713. => 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
714.
715. ##send calender invitew - just add start_time as ISO date String and duration as number in minites
716. => 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
717. => 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!
718. => 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
719. => 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
720. => 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
721.
722. ## test HTML Mail.
723. ## We are supported HTML mail - you need to send body and html but body would be droped. It just use the degault HTML
724. ## template to send the email. It works for both w/o calender
725. => 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
726. => 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
727. => GET => http://{{server}}/api/utils/email?to=testuser@gmail.com&subject=Hello World&body=Simple Test => You must pass some valid email addess
728.
729. ## REAL SEND MAIL - DISABLE BELOW TEST
730. ## GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Simple Test => Mail sent to
731. ## GET => http://{{server}}/api/utils/email?to=dutta.dipankar08@gmail.com&subject=Hello World&body=Hello\n\nWorld\nDipankar\nTest=> Mail sent to
732. ## 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
733.
734. ## HTML Norm : new line to
735. => 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
736. => 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
737. => 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
738.
739. ################################################
740. # Short code
741. ################################################
742. => GET => http://{{server}}/api/nodel_shortcode/insert => Trying insert Empty Object
743. => GET => http://{{server}}/api/nodel_shortcode/generate => Input validation failed: Missing target_db
744. => GET => http://{{server}}/api/nodel_shortcode/generate?target_id=123&target_db=xxxdb => "short_code":"(?.*?)"
745. => GET => http://{{server}}/api/nodel_shortcode/get?short_code={{short_code}} => xxxdb
746. => GET => http://{{server}}/api/nodel_shortcode/get?short_code=wrong => Find successfully with 0 items
747.
748.
749.
750.
751. # Support _sort.
752. => !GET => http://{{server}}/api/test0/delete?_confirmstr=test0 => success
753. => !POST => http://{{server}}/api/test0/create => {"_payload":[{"name":"dip3","roll":1},{"name":"dip3","roll":2}]} => success
754. => GET => http://{{server}}/api/test0/find?&_sort=roll => "roll":1.*?"roll":2
755. => GET => http://{{server}}/api/test0/find?&_sort=-roll => "roll":2.*?"roll":1
756.
757. # Support clone APIs
758. => !POST => http://{{server}}/api/test0/create => {"name":"dip","num":{"math":10, "eng":11}} => "_id":"(?.*?)"
759. => GET => http://{{server}}/api/test0/clone => You must pass a _id
760. => POST => http://{{server}}/api/test0/clone => {} => You must pass a _id
761. => GET => http://{{server}}/api/test0/clone?_id={{id}} => "name":"dip"
762. => GET => http://{{server}}/api/test0/clone?_id={{id}}&name=dip2 => "name":"dip2"
763. => POST => http://{{server}}/api/test0/clone => {"id":"{{id}}", "name":"dip3"} => "name":"dip3"
764.
765. # QR code generation:
766. => GET => http://{{server}}/api/utils/qr => Missing url
767. => GET => http://{{server}}/api/utils/qr?url=http://google.com => svg
768. => GET => http://{{server}}/api/utils/qr?url=http://google.com&size=100 => height="100"
769. => GET => http://{{server}}/api/utils/qr?url=http://google.com&size=100&color=%23ff0000 => \#ff0000
770.
771.
772. # test system_payment == Migrate to simple_auth
773. #=> GET => http://{{server}}/api/system_payment/stripe => Stripe API returns an unexpected resp
774. # => GET => http://{{server}}/api/system_payment/stripe?id=1234 => Stripe API returns an unexpected resp <<< FIX THIS
775. #=> GET => http://{{server}}/api/system_payment_not_webhook/?id=1234 => not a valid ID
776. # test invalid sqi
777. #=> 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
778. # test right parsing
779. #=> 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
780. # test empty data
781. #=> POST => http://{{server}}/api/system_payment/stripe => {}=> Stripe API returns an unexpected resp
782. #=> GET => http://{{server}}/api/system_payment/points => Missing user_id
783. # this api should be used to get total points for an user
784. #=> GET => http://{{server}}/api/system_payment/points?user_id=123 => No matching query found
785. #=> GET => http://{{server}}/api/system_payment/points?user_id=dip@fb.com => Total points is:
786.
787. # test roserpay WebHook
788. #=> 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
789. #=> 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
790. #=> 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
791.
792. # Test Trial points.
793. #=> GET => http://{{server}}/api/system_payment/trial?user_id=trial_user1&sku=test_sku_trial => Your trail is activated!
794. #=> GET => http://{{server}}/api/system_payment/trial?user_id=trial_user1&sku=test_sku_trial => You aleady used your trial
795. #=> GET => http://{{server}}/api/system_payment/trial?user_id=trial_user1&sku=unknown => SKU not configuired in SimpleStore
796. #=> GET => http://{{server}}/api/system_payment/trial?user_id=trial_user1&sku=test_sku_trial_no => This SKU is not elligiable from trail
797. #=> GET => http://{{server}}/api/system_payment/points?user_id=trial_user1 => 10
798. #=> GET => http://{{server}}/api/system_payment/delete?_confirmstr=system_payment => success
799.
800.
801. # test friendly ID: ( test3 is config for friendly id so it would be a match)
802. # You should note that friendlyID should NOT necessaryly to be unique due to te perf.
803. => POST => http://{{server}}/api/test0/insert => {"name":"dip"} => ts_insert
804. => POST => http://{{server}}/api/test3/insert => {"name":"dip"} => friendly_id
805. => POST => http://{{server}}/api/test3/insert => {"name":"dip"} => friendly_id
806.
807. ######### Testing calender APIS #############
808. => POST => http://{{server}}/api/system_calender/grant => {} => Input validation failed
809. => POST => http://{{server}}/api/system_calender/grant => {"product":"test", "user_id":"123", "start_time":"invalid","duration":30, "type":"type1" } => Invalid start_time
810. #=> POST => http://{{server}}/api/system_calender/grant => {"product":"test", "user_id":"123", "start_time":"2013-03-10T02:00:00Z","duration":15, "type":"type1" } => success
811. #=> 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
812. => 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
813. => 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
814. => 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
815. => 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
816.
817. # Test Avilablity
818. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2013-03-10T03:10:00Z" } => ,"user_id":"123","type":"type1"
819. # There is an issue in the below test
820. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2015-03-10T03:10:00Z" } => 0 free slots found
821. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2013-03-10T03:10:00Z","type":"type1" } => ,"user_id":"123","type":"type1"
822. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2013-03-10T03:10:00Z","type":"type2" } => "out":\[\]
823. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2013-03-10T03:10:00Z","type":"pe1" } => ,"user_id":"123",
824. => POST => http://{{server}}/api/system_calender/availability => {"product":"test", "date":"2012-03-10T03:10:00Z","type":"pe2" } => "out":\[\]
825. => POST => http://{{server}}/api/system_calender/availability => {"date":"2013-03-10T03:10:00Z","type":"pe2" } => Missing product
826.
827. # test booking:
828. => 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
829. => POST => http://{{server}}/api/system_calender/availability => {"product":"doctor", "date":"2015-03-15T03:00:00Z"} => 6 free slots found
830. => POST => http://{{server}}/api/system_calender/availability => {"product":"doctor", "date":"2015-03-15T03:00:00Z"} => "_id":"(?.*?)"
831. => POST => http://{{server}}/api/system_calender/book => {"product":"test", "id" :"{{id2}}", "user_id":"booker2"} => successfully booked
832. => POST => http://{{server}}/api/system_calender/book => {"product":"test", "id" :"{{id2}}", "user_id":"booker2"} => This schedule is already taken
833. => POST => http://{{server}}/api/system_calender/availability => {"product":"doctor", "date":"2015-03-15T03:00:00Z" } => 5 free slots found
834.
835. # test cancel
836. => POST => http://{{server}}/api/system_calender/cancel => {"id" :"{{id2}}", "user_id":"booker3"} => not auth
837. => POST => http://{{server}}/api/system_calender/cancel => {"id" :"5f46e8952dd1ada69b161f91", "user_id":"booker3"} => Schedule not found"
838. => POST => http://{{server}}/api/system_calender/cancel => {"id" :"{{id2}}", "user_id":"booker2"} => successfully canceled
839. => POST => http://{{server}}/api/system_calender/availability => {"product":"doctor", "date":"2015-03-15T03:00:00Z" } => 6 free slots found
840. => GET => http://{{server}}/api/system_calender/delete?_confirmstr=system_calender => success
841.
842.
843. => 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
844. => 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
845.
846. # Test promotion ## Needs a migration simple auth => admin_promotions DB instead
847. #=> !POST => http://{{server}}/api/auth2/login_by_token => {"token": "fake_token"} => "auth_token":"(?.*?)"
848. #=> POST => http://{{server}}/api/promotion/get_referral_code => {} => Missing auth_token
849. #=> POST => http://{{server}}/api/promotion/get_referral_code => {"auth_token": "wrong","product":"fake_product"} => Unauthorized request
850. #=> POST => http://{{server}}/api/promotion/get_referral_code => {"auth_token": "{{auth_token}}","product":"fake_product"} => "code":"(?.*?)"
851. #=> POST => http://{{server}}/api/promotion/get_referral_code => {"auth_token": "{{auth_token}}","product":"fake_product"} => You already have generated the ref code.
852. #=> POST => http://{{server}}/api/promotion/get_referral_code => {"auth_token": "{{auth_token}}","product":"fake_product1"} => "code":"(?.*?)"
853. #=> POST => http://{{server}}/api/promotion/check_referral_code => {"code": "{{code}}","product":"fake_product"} => "type":"REFER",
854. #=> POST => http://{{server}}/api/promotion/check_referral_code => {"code": "{{code}}","product":"fake_product1"} => This referral code is not valid
855. #=> POST => http://{{server}}/api/promotion/check_referral_code => {"code": "wrong","product":"fake_product1"} => This referral code is not valid
856. #=> GET => http://{{server}}/api/promotion/delete?_confirmstr=promotion => success
857.
858. ###########################################
859. # RCE - JUST BASIC TEST
860. ###########################################
861.
862. # Capabilities
863. #=> GET => http://{{server}}/api/utils/rce/capabilities?_dev_token=root => hello_world_code
864.
865. # Status
866. #=> GET => http://{{server}}/api/utils/rce/status?_dev_token=root&lang=c => Compiler works fine
867. #=> POST => http://{{server}}/api/utils/rce/execute => {"_dev_token":"root", "lang":"c", "code":"\#include"} => \"out\":{\"stderr\":\"/tmp/
868. #=> 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
869. #=> POST => http://{{server}}/api/utils/rce/execute_ext => {"_dev_token":"root", "lang":"python", "code":"print 'hello123'"} => hello123
870. #=> 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
871.
872.
873.
874. # Test Youtube Download
875. #sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
876. # sudo chmod a+rx /usr/local/bin/youtube-dl
877. #=> GET => http://{{server}}/api/utils/youtubedl?id=sb_sMqAF_o => Incomplete YouTube ID
878. # => GET => http://{{server}}/api/utils/youtubedl?id=CP2AYEqoaZo => googlevideo.com
879. # => GET => http://{{server}}/api/utils/youtubedl/audio?id=CP2AYEqoaZo => googlevideo.com
880. # => GET => http://{{server}}/api/utils/youtubedl/video?id=CP2AYEqoaZo => googlevideo.com
881. # => GET => http://{{server}}/api/utils/youtubedl/info?id=CP2AYEqoaZo => googlevideo.com
882. # => GET => http://{{server}}/api/utils/youtubedl/audio?id=https://www.youtube.com/watch?v=De8UKeURlWU => googlevideo.com
883. # => GET => http://{{server}}/api/utils/youtubedl/dl?id=kEld6MLDXPI => A-V-mp4
884. #### USE TESING BELOW LINE ##
885.
886. # SimpleStore EXPLORE
887. => GET => http://{{server}}/api/explore/play => Simple Store API EXPLORE
888.
889. # SMS
890. => GET => http://{{server}}/api/utils/sms?to=8927476238&msg=hello&dryrun=true => \[Dryrun\] SMS sent to 8927476238
891.
892. # Dev key
893. #GET => http://{{server}}/api/utils/rce/execute?code=hello&lang=kotlin => Access denied
894. #GET => http://{{server}}/api/utils/rce/execute?code=hello&lang=kotlin&_dev_token=root1 => Access denied
895. #GET => http://{{server}}/api/utils/rce/execute?code=hello&lang=kotlin&_dev_token=root => Error while executing this code
896.
897. # Status utils = This tracks the health of the endpoints
898. GET => http://{{server}}/api/status/ping?name=ServiceA => Missing endpoint
899. GET => http://{{server}}/api/status/ping?endpoint=www.google.com => Missing name
900. GET => http://{{server}}/api/status/ping?name=ServiceA&endpoint=www.google.com => pong
901. GET => http://{{server}}/api/status/ping?name=ServiceA&endpoint=www.google.com => pong
902. GET => http://{{server}}/api/status/show => Live Status of our Service
903. # HTML TEST NOT SUPPORTED GET => http://{{server}}/api/analytics/show?app_id=sample1 => Showing data for app id sample1
904. # HTML TEST NOT SUPPORTED GET => http://{{server}}/api/analytics/show?app_id=sample => Showing data for app id sample
905.
906. # Long tern Jobs
907.
908.
909.
910.
911. ############################# license APIS. #############################
912. # License APis allows you to create license for an app user for a app for a duration.
913. # You can either grant, revoke and validate the license
914. # All common api's needs root_key to access (TODO)
915. # There is no renew supported, you just revoke and grant it again.
916. #########################################################################
917. => !GET => http://{{server}}/api/license/delete?_confirmstr=license => success
918. # Root key
919. # => GET => http://{{server}}/api/license/ => api access denied
920. # => GET => http://{{server}}/api/license?root_key=WRONG => success
921. # Grant, validate and revoke
922. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test => Missing duration
923. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test&duration=1&key=NO_KEY => "key":"NO_KEY"
924. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test&duration=1&key=NO_KEY => license already granted
925. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test1&duration=WRONG&key=NO_KEY => please pass a valid duration
926. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test&key=NO_KEY => access granted
927. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test&key=NO_KEY1 => access denied
928. => GET => http://{{server}}/api/license/validate?app_id=WRONG&user_id=test&key=NO_KEY => access denied
929. => GET => http://{{server}}/api/license/revoke?app_id=test&user_id=test => license revoked
930. => GET => http://{{server}}/api/license/revoke?app_id=test&user_id=test => license not found
931. => GET => http://{{server}}/api/license/revoke?app_id=test&user_id=test => license not found
932. => GET => http://{{server}}/api/license/revoke?app_id=test=> Missing user_id
933.
934. # expairy
935. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test2&duration=0&key=NO_KEY=> success
936. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test2&key=NO_KEY => license expired
937.
938. # renew
939. => GET => http://{{server}}/api/license/revoke?app_id=test&user_id=test2 => license revoked
940. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test2&duration=1&key=NO_KEY=> success
941. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test2&key=NO_KEY => access granted
942.
943. # generate key
944. => GET => http://{{server}}/api/license/grant?app_id=test&user_id=test3&duration=1=> "key":"(?.*?)"
945. => GET => http://{{server}}/api/license/validate?app_id=test&user_id=test3&key={{key}} => access granted
946.
947.
948. ############################# Schedule Script #############################
949. # You can schedule arbitrary script execution with SimpleStore
950. # FIrst submit a task using /schedule_script/submit/
951. # Then Activate the task using /schedule_script/submit/
952. # Great! You job has scheduled.
953. # Check a list of jobs which are current scheduled as /schedule_script/status/ and you can deactivate as /schedule_script/deactivate/
954. #########################################################################
955. => !GET => http://{{server}}/api/schedule_script/delete?_confirmstr=schedule_script => success
956.
957. => 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":"(?.*?)"
958. => GET => http://{{server}}/api/schedule_script/activate?id={{job_id}} => Job has scheduled
959. => GET => http://{{server}}/api/schedule_script/activate?id={{job_id}} => already scheduled
960. => GET => http://{{server}}/api/schedule_script/activate_all => 0/1 Job has scheduled
961. => GET => http://{{server}}/api/schedule_script/reload => We have restarted 1 jobs
962. => GET => http://{{server}}/api/schedule_script/status => {{job_id}}
963. # => sleep => 30 # Disabled to just avoid waiting while testing -- works fine,
964. # => GET => http://{{server}}/api/schedule_script/status => "successCount":1
965. => GET => http://{{server}}/api/schedule_script/deactivate?id={{job_id}} => canceled
966. => GET => http://{{server}}/api/schedule_script/deactivate?id={{job_id}} => is not scheduled
967. => GET => http://{{server}}/api/schedule_script/status => We found 0 active scheduled Script
968. # TAKE LONGER TIME => GET => http://{{server}}/api/schedule_script/dryrun?script=ABCD => ABCD
969. => GET => http://{{server}}/api/schedule_script/dryrun?script=console.log('hello') => success
970.
971.
972. # Delete all at the end this is needed as server auto load when stat
973. => !GET => http://{{server}}/api/schedule_script/delete?_confirmstr=schedule_script => success
974.
975.
976. ############################# Subscription #############################
977. # Provides api for email subscription and resubscription
978. # User can do subscribe and unscibe to an app by giving email id.
979. # Admin can notify by ending mail to all the people who subscribe.
980. # Maximum notification allow is 1000
981. #########################################################################
982. => !GET => http://{{server}}/api/subscription/delete?_confirmstr=subscription => success
983. => GET => http://{{server}}/api/subscription/subscribe?app_id=test&email=dutta.dipankar08@gmail.com => success
984. => GET => http://{{server}}/api/subscription/subscribe?app_id=test&email=dutta.dipankar08@gmail.com => Data validation failed as composite key failed
985. => GET => http://{{server}}/api/subscription/count => Count: 1
986. => GET => http://{{server}}/api/subscription/notify?subject=Hello&body=Some HTML Content&app_id=test&dry_run=1 => Email send to 1 subscriber
987. => 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
988. => GET => http://{{server}}/api/subscription/unsubscribe?app_id=test&email=dutta.dipankar08@gmail.com => success
989. => GET => http://{{server}}/api/subscription/unsubscribe?app_id=test&email=dutta.dipankar08@gmail.com => Not able to unsubscribe
990. => GET => http://{{server}}/api/subscription/count => Count: 0
991.
992.
993. ############################ SOCIAL POST ##################################
994. # This allow to post the text and image in FB, Tweeter, Linked-In and Telegram
995. # We currently supports (1)FB abd (2) Tweeter
996. # You need to update the key in /etc/SECURE
997. ############################################################################
998. # Comments to avoid spanning the profile
999. # => GET => http://{{server}}/api/utils/social/twitter?text=automation test => Successfully tweeted
1000. # => GET => http://{{server}}/api/utils/social/twitter?text=automation test => Status is a duplicate
1001. # => GET => http://{{server}}/api/utils/social/facebook?text=automation test => Successfully tweeted
1002. => GET => http://{{server}}/api/utils/social/telegram => Missing text
1003. # => GET => http://{{server}}/api/utils/social/telegram?text=automationtest\&Test => success
1004. # You should you post method to pass data
1005. # Below two test is diable as missing real tokens
1006. # => POST => http://{{server}}/api/utils/social/telegram => {"text":"automation test & Test & test"} => success
1007. # => POST => http://{{server}}/api/utils/social/facebook => {"text":"Welcome to SimpleStore! This is post where we test our APIs"} => success
1008.
1009. ############################ TEST Universal Link page ##################################
1010. #
1011. ############################################################################
1012. => 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
1013. => GET => http://{{server}}/api/utils/universal_link?app_id=in.co.dipankar.fmradio&key=1&app_name => Input validation failed: Missing app_name"
1014. => GET => http://{{server}}/api/utils/universal_link => Input validation failed: Missing app_id"
1015.
1016. ############################ Static File generator ##################################
1017. #
1018. ############################################################################
1019. => GET => http://{{server}}/api/utils/static/privacy?app_id=in.co.dipankar.fmradio&key=1&app_name=XXXXXXXXX => XXXXXXXXX
1020. => GET => http://{{server}}/api/utils/static/toc?app_id=in.co.dipankar.fmradio&key=1&app_name=XXXXXXXXX => XXXXXXXXX
1021.
1022. ############################## UPDATE ONE ###########################################
1023. # THIS API helps to update one entry entry in ethe system. you must by _filter and _payload to serch that
1024. # entry and update with the needed data. Should throw the error it it found many entry
1025. # >>> NOT WORKING ANY MORE <<<<
1026. #####################################################################################
1027. #=> !GET => http://{{server}}/api/test/delete?_confirmstr=test => success
1028. #=> POST => http://{{server}}/api/test/create => {"name":"dip", "roll":1} => success
1029. #=> POST => http://{{server}}/api/test/update_one => {} => _filter object must be non empty
1030. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{}} => _filter object must be non empty
1031. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{"name":"dip"} ,"_payload":{}} => You must pass some data in the request
1032. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":2}} => there is no matching entry
1033. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{"name":"dip"},"_payload":{"roll":2}} => pdated 1 entry out of 1 matched
1034. #=> POST => http://{{server}}/api/test/create => {"name":"dip", "roll":1} => success
1035. #=> POST => http://{{server}}/api/test/update_one => {"_filter":{"name":"dip"},"_payload":{"roll":2}} => We found multiple entry
1036. => !GET => http://{{server}}/api/test/delete?_confirmstr=test => success
1037.
1038. ############################## INSERT OR UPDATE ONE ###########################################
1039. # THIS API helps to insert update one entry entry in ethe system. you must by _filter and _payload to pass
1040. # if the item is found that are updated with new payload - or it will create a new entry by marging _filter and _payload
1041. #####################################################################################
1042. => !GET => http://{{server}}/api/test/delete?_confirmstr=test => success
1043. => POST => http://{{server}}/api/test/insert_or_update_one => {} => _filter object must be non empty
1044. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{}} => _filter object must be non empty
1045. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip"} ,"_payload":{}} => Please send some non empty payload
1046. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":2}} => inserted one entry
1047. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":3}} => updated one entry
1048. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":4}} => updated one entry
1049. => POST => http://{{server}}/api/test/create => {"name":"dip1", "roll":5} => success
1050. => POST => http://{{server}}/api/test/insert_or_update_one => {"_filter":{"name":"dip1"},"_payload":{"roll":4}} => We found multiple entry
1051. => !GET => http://{{server}}/api/test/delete?_confirmstr=test => success
1052.
1053.
1054. ################ LIST APIs #############################
1055. # append to list
1056. # remove from list
1057. # clean from list
1058. ######################################################
1059. => POST => http://{{server}}/api/test/delete?_confirmstr=test => {} => success
1060. => POST => http://{{server}}/api/test/insert => {"name":"dip"} => "_id":"(?.*?)"
1061. => GET => http://{{server}}/api/test/list/append?_id={{id1}}&_field=tag&_value=a => "tag":\["a"\]
1062. => GET => http://{{server}}/api/test/list/append?_id={{id1}}&_field=tag&_value=a,b,c => "tag":\["a","b","c"\]
1063. => GET => http://{{server}}/api/test/list/remove?_id={{id1}}&_field=tag&_value=a => "tag":\["b","c"\]
1064. => GET => http://{{server}}/api/test/list/remove?_id={{id1}}&_field=tag&_value=a,b => "tag":\["c"\]
1065. => GET => http://{{server}}/api/test/list/clear?_id={{id1}}&_field=tag&_value=a,b => "tag":\[\]
1066. => POST => http://{{server}}/api/test/delete?_confirmstr=test => {} => success
1067.
1068. ############# Raiseing tickets for the app #############
1069. # This api will raise github tickts
1070. #
1071. ###########################################################
1072. => GET => http://{{server}}/api/utils/ticket?app=test => error
1073. # TODO: FIX IT github expaired the token
1074. #=> GET => http://{{server}}/api/utils/ticket?app=test&title=Raise by e2e test&desc=ignore this bug&label=bug => Successfully created a tickets
1075. #=> POST => http://{{server}}/api/utils/ticket=> {"app":"test", "title":"Raise by e2e test", "desc":"ignore this bug", "label":"bug,test"} => Successfully created a tickets
1076.
1077. ######## Create or Get #######
1078. # If filter returns some result - just get it back or create with _payload + _filter data
1079. ###############################
1080. => POST => http://{{server}}/api/test/delete?_confirmstr=test => {} => success
1081. => POST => http://{{server}}/api/test/create_or_get => {"_filter":{"name":"dip"}, "_payload":{"roll":100}} => inserted the entry
1082. => POST => http://{{server}}/api/test/create_or_get => {"_filter":{"name":"dip"}, "_payload":{"roll":100}} => found entry
1083. => POST => http://{{server}}/api/test/create_or_get => {"_filter":{"name":"dip"}, "_payload":{"roll":100}} => found entry
1084.
1085. ############ Simple Login/AUth #################################################
1086. #
1087. # Simple Auth System Full testing.
1088. #
1089. #################################################################################
1090. # 0. Clean the db.
1091. => BASH => mongosh --quiet --eval 'db.getMongo().getDBNames().filter(n=>!["admin","config","local"].includes(n)).forEach(n=>db.getMongo().getDB(n).dropDatabase())'
1092. # 1. Register 2 users test/test and test1/test1
1093. => GET => http://{{server}}/api/simple_auth/register?username=test&password_=test&email=dutta.dipankar08@gmail.com => Registration completed successfully
1094. => GET => http://{{server}}/api/simple_auth/register?username=test1&password_=test1&email=dutta.dipankar08+1@gmail.com => Registration completed successfully
1095. => GET => http://{{server}}/api/simple_auth/register?username=test&password_=test&email=dutta.dipankar08@gmail.com => This username or email is already in use
1096. => GET => http://{{server}}/api/simple_auth/register?username=test4&password_=test&email=dutta.dipankar08@gmail.com => This email is already registered
1097.
1098.
1099. # 2. Loging with username and password.
1100. => GET => http://{{server}}/api/simple_auth/login?username=test&password_=test11 => Incorrect username or password
1101. => GET => http://{{server}}/api/simple_auth/login?username=test11&password_=test => Incorrect username or password
1102. => GET => http://{{server}}/api/simple_auth/login?username=test&password_=test => success
1103. => GET => http://{{server}}/api/simple_auth/login?username=test&auth_token_=wrong => Invalid username or authentication token.
1104.
1105. # 3. Login With Email and password
1106. => GET => http://{{server}}/api/simple_auth/login_by_email?username=test&password_=test11 => Input validation failed: Missing email
1107. => GET => http://{{server}}/api/simple_auth/login_by_email?email=test11@test.com&password_=test => Incorrect email or password.
1108. => 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
1109. => 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
1110.
1111. # 4. login with username and session token ( Auto Login)
1112. => GET => http://localhost/api/simple_auth/login?_no_encode=1&username=test&password_=test => "auth_token_":"(?.*?)"
1113. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&auth_token_={{login_token1}} => "auth_token_":"(?.*?)" # We get a new token
1114. => GET => http://{{server}}/api/simple_auth/validate_login_session?_no_encode=1&auth_token_={{login_token2}} => success
1115. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&auth_token_={{login_token2}} => success
1116. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test2&auth_token_={{login_token2}} => Invalid username or authentication token.
1117.
1118. # 5. getifo
1119. => GET => http://{{server}}/api/simple_auth/get_info?_no_encode=1&auth_token_={{login_token1}} => user data returned
1120.
1121. # 6. update_info
1122. => GET => http://{{server}}/api/simple_auth/update_info?_no_encode=1&auth_token_={{login_token1}}&phone=7547564902 => user data returned
1123. => GET => http://{{server}}/api/simple_auth/get_info?_no_encode=1&auth_token_={{login_token1}} => 7547564902
1124.
1125.
1126. # 7. Logout -> logout with one token but other token should works.
1127. => GET => http://localhost/api/simple_auth/login?_no_encode=1&username=test&password_=test => "auth_token_":"(?.*?)"
1128. => GET => http://{{server}}/api/simple_auth/logout?username=test&auth_token_={{login_token1}} => success
1129. => GET => http://{{server}}/api/simple_auth/logout?username=test&auth_token_={{login_token1}} => Logout done for
1130. => GET => http://{{server}}/api/simple_auth/logout?username=test&auth_token_={{login_token1}} => Logout done for 1 session # Logout Twice
1131. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&auth_token_={{login_token2}} => dutta.dipankar08@gmail.com
1132.
1133. # 8. logout all session and no token should not work
1134. => GET => http://{{server}}/api/simple_auth/logout?username=test => Missing auth_token_
1135. => GET => http://{{server}}/api/simple_auth/logout_all?username=test => Missing auth_token_
1136. => GET => http://{{server}}/api/simple_auth/logout_all?username=test1&force=1 => Logout done for . session forcefully
1137. => GET => http://{{server}}/api/simple_auth/logout_all?username=test&force=1 => Logout done
1138. => GET => http://{{server}}/api/simple_auth/login?username=test&auth_token_={{login_token2}} => Invalid username or authentication token. # Not able to login after logout.
1139.
1140.
1141. # 9. Access protected DB after login ( We are using two users test and test1)
1142. => GET => http://{{server}}/api/test_simple_auth => Please provide a valid token
1143. => GET => http://{{server}}/api/test_simple_auth?auth_token_=test => Invalid or expired auth_token
1144. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&password_=test => "auth_token_":"(?.*?)"
1145. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test1&password_=test1 => "auth_token_":"(?.*?)"
1146. => GET => http://{{server}}/api/test_simple_auth?auth_token_={{login_token}} => Find successfully with 0 items
1147. => GET => http://{{server}}/api/test_simple_auth/create?_no_encode=1&auth_token_={{login_token}}&name=test_name => "_username":"test"
1148. => GET => http://{{server}}/api/test_simple_auth?auth_token_={{login_token}} => Find successfully with 1 items
1149. => GET => http://{{server}}/api/test_simple_auth/create?_no_encode=1&auth_token_={{login_token1}}&name=test1_name1 => "_username":"test1"
1150. => GET => http://{{server}}/api/test_simple_auth/create?_no_encode=1&auth_token_={{login_token1}}&name=test1_name2 => "_username":"test1"
1151. => GET => http://{{server}}/api/test_simple_auth?auth_token_={{login_token1}} => Find successfully with 2 items ##
1152. => GET => http://{{server}}/api/test_simple_auth?auth_token_=skip => Find successfully with 3 items ####
1153. => GET => http://{{server}}/api/test_simple_auth/delete?auth_token_={{login_token}}&_confirmstr=test_simple_auth => Deleted count is : 1
1154. => GET => http://{{server}}/api/test_simple_auth/delete?auth_token_=skip&_confirmstr=test_simple_auth => Deleted count is : 2
1155.
1156. ## 10. Forget and reset password for test user, and set it back to test
1157. => GET => http://{{server}}/api/simple_auth/forgot_password => Missing username
1158. => GET => http://{{server}}/api/simple_auth/forgot_password?username=wrong => Invalid username
1159. => GET => http://{{server}}/api/simple_auth/forgot_password?_no_encode=1&username=test => "short_lived_token":"(?.*?)"
1160. => GET => http://{{server}}/api/simple_auth/reset_password?username=test => Missing short_lived_token
1161. => GET => http://{{server}}/api/simple_auth/reset_password?username=test&short_lived_token=wrong => Missing password_
1162. => GET => http://{{server}}/api/simple_auth/reset_password?username=wrong&short_lived_token={{short_lived_token}} => Missing password_
1163. => GET => http://{{server}}/api/simple_auth/reset_password?username=wrong&short_lived_token=wrong&password_=hello => Invalid username or token got expired
1164. => 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
1165. => GET => http://{{server}}/api/simple_auth/reset_password?username=test&short_lived_token={{short_lived_token}}&password_=test5 => Password changed successfully
1166. => 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
1167. # reset password back to test123
1168. => GET => http://{{server}}/api/simple_auth/forgot_password?_no_encode=1&username=test => "short_lived_token":"(?.*?)"
1169. => GET => http://{{server}}/api/simple_auth/reset_password?username=test&short_lived_token={{short_lived_token}}&password_=test => Password changed successfully
1170.
1171.
1172. # 11. Production subscription API's
1173. # 11.1. Add Subscription
1174. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&password_=test => "auth_token_":"(?.*?)"
1175. => 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
1176. => 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
1177. # 11.2. Get Subscription
1178. => 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
1179. # 11.3. Clear Subscription
1180. => GET => http://localhost/api/simple_auth/clear_subscription?_no_encode=1&subscription_key=test&auth_token_={{login_token1}}&subscription_provider=dummy => subscription clear
1181. => 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
1182. # 11.4 For testng this you need to generate the payment_method_id first with public dat
1183. #=> 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
1184.
1185. # 12. Managing permission Group.
1186. # 12.1 Adding and removing permission for a users by a super user.
1187. => GET => http://{{server}}/api/simple_auth/register?username=superuser@grodok.com&password_=superuser@123&email=superuser@grodok.com => Registration completed successfully # Create super user
1188. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=test&password_=test => "auth_token_":"(?.*?)"
1189. => GET => http://localhost/api/simple_auth/login?_no_encode=1&username=superuser@grodok.com&password_=superuser@123 => "auth_token_":"(?.*?)"
1190. => GET => http://localhost/api/simple_auth/get_info?_no_encode=1&auth_token_={{su_login_token}} => superuser@grodok.com
1191. => 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
1192. => GET => http://localhost/api/simple_auth/get_info?_no_encode=1&auth_token_={{t_login_token}} => "permission_group":\["test"\]
1193. => 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
1194. => GET => http://localhost/api/simple_auth/get_info?_no_encode=1&auth_token_={{t_login_token}} => "permission_group":\[\]
1195. # 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
1196. # 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
1197.
1198. # 13. Login with magic link
1199. => GET => http://localhost/api/simple_auth/generate_magic_link => Missing email
1200. => GET => http://localhost/api/simple_auth/generate_magic_link?email=dutta.dipankar08@gmail.com => Missing url
1201. => 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":"(?.*?)"
1202. => GET => http://localhost/api/simple_auth/login_with_magic_link?_no_encode=1&magic_link_token={{magic_link_token1}} => "auth_token_":"(?.*?)"
1203. => 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
1204. => GET => http://localhost/api/simple_auth/get_info?_no_encode=1&auth_token_={{login_token}} => success
1205. => 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
1206. => GET => http://localhost/api/simple_auth/login_with_magic_link?magic_link_token=hello => Invalid token
1207.
1208.
1209. # 14. Product Subscription APIs
1210. => GET => http://localhost/api/simple_auth/login?_no_encode=1&username=test&password_=test => "auth_token_":"(?.*?)"
1211. => GET => http://localhost/api/simple_auth/login?_no_encode=1&username=superuser@grodok.com&password_=superuser@123 => "auth_token_":"(?.*?)"
1212. => GET => http://localhost/api/simple_auth/get_info?_no_encode=1&auth_token_={{su_login_token}} => user data returned
1213. => 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"
1214. => 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
1215. => 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
1216. => 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":"(?.*?)"
1217. => 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
1218. => 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
1219. => GET => http://localhost/api/simple_auth/validate_product_subscription?_no_encode=1&auth_token_={{t_login_token}}&app_name=test => No valid subsscription exist
1220. => 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
1221.
1222. #########################################################################################
1223. ## ##
1224. ## IPTV APIS (DISABLED AS NOT USED) ##
1225. ## ##
1226. #########################################################################################
1227. #=> POST => http://{{server}}/api/ip_tv/delete?_confirmstr=ip_tv => {} => success
1228. #=> 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
1229. #=> GET => http://{{server}}/api/ip_tv?_limit=1 => "_id":"(?.*?)"
1230. #=> GET => http://{{server}}/api/ip_tv/?id={{id1}} => "rank":
1231. #=> GET => http://{{server}}/api/ip_tv/rankup?id={{id1}}&_field=rank => Up voted
1232. #=> GET => http://{{server}}/api/ip_tv/?id={{id1}} => "rank":
1233. #=> GET => http://{{server}}/api/ip_tv/rankdown?id={{id1}}&_field=rank => Down voted
1234. #=> GET => http://{{server}}/api/ip_tv/?id={{id1}} => "rank":
1235. #=> GET => http://{{server}}/api/ip_tv/count => success
1236. # => GET => http://{{server}}/api/ip_tv/cleanup => clean up done by removing
1237. # => GET => http://localhost/api/ip_tv/cleanup?is_delete=false => success
1238. #=> GET => http://localhost/api/ip_tv/explore_seed?seed_url=https://raw.githubusercontent.com/mahmud31132/bdix-tv/main/BD%20working.m3u8 => success
1239.
1240. #########################################################################################
1241. ## ##
1242. ## TRADE APIS ##
1243. ## ##
1244. #########################################################################################
1245. # 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
1246. => GET => http://{{server}}/api/utils/trade/ltp => symbol list is empty
1247. => GET => http://{{server}}/api/utils/trade/ltp?symbols=TCS.NS,WIPRO.NS => success # This API is noy working anymore
1248.
1249. # Historical data
1250. => GET => http://localhost/api/utils/trade/history?symbol=MSFT => missing interval. possible value: 1d,5m,15m,1h
1251. => GET => http://localhost/api/utils/trade/history?symbol=MSFT&interval=1mo => missing range. possible value:
1252. => GET => http://localhost/api/utils/trade/history?symbol=MSFT&interval=1mo => missing range. possible value:
1253. => GET => http://localhost/api/utils/trade/history?symbol=MSFT&interval=1mo&range=max => success
1254. => GET => http://localhost/api/utils/trade/history?symbol=MSFT&interval=1mo&range=10y => success
1255.
1256. # Expart resilt
1257. => 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
1258. => 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
1259. => 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
1260. => 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
1261. => 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
1262. => 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
1263.
1264.
1265.
1266.
1267. #########################################################################################
1268. ## ##
1269. ## Youtube uploader ##
1270. ## ##
1271. ## FOR AUTH ISSUE: generate toekn: node bin/core/google/youtube.js ##
1272. #########################################################################################
1273.
1274. => GET => http://localhost/api/utils/yupload/m3u8upload => error
1275.
1276. => GET => http://localhost/api/utils/yupload/m3u8upload?uri=https://stream.live.vc.bbcmedia.co.uk/bbc_hindi_radio&duration=300 =>Please send a key
1277.
1278.
1279. #########################################################################################
1280. ## ##
1281. ## Error ##
1282. ## ##
1283. ## FOR AUTH ISSUE: generate toekn: node bin/core/google/youtube.js ##
1284. #########################################################################################
1285. => POST => http://{{server}}/api/error/delete?_confirmstr=error => {} => success
1286. => GET => http://localhost/api/error/test => Test Error
1287. => GET => http://localhost/api/error => Find successfully
1288.
1289. #########################################################################################
1290. ## ##
1291. ## INFO ##
1292. ## ##
1293. ## GET API INFO ##
1294. #########################################################################################
1295. => GET => http://localhost/api/local_test/info => "isRemoteDB":false
1296. => GET => http://localhost/api/remote_test/info => "isRemoteDB":true
1297. # curl http://localhost/api/test/info --cookie "Cho=Kim;Greet=Hello"
1298. => GET => http://localhost/api/test/info => "isRemoteDB":false
1299. => GET => http://localhost/api/test_secure/info => "secure":false
1300. => GET => http://localhost/api/test_secure/ => success
1301. => GET => http://localhost/api/test_secure_/info => "secure":true # Note that You must have secure_ to pass the match
1302. => GET => http://localhost/api/test_secure_/ => Please provide a valid token
1303. => GET => http://localhost/api/test/info => "secure":false
1304.
1305.
1306. #########################################################################################
1307. ## ##
1308. ## STRIPE ##
1309. ## ##
1310. ## STRIPE validation api's helps to validate any purchase via simplestore ##
1311. #########################################################################################
1312. # ( need real setup )=> GET => http://localhost/api/stripe/check_subscription?customer_id=cus_Melrh5VwxSJB2v => "email":"dutta.dipankar08@gmail.com"
1313. => GET => http://localhost/api/stripe/check_payment?payment_id=unknwon => No such payment_intent
1314. # ( not real setup)=> GET => http://localhost/api/stripe/check_payment?payment_id=pi_3LvRVnCtA5cdHPVp0DrsawEx => "amount_captured":500
1315.
1316. #########################################################################################
1317. ## ##
1318. ## TEST Encript and dryption API output ##
1319. ## ##
1320. ## STRIPE validation api's helps to validate any purchase via simplestore ##
1321. #########################################################################################
1322. => GET => http://localhost/api/test_crypto/delete?_confirmstr=test_crypto => success
1323. => GET => http://localhost/api/test_crypto/insert?name=dip => insert successfully
1324. => GET => http://localhost/api/test_crypto => Find successfully
1325. => GET => http://localhost/api/test_crypto/count => success
1326. => GET => http://localhost/api/test_crypto/delete?_confirmstr=test_crypto => success
1327.
1328.
1329. ## Root users
1330. => GET => http://localhost/api/_auth_token/ => access db with db name with _
1331. => GET => http://localhost/api/_auth_token?_root_user=1 => success
1332.
1333. #########################################################################################
1334. ## test unset or delete fields
1335. ## This API allow you to delete a list of fileds ( just unset in the docs)
1336. ## How to unsert a field?
1337. ## How to unset multiple fields?
1338. ## how to unset fileds with nested documnets ? use dot notation.
1339. ## How to unset fields for all entrys by seraching? query + _field combination
1340. #########################################################################################
1341. => GET => http://localhost/api/test/delete?_confirmstr=test =>success
1342. => GET => http://localhost/api/test/insert?name=dip&roll=20&email=hello@hello.com => "_id":"(?.*?)"
1343. => GET => http://localhost/api/test/get?_id={{id1}} => "roll":"20"
1344. => GET => http://localhost/api/test/delete_fields?_id={{id1}}&_field=roll => We have un-set the filed for 1 entries
1345. => GET => http://localhost/api/test/get?_id={{id1}} => "name":"dip","email":"hello@hello.com",
1346.
1347. # unsetting nested object
1348. => POST => http://localhost/api/test/insert => {"name":{"first":"dip", "last":"dutta"}} => "_id":"(?.*?)"
1349. => GET => http://localhost/api/test/delete_fields?_id={{id1}}&_field=name.last => un-set the filed for 1 entries
1350. => GET => http://localhost/api/test/get?_id={{id1}} => "name":\{"first":"dip"\}
1351.
1352.
1353.
1354. #########################################################################################
1355. # File utilitiesv
1356. # This api define upload, download, delete and list files in the SimpleStore application
1357. # This is for the prototype purpose. Please don't use for scale
1358. # All test is passing - disabled for new file is missing
1359. #########################################################################################
1360. # curl -d @a.txt http://localhost/api/utils/files/upload use this for upload
1361. #=> GET => http://localhost/api/utils/files/download?filename=a.txt => Dipankar
1362. #=> GET => http://localhost/api/utils/files/list => a.txt
1363. #=> GET => http://localhost/api/utils/files/delete?filename=a.txt => success
1364. #=> GET => http://localhost/api/utils/files/delete?filename=a.txt => error
1365.
1366.
1367. #########################################################################################
1368. # remote_smb_manifest ()
1369. # This API will build the necessaryly function to support SMB.
1370. # Like Enable payment gateway
1371. #########################################################################################
1372. # [PASS ALL] (1) Test razorpay_create_order APIs
1373. ###>>>> Diabling all test as Key expaired
1374. #=> GET => http://localhost/api/remote_smb_manifest/delete?_confirmstr=remote_smb_manifest => success
1375. #=> POST => http://localhost/api/remote_smb_manifest/insert => {"public_keys":{"razor_key":"1"},"secret_keys_":{"razor_secret":"1"}} => "_id":"(?.*?)"
1376. #=> 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
1377. #=> 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
1378. #=> POST => http://localhost/api/remote_smb_manifest/razorpay_create_order => {"_no_encode":1, "currency":"INR", "smb_id":"wrong"} => Missing amount
1379. #=> POST => http://localhost/api/remote_smb_manifest/insert => {"public_keys":{"razor_key":"rzp_test_I2VzFwGWMekWJe"},"secret_keys_":{"razor_secret":"4Hk97bepWLg7PS0Lli1rCXmx"}} => "_id":"(?.*?)"
1380. #=> POST => http://localhost/api/remote_smb_manifest/razorpay_create_order => {"_no_encode":1, "amount":500, "currency":"INR", "smb_id":"{{id1}}"} => "order_id":"order_
1381.
1382.
1383. ####################
1384. ## Market APIs: As we wants to get the live market data, we can use goofle api to do that
1385. ##
1386. ####################
1387.
1388. # => GET => http://localhost/api/utils/market/google_ltp?symbol=VUSA.L => Vanguard S
1389.
1390. ####
1391. # Supporting revison
1392. # >>>> Update_one is not working any more <<<<<
1393. ####
1394. => GET => http://localhost/api/test/delete?_confirmstr=test => success
1395. => GET => http://localhost/api/test/insert?name=dip => "_id":"(?.*?)"
1396. # => POST => http://localhost/api/test/update_one => {"_id":"{{id1}}","_revision":true} => You must pass some data in the request
1397. # => POST => http://localhost/api/test/update_one => {"_id":"{{id1}}","name":"dip1","_revision":true} => "dip1"
1398. # => POST => http://localhost/api/test/update_one => {"_id":"{{id1}}","name":"dip2","_revision":true} => "dip2"
1399. => GET => http://localhost/api/test/revision?_id={{id1}} => All History\(revision\) returned
1400.
1401. ###
1402. # You need to mark remote_db to store in remote database
1403. ##
1404. => GET => http://localhost/api/remote_db_secure_merit/info => "isRemoteDB":true
1405. => GET => http://localhost/api/nodel_remote_db_secure_merit/info => "isRemoteDB":true
1406. => GET => http://localhost/api/nodel_secure_merit_remote_db/info => "isRemoteDB":true
1407. => GET => http://localhost/api/nodel_secure_merit_remoooote_db/info => "isRemoteDB":false
1408.
1409.
1410. #############################################
1411. # Test kill swicth - It provides way to set config which is globally store
1412. # this will help to switch code path based on remote coffi
1413. # This can be used for shipping experimeing features
1414. #############################################
1415. => GET => http://localhost/api/kill_switch/delete?_confirmstr=kill_switch => success
1416. => GET => http://localhost/api/kill_switch/set_bool?key=a&value=1 => "a":true
1417. => GET => http://localhost/api/kill_switch/set_bool?key=b&value=0 => "b":false
1418. => GET => http://localhost/api/kill_switch/set_bool?key=c&value=true => "c":true
1419. => GET => http://localhost/api/kill_switch/set_string?key=d&value=hello => "d":"hello"
1420. => GET => http://localhost/api/kill_switch/set_string?key=d&value=hello1 => "d":"hello1"
1421. => GET => http://localhost/api/kill_switch/get_current => "d":"hello1"
1422. => GET => http://localhost/api/kill_switch/reload => 4
1423.
1424.
1425. #############################################
1426. # Template store
1427. # this feature allow to create template in the tempalte store ( store in remote db)
1428. # and the you create_from_template api to create duplicate data from template
1429. #############################################
1430. => GET => http://localhost/api/template_store/delete?_confirmstr=template_store => success
1431. => POST => http://localhost/api/template_store/create => {"name":"dipankar", "roll":100} => template_name must be present as composite key
1432. => POST => http://localhost/api/template_store/create => {"name":"dipankar", "roll":100, "template_name":"test"} => success
1433. => POST => http://localhost/api/template_store/create => {"name":"dipankar", "roll":100, "template_name":"test"} => Duplicate item found: template_name
1434. # here how to create clone from templates
1435. => POST => http://localhost/api/test/create_from_template => {"template_name":"test", "more_info":"extra data"} => "name":"dipankar","roll":100
1436. => POST => http://localhost/api/test/create_from_template => {"template_name":"test1", "more_info":"extra data"} => template not found
1437.
1438.
1439.
1440.
1441. ################ CURL CORN EXTENSION (curlCornExtension) ######################
1442. # curlCornExtension schedules network requests as cron jobs (replaces schedule2).
1443. # a) /add - add a job {name, url, type:get|post, params(post, JSON), cron, time_zone?, is_active?}
1444. # b) /trigger_once - run a job once right now (by id)
1445. # c) /activate - activate/deactivate a job based on is_active in the payload
1446. # d) /update - update a job and reschedule it (overrides the default update)
1447. # On boot, all is_active jobs are loaded and scheduled automatically.
1448. ##############################################################################
1449. # cleanup
1450. => !POST => http://localhost/api/curl_corn_jobs_remote/delete?_confirmstr=curl_corn_jobs_remote => {} => success
1451.
1452. # add: input validation
1453. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"url":"https://google.com","type":"get","cron":"*/10 * * * * *"} => missing name
1454. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"g1","type":"get","cron":"*/10 * * * * *"} => missing url
1455. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"g1","url":"https://google.com","cron":"*/10 * * * * *"} => missing/invalid type
1456. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"g1","url":"https://google.com","type":"wrong","cron":"*/10 * * * * *"} => Invalid enum string
1457. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"g1","url":"https://google.com","type":"get"} => missing cron
1458. # invalid cron format is rejected up-front (malformed + wrong number of fields)
1459. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"g1","url":"https://google.com","type":"get","cron":"wrong"} => Invalid cron format
1460. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"g1","url":"https://google.com","type":"get","cron":"*/10 * * *"} => Invalid cron format
1461.
1462. # add a GET job (active by default) & schedule it
1463. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"g1","url":"https://google.com","type":"get","cron":"*/10 * * * * *"} => "_id":"(?.*?)"
1464. # name is a composite key - adding the same name again fails
1465. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"g1","url":"https://google.com","type":"get","cron":"*/10 * * * * *"} => Duplicate item found
1466. # stats are initialised by the server
1467. => GET => http://{{server}}/api/curl_corn_jobs_remote/find?_id={{job_id}} => "count_of_run":0
1468. # a human-readable form of the cron is stored on insert
1469. => GET => http://{{server}}/api/curl_corn_jobs_remote/find?_id={{job_id}} => "corn_human_readable":"Every 10 seconds"
1470.
1471. # activate / deactivate (driven by is_active flag)
1472. => GET => http://{{server}}/api/curl_corn_jobs_remote/activate?id={{job_id}}&is_active=false => is now deactivated
1473. => GET => http://{{server}}/api/curl_corn_jobs_remote/activate?id={{job_id}}&is_active=true => is now active and scheduled
1474. => GET => http://{{server}}/api/curl_corn_jobs_remote/activate?id={{job_id}}&is_active=true => is already active
1475.
1476. # update (overrides the default update; needs only id)
1477. => POST => http://{{server}}/api/curl_corn_jobs_remote/update => {"url":"https://x.com"} => Missing id
1478. => POST => http://{{server}}/api/curl_corn_jobs_remote/update => {"id":"{{job_id}}"} => Nothing to update
1479. => POST => http://{{server}}/api/curl_corn_jobs_remote/update => {"id":"{{job_id}}","type":"wrong"} => Invalid enum string
1480. => POST => http://{{server}}/api/curl_corn_jobs_remote/update => {"id":"{{job_id}}","time_zone":"invalid"} => Not a valid timezone:invalid
1481. => POST => http://{{server}}/api/curl_corn_jobs_remote/update => {"id":"{{job_id}}","cron":"badcron"} => Invalid cron format
1482. => POST => http://{{server}}/api/curl_corn_jobs_remote/update => {"id":"{{job_id}}","url":"https://updated.example.com"} => updated and rescheduled
1483. => GET => http://{{server}}/api/curl_corn_jobs_remote/find?_id={{job_id}} => updated.example.com
1484. # updating the cron refreshes its human-readable form
1485. => POST => http://{{server}}/api/curl_corn_jobs_remote/update => {"id":"{{job_id}}","cron":"*/5 * * * *"} => updated and rescheduled
1486. => GET => http://{{server}}/api/curl_corn_jobs_remote/find?_id={{job_id}} => "corn_human_readable":"Every 5 minutes"
1487. => POST => http://{{server}}/api/curl_corn_jobs_remote/update => {"id":"{{job_id}}","is_active":false} => updated \(inactive\)
1488.
1489. # ---- time zone validation on add ----
1490. => 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
1491. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"tz2","url":"https://google.com","type":"get","cron":"*/60 * * * * *","time_zone":"Europe/London"} => "_id":"(?.*?)"
1492.
1493. # ---- POST job: params must be valid JSON; trigger_once runs it now & records stats ----
1494. => 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
1495. => 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":"(?.*?)"
1496. => GET => http://{{server}}/api/curl_corn_jobs_remote/trigger_once?id={{pid}} => Job triggered once
1497. # the POST job actually hit the test db with the params
1498. => GET => http://localhost/api/test/find?name=dip432 => dip432
1499. # stats got updated after the run
1500. => GET => http://{{server}}/api/curl_corn_jobs_remote/find?_id={{pid}} => "count_of_run":1
1501. => GET => http://{{server}}/api/curl_corn_jobs_remote/find?_id={{pid}} => "type":"success"
1502.
1503. # ---- boot reload: an active job persists in DB so it is re-scheduled on next boot ----
1504. => !POST => http://localhost/api/curl_corn_jobs_remote/delete?_confirmstr=curl_corn_jobs_remote => {} => success
1505. => POST => http://{{server}}/api/curl_corn_jobs_remote/add => {"name":"boot1","url":"https://google.com","type":"get","cron":"*/60 * * * * *"} => "_id":"(?.*?)"
1506. => GET => http://{{server}}/api/curl_corn_jobs_remote/find?name=boot1 => "is_active":true
1507.
1508. # cleanup
1509. => !POST => http://localhost/api/curl_corn_jobs_remote/delete?_confirmstr=curl_corn_jobs_remote => {} => success
1510.
1511.
1512. ################ Test Webhooks######################
1513. # Webhoks allowsto add endpoint when some db data is getting updated
1514. #####################################################
1515. => GET => http://localhost/api/webhook/status_clear => {"CALl_COUNT":0}
1516. => POST => http://localhost/api/webhook/insert => {"db_name":"test_webhook", "hook_url":"https://google.com"} => success
1517. => POST => http://localhost/api/test_webhook/insert => {"name":"Dipankar"} => success
1518. => GET => http://localhost/api/webhook/status => {"CALl_COUNT":1}
1519.
1520.
1521.
1522. ################ SECURE DB and Visibility Rules ######################
1523. # This allows to build secure DB protected by access_token.
1524. # 1. Secure DB contains the letter secure in it's name.
1525. # 2. When you define a db as secure you must pass a valid auth_token_ to create, insert. update.
1526. # 3. They are only visiuble to you and no others
1527. # 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
1528. # 5. You can also create those db annonomously using spacial access token called "anonymous" - They are budefult make public visibility.
1529. # 6. Acess token "debug" can work for debug evn and skip all the secure rules
1530. #####################################################
1531.
1532. # Step1: Adding or remiving visibiity
1533. => GET => http://localhost/api/secure_test/insert?auth_token_=debug&name=hello => "_id":"(?.*?)"
1534. => GET => http://localhost/api/secure_test/visibility/add?_id1={{id1}}&auth_token_=debug => You must pass a _id or id
1535. => GET => http://localhost/api/test/visibility/add?_id={{id1}} => You can only make this action on secure db
1536. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}} => Missing auth_token_
1537. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug1 => Invalid token
1538. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user1 => Successfully added
1539. => GET => http://localhost/api/secure_test/?auth_token_=debug&_id={{id1}} => "_visibility":\["user1"\]
1540. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user1 => Not updated
1541. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user2 => Successfully added
1542.
1543. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_=debug&username=user1 => Successfully removed
1544. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_=debug&username=user1 => Not updated
1545. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_=debug&username=user2 => Successfully removed
1546. => GET => http://localhost/api/secure_test/?auth_token_=debug&_id={{id1}} => "_visibility":\[\]
1547. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_=debug&username=user1 => Successfully added
1548. => GET => http://localhost/api/secure_test/visibility/clear?_id={{id1}}&auth_token_=debug => Successfully
1549. => GET => http://localhost/api/secure_test/?auth_token_=debug&_id={{id1}} => "_visibility":\[\]
1550.
1551.
1552.
1553. # Step 2: test secure access via visibility
1554. # 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
1555. # reguster and login user
1556. => GET => http://localhost/api/simple_auth/register?_no_encode=1&username=user1&password_=test123&email=dutta.dipankar08+user1@gmail.com => success
1557. => GET => http://localhost/api/simple_auth/register?_no_encode=1&username=user2&password_=test123&email=dutta.dipankar08+user2@gmail.com => success
1558. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=user1&password_=test123 => "auth_token_":"(?.*?)"
1559. => GET => http://{{server}}/api/simple_auth/login?_no_encode=1&username=user2&password_=test123 => "auth_token_":"(?.*?)"
1560. # Create an ietm by user1 and add visibility to user 2
1561. => GET => http://localhost/api/secure_test/insert?auth_token_={{login_token1}}&name=share with user2 => "_id":"(?.*?)"
1562. => GET => http://localhost/api/secure_test/get?auth_token_={{login_token2}}&_id={{id1}} => Find successfully with 0 items
1563. => GET => http://localhost/api/secure_test/visibility/add?_id={{id1}}&auth_token_={{login_token1}}&username=user2 => Successfully added
1564. # Access by user 2
1565. => GET => http://localhost/api/secure_test/get?auth_token_={{login_token2}}&_id={{id1}} => share with user2
1566. #Revoke access
1567. => GET => http://localhost/api/secure_test/visibility/remove?_id={{id1}}&auth_token_={{login_token1}}&username=user2 => Successfully removed
1568. => GET => http://localhost/api/secure_test/get?auth_token_={{login_token2}}&_id={{id1}} => Find successfully with 0 items
1569.
1570. # Update Visibility in a go using /replace
1571. => GET => http://localhost/api/secure_test/visibility/replace?_id={{id1}}&auth_token_={{login_token1}}&username=user1,user2,user3 => Successfully replaced with 3
1572. => GET => http://localhost/api/secure_test/visibility/replace?_id={{id1}}&auth_token_={{login_token1}}&username=user1,user2,user3 ,user4 => Successfully replaced with 4
1573. => GET => http://localhost/api/secure_test/visibility/replace?_id={{id1}}&auth_token_={{login_token1}}&username=user1 => Successfully replaced with 1
1574. => POST => http://localhost/api/secure_test/visibility/replace => {"_id":"{{id1}}","auth_token_":"{{login_token1}}","username":["user1"]} => Successfully replaced with 1
1575. # In the below case, you need use clear API to replace
1576. => POST => http://localhost/api/secure_test/visibility/replace => {"_id":"{{id1}}","auth_token_":"{{login_token1}}","username":[]} => you must pass username
1577.
1578.
1579. # Testing anonymous entries.
1580. => GET => http://localhost/api/secure_test/insert?auth_token_=anonymous&name=test_anonymous => "_id":"(?.*?)"
1581. => GET => http://localhost/api/secure_test?id={{id3}} => Please provide a valid token
1582. => GET => http://localhost/api/secure_test?id={{id3}}&auth_token_=anonymous => "_visibility":\["public"\]
1583. => 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
1584. => GET => http://localhost/api/secure_test?id={{id3}}&auth_token_={{login_token1}} => "_visibility":\["public"\]
1585.
1586.
1587. ################ PDF GEN API ######################
1588. # This allow to a secure entry to other user
1589. #####################################################
1590. => GET => http://localhost/api/utils/pdf/letter?from=Dipankar\nDutta&to=dip&subject=hello&content=hello\nworld => company_name missing
1591. => 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
1592.
1593.
1594. ################ HEARTBEAT API ######################
1595. # This allow to a secure entry to other user
1596. #####################################################
1597. => GET => http://localhost/api/utils/heartbeat/ping => please pass name
1598. => GET => http://localhost/api/utils/heartbeat/ping?name=test =>pong
1599. => GET => http://localhost/api/utils/heartbeat/status?name=test => status: active
1600. => GET => http://localhost/api/utils/heartbeat/ping?name=test&status=error =>pong
1601. => GET => http://localhost/api/utils/heartbeat/status?name=test => status: error
1602. => GET => http://localhost/api/utils/heartbeat/ping?name=test&status=error&last_error=error_stack =>pong
1603. => GET => http://localhost/api/utils/heartbeat/status?name=test => error_stack
1604. => GET => http://localhost/api/utils/heartbeat/status?name=test1 => status: not found
1605.
1606. # Test auto expaire ( must be pinnged in every 60 sec - we delete the entry in 120 sec)
1607. # This give two chnages to ensure your pingged in reached to the server
1608. => GET => http://localhost/api/utils/heartbeat/status?name=test => error_stack
1609. # => sleep => 120 <<< DIabled as perf reason
1610. # => GET => http://localhost/api/utils/heartbeat/status?name=test => status: inactive
1611.
1612. ################ TUNNEL REQUEST ######################
1613. # This mecahnisn allows to execute a JSON request to 3p wesbite and allow to pass a custum function to process the output.
1614. #####################################################
1615. => GET => http://localhost/api/tunnel_request/delete?_confirmstr=tunnel_request =>success
1616. => POST => http://localhost/api/tunnel_request/add_tunnel => {"name":"test", "type":"get", "url":"https://market.tipranks.com/api/details/GetRealTimeQuotes", "process_fn" : "none"} => success
1617. => 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
1618.
1619. # Once we setup a tunnel, execute it using get or post
1620. => GET => http://localhost/api/tunnel_request/execute?name=test => Request failed with status code 404
1621. => GET => http://localhost/api/tunnel_request/execute?name=test&tickers=MSFT => Issue with processing function
1622.
1623. # thsi will override thr process fucntion to test purpose ( you can use both lamda and nameed function)
1624. => POST => http://localhost/api/tunnel_request/execute => {"name":"test","tickers":"MSFT","process_fn":"function(a){return a}"} => successfully executeed the process fiunction
1625.
1626. # DONT USE LAMDA FUNCTION for test as => can't eb used
1627. # 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
1628. #=> POST => http://localhost/api/tunnel_request/execute => {"name":"test","tickers":"MSFT","process_fn":"(a)=>a"} => successfully executeed the process fiunction
1629.
1630. # You can add revision for that tunnel and latest revisition will be used
1631. => 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
1632. => GET => http://localhost/api/tunnel_request/execute?name=test&tickers=MSFT => MSFT
1633.
1634. ################ System DB ######################
1635. # Simple store supports system db which load all SimpleStore Server realted remote config on DB start.
1636. # This will override any local config so that we can control the service remotely.
1637. # One of the example is the SERCURE_KEYS which could be reset remotely
1638. # >>>> NOT WORKING <<<<
1639. #####################################################
1640. # => GET => http://localhost/api/internal_nodel_system_db/delete?_confirmstr=internal_nodel_system_db => The DB has marked as nodel
1641. # => GET => http://localhost/api/utils/system_db/dump => system db dump -> use db UI
1642. # /update will add, update, delete all in a single api. for delete pass null
1643. # => 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"
1644. # => POST => http://localhost/api/utils/system_db/update => {"db_name":"SECURE_KEYS", "test_key1":"test_key_value1","test_key2":"null"} => "test_key2":null
1645. # => 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"
1646. # => GET => http://localhost/api/utils/system_db/dump => "test_key2":"test_key_value3"
1647.
1648. ######### SERVER INFO ######
1649. => GET => http://localhost/info => "secureKeys":"Un autorized"
1650. => GET => http://localhost/info?admin=1 => "secureKeys"
1651.
1652. ##############
1653. # Test for stock_alert
1654. #
1655. ############
1656. => GET => http://localhost/api/stock_alert/delete?_confirmstr=stock_alert => success
1657.
1658. # add_ticker: takes email as filter, creates the subscriber if new (ticker is upper-cased) ----
1659. => GET => http://localhost/api/stock_alert/add_ticker => Please send the subscriber email
1660. => GET => http://localhost/api/stock_alert/add_ticker?email=dutta.dipankar08@gmail.com => Please send the ticker to add
1661. => GET => http://localhost/api/stock_alert/add_ticker?email=dutta.dipankar08@gmail.com&ticker=aapl => AAPL added to dutta.dipankar08@gmail.com
1662. => GET => http://localhost/api/stock_alert/add_ticker?email=dutta.dipankar08@gmail.com&ticker=MSFT => MSFT added to dutta.dipankar08@gmail.com
1663. # adding the same ticker again should not create a duplicate (set semantics)
1664. => GET => http://localhost/api/stock_alert/add_ticker?email=dutta.dipankar08@gmail.com&ticker=AAPL => AAPL added to dutta.dipankar08@gmail.com
1665. => POST => http://localhost/api/stock_alert => {"email":"dutta.dipankar08@gmail.com"} => "symbol_list":\["AAPL","MSFT"\]
1666.
1667. # remove_ticker: takes email as filter ----
1668. => GET => http://localhost/api/stock_alert/remove_ticker => Please send the subscriber email
1669. => GET => http://localhost/api/stock_alert/remove_ticker?email=dutta.dipankar08@gmail.com => Please send the ticker to remove
1670. => GET => http://localhost/api/stock_alert/remove_ticker?email=dutta.dipankar08@gmail.com&ticker=msft => MSFT removed from dutta.dipankar08@gmail.com
1671. => POST => http://localhost/api/stock_alert => {"email":"dutta.dipankar08@gmail.com"} => "symbol_list":\["AAPL"\]
1672.
1673. # ltp: no params, returns LTP + change details for all subscribed symbols ----
1674. => GET => http://localhost/api/stock_alert/ltp => all ltp returned
1675.
1676. # trigger: no params; subject auto-generated from top-2 gainers / bottom-2 losers ----
1677. => GET => http://localhost/api/stock_alert/trigger => sent in
1678.
1679.
1680. ###########
1681. # Expose reliability for admin acess
1682. ###########
1683. => GET => http://localhost/reliability/ => success
1684.
1685. ##### Admin DB ####
1686. => GET => http://localhost/api/admin_hello => Missing admin_token_
1687. => GET => http://localhost/api/test_admin => Missing admin_token_
1688. => GET => http://localhost/api/test_admin?admin_token_=admin_test => Find successfully
1689. => GET => http://localhost/api/test_admin?admin_token_=admin_test_token_invalid => Invalid admin_token
1690. => GET => http://localhost/api/test_admin/insert?admin_token_=admin_test&name=test=> success
1691. => GET => http://localhost/api/test_admin/get?name=test=> Missing admin_token_
1692. => GET => http://localhost/api/test_admin/find?name=test=> Missing admin_token_
1693.
1694.
1695. # Get and Delete.
1696. => GET => http://localhost/api/test/insert?name=test => "_id":"(?.*?)"
1697. => GET => http://localhost/api/test/get_and_delete?id={{id1}} => success
1698. => GET => http://localhost/api/test/get_and_delete?id={{id1}} => error
1699.
1700.
1701. # Test case for AWS S3 utils
1702. => GET => http://localhost/api/utils/aws/list_files?folder_name=images&bucket_name=intellicogno-s3 => https://intellicogno-s3.s3.us-east-2.amazonaws.com
1703. => GET => http://localhost/api/utils/aws/list_files?folder_name=images => missing bucket_name
1704. => GET => http://localhost/api/utils/aws/list_files?bucket_name=images => missing folder_name
1705. => GET => http://localhost/api/utils/aws/list_files?folder_name=images&bucket_name=intellicogno-s4 => return a list of url
1706. => GET => http://localhost/api/utils/aws/list_files?folder_name=images1&bucket_name=intellicogno-s3 => return a list of url
1707. # Path = https://${bucketName}.s3.${region}.amazonaws.com/${path}
1708. => GET => http://localhost/api/utils/aws/get_download_url?path=images/017.jpg&bucket_name=intellicogno-s3 => success # get a link for a file
1709.
1710.
1711. # live log
1712. => GET => http://localhost/api/live_log/test => success
1713. => GET => http://localhost/api/live_log/get_log => error
1714. => GET => http://localhost/api/live_log/get_log?sender=live_log => html
1715.
1716.
1717. # Admin feature
1718. # 1. Server logs -> This works only if you login as super user
1719. => GET => http://localhost/api/utils/admin_tools/logs => success
1720. => GET => http://localhost/api/utils/admin_tools/clear_logs => success
1721. => GET => http://localhost/admin/routes => live_log
1722. => GET => http://localhost/api/utils/admin_tools/api_usages => API Usages
1723.
1724. # Bash comamnd excutor
1725. => GET => http://localhost/api/utils/bash => error
1726. => GET => http://localhost/api/utils/bash?cmd=ls => success
1727. => GET => http://localhost/api/utils/bash?cmd=pwd => success
1728. => GET => http://localhost/api/utils/bash?cmd=sudo%20rm%20-rf => No rm or sudo allowed
1729. => GET => http://localhost/api/utils/bash?preset=git_pull => success
1730. => GET => http://localhost/api/utils/bash/get_all_presets => All Preset returned
1731.
1732. # yahoo_fin Historical data
1733. => GET => http://localhost/api/utils/yahoo_fin/historical_data?symbol=AAPL&interval=5m&range=1mo => success
1734. => GET => http://localhost/api/utils/yahoo_fin/historical_data?symbol=AAPL&interval=5m&range=1mo => cache
1735.
1736.
1737. # Generating OAuth token for Simple_AUth
1738. # Oauth allows to genete refersh and access token by 3p provider
1739. # Here is how to use
1740. # 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)
1741. # 2. After reditecyion, you will getting a code, note the code and pass with below url
1742. # 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)
1743. # 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.
1744. # 5. velidate if that is working fine http://simplestore.dipankar.co.in/api/utils/schwab/get_all_data?auth_token_=
1745. # 6. You dont need to acess refresh the auth_token as it is done automically by the system.
1746.
1747.
1748. #=> GET => http://localhost/api/simple_auth/register?username=test&email=test@test.com&password_=test => Duplicate item found: username
1749. #=> GET => http://localhost/api/simple_auth/login?username=test&email=test@test.com&password_=test&_no_encode=1 => "auth_token_":"(?.*?)" #auth_token_: "9CC3B6"
1750. #=> 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
1751. #=> GET => http://localhost/api/simple_auth/get_info?auth_token_=9CC3B6&_no_encode=1 =>"test" # Note it will never expose the oauth_tokens_ ouside
1752. #=> GET => http://localhost/api/utils/schwab/get_all_data?auth_token_=9CC3B6
1753.
1754.
1755.
1756. # Set APis -> This allow to insert a string into a list in the document
1757. => !POST => http://localhost/api/test0/create => {"name":"dip","count":1} => "_id":"(?.*?)"
1758. => GET => http://localhost/api/test/set/add?_id={{id}}&field=tags&value=1234 => "1234"
1759. => GET => http://localhost/api/test/set/add?_id={{id}}&field=tags&value=1234,1235,1236,1237 => "1234","1235","1236"
1760. => GET => http://localhost/api/test/set/remove?_id={{id}}&field=tags&value=1234=> "1235","1236"
1761. => GET => http://localhost/api/test/set/remove?_id={{id}}&field=tags&value= 1234,1235, 1236=> "1237"
1762. => GET => http://localhost/api/test/set/clear?_id={{id}}&field=tags&value==> "tags":\[\]
1763. => GET => http://localhost/api/test/delete?_id={{id}} => success
1764.
1765.
1766. # Private tokens store and send message in telegeraom: Private Tokens + Telegram Utilities
1767. => GET => http://localhost/api/simple_auth/login?username=test&email=test@test.com&password_=test&_no_encode=1 => "auth_token_":"(?.*?)" #auth_token_: "9CC3B6"
1768. => GET => http://localhost/api/simple_auth/save_private_token?auth_token_={{login_token1}}&provider=TELEGRAM_BOT_PRIVATE_TOKEN&token=test => private tokens stored
1769. => GET => http://localhost/api/simple_auth/save_private_token?auth_token_={{login_token1}}&provider=UNKNOWN&token=test => Invalid enum string UNKNOWN,
1770. => GET => http://localhost/api/utils/telegram/send_msg?auth_token_={{login_token1}}&provider=UNKNOWN&chat_id=test&text=hello => 404
1771. => GET => http://localhost/api/simple_auth/save_private_token?auth_token_={{login_token1}}&provider=TELEGRAM_BOT_PRIVATE_TOKEN&token=7542704492:AAFivlt7Cu1Y7lbRjIAVmBguiVaDMr0w5RA => private tokens stored
1772. => GET => http://localhost/api/utils/telegram/send_msg?auth_token_={{login_token1}}&chat_id=test&text=hello => Bad Request: chat not found
1773. => GET => http://localhost/api/utils/telegram/send_msg?auth_token_={{login_token1}}&chat_id=-1002207345931&text=hello => Message sent successfully!
1774. => GET => http://localhost/api/simple_auth/logout?username=test&auth_token_={{login_token1}} => success
1775.
1776. # Interal db
1777. => GET => http://localhost/api/internal_test => access this information
1778.
1779. # testing passing osbucure data
1780. # 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
1781. => GET => http://localhost/api/test/count?_data=eyJuYW1lIjogImRpcCJ9 => success
1782. => POST => http://localhost/api/test/count => {"_data":"eyJuYW1lIjogImRpcCJ9"} => success
1783. => GET => http://localhost/api/test/count?_data=eyJuYW1lIjogImRpcCJ9xx => Unexpected non-whitespace
1784.
1785. # Accessing preloaded Data stored in server
1786. => GET => http://localhost/api/utils/preload_data?name=ExampleData => no such file or directory
1787.
1788.
1789. # schwab APIS ( not that you must have a valid access token - can;t test locally)
1790. => context => auth_token =>
1791. #=> GET => https://simplestore.dipankar.co.in/api/utils/schwab/get_all_data?auth_token_={{auth_token}} => success
1792. #=> GET => https://simplestore.dipankar.co.in/api/utils/schwab/quote?auth_token_={{auth_token}}&symbols=MSFT,AAPL => success
1793. #=> GET => https://simplestore.dipankar.co.in/api/utils/schwab/chains?auth_token_={{auth_token}}&symbol=AAPL => success
1794. #=> GET => http://localhost/api/utils/schwab/pricehistory?auth_token_={{auth_token}}&symbol=AAPL => success
1795. #=> GET => http://localhost/api/utils/schwab/net_delta?cmd=start => success
1796. #=> GET => http://localhost/api/utils/schwab/net_delta?cmd=stop => success
1797. #=> GET => http://localhost/api/utils/schwab/net_delta?cmd=error => success
1798. #=> GET => http://localhost/api/utils/schwab/net_delta?cmd=result => success
1799. #=> GET => http://localhost/api/utils/schwab/list_chains?symbol=AAPL => success
1800.
1801. # System_Config => This is a file based env store where we expose API to save and get it.
1802. # This is only access by SimpleStore Admin user
1803. # First generate a super user_token
1804. => GET => http://localhost/api/simple_auth/login?_no_encode=1&username=superuser@grodok.com&password_=superuser@123 => "auth_token_":"(?.*?)"
1805. => GET => http://localhost/api/utils/system_config/get?auth_token_={{su_login_token}} => data returned
1806. => GET => http://localhost/api/utils/system_config/set?auth_token_={{su_login_token}}&key=key&value=value => key
1807. => GET => http://localhost/api/utils/system_config/delete?auth_token_={{su_login_token}}&key=key&value=value => Deleted the key
1808.
1809.
1810. # Open api APIs
1811. # 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
1812. # => POST => http://localhost/api/utils/openai/transcribe => "audio=@audio.mpeg" => success # FIle upload is not supported by FEST
1813.
1814.
1815. # SCHWAB Price history API
1816. #=> GET => http://localhost/api/simple_auth/login?username=test&email=test@test.com&password_=test123&_no_encode=1 => "auth_token_":"(?.*?)" #auth_token_: "9CC3B6"
1817. #=> GET => http://localhost/api/utils/schwab/pricehistory?auth_token_={{auth_token_}}&symbol=AAPL&candle_type=5m => success
1818. #=> GET => http://localhost/api/utils/schwab/pricehistory?auth_token_={{auth_token_}}&symbol=AAPL&candle_type=5m => success
1819. #=> GET => http://localhost/api/utils/schwab/pricehistory?auth_token_={{auth_token_}}&symbol=AAPL&candle_type=5m&include_extended_data=1 => success
1820. #=> GET => http://{{server}}/api/simple_auth/logout_all?username=test1&force=1 => Logout done for . session forcefully
1821.
1822. # Testing Hacker news
1823. => GET => http://localhost/api/utils/hacker_news/get?type=top => "title"
1824.
1825.
1826. # Testing LLM API.
1827. => GET => http://localhost/api/utils/llm/lamma?role=teacher&prompt=return a valid json string => success
1828.
1829. # Test Crypto data.
1830. => POST => http://localhost/api/test_crypto/insert => {"name":"DIP"} => "encrypted":true
1831. => GET => http://localhost/api/test_crypto/get => "encrypted":true
1832. => GET => http://localhost/api/test_crypto/get?_no_encode=1=> \"name\":\"DIP\"
1833.
1834. # Inline Edit
1835. => GET => http://localhost/api/test/?_edit=1 => button type="button" onclick="clone
1836. => GET => http://localhost/api/test/?_edit=true => button type="button" onclick="clone
1837. => GET => http://localhost/api/test/?_edit=True => button type="button" onclick="clone
1838. => GET => http://localhost/api/test/?_edit=0 => Find successfully
1839.
1840. #########################################
1841. # Push notification
1842. #########################################
1843. => GET => http://localhost/api/push_notification/delete?_confirmstr=push_notification => success
1844. => GET => http://{{server}}/api/push_notification/add => Missing app_id
1845. => GET => http://{{server}}/api/push_notification/add?app_id=test&token=abc&os=android => Missing client_unique_id
1846. => GET => http://{{server}}/api/push_notification/add?app_id=test&token=abc&os=android&client_unique_id=123 => success
1847. => GET => http://{{server}}/api/push_notification/count => 1
1848.
1849. # test override older token.
1850. => GET => http://{{server}}/api/push_notification/add?app_id=test&token=dgjhjhdj&os=android&client_unique_id=123 => success
1851. => GET => http://{{server}}/api/push_notification/count => 1
1852.
1853. # test _no override when client_unique_id is not same
1854. => GET => http://{{server}}/api/push_notification/add?app_id=test&token=dgjhjhdj&os=android&client_unique_id=124 => success
1855. => GET => http://{{server}}/api/push_notification/count => 2
1856.
1857. # Adding with username
1858. => GET => http://{{server}}/api/push_notification/add?app_id=test&token=dgjhjhdj&os=android&client_unique_id=124&username=hello => success
1859. => GET => http://{{server}}/api/push_notification/count?username=hello => 1
1860.
1861. # test push_one.
1862. => GET => http://{{server}}/api/push_notification/push_one?token=abc&title=hello&body=No_Data => DRYRUN: true
1863. => GET => http://{{server}}/api/push_notification/push_one?token=abc&title=hello&body=No_Data&_no_dry_run=true => DRYRUN: false
1864.
1865. # For push_one there is no cross check for the token in DB or not.
1866. => GET => http://{{server}}/api/push_notification/push_one?token=unknonw_token&title=hello&body=No_Data => success
1867. => GET => http://{{server}}/api/push_notification/push_one?token=&title=hello&body=No_Data&_no_dry_run=true => error
1868.
1869. # Push once with action
1870. => GET => http://{{server}}/api/push_notification/push_one?token=unknonw_token&title=hello&body=No_Data&action_text=hello => Both action_text and action_deep_link must be provided
1871. => GET => http://{{server}}/api/push_notification/push_one?token=hello&title=hello&body=No_Data&_no_dry_run=truea&action_deep_link=hello => Both action_text and action_deep_link must be provided
1872. => GET => http://{{server}}/api/push_notification/push_one?token=hello&title=hello&body=No_Data&_no_dry_run=truea&action_deep_link=hello&action_text=hello => success
1873.
1874. # test push bulk with token coming from DB.
1875. => GET => http://{{server}}/api/push_notification/push?token=unknonw_token&title=hello&body=No_Data => Missing app_id
1876. => GET => http://{{server}}/api/push_notification/push?app_id=unknonw_token&title=hello&body=No_Data => No token found for app_id
1877. => GET => http://{{server}}/api/push_notification/push?app_id=test&title=hello&body=No_Data&_no_dry_run=truea&action_deep_link=hello&action_text=hello => success
1878.
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/?(?=/|$)/