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/?(?=/|$)/