@budibase/server 1.0.35 → 1.0.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/__mocks__/node-fetch.ts +21 -0
  2. package/builder/assets/bb-spaceship.8f6e81e1.svg +227 -0
  3. package/builder/assets/index.3079d0f9.js +1348 -0
  4. package/builder/assets/{index.4fb3f887.css → index.39e01193.css} +1 -1
  5. package/builder/assets/{vendor.470042a4.js → vendor.f9faf6ab.js} +88 -88
  6. package/builder/index.html +3 -3
  7. package/coverage/clover.xml +1589 -1344
  8. package/coverage/coverage-final.json +75 -74
  9. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/apikeys.js.html +3 -3
  11. package/coverage/lcov-report/api/controllers/application.js.html +73 -64
  12. package/coverage/lcov-report/api/controllers/auth.js.html +2 -2
  13. package/coverage/lcov-report/api/controllers/automation.js.html +22 -10
  14. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/cloud.js.html +13 -4
  16. package/coverage/lcov-report/api/controllers/component.js.html +4 -4
  17. package/coverage/lcov-report/api/controllers/datasource.js.html +170 -68
  18. package/coverage/lcov-report/api/controllers/dev.js.html +3 -3
  19. package/coverage/lcov-report/api/controllers/hosting.js.html +3 -3
  20. package/coverage/lcov-report/api/controllers/index.html +39 -54
  21. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/permission.js.html +3 -3
  25. package/coverage/lcov-report/api/controllers/query/index.html +126 -0
  26. package/coverage/lcov-report/api/controllers/{query.js.html → query/index.js.html} +225 -120
  27. package/coverage/lcov-report/api/controllers/query/validation.js.html +206 -0
  28. package/coverage/lcov-report/api/controllers/role.js.html +2 -2
  29. package/coverage/lcov-report/api/controllers/routing.js.html +2 -2
  30. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/index.html +22 -22
  32. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/row/internal.js.html +38 -11
  34. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +8 -5
  35. package/coverage/lcov-report/api/controllers/row/utils.js.html +29 -20
  36. package/coverage/lcov-report/api/controllers/screen.js.html +2 -2
  37. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  40. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/user.js.html +120 -12
  45. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  46. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  47. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  48. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  49. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  50. package/coverage/lcov-report/api/controllers/webhook.js.html +19 -7
  51. package/coverage/lcov-report/api/index.html +1 -1
  52. package/coverage/lcov-report/api/index.js.html +6 -6
  53. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/apikeys.js.html +2 -2
  55. package/coverage/lcov-report/api/routes/application.js.html +2 -2
  56. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/automation.js.html +2 -2
  58. package/coverage/lcov-report/api/routes/backup.js.html +2 -2
  59. package/coverage/lcov-report/api/routes/cloud.js.html +2 -2
  60. package/coverage/lcov-report/api/routes/component.js.html +2 -2
  61. package/coverage/lcov-report/api/routes/datasource.js.html +2 -2
  62. package/coverage/lcov-report/api/routes/deploy.js.html +2 -2
  63. package/coverage/lcov-report/api/routes/dev.js.html +2 -2
  64. package/coverage/lcov-report/api/routes/hosting.js.html +2 -2
  65. package/coverage/lcov-report/api/routes/index.html +9 -9
  66. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/integration.js.html +2 -2
  68. package/coverage/lcov-report/api/routes/layout.js.html +2 -2
  69. package/coverage/lcov-report/api/routes/metadata.js.html +2 -2
  70. package/coverage/lcov-report/api/routes/permission.js.html +12 -3
  71. package/coverage/lcov-report/api/routes/query.js.html +20 -86
  72. package/coverage/lcov-report/api/routes/role.js.html +2 -2
  73. package/coverage/lcov-report/api/routes/routing.js.html +2 -2
  74. package/coverage/lcov-report/api/routes/row.js.html +2 -2
  75. package/coverage/lcov-report/api/routes/screen.js.html +2 -2
  76. package/coverage/lcov-report/api/routes/script.js.html +2 -2
  77. package/coverage/lcov-report/api/routes/static.js.html +2 -2
  78. package/coverage/lcov-report/api/routes/table.js.html +2 -2
  79. package/coverage/lcov-report/api/routes/templates.js.html +2 -2
  80. package/coverage/lcov-report/api/routes/user.js.html +33 -3
  81. package/coverage/lcov-report/api/routes/view.js.html +2 -2
  82. package/coverage/lcov-report/api/routes/webhook.js.html +2 -2
  83. package/coverage/lcov-report/automations/actions.js.html +1 -1
  84. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  85. package/coverage/lcov-report/automations/bullboard.js.html +2 -2
  86. package/coverage/lcov-report/automations/index.html +20 -20
  87. package/coverage/lcov-report/automations/index.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/executeQuery.js.html +32 -8
  94. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/index.html +11 -11
  97. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +5 -8
  99. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  101. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  102. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  103. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  104. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  105. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  109. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  111. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  112. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  113. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  114. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  115. package/coverage/lcov-report/automations/utils.js.html +49 -16
  116. package/coverage/lcov-report/constants/index.html +1 -1
  117. package/coverage/lcov-report/constants/index.js.html +25 -25
  118. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  119. package/coverage/lcov-report/constants/screens.js.html +2 -2
  120. package/coverage/lcov-report/db/client.js.html +19 -19
  121. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  122. package/coverage/lcov-report/db/index.html +15 -15
  123. package/coverage/lcov-report/db/index.js.html +3 -3
  124. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  125. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  126. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  127. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  128. package/coverage/lcov-report/db/newid.js.html +4 -4
  129. package/coverage/lcov-report/db/utils.js.html +108 -81
  130. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  131. package/coverage/lcov-report/events/index.html +1 -1
  132. package/coverage/lcov-report/events/index.js.html +1 -1
  133. package/coverage/lcov-report/events/utils.js.html +1 -1
  134. package/coverage/lcov-report/index.html +99 -84
  135. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  136. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  137. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  138. package/coverage/lcov-report/middleware/authorized.js.html +12 -12
  139. package/coverage/lcov-report/middleware/builder.js.html +10 -10
  140. package/coverage/lcov-report/middleware/currentapp.js.html +48 -36
  141. package/coverage/lcov-report/middleware/index.html +1 -1
  142. package/coverage/lcov-report/middleware/joi-validator.js.html +11 -11
  143. package/coverage/lcov-report/middleware/resourceId.js.html +18 -18
  144. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  145. package/coverage/lcov-report/middleware/usageQuota.js.html +2 -2
  146. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  147. package/coverage/lcov-report/threads/automation.js.html +3 -3
  148. package/coverage/lcov-report/threads/index.html +32 -32
  149. package/coverage/lcov-report/threads/index.js.html +12 -12
  150. package/coverage/lcov-report/threads/query.js.html +560 -65
  151. package/coverage/lcov-report/threads/utils.js.html +210 -15
  152. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  153. package/coverage/lcov-report/utilities/budibaseDir.js.html +2 -2
  154. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  155. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  156. package/coverage/lcov-report/utilities/global.js.html +28 -19
  157. package/coverage/lcov-report/utilities/index.html +19 -19
  158. package/coverage/lcov-report/utilities/index.js.html +70 -37
  159. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  160. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  161. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  162. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  163. package/coverage/lcov-report/utilities/rowProcessor/index.html +19 -19
  164. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +247 -10
  165. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  166. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  167. package/coverage/lcov-report/utilities/security.js.html +14 -5
  168. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  169. package/coverage/lcov-report/utilities/users.js.html +1 -1
  170. package/coverage/lcov-report/utilities/workerRequests.js.html +22 -22
  171. package/coverage/lcov.info +2735 -2313
  172. package/dist/api/controllers/apikeys.js +2 -2
  173. package/dist/api/controllers/application.js +4 -4
  174. package/dist/api/controllers/auth.js +1 -1
  175. package/dist/api/controllers/automation.js +7 -5
  176. package/dist/api/controllers/cloud.js +2 -2
  177. package/dist/api/controllers/datasource.js +29 -0
  178. package/dist/api/controllers/deploy/index.js +2 -2
  179. package/dist/api/controllers/dev.js +2 -2
  180. package/dist/api/controllers/hosting.js +2 -2
  181. package/dist/api/controllers/permission.js +2 -2
  182. package/dist/api/controllers/query/import/index.js +79 -0
  183. package/dist/api/controllers/query/import/sources/base/index.js +64 -0
  184. package/dist/api/controllers/query/import/sources/base/openapi.js +42 -0
  185. package/dist/api/controllers/query/import/sources/curl.js +96 -0
  186. package/dist/api/controllers/query/import/sources/openapi2.js +142 -0
  187. package/dist/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +253 -0
  188. package/dist/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +1054 -0
  189. package/dist/api/controllers/{query.js → query/index.js} +88 -56
  190. package/dist/api/controllers/query/validation.js +38 -0
  191. package/dist/api/controllers/role.js +1 -1
  192. package/dist/api/controllers/routing.js +1 -1
  193. package/dist/api/controllers/row/internal.js +14 -6
  194. package/dist/api/controllers/row/internalSearch.js +3 -2
  195. package/dist/api/controllers/row/utils.js +13 -6
  196. package/dist/api/controllers/screen.js +1 -1
  197. package/dist/api/controllers/user.js +40 -4
  198. package/dist/api/controllers/webhook.js +5 -1
  199. package/dist/api/index.js +1 -1
  200. package/dist/api/routes/apikeys.js +1 -1
  201. package/dist/api/routes/application.js +1 -1
  202. package/dist/api/routes/automation.js +1 -1
  203. package/dist/api/routes/backup.js +1 -1
  204. package/dist/api/routes/cloud.js +1 -1
  205. package/dist/api/routes/component.js +1 -1
  206. package/dist/api/routes/datasource.js +1 -1
  207. package/dist/api/routes/deploy.js +1 -1
  208. package/dist/api/routes/dev.js +1 -1
  209. package/dist/api/routes/hosting.js +1 -1
  210. package/dist/api/routes/integration.js +1 -1
  211. package/dist/api/routes/layout.js +1 -1
  212. package/dist/api/routes/metadata.js +1 -1
  213. package/dist/api/routes/permission.js +1 -1
  214. package/dist/api/routes/query.js +6 -34
  215. package/dist/api/routes/role.js +1 -1
  216. package/dist/api/routes/routing.js +1 -1
  217. package/dist/api/routes/row.js +1 -1
  218. package/dist/api/routes/screen.js +1 -1
  219. package/dist/api/routes/script.js +1 -1
  220. package/dist/api/routes/static.js +1 -1
  221. package/dist/api/routes/table.js +1 -1
  222. package/dist/api/routes/templates.js +1 -1
  223. package/dist/api/routes/tests/utilities/TestFunctions.js +1 -1
  224. package/dist/api/routes/user.js +4 -2
  225. package/dist/api/routes/view.js +1 -1
  226. package/dist/api/routes/webhook.js +1 -1
  227. package/dist/app.js +1 -1
  228. package/dist/automations/bullboard.js +1 -1
  229. package/dist/automations/steps/executeQuery.js +9 -2
  230. package/dist/automations/steps/outgoingWebhook.js +2 -3
  231. package/dist/automations/utils.js +11 -1
  232. package/dist/constants/index.js +3 -3
  233. package/dist/constants/screens.js +1 -1
  234. package/dist/db/client.js +1 -1
  235. package/dist/db/utils.js +9 -1
  236. package/dist/definitions/datasource.js +6 -1
  237. package/dist/integrations/base/sqlTable.js +1 -1
  238. package/dist/integrations/rest.js +259 -120
  239. package/dist/integrations/utils.js +40 -37
  240. package/dist/middleware/authorized.js +2 -2
  241. package/dist/middleware/builder.js +2 -2
  242. package/dist/middleware/currentapp.js +6 -6
  243. package/dist/middleware/usageQuota.js +1 -1
  244. package/dist/package.json +11 -4
  245. package/dist/tests/utilities/TestConfiguration.js +55 -8
  246. package/dist/tests/utilities/structures.js +2 -2
  247. package/dist/threads/automation.js +2 -2
  248. package/dist/threads/query.js +195 -38
  249. package/dist/threads/utils.js +62 -1
  250. package/dist/tsconfig.tsbuildinfo +1 -1
  251. package/dist/utilities/budibaseDir.js +1 -1
  252. package/dist/utilities/fileSystem/utilities.js +2 -1
  253. package/dist/utilities/global.js +5 -5
  254. package/dist/utilities/index.js +11 -1
  255. package/dist/utilities/redis.js +1 -1
  256. package/dist/utilities/rowProcessor/index.js +76 -0
  257. package/dist/utilities/security.js +2 -2
  258. package/dist/utilities/usageQuota.js +2 -2
  259. package/dist/utilities/workerRequests.js +3 -3
  260. package/package.json +12 -5
  261. package/scripts/replicateApp.js +1 -1
  262. package/src/api/controllers/apikeys.js +2 -2
  263. package/src/api/controllers/application.js +7 -4
  264. package/src/api/controllers/auth.js +1 -1
  265. package/src/api/controllers/automation.js +8 -4
  266. package/src/api/controllers/cloud.js +5 -2
  267. package/src/api/controllers/datasource.js +34 -0
  268. package/src/api/controllers/deploy/index.js +2 -2
  269. package/src/api/controllers/dev.js +2 -2
  270. package/src/api/controllers/hosting.js +2 -2
  271. package/src/api/controllers/permission.js +2 -2
  272. package/src/api/controllers/query/import/index.ts +85 -0
  273. package/src/api/controllers/query/import/sources/base/index.ts +87 -0
  274. package/src/api/controllers/query/import/sources/base/openapi.ts +24 -0
  275. package/src/api/controllers/query/import/sources/curl.ts +102 -0
  276. package/src/api/controllers/query/import/sources/openapi2.ts +163 -0
  277. package/src/api/controllers/query/import/sources/tests/curl/curl.spec.js +103 -0
  278. package/src/api/controllers/query/import/sources/tests/curl/data/delete.txt +1 -0
  279. package/src/api/controllers/query/import/sources/tests/curl/data/empty-body.txt +2 -0
  280. package/src/api/controllers/query/import/sources/tests/curl/data/get.txt +1 -0
  281. package/src/api/controllers/query/import/sources/tests/curl/data/headers.txt +3 -0
  282. package/src/api/controllers/query/import/sources/tests/curl/data/patch.txt +2 -0
  283. package/src/api/controllers/query/import/sources/tests/curl/data/path.txt +1 -0
  284. package/src/api/controllers/query/import/sources/tests/curl/data/post.txt +2 -0
  285. package/src/api/controllers/query/import/sources/tests/curl/data/put.txt +2 -0
  286. package/src/api/controllers/query/import/sources/tests/curl/data/query.txt +1 -0
  287. package/src/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +253 -0
  288. package/src/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.yaml +160 -0
  289. package/src/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +1054 -0
  290. package/src/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.yaml +711 -0
  291. package/src/api/controllers/query/import/sources/tests/openapi2/openapi2.spec.js +238 -0
  292. package/src/api/controllers/query/import/tests/index.spec.js +109 -0
  293. package/src/api/controllers/query/index.js +196 -0
  294. package/src/api/controllers/query/validation.js +42 -0
  295. package/src/api/controllers/role.js +1 -1
  296. package/src/api/controllers/routing.js +1 -1
  297. package/src/api/controllers/row/internal.js +14 -5
  298. package/src/api/controllers/row/internalSearch.js +3 -2
  299. package/src/api/controllers/row/utils.js +11 -8
  300. package/src/api/controllers/screen.js +1 -1
  301. package/src/api/controllers/user.js +39 -3
  302. package/src/api/controllers/webhook.js +5 -1
  303. package/src/api/index.js +1 -1
  304. package/src/api/routes/apikeys.js +1 -1
  305. package/src/api/routes/application.js +1 -1
  306. package/src/api/routes/automation.js +1 -1
  307. package/src/api/routes/backup.js +1 -1
  308. package/src/api/routes/cloud.js +1 -1
  309. package/src/api/routes/component.js +1 -1
  310. package/src/api/routes/datasource.js +1 -1
  311. package/src/api/routes/deploy.js +1 -1
  312. package/src/api/routes/dev.js +1 -1
  313. package/src/api/routes/hosting.js +1 -1
  314. package/src/api/routes/integration.js +1 -1
  315. package/src/api/routes/layout.js +1 -1
  316. package/src/api/routes/metadata.js +1 -1
  317. package/src/api/routes/permission.js +4 -1
  318. package/src/api/routes/query.js +14 -36
  319. package/src/api/routes/role.js +1 -1
  320. package/src/api/routes/routing.js +1 -1
  321. package/src/api/routes/row.js +1 -1
  322. package/src/api/routes/screen.js +1 -1
  323. package/src/api/routes/script.js +1 -1
  324. package/src/api/routes/static.js +1 -1
  325. package/src/api/routes/table.js +1 -1
  326. package/src/api/routes/templates.js +1 -1
  327. package/src/api/routes/tests/datasource.spec.js +45 -0
  328. package/src/api/routes/tests/permissions.spec.js +1 -1
  329. package/src/api/routes/tests/query.spec.js +70 -1
  330. package/src/api/routes/tests/role.spec.js +2 -2
  331. package/src/api/routes/tests/routing.spec.js +1 -1
  332. package/src/api/routes/tests/user.spec.js +1 -1
  333. package/src/api/routes/tests/utilities/TestFunctions.js +1 -1
  334. package/src/api/routes/user.js +11 -1
  335. package/src/api/routes/view.js +1 -1
  336. package/src/api/routes/webhook.js +1 -1
  337. package/src/app.ts +1 -1
  338. package/src/automations/bullboard.js +1 -1
  339. package/src/automations/steps/executeQuery.js +10 -2
  340. package/src/automations/steps/outgoingWebhook.js +2 -3
  341. package/src/automations/utils.js +12 -1
  342. package/src/constants/index.js +3 -3
  343. package/src/constants/screens.js +1 -1
  344. package/src/db/client.js +1 -1
  345. package/src/db/utils.js +10 -1
  346. package/src/definitions/common.ts +2 -16
  347. package/src/definitions/datasource.ts +98 -1
  348. package/src/integrations/base/IntegrationBase.ts +4 -4
  349. package/src/integrations/base/sqlTable.ts +1 -1
  350. package/src/integrations/rest.ts +311 -138
  351. package/src/integrations/tests/rest.spec.js +432 -21
  352. package/src/integrations/utils.ts +8 -7
  353. package/src/middleware/authorized.js +2 -2
  354. package/src/middleware/builder.js +2 -2
  355. package/src/middleware/currentapp.js +11 -7
  356. package/src/middleware/tests/authorized.spec.js +2 -2
  357. package/src/middleware/tests/currentapp.spec.js +35 -41
  358. package/src/middleware/tests/usageQuota.spec.js +1 -1
  359. package/src/middleware/usageQuota.js +1 -1
  360. package/src/tests/utilities/TestConfiguration.js +65 -8
  361. package/src/tests/utilities/structures.js +2 -2
  362. package/src/threads/automation.js +2 -2
  363. package/src/threads/query.js +204 -39
  364. package/src/threads/utils.js +66 -1
  365. package/src/utilities/budibaseDir.js +1 -1
  366. package/src/utilities/fileSystem/utilities.js +3 -1
  367. package/src/utilities/global.js +8 -5
  368. package/src/utilities/index.js +12 -1
  369. package/src/utilities/redis.js +1 -1
  370. package/src/utilities/rowProcessor/index.js +79 -0
  371. package/src/utilities/security.js +5 -2
  372. package/src/utilities/usageQuota.js +2 -2
  373. package/src/utilities/workerRequests.js +3 -3
  374. package/builder/assets/index.9ac33cf1.js +0 -1316
  375. package/src/api/controllers/query.js +0 -161
@@ -0,0 +1,1054 @@
1
+ {
2
+ "swagger": "2.0",
3
+ "info": {
4
+ "description": "This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters.",
5
+ "version": "1.0.5",
6
+ "title": "Swagger Petstore",
7
+ "termsOfService": "http://swagger.io/terms/",
8
+ "contact": {
9
+ "email": "apiteam@swagger.io"
10
+ },
11
+ "license": {
12
+ "name": "Apache 2.0",
13
+ "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
14
+ }
15
+ },
16
+ "host": "petstore.swagger.io",
17
+ "basePath": "/v2",
18
+ "tags": [
19
+ {
20
+ "name": "pet",
21
+ "description": "Everything about your Pets",
22
+ "externalDocs": {
23
+ "description": "Find out more",
24
+ "url": "http://swagger.io"
25
+ }
26
+ },
27
+ {
28
+ "name": "store",
29
+ "description": "Access to Petstore orders"
30
+ },
31
+ {
32
+ "name": "user",
33
+ "description": "Operations about user",
34
+ "externalDocs": {
35
+ "description": "Find out more about our store",
36
+ "url": "http://swagger.io"
37
+ }
38
+ }
39
+ ],
40
+ "schemes": [
41
+ "https",
42
+ "http"
43
+ ],
44
+ "paths": {
45
+ "/pet/{petId}/uploadImage": {
46
+ "post": {
47
+ "tags": [
48
+ "pet"
49
+ ],
50
+ "summary": "uploads an image",
51
+ "description": "",
52
+ "operationId": "uploadFile",
53
+ "consumes": [
54
+ "multipart/form-data"
55
+ ],
56
+ "produces": [
57
+ "application/json"
58
+ ],
59
+ "parameters": [
60
+ {
61
+ "name": "petId",
62
+ "in": "path",
63
+ "description": "ID of pet to update",
64
+ "required": true,
65
+ "type": "integer",
66
+ "format": "int64"
67
+ },
68
+ {
69
+ "name": "additionalMetadata",
70
+ "in": "formData",
71
+ "description": "Additional data to pass to server",
72
+ "required": false,
73
+ "type": "string"
74
+ },
75
+ {
76
+ "name": "file",
77
+ "in": "formData",
78
+ "description": "file to upload",
79
+ "required": false,
80
+ "type": "file"
81
+ }
82
+ ],
83
+ "responses": {
84
+ "200": {
85
+ "description": "successful operation",
86
+ "schema": {
87
+ "$ref": "#/definitions/ApiResponse"
88
+ }
89
+ }
90
+ },
91
+ "security": [
92
+ {
93
+ "petstore_auth": [
94
+ "write:pets",
95
+ "read:pets"
96
+ ]
97
+ }
98
+ ]
99
+ }
100
+ },
101
+ "/pet": {
102
+ "post": {
103
+ "tags": [
104
+ "pet"
105
+ ],
106
+ "summary": "Add a new pet to the store",
107
+ "description": "",
108
+ "operationId": "addPet",
109
+ "consumes": [
110
+ "application/json",
111
+ "application/xml"
112
+ ],
113
+ "produces": [
114
+ "application/json",
115
+ "application/xml"
116
+ ],
117
+ "parameters": [
118
+ {
119
+ "in": "body",
120
+ "name": "body",
121
+ "description": "Pet object that needs to be added to the store",
122
+ "required": true,
123
+ "schema": {
124
+ "$ref": "#/definitions/Pet"
125
+ }
126
+ }
127
+ ],
128
+ "responses": {
129
+ "405": {
130
+ "description": "Invalid input"
131
+ }
132
+ },
133
+ "security": [
134
+ {
135
+ "petstore_auth": [
136
+ "write:pets",
137
+ "read:pets"
138
+ ]
139
+ }
140
+ ]
141
+ },
142
+ "put": {
143
+ "tags": [
144
+ "pet"
145
+ ],
146
+ "summary": "Update an existing pet",
147
+ "description": "",
148
+ "operationId": "updatePet",
149
+ "consumes": [
150
+ "application/json",
151
+ "application/xml"
152
+ ],
153
+ "produces": [
154
+ "application/json",
155
+ "application/xml"
156
+ ],
157
+ "parameters": [
158
+ {
159
+ "in": "body",
160
+ "name": "body",
161
+ "description": "Pet object that needs to be added to the store",
162
+ "required": true,
163
+ "schema": {
164
+ "$ref": "#/definitions/Pet"
165
+ }
166
+ }
167
+ ],
168
+ "responses": {
169
+ "400": {
170
+ "description": "Invalid ID supplied"
171
+ },
172
+ "404": {
173
+ "description": "Pet not found"
174
+ },
175
+ "405": {
176
+ "description": "Validation exception"
177
+ }
178
+ },
179
+ "security": [
180
+ {
181
+ "petstore_auth": [
182
+ "write:pets",
183
+ "read:pets"
184
+ ]
185
+ }
186
+ ]
187
+ }
188
+ },
189
+ "/pet/findByStatus": {
190
+ "get": {
191
+ "tags": [
192
+ "pet"
193
+ ],
194
+ "summary": "Finds Pets by status",
195
+ "description": "Multiple status values can be provided with comma separated strings",
196
+ "operationId": "findPetsByStatus",
197
+ "produces": [
198
+ "application/json",
199
+ "application/xml"
200
+ ],
201
+ "parameters": [
202
+ {
203
+ "name": "status",
204
+ "in": "query",
205
+ "description": "Status values that need to be considered for filter",
206
+ "required": true,
207
+ "type": "array",
208
+ "items": {
209
+ "type": "string",
210
+ "enum": [
211
+ "available",
212
+ "pending",
213
+ "sold"
214
+ ],
215
+ "default": "available"
216
+ },
217
+ "collectionFormat": "multi"
218
+ }
219
+ ],
220
+ "responses": {
221
+ "200": {
222
+ "description": "successful operation",
223
+ "schema": {
224
+ "type": "array",
225
+ "items": {
226
+ "$ref": "#/definitions/Pet"
227
+ }
228
+ }
229
+ },
230
+ "400": {
231
+ "description": "Invalid status value"
232
+ }
233
+ },
234
+ "security": [
235
+ {
236
+ "petstore_auth": [
237
+ "write:pets",
238
+ "read:pets"
239
+ ]
240
+ }
241
+ ]
242
+ }
243
+ },
244
+ "/pet/findByTags": {
245
+ "get": {
246
+ "tags": [
247
+ "pet"
248
+ ],
249
+ "summary": "Finds Pets by tags",
250
+ "description": "Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.",
251
+ "operationId": "findPetsByTags",
252
+ "produces": [
253
+ "application/json",
254
+ "application/xml"
255
+ ],
256
+ "parameters": [
257
+ {
258
+ "name": "tags",
259
+ "in": "query",
260
+ "description": "Tags to filter by",
261
+ "required": true,
262
+ "type": "array",
263
+ "items": {
264
+ "type": "string"
265
+ },
266
+ "collectionFormat": "multi"
267
+ }
268
+ ],
269
+ "responses": {
270
+ "200": {
271
+ "description": "successful operation",
272
+ "schema": {
273
+ "type": "array",
274
+ "items": {
275
+ "$ref": "#/definitions/Pet"
276
+ }
277
+ }
278
+ },
279
+ "400": {
280
+ "description": "Invalid tag value"
281
+ }
282
+ },
283
+ "security": [
284
+ {
285
+ "petstore_auth": [
286
+ "write:pets",
287
+ "read:pets"
288
+ ]
289
+ }
290
+ ],
291
+ "deprecated": true
292
+ }
293
+ },
294
+ "/pet/{petId}": {
295
+ "get": {
296
+ "tags": [
297
+ "pet"
298
+ ],
299
+ "summary": "Find pet by ID",
300
+ "description": "Returns a single pet",
301
+ "operationId": "getPetById",
302
+ "produces": [
303
+ "application/json",
304
+ "application/xml"
305
+ ],
306
+ "parameters": [
307
+ {
308
+ "name": "petId",
309
+ "in": "path",
310
+ "description": "ID of pet to return",
311
+ "required": true,
312
+ "type": "integer",
313
+ "format": "int64"
314
+ }
315
+ ],
316
+ "responses": {
317
+ "200": {
318
+ "description": "successful operation",
319
+ "schema": {
320
+ "$ref": "#/definitions/Pet"
321
+ }
322
+ },
323
+ "400": {
324
+ "description": "Invalid ID supplied"
325
+ },
326
+ "404": {
327
+ "description": "Pet not found"
328
+ }
329
+ },
330
+ "security": [
331
+ {
332
+ "api_key": []
333
+ }
334
+ ]
335
+ },
336
+ "post": {
337
+ "tags": [
338
+ "pet"
339
+ ],
340
+ "summary": "Updates a pet in the store with form data",
341
+ "description": "",
342
+ "operationId": "updatePetWithForm",
343
+ "consumes": [
344
+ "application/x-www-form-urlencoded"
345
+ ],
346
+ "produces": [
347
+ "application/json",
348
+ "application/xml"
349
+ ],
350
+ "parameters": [
351
+ {
352
+ "name": "petId",
353
+ "in": "path",
354
+ "description": "ID of pet that needs to be updated",
355
+ "required": true,
356
+ "type": "integer",
357
+ "format": "int64"
358
+ },
359
+ {
360
+ "name": "name",
361
+ "in": "formData",
362
+ "description": "Updated name of the pet",
363
+ "required": false,
364
+ "type": "string"
365
+ },
366
+ {
367
+ "name": "status",
368
+ "in": "formData",
369
+ "description": "Updated status of the pet",
370
+ "required": false,
371
+ "type": "string"
372
+ }
373
+ ],
374
+ "responses": {
375
+ "405": {
376
+ "description": "Invalid input"
377
+ }
378
+ },
379
+ "security": [
380
+ {
381
+ "petstore_auth": [
382
+ "write:pets",
383
+ "read:pets"
384
+ ]
385
+ }
386
+ ]
387
+ },
388
+ "delete": {
389
+ "tags": [
390
+ "pet"
391
+ ],
392
+ "summary": "Deletes a pet",
393
+ "description": "",
394
+ "operationId": "deletePet",
395
+ "produces": [
396
+ "application/json",
397
+ "application/xml"
398
+ ],
399
+ "parameters": [
400
+ {
401
+ "name": "api_key",
402
+ "in": "header",
403
+ "required": false,
404
+ "type": "string"
405
+ },
406
+ {
407
+ "name": "petId",
408
+ "in": "path",
409
+ "description": "Pet id to delete",
410
+ "required": true,
411
+ "type": "integer",
412
+ "format": "int64"
413
+ }
414
+ ],
415
+ "responses": {
416
+ "400": {
417
+ "description": "Invalid ID supplied"
418
+ },
419
+ "404": {
420
+ "description": "Pet not found"
421
+ }
422
+ },
423
+ "security": [
424
+ {
425
+ "petstore_auth": [
426
+ "write:pets",
427
+ "read:pets"
428
+ ]
429
+ }
430
+ ]
431
+ }
432
+ },
433
+ "/store/inventory": {
434
+ "get": {
435
+ "tags": [
436
+ "store"
437
+ ],
438
+ "summary": "Returns pet inventories by status",
439
+ "description": "Returns a map of status codes to quantities",
440
+ "operationId": "getInventory",
441
+ "produces": [
442
+ "application/json"
443
+ ],
444
+ "parameters": [],
445
+ "responses": {
446
+ "200": {
447
+ "description": "successful operation",
448
+ "schema": {
449
+ "type": "object",
450
+ "additionalProperties": {
451
+ "type": "integer",
452
+ "format": "int32"
453
+ }
454
+ }
455
+ }
456
+ },
457
+ "security": [
458
+ {
459
+ "api_key": []
460
+ }
461
+ ]
462
+ }
463
+ },
464
+ "/store/order": {
465
+ "post": {
466
+ "tags": [
467
+ "store"
468
+ ],
469
+ "summary": "Place an order for a pet",
470
+ "description": "",
471
+ "operationId": "placeOrder",
472
+ "consumes": [
473
+ "application/json"
474
+ ],
475
+ "produces": [
476
+ "application/json",
477
+ "application/xml"
478
+ ],
479
+ "parameters": [
480
+ {
481
+ "in": "body",
482
+ "name": "body",
483
+ "description": "order placed for purchasing the pet",
484
+ "required": true,
485
+ "schema": {
486
+ "$ref": "#/definitions/Order"
487
+ }
488
+ }
489
+ ],
490
+ "responses": {
491
+ "200": {
492
+ "description": "successful operation",
493
+ "schema": {
494
+ "$ref": "#/definitions/Order"
495
+ }
496
+ },
497
+ "400": {
498
+ "description": "Invalid Order"
499
+ }
500
+ }
501
+ }
502
+ },
503
+ "/store/order/{orderId}": {
504
+ "get": {
505
+ "tags": [
506
+ "store"
507
+ ],
508
+ "summary": "Find purchase order by ID",
509
+ "description": "For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions",
510
+ "operationId": "getOrderById",
511
+ "produces": [
512
+ "application/json",
513
+ "application/xml"
514
+ ],
515
+ "parameters": [
516
+ {
517
+ "name": "orderId",
518
+ "in": "path",
519
+ "description": "ID of pet that needs to be fetched",
520
+ "required": true,
521
+ "type": "integer",
522
+ "maximum": 10,
523
+ "minimum": 1,
524
+ "format": "int64"
525
+ }
526
+ ],
527
+ "responses": {
528
+ "200": {
529
+ "description": "successful operation",
530
+ "schema": {
531
+ "$ref": "#/definitions/Order"
532
+ }
533
+ },
534
+ "400": {
535
+ "description": "Invalid ID supplied"
536
+ },
537
+ "404": {
538
+ "description": "Order not found"
539
+ }
540
+ }
541
+ },
542
+ "delete": {
543
+ "tags": [
544
+ "store"
545
+ ],
546
+ "summary": "Delete purchase order by ID",
547
+ "description": "For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors",
548
+ "operationId": "deleteOrder",
549
+ "produces": [
550
+ "application/json",
551
+ "application/xml"
552
+ ],
553
+ "parameters": [
554
+ {
555
+ "name": "orderId",
556
+ "in": "path",
557
+ "description": "ID of the order that needs to be deleted",
558
+ "required": true,
559
+ "type": "integer",
560
+ "minimum": 1,
561
+ "format": "int64"
562
+ }
563
+ ],
564
+ "responses": {
565
+ "400": {
566
+ "description": "Invalid ID supplied"
567
+ },
568
+ "404": {
569
+ "description": "Order not found"
570
+ }
571
+ }
572
+ }
573
+ },
574
+ "/user/createWithList": {
575
+ "post": {
576
+ "tags": [
577
+ "user"
578
+ ],
579
+ "summary": "Creates list of users with given input array",
580
+ "description": "",
581
+ "operationId": "createUsersWithListInput",
582
+ "consumes": [
583
+ "application/json"
584
+ ],
585
+ "produces": [
586
+ "application/json",
587
+ "application/xml"
588
+ ],
589
+ "parameters": [
590
+ {
591
+ "in": "body",
592
+ "name": "body",
593
+ "description": "List of user object",
594
+ "required": true,
595
+ "schema": {
596
+ "type": "array",
597
+ "items": {
598
+ "$ref": "#/definitions/User"
599
+ }
600
+ }
601
+ }
602
+ ],
603
+ "responses": {
604
+ "default": {
605
+ "description": "successful operation"
606
+ }
607
+ }
608
+ }
609
+ },
610
+ "/user/{username}": {
611
+ "get": {
612
+ "tags": [
613
+ "user"
614
+ ],
615
+ "summary": "Get user by user name",
616
+ "description": "",
617
+ "operationId": "getUserByName",
618
+ "produces": [
619
+ "application/json",
620
+ "application/xml"
621
+ ],
622
+ "parameters": [
623
+ {
624
+ "name": "username",
625
+ "in": "path",
626
+ "description": "The name that needs to be fetched. Use user1 for testing. ",
627
+ "required": true,
628
+ "type": "string"
629
+ }
630
+ ],
631
+ "responses": {
632
+ "200": {
633
+ "description": "successful operation",
634
+ "schema": {
635
+ "$ref": "#/definitions/User"
636
+ }
637
+ },
638
+ "400": {
639
+ "description": "Invalid username supplied"
640
+ },
641
+ "404": {
642
+ "description": "User not found"
643
+ }
644
+ }
645
+ },
646
+ "put": {
647
+ "tags": [
648
+ "user"
649
+ ],
650
+ "summary": "Updated user",
651
+ "description": "This can only be done by the logged in user.",
652
+ "operationId": "updateUser",
653
+ "consumes": [
654
+ "application/json"
655
+ ],
656
+ "produces": [
657
+ "application/json",
658
+ "application/xml"
659
+ ],
660
+ "parameters": [
661
+ {
662
+ "name": "username",
663
+ "in": "path",
664
+ "description": "name that need to be updated",
665
+ "required": true,
666
+ "type": "string"
667
+ },
668
+ {
669
+ "in": "body",
670
+ "name": "body",
671
+ "description": "Updated user object",
672
+ "required": true,
673
+ "schema": {
674
+ "$ref": "#/definitions/User"
675
+ }
676
+ }
677
+ ],
678
+ "responses": {
679
+ "400": {
680
+ "description": "Invalid user supplied"
681
+ },
682
+ "404": {
683
+ "description": "User not found"
684
+ }
685
+ }
686
+ },
687
+ "delete": {
688
+ "tags": [
689
+ "user"
690
+ ],
691
+ "summary": "Delete user",
692
+ "description": "This can only be done by the logged in user.",
693
+ "operationId": "deleteUser",
694
+ "produces": [
695
+ "application/json",
696
+ "application/xml"
697
+ ],
698
+ "parameters": [
699
+ {
700
+ "name": "username",
701
+ "in": "path",
702
+ "description": "The name that needs to be deleted",
703
+ "required": true,
704
+ "type": "string"
705
+ }
706
+ ],
707
+ "responses": {
708
+ "400": {
709
+ "description": "Invalid username supplied"
710
+ },
711
+ "404": {
712
+ "description": "User not found"
713
+ }
714
+ }
715
+ }
716
+ },
717
+ "/user/login": {
718
+ "get": {
719
+ "tags": [
720
+ "user"
721
+ ],
722
+ "summary": "Logs user into the system",
723
+ "description": "",
724
+ "operationId": "loginUser",
725
+ "produces": [
726
+ "application/json",
727
+ "application/xml"
728
+ ],
729
+ "parameters": [
730
+ {
731
+ "name": "username",
732
+ "in": "query",
733
+ "description": "The user name for login",
734
+ "required": true,
735
+ "type": "string"
736
+ },
737
+ {
738
+ "name": "password",
739
+ "in": "query",
740
+ "description": "The password for login in clear text",
741
+ "required": true,
742
+ "type": "string"
743
+ }
744
+ ],
745
+ "responses": {
746
+ "200": {
747
+ "description": "successful operation",
748
+ "headers": {
749
+ "X-Expires-After": {
750
+ "type": "string",
751
+ "format": "date-time",
752
+ "description": "date in UTC when token expires"
753
+ },
754
+ "X-Rate-Limit": {
755
+ "type": "integer",
756
+ "format": "int32",
757
+ "description": "calls per hour allowed by the user"
758
+ }
759
+ },
760
+ "schema": {
761
+ "type": "string"
762
+ }
763
+ },
764
+ "400": {
765
+ "description": "Invalid username/password supplied"
766
+ }
767
+ }
768
+ }
769
+ },
770
+ "/user/logout": {
771
+ "get": {
772
+ "tags": [
773
+ "user"
774
+ ],
775
+ "summary": "Logs out current logged in user session",
776
+ "description": "",
777
+ "operationId": "logoutUser",
778
+ "produces": [
779
+ "application/json",
780
+ "application/xml"
781
+ ],
782
+ "parameters": [],
783
+ "responses": {
784
+ "default": {
785
+ "description": "successful operation"
786
+ }
787
+ }
788
+ }
789
+ },
790
+ "/user/createWithArray": {
791
+ "post": {
792
+ "tags": [
793
+ "user"
794
+ ],
795
+ "summary": "Creates list of users with given input array",
796
+ "description": "",
797
+ "operationId": "createUsersWithArrayInput",
798
+ "consumes": [
799
+ "application/json"
800
+ ],
801
+ "produces": [
802
+ "application/json",
803
+ "application/xml"
804
+ ],
805
+ "parameters": [
806
+ {
807
+ "in": "body",
808
+ "name": "body",
809
+ "description": "List of user object",
810
+ "required": true,
811
+ "schema": {
812
+ "type": "array",
813
+ "items": {
814
+ "$ref": "#/definitions/User"
815
+ }
816
+ }
817
+ }
818
+ ],
819
+ "responses": {
820
+ "default": {
821
+ "description": "successful operation"
822
+ }
823
+ }
824
+ }
825
+ },
826
+ "/user": {
827
+ "post": {
828
+ "tags": [
829
+ "user"
830
+ ],
831
+ "summary": "Create user",
832
+ "description": "This can only be done by the logged in user.",
833
+ "operationId": "createUser",
834
+ "consumes": [
835
+ "application/json"
836
+ ],
837
+ "produces": [
838
+ "application/json",
839
+ "application/xml"
840
+ ],
841
+ "parameters": [
842
+ {
843
+ "in": "body",
844
+ "name": "body",
845
+ "description": "Created user object",
846
+ "required": true,
847
+ "schema": {
848
+ "$ref": "#/definitions/User"
849
+ }
850
+ }
851
+ ],
852
+ "responses": {
853
+ "default": {
854
+ "description": "successful operation"
855
+ }
856
+ }
857
+ }
858
+ }
859
+ },
860
+ "securityDefinitions": {
861
+ "api_key": {
862
+ "type": "apiKey",
863
+ "name": "api_key",
864
+ "in": "header"
865
+ },
866
+ "petstore_auth": {
867
+ "type": "oauth2",
868
+ "authorizationUrl": "https://petstore.swagger.io/oauth/authorize",
869
+ "flow": "implicit",
870
+ "scopes": {
871
+ "read:pets": "read your pets",
872
+ "write:pets": "modify pets in your account"
873
+ }
874
+ }
875
+ },
876
+ "definitions": {
877
+ "ApiResponse": {
878
+ "type": "object",
879
+ "properties": {
880
+ "code": {
881
+ "type": "integer",
882
+ "format": "int32"
883
+ },
884
+ "type": {
885
+ "type": "string"
886
+ },
887
+ "message": {
888
+ "type": "string"
889
+ }
890
+ }
891
+ },
892
+ "Category": {
893
+ "type": "object",
894
+ "properties": {
895
+ "id": {
896
+ "type": "integer",
897
+ "format": "int64"
898
+ },
899
+ "name": {
900
+ "type": "string"
901
+ }
902
+ },
903
+ "xml": {
904
+ "name": "Category"
905
+ }
906
+ },
907
+ "Pet": {
908
+ "type": "object",
909
+ "required": [
910
+ "name",
911
+ "photoUrls"
912
+ ],
913
+ "properties": {
914
+ "id": {
915
+ "type": "integer",
916
+ "format": "int64"
917
+ },
918
+ "category": {
919
+ "$ref": "#/definitions/Category"
920
+ },
921
+ "name": {
922
+ "type": "string",
923
+ "example": "doggie"
924
+ },
925
+ "photoUrls": {
926
+ "type": "array",
927
+ "xml": {
928
+ "wrapped": true
929
+ },
930
+ "items": {
931
+ "type": "string",
932
+ "xml": {
933
+ "name": "photoUrl"
934
+ }
935
+ }
936
+ },
937
+ "tags": {
938
+ "type": "array",
939
+ "xml": {
940
+ "wrapped": true
941
+ },
942
+ "items": {
943
+ "xml": {
944
+ "name": "tag"
945
+ },
946
+ "$ref": "#/definitions/Tag"
947
+ }
948
+ },
949
+ "status": {
950
+ "type": "string",
951
+ "description": "pet status in the store",
952
+ "enum": [
953
+ "available",
954
+ "pending",
955
+ "sold"
956
+ ]
957
+ }
958
+ },
959
+ "xml": {
960
+ "name": "Pet"
961
+ }
962
+ },
963
+ "Tag": {
964
+ "type": "object",
965
+ "properties": {
966
+ "id": {
967
+ "type": "integer",
968
+ "format": "int64"
969
+ },
970
+ "name": {
971
+ "type": "string"
972
+ }
973
+ },
974
+ "xml": {
975
+ "name": "Tag"
976
+ }
977
+ },
978
+ "Order": {
979
+ "type": "object",
980
+ "properties": {
981
+ "id": {
982
+ "type": "integer",
983
+ "format": "int64"
984
+ },
985
+ "petId": {
986
+ "type": "integer",
987
+ "format": "int64"
988
+ },
989
+ "quantity": {
990
+ "type": "integer",
991
+ "format": "int32"
992
+ },
993
+ "shipDate": {
994
+ "type": "string",
995
+ "format": "date-time"
996
+ },
997
+ "status": {
998
+ "type": "string",
999
+ "description": "Order Status",
1000
+ "enum": [
1001
+ "placed",
1002
+ "approved",
1003
+ "delivered"
1004
+ ]
1005
+ },
1006
+ "complete": {
1007
+ "type": "boolean"
1008
+ }
1009
+ },
1010
+ "xml": {
1011
+ "name": "Order"
1012
+ }
1013
+ },
1014
+ "User": {
1015
+ "type": "object",
1016
+ "properties": {
1017
+ "id": {
1018
+ "type": "integer",
1019
+ "format": "int64"
1020
+ },
1021
+ "username": {
1022
+ "type": "string"
1023
+ },
1024
+ "firstName": {
1025
+ "type": "string"
1026
+ },
1027
+ "lastName": {
1028
+ "type": "string"
1029
+ },
1030
+ "email": {
1031
+ "type": "string"
1032
+ },
1033
+ "password": {
1034
+ "type": "string"
1035
+ },
1036
+ "phone": {
1037
+ "type": "string"
1038
+ },
1039
+ "userStatus": {
1040
+ "type": "integer",
1041
+ "format": "int32",
1042
+ "description": "User Status"
1043
+ }
1044
+ },
1045
+ "xml": {
1046
+ "name": "User"
1047
+ }
1048
+ }
1049
+ },
1050
+ "externalDocs": {
1051
+ "description": "Find out more about Swagger",
1052
+ "url": "http://swagger.io"
1053
+ }
1054
+ }