runline 0.33.0 → 0.35.0

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 (531) hide show
  1. package/dist/auth/oauth2.d.ts +7 -1
  2. package/dist/auth/oauth2.js +10 -0
  3. package/dist/auth/token.d.ts +1 -0
  4. package/dist/auth/token.js +19 -1
  5. package/dist/auth/types.d.ts +22 -1
  6. package/dist/core/engine.d.ts +7 -0
  7. package/dist/core/engine.js +21 -8
  8. package/dist/credentials/policy.d.ts +53 -1
  9. package/dist/credentials/policy.js +146 -6
  10. package/dist/credentials/registry.d.ts +9 -0
  11. package/dist/credentials/registry.js +184 -22
  12. package/dist/credentials/transport.d.ts +48 -2
  13. package/dist/credentials/transport.js +248 -70
  14. package/dist/credentials/types.d.ts +177 -10
  15. package/dist/index.d.ts +6 -5
  16. package/dist/index.js +3 -2
  17. package/dist/plugin/api.d.ts +7 -0
  18. package/dist/plugin/api.js +7 -0
  19. package/dist/plugin/schema.d.ts +16 -4
  20. package/dist/plugin/schema.js +28 -5
  21. package/dist/plugin/types.d.ts +20 -0
  22. package/dist/plugins/_shared/base64.js +30 -0
  23. package/dist/plugins/_shared/credentialAdapter.js +99 -15
  24. package/dist/plugins/_shared/credentials.js +416 -0
  25. package/dist/plugins/_shared/googleAuth.js +69 -39
  26. package/dist/plugins/_shared/googleCredentials.js +68 -14
  27. package/dist/plugins/_shared/localFile.js +40 -0
  28. package/dist/plugins/_shared/mediaFile.js +12 -12
  29. package/dist/plugins/_shared/microsoftAuth.js +31 -47
  30. package/dist/plugins/_shared/microsoftCredentials.js +42 -15
  31. package/dist/plugins/_shared/provider.js +2 -14
  32. package/dist/plugins/_shared/shiftCloud.js +16 -56
  33. package/dist/plugins/_shared/shiftCredentials.js +83 -0
  34. package/dist/plugins/_shared/shiftUpload.js +14 -10
  35. package/dist/plugins/actionNetwork/src/credentials.js +14 -0
  36. package/dist/plugins/actionNetwork/src/index.js +39 -50
  37. package/dist/plugins/activeCampaign/src/credentials.js +22 -0
  38. package/dist/plugins/activeCampaign/src/index.js +61 -132
  39. package/dist/plugins/adalo/src/credentials.js +16 -0
  40. package/dist/plugins/adalo/src/index.js +19 -43
  41. package/dist/plugins/affinity/src/credentials.js +19 -0
  42. package/dist/plugins/affinity/src/index.js +29 -54
  43. package/dist/plugins/agentMail/src/credentials.js +35 -0
  44. package/dist/plugins/agentMail/src/drafts.js +137 -0
  45. package/dist/plugins/agentMail/src/inboxes.js +95 -0
  46. package/dist/plugins/agentMail/src/index.js +35 -0
  47. package/dist/plugins/agentMail/src/messages.js +154 -0
  48. package/dist/plugins/agentMail/src/schemas.js +156 -0
  49. package/dist/plugins/agentMail/src/shared.js +203 -0
  50. package/dist/plugins/agentMail/src/threads.js +75 -0
  51. package/dist/plugins/agileCrm/src/credentials.js +16 -0
  52. package/dist/plugins/agileCrm/src/index.js +46 -112
  53. package/dist/plugins/airtable/src/credentials.js +19 -0
  54. package/dist/plugins/airtable/src/index.js +37 -50
  55. package/dist/plugins/airtop/src/credentials.js +20 -0
  56. package/dist/plugins/airtop/src/index.js +51 -75
  57. package/dist/plugins/apiTemplateIo/src/credentials.js +19 -0
  58. package/dist/plugins/apiTemplateIo/src/index.js +14 -31
  59. package/dist/plugins/asana/src/credentials.js +19 -0
  60. package/dist/plugins/asana/src/index.js +51 -72
  61. package/dist/plugins/autopilot/src/credentials.js +19 -0
  62. package/dist/plugins/autopilot/src/index.js +38 -45
  63. package/dist/plugins/bambooHr/src/credentials.js +16 -0
  64. package/dist/plugins/bambooHr/src/index.js +41 -67
  65. package/dist/plugins/bannerbear/src/credentials.js +19 -0
  66. package/dist/plugins/bannerbear/src/index.js +15 -27
  67. package/dist/plugins/baserow/src/credentials.js +17 -0
  68. package/dist/plugins/baserow/src/index.js +23 -49
  69. package/dist/plugins/beeminder/src/credentials.js +19 -0
  70. package/dist/plugins/beeminder/src/index.js +32 -54
  71. package/dist/plugins/bitly/src/credentials.js +19 -0
  72. package/dist/plugins/bitly/src/index.js +12 -26
  73. package/dist/plugins/bitwarden/src/credentials.js +62 -0
  74. package/dist/plugins/bitwarden/src/index.js +34 -80
  75. package/dist/plugins/box/src/credentials.js +19 -0
  76. package/dist/plugins/box/src/index.js +24 -49
  77. package/dist/plugins/brandfetch/src/credentials.js +13 -0
  78. package/dist/plugins/brandfetch/src/index.js +12 -17
  79. package/dist/plugins/brevo/src/credentials.js +19 -0
  80. package/dist/plugins/brevo/src/index.js +30 -51
  81. package/dist/plugins/bubble/src/credentials.js +28 -0
  82. package/dist/plugins/bubble/src/index.js +29 -65
  83. package/dist/plugins/chargebee/src/credentials.js +16 -0
  84. package/dist/plugins/chargebee/src/index.js +15 -45
  85. package/dist/plugins/circleci/src/credentials.js +19 -0
  86. package/dist/plugins/circleci/src/index.js +19 -39
  87. package/dist/plugins/ciscoWebex/src/credentials.js +19 -0
  88. package/dist/plugins/ciscoWebex/src/index.js +43 -61
  89. package/dist/plugins/clearbit/src/credentials.js +22 -0
  90. package/dist/plugins/clearbit/src/index.js +11 -21
  91. package/dist/plugins/clickup/src/credentials.js +19 -0
  92. package/dist/plugins/clickup/src/index.js +85 -117
  93. package/dist/plugins/clockify/src/credentials.js +19 -0
  94. package/dist/plugins/clockify/src/index.js +46 -61
  95. package/dist/plugins/cloudflare/src/credentials.js +19 -0
  96. package/dist/plugins/cloudflare/src/index.js +19 -34
  97. package/dist/plugins/cockpit/src/credentials.js +17 -0
  98. package/dist/plugins/cockpit/src/index.js +18 -31
  99. package/dist/plugins/coda/src/credentials.js +19 -0
  100. package/dist/plugins/coda/src/index.js +33 -50
  101. package/dist/plugins/coingecko/src/credentials.js +20 -0
  102. package/dist/plugins/coingecko/src/index.js +24 -34
  103. package/dist/plugins/contentful/src/credentials.js +26 -0
  104. package/dist/plugins/contentful/src/index.js +19 -40
  105. package/dist/plugins/convertkit/src/credentials.js +26 -0
  106. package/dist/plugins/convertkit/src/index.js +27 -45
  107. package/dist/plugins/copper/src/credentials.js +17 -0
  108. package/dist/plugins/copper/src/index.js +25 -47
  109. package/dist/plugins/cortex/src/credentials.js +28 -0
  110. package/dist/plugins/cortex/src/index.js +26 -49
  111. package/dist/plugins/currents/src/credentials.js +19 -0
  112. package/dist/plugins/currents/src/index.js +46 -59
  113. package/dist/plugins/customerIo/src/credentials.js +52 -0
  114. package/dist/plugins/customerIo/src/index.js +30 -58
  115. package/dist/plugins/databricks/src/credentials.js +13 -0
  116. package/dist/plugins/databricks/src/index.js +51 -103
  117. package/dist/plugins/deepl/src/credentials.js +19 -0
  118. package/dist/plugins/deepl/src/index.js +13 -39
  119. package/dist/plugins/demio/src/credentials.js +26 -0
  120. package/dist/plugins/demio/src/index.js +17 -41
  121. package/dist/plugins/dhl/src/credentials.js +13 -0
  122. package/dist/plugins/dhl/src/index.js +8 -19
  123. package/dist/plugins/discord/src/credentials.js +19 -0
  124. package/dist/plugins/discord/src/index.js +30 -58
  125. package/dist/plugins/discourse/src/credentials.js +18 -0
  126. package/dist/plugins/discourse/src/index.js +36 -53
  127. package/dist/plugins/disqus/src/credentials.js +13 -0
  128. package/dist/plugins/disqus/src/index.js +14 -32
  129. package/dist/plugins/drift/src/credentials.js +13 -0
  130. package/dist/plugins/drift/src/index.js +16 -26
  131. package/dist/plugins/dropbox/src/credentials.js +13 -0
  132. package/dist/plugins/dropbox/src/index.js +23 -30
  133. package/dist/plugins/dropcontact/src/credentials.js +13 -0
  134. package/dist/plugins/dropcontact/src/index.js +13 -18
  135. package/dist/plugins/egoi/src/credentials.js +19 -0
  136. package/dist/plugins/egoi/src/index.js +23 -38
  137. package/dist/plugins/elasticsearch/src/credentials.js +18 -0
  138. package/dist/plugins/elasticsearch/src/index.js +27 -48
  139. package/dist/plugins/elevenlabs/src/credentials.js +30 -0
  140. package/dist/plugins/elevenlabs/src/index.js +4 -1
  141. package/dist/plugins/elevenlabs/src/schemas.js +2 -1
  142. package/dist/plugins/elevenlabs/src/shared.js +87 -62
  143. package/dist/plugins/elevenlabs/src/workflows.js +2 -2
  144. package/dist/plugins/emelia/src/credentials.js +14 -0
  145. package/dist/plugins/emelia/src/index.js +19 -23
  146. package/dist/plugins/erpnext/src/credentials.js +27 -0
  147. package/dist/plugins/erpnext/src/index.js +21 -42
  148. package/dist/plugins/facebookGraph/src/credentials.js +20 -0
  149. package/dist/plugins/facebookGraph/src/index.js +39 -37
  150. package/dist/plugins/fal/src/credentials.js +14 -0
  151. package/dist/plugins/fal/src/index.js +5 -3
  152. package/dist/plugins/fal/src/shared.js +58 -63
  153. package/dist/plugins/freshdesk/src/credentials.js +20 -0
  154. package/dist/plugins/freshdesk/src/index.js +25 -46
  155. package/dist/plugins/freshservice/src/credentials.js +16 -0
  156. package/dist/plugins/freshservice/src/index.js +37 -58
  157. package/dist/plugins/freshworksCrm/src/credentials.js +16 -0
  158. package/dist/plugins/freshworksCrm/src/index.js +20 -39
  159. package/dist/plugins/getresponse/src/credentials.js +22 -0
  160. package/dist/plugins/getresponse/src/index.js +20 -32
  161. package/dist/plugins/gett/src/credentials.js +64 -0
  162. package/dist/plugins/gett/src/index.js +11 -6
  163. package/dist/plugins/gett/src/login.js +24 -0
  164. package/dist/plugins/gett/src/session.js +15 -38
  165. package/dist/plugins/gett/src/shared.js +41 -84
  166. package/dist/plugins/ghost/src/credentials.js +36 -0
  167. package/dist/plugins/ghost/src/index.js +18 -59
  168. package/dist/plugins/github/src/credentials.js +18 -0
  169. package/dist/plugins/github/src/index.js +55 -78
  170. package/dist/plugins/gitlab/src/credentials.js +24 -0
  171. package/dist/plugins/gitlab/src/index.js +29 -48
  172. package/dist/plugins/gmail/src/index.js +47 -108
  173. package/dist/plugins/gong/src/credentials.js +16 -0
  174. package/dist/plugins/gong/src/index.js +16 -32
  175. package/dist/plugins/googleAppsScript/src/index.js +109 -42
  176. package/dist/plugins/googleCalendar/src/index.js +20 -51
  177. package/dist/plugins/googleContacts/src/index.js +13 -40
  178. package/dist/plugins/googleDocs/src/index.js +3 -32
  179. package/dist/plugins/googleDocs/src/shared.js +2 -1
  180. package/dist/plugins/googleDrive/src/index.js +68 -97
  181. package/dist/plugins/googleImage/src/credentials.js +14 -0
  182. package/dist/plugins/googleImage/src/index.js +15 -26
  183. package/dist/plugins/googleSheets/src/index.js +27 -60
  184. package/dist/plugins/googleSlides/src/index.js +7 -35
  185. package/dist/plugins/googleTasks/src/index.js +14 -42
  186. package/dist/plugins/gotify/src/credentials.js +32 -0
  187. package/dist/plugins/gotify/src/index.js +14 -36
  188. package/dist/plugins/gotowebinar/src/credentials.js +13 -0
  189. package/dist/plugins/gotowebinar/src/index.js +52 -69
  190. package/dist/plugins/grafana/src/credentials.js +16 -0
  191. package/dist/plugins/grafana/src/index.js +34 -53
  192. package/dist/plugins/graphql/src/credentials.js +42 -0
  193. package/dist/plugins/graphql/src/index.js +21 -46
  194. package/dist/plugins/grist/src/credentials.js +30 -0
  195. package/dist/plugins/grist/src/index.js +14 -43
  196. package/dist/plugins/halopsa/src/credentials.js +56 -0
  197. package/dist/plugins/halopsa/src/index.js +20 -47
  198. package/dist/plugins/harvest/src/credentials.js +20 -0
  199. package/dist/plugins/harvest/src/index.js +24 -43
  200. package/dist/plugins/helpscout/src/credentials.js +13 -0
  201. package/dist/plugins/helpscout/src/index.js +26 -38
  202. package/dist/plugins/highlevel/src/credentials.js +19 -0
  203. package/dist/plugins/highlevel/src/index.js +42 -65
  204. package/dist/plugins/homeAssistant/src/credentials.js +27 -0
  205. package/dist/plugins/homeAssistant/src/index.js +34 -52
  206. package/dist/plugins/hubspot/src/credentials.js +16 -0
  207. package/dist/plugins/hubspot/src/index.js +29 -41
  208. package/dist/plugins/humanticAi/src/credentials.js +13 -0
  209. package/dist/plugins/humanticAi/src/index.js +15 -22
  210. package/dist/plugins/hunter/src/credentials.js +13 -0
  211. package/dist/plugins/hunter/src/index.js +18 -17
  212. package/dist/plugins/intercom/src/credentials.js +19 -0
  213. package/dist/plugins/intercom/src/index.js +25 -38
  214. package/dist/plugins/iterable/src/credentials.js +17 -0
  215. package/dist/plugins/iterable/src/index.js +26 -40
  216. package/dist/plugins/jenkins/src/credentials.js +16 -0
  217. package/dist/plugins/jenkins/src/index.js +22 -36
  218. package/dist/plugins/jira/src/credentials.js +16 -0
  219. package/dist/plugins/jira/src/index.js +35 -61
  220. package/dist/plugins/keap/src/credentials.js +19 -0
  221. package/dist/plugins/keap/src/index.js +43 -71
  222. package/dist/plugins/kobotoolbox/src/credentials.js +13 -0
  223. package/dist/plugins/kobotoolbox/src/index.js +46 -84
  224. package/dist/plugins/lemlist/src/credentials.js +19 -0
  225. package/dist/plugins/lemlist/src/index.js +35 -47
  226. package/dist/plugins/linear/src/attachments.js +7 -7
  227. package/dist/plugins/linear/src/comments.js +7 -7
  228. package/dist/plugins/linear/src/credentials.js +17 -0
  229. package/dist/plugins/linear/src/cycles.js +5 -5
  230. package/dist/plugins/linear/src/index.js +2 -0
  231. package/dist/plugins/linear/src/initiatives.js +6 -6
  232. package/dist/plugins/linear/src/issues.js +14 -14
  233. package/dist/plugins/linear/src/labels.js +6 -6
  234. package/dist/plugins/linear/src/organization.js +2 -2
  235. package/dist/plugins/linear/src/projects.js +12 -12
  236. package/dist/plugins/linear/src/shared.js +34 -32
  237. package/dist/plugins/linear/src/states.js +3 -3
  238. package/dist/plugins/linear/src/teams.js +4 -4
  239. package/dist/plugins/linear/src/users.js +3 -3
  240. package/dist/plugins/linear/src/views.js +5 -5
  241. package/dist/plugins/linear/src/webhooks.js +5 -5
  242. package/dist/plugins/lingvanex/src/credentials.js +13 -0
  243. package/dist/plugins/lingvanex/src/index.js +7 -9
  244. package/dist/plugins/linkedin/src/credentials.js +17 -0
  245. package/dist/plugins/linkedin/src/index.js +13 -17
  246. package/dist/plugins/lonescale/src/credentials.js +13 -0
  247. package/dist/plugins/lonescale/src/index.js +16 -26
  248. package/dist/plugins/magento/src/credentials.js +16 -0
  249. package/dist/plugins/magento/src/index.js +67 -84
  250. package/dist/plugins/mailcheck/src/credentials.js +17 -0
  251. package/dist/plugins/mailcheck/src/index.js +7 -9
  252. package/dist/plugins/mailchimp/src/credentials.js +32 -0
  253. package/dist/plugins/mailchimp/src/index.js +36 -44
  254. package/dist/plugins/mailerlite/src/credentials.js +13 -0
  255. package/dist/plugins/mailerlite/src/index.js +19 -32
  256. package/dist/plugins/mailgun/src/credentials.js +21 -0
  257. package/dist/plugins/mailgun/src/index.js +15 -21
  258. package/dist/plugins/mailjet/src/credentials.js +38 -0
  259. package/dist/plugins/mailjet/src/index.js +60 -115
  260. package/dist/plugins/mandrill/src/credentials.js +17 -0
  261. package/dist/plugins/mandrill/src/index.js +11 -12
  262. package/dist/plugins/marketstack/src/credentials.js +16 -0
  263. package/dist/plugins/marketstack/src/index.js +18 -28
  264. package/dist/plugins/matrix/src/credentials.js +19 -0
  265. package/dist/plugins/matrix/src/index.js +23 -52
  266. package/dist/plugins/mattermost/src/credentials.js +19 -0
  267. package/dist/plugins/mattermost/src/index.js +41 -73
  268. package/dist/plugins/mautic/src/credentials.js +16 -0
  269. package/dist/plugins/mautic/src/index.js +46 -62
  270. package/dist/plugins/medium/src/credentials.js +20 -0
  271. package/dist/plugins/medium/src/index.js +18 -23
  272. package/dist/plugins/messagebird/src/credentials.js +22 -0
  273. package/dist/plugins/messagebird/src/index.js +13 -18
  274. package/dist/plugins/metabase/src/credentials.js +19 -0
  275. package/dist/plugins/metabase/src/index.js +24 -40
  276. package/dist/plugins/microsoftCalendar/src/index.js +49 -18
  277. package/dist/plugins/microsoftFiles/src/index.js +95 -31
  278. package/dist/plugins/microsoftMail/src/index.js +63 -21
  279. package/dist/plugins/misp/src/credentials.js +16 -0
  280. package/dist/plugins/misp/src/index.js +60 -71
  281. package/dist/plugins/mocean/src/credentials.js +17 -0
  282. package/dist/plugins/mocean/src/index.js +11 -23
  283. package/dist/plugins/monday/src/credentials.js +14 -0
  284. package/dist/plugins/monday/src/index.js +31 -44
  285. package/dist/plugins/monicaCrm/src/credentials.js +19 -0
  286. package/dist/plugins/monicaCrm/src/index.js +25 -42
  287. package/dist/plugins/msg91/src/credentials.js +10 -0
  288. package/dist/plugins/msg91/src/index.js +15 -11
  289. package/dist/plugins/nasa/src/credentials.js +22 -0
  290. package/dist/plugins/nasa/src/index.js +24 -28
  291. package/dist/plugins/netlify/src/credentials.js +19 -0
  292. package/dist/plugins/netlify/src/index.js +27 -51
  293. package/dist/plugins/netscalerAdc/src/credentials.js +18 -0
  294. package/dist/plugins/netscalerAdc/src/index.js +16 -31
  295. package/dist/plugins/nextcloud/src/credentials.js +27 -0
  296. package/dist/plugins/nextcloud/src/index.js +55 -109
  297. package/dist/plugins/nocodb/src/credentials.js +16 -0
  298. package/dist/plugins/nocodb/src/index.js +19 -37
  299. package/dist/plugins/notion/src/credentials.js +21 -0
  300. package/dist/plugins/notion/src/index.js +25 -38
  301. package/dist/plugins/npm/src/credentials.js +19 -0
  302. package/dist/plugins/npm/src/index.js +22 -32
  303. package/dist/plugins/odoo/src/credentials.js +21 -0
  304. package/dist/plugins/odoo/src/index.js +53 -69
  305. package/dist/plugins/okta/src/credentials.js +23 -0
  306. package/dist/plugins/okta/src/index.js +30 -35
  307. package/dist/plugins/oneSimpleApi/src/credentials.js +16 -0
  308. package/dist/plugins/oneSimpleApi/src/index.js +19 -24
  309. package/dist/plugins/onfleet/src/credentials.js +23 -0
  310. package/dist/plugins/onfleet/src/index.js +42 -53
  311. package/dist/plugins/openai/src/credentials.js +13 -0
  312. package/dist/plugins/openai/src/index.js +16 -24
  313. package/dist/plugins/openweathermap/src/credentials.js +16 -0
  314. package/dist/plugins/openweathermap/src/index.js +22 -22
  315. package/dist/plugins/oura/src/credentials.js +19 -0
  316. package/dist/plugins/oura/src/index.js +13 -18
  317. package/dist/plugins/paddle/src/credentials.js +27 -0
  318. package/dist/plugins/paddle/src/index.js +20 -36
  319. package/dist/plugins/pagerduty/src/credentials.js +24 -0
  320. package/dist/plugins/pagerduty/src/index.js +30 -39
  321. package/dist/plugins/parallel/src/credentials.js +18 -0
  322. package/dist/plugins/parallel/src/index.js +16 -22
  323. package/dist/plugins/paypal/src/credentials.js +44 -0
  324. package/dist/plugins/paypal/src/index.js +14 -40
  325. package/dist/plugins/peekalink/src/credentials.js +16 -0
  326. package/dist/plugins/peekalink/src/index.js +10 -11
  327. package/dist/plugins/phantombuster/src/credentials.js +19 -0
  328. package/dist/plugins/phantombuster/src/index.js +19 -32
  329. package/dist/plugins/philipsHue/src/credentials.js +17 -0
  330. package/dist/plugins/philipsHue/src/index.js +15 -27
  331. package/dist/plugins/pipedrive/src/credentials.js +26 -0
  332. package/dist/plugins/pipedrive/src/index.js +43 -73
  333. package/dist/plugins/plaud/src/index.js +2 -1
  334. package/dist/plugins/plaud/src/shared.js +23 -19
  335. package/dist/plugins/plivo/src/credentials.js +20 -0
  336. package/dist/plugins/plivo/src/index.js +13 -19
  337. package/dist/plugins/posthog/src/credentials.js +18 -0
  338. package/dist/plugins/posthog/src/index.js +14 -20
  339. package/dist/plugins/profitwell/src/credentials.js +22 -0
  340. package/dist/plugins/profitwell/src/index.js +10 -17
  341. package/dist/plugins/pushbullet/src/credentials.js +19 -0
  342. package/dist/plugins/pushbullet/src/index.js +19 -27
  343. package/dist/plugins/pushcut/src/credentials.js +19 -0
  344. package/dist/plugins/pushcut/src/index.js +7 -8
  345. package/dist/plugins/pushover/src/credentials.js +14 -0
  346. package/dist/plugins/pushover/src/index.js +7 -12
  347. package/dist/plugins/quickbase/src/credentials.js +15 -0
  348. package/dist/plugins/quickbase/src/index.js +24 -34
  349. package/dist/plugins/quickbooks/src/credentials.js +22 -0
  350. package/dist/plugins/quickbooks/src/index.js +17 -46
  351. package/dist/plugins/raindrop/src/credentials.js +19 -0
  352. package/dist/plugins/raindrop/src/index.js +30 -32
  353. package/dist/plugins/recraft/src/credentials.js +13 -0
  354. package/dist/plugins/recraft/src/index.js +39 -28
  355. package/dist/plugins/reddit/src/credentials.js +26 -0
  356. package/dist/plugins/reddit/src/index.js +30 -34
  357. package/dist/plugins/replicate/src/credentials.js +23 -0
  358. package/dist/plugins/replicate/src/index.js +18 -28
  359. package/dist/plugins/rocketchat/src/credentials.js +17 -0
  360. package/dist/plugins/rocketchat/src/index.js +8 -19
  361. package/dist/plugins/rundeck/src/credentials.js +16 -0
  362. package/dist/plugins/rundeck/src/index.js +12 -28
  363. package/dist/plugins/salesforce/src/credentials.js +73 -0
  364. package/dist/plugins/salesforce/src/index.js +6 -0
  365. package/dist/plugins/salesforce/src/metadata.js +3 -16
  366. package/dist/plugins/salesforce/src/shared.js +25 -100
  367. package/dist/plugins/salesforce/src/sobjects.js +10 -9
  368. package/dist/plugins/salesmate/src/credentials.js +17 -0
  369. package/dist/plugins/salesmate/src/index.js +20 -37
  370. package/dist/plugins/securityScorecard/src/credentials.js +22 -0
  371. package/dist/plugins/securityScorecard/src/index.js +24 -37
  372. package/dist/plugins/segment/src/credentials.js +16 -0
  373. package/dist/plugins/segment/src/index.js +12 -16
  374. package/dist/plugins/sendgrid/src/credentials.js +13 -0
  375. package/dist/plugins/sendgrid/src/index.js +31 -35
  376. package/dist/plugins/sendy/src/credentials.js +18 -0
  377. package/dist/plugins/sendy/src/index.js +18 -24
  378. package/dist/plugins/sentry/src/credentials.js +16 -0
  379. package/dist/plugins/sentry/src/index.js +30 -98
  380. package/dist/plugins/servicenow/src/credentials.js +13 -0
  381. package/dist/plugins/servicenow/src/index.js +22 -41
  382. package/dist/plugins/shiftAtlas/src/graph.js +2 -2
  383. package/dist/plugins/shiftAtlas/src/index.js +2 -0
  384. package/dist/plugins/shiftAtlas/src/shared.js +3 -1
  385. package/dist/plugins/shiftBwm/src/index.js +4 -2
  386. package/dist/plugins/shiftBwm/src/shared.js +41 -16
  387. package/dist/plugins/shiftCrm/src/access.js +2 -2
  388. package/dist/plugins/shiftCrm/src/accounts.js +3 -3
  389. package/dist/plugins/shiftCrm/src/activities.js +3 -3
  390. package/dist/plugins/shiftCrm/src/credentials.js +6 -0
  391. package/dist/plugins/shiftCrm/src/index.js +2 -0
  392. package/dist/plugins/shiftCrm/src/opportunities.js +3 -3
  393. package/dist/plugins/shiftCrm/src/people.js +3 -3
  394. package/dist/plugins/shiftCrm/src/records.js +2 -2
  395. package/dist/plugins/shiftCrm/src/shared.js +2 -1
  396. package/dist/plugins/shiftCrm/src/tasks.js +3 -3
  397. package/dist/plugins/shiftObjects/src/credentials.js +2 -0
  398. package/dist/plugins/shiftObjects/src/index.js +2 -0
  399. package/dist/plugins/shiftObjects/src/objects.js +4 -3
  400. package/dist/plugins/shiftOcr/src/credentials.js +8 -0
  401. package/dist/plugins/shiftOcr/src/index.js +14 -8
  402. package/dist/plugins/shiftPages/src/index.js +2 -0
  403. package/dist/plugins/shiftPages/src/pages.js +5 -3
  404. package/dist/plugins/shiftPages/src/shared.js +3 -1
  405. package/dist/plugins/shiftTranscription/src/index.js +2 -0
  406. package/dist/plugins/shiftTranscription/src/shared.js +11 -1
  407. package/dist/plugins/shiftTranscription/src/transcription.js +5 -5
  408. package/dist/plugins/shiftWork/src/index.js +2 -0
  409. package/dist/plugins/shiftWork/src/issue-views.js +5 -5
  410. package/dist/plugins/shiftWork/src/issues.js +11 -7
  411. package/dist/plugins/shiftWork/src/projects.js +3 -3
  412. package/dist/plugins/shiftWork/src/shared.js +3 -1
  413. package/dist/plugins/shopify/src/credentials.js +16 -0
  414. package/dist/plugins/shopify/src/index.js +32 -59
  415. package/dist/plugins/signl4/src/credentials.js +17 -0
  416. package/dist/plugins/signl4/src/index.js +28 -29
  417. package/dist/plugins/slack/src/credentials.js +19 -0
  418. package/dist/plugins/slack/src/index.js +51 -60
  419. package/dist/plugins/sms77/src/credentials.js +17 -0
  420. package/dist/plugins/sms77/src/index.js +11 -16
  421. package/dist/plugins/splunk/src/credentials.js +19 -0
  422. package/dist/plugins/splunk/src/index.js +32 -74
  423. package/dist/plugins/spotify/src/credentials.js +19 -0
  424. package/dist/plugins/spotify/src/index.js +40 -55
  425. package/dist/plugins/stackby/src/credentials.js +13 -0
  426. package/dist/plugins/stackby/src/index.js +14 -23
  427. package/dist/plugins/steel/src/auth.js +27 -0
  428. package/dist/plugins/steel/src/browser.js +4 -3
  429. package/dist/plugins/steel/src/captchas.js +4 -3
  430. package/dist/plugins/steel/src/extensions.js +3 -2
  431. package/dist/plugins/steel/src/files.js +9 -10
  432. package/dist/plugins/steel/src/index.js +2 -0
  433. package/dist/plugins/steel/src/page/tools.js +3 -3
  434. package/dist/plugins/steel/src/profiles.js +4 -3
  435. package/dist/plugins/steel/src/sessions.js +13 -13
  436. package/dist/plugins/steel/src/shared.js +21 -51
  437. package/dist/plugins/storyblok/src/credentials.js +37 -0
  438. package/dist/plugins/storyblok/src/index.js +22 -66
  439. package/dist/plugins/strapi/src/credentials.js +71 -0
  440. package/dist/plugins/strapi/src/index.js +36 -70
  441. package/dist/plugins/strava/src/credentials.js +19 -0
  442. package/dist/plugins/strava/src/index.js +16 -33
  443. package/dist/plugins/stripe/src/credentials.js +19 -0
  444. package/dist/plugins/stripe/src/index.js +44 -58
  445. package/dist/plugins/supabase/src/credentials.js +30 -0
  446. package/dist/plugins/supabase/src/index.js +18 -40
  447. package/dist/plugins/syncromsp/src/credentials.js +16 -0
  448. package/dist/plugins/syncromsp/src/index.js +37 -70
  449. package/dist/plugins/tapfiliate/src/credentials.js +13 -0
  450. package/dist/plugins/tapfiliate/src/index.js +21 -31
  451. package/dist/plugins/telegram/src/credentials.js +20 -0
  452. package/dist/plugins/telegram/src/index.js +31 -39
  453. package/dist/plugins/thehive/src/credentials.js +14 -0
  454. package/dist/plugins/thehive/src/index.js +33 -50
  455. package/dist/plugins/thehiveProject/src/credentials.js +16 -0
  456. package/dist/plugins/thehiveProject/src/index.js +53 -122
  457. package/dist/plugins/todoist/src/credentials.js +26 -0
  458. package/dist/plugins/todoist/src/index.js +49 -79
  459. package/dist/plugins/together/src/credentials.js +16 -0
  460. package/dist/plugins/together/src/index.js +31 -33
  461. package/dist/plugins/travisci/src/credentials.js +24 -0
  462. package/dist/plugins/travisci/src/index.js +16 -30
  463. package/dist/plugins/trello/src/credentials.js +29 -0
  464. package/dist/plugins/trello/src/index.js +49 -64
  465. package/dist/plugins/twake/src/credentials.js +16 -0
  466. package/dist/plugins/twake/src/index.js +8 -10
  467. package/dist/plugins/twilio/src/credentials.js +23 -0
  468. package/dist/plugins/twilio/src/index.js +12 -26
  469. package/dist/plugins/twist/src/credentials.js +13 -0
  470. package/dist/plugins/twist/src/index.js +32 -44
  471. package/dist/plugins/twitter/src/credentials.js +16 -0
  472. package/dist/plugins/twitter/src/index.js +25 -37
  473. package/dist/plugins/typesafe/src/credentials.js +28 -0
  474. package/dist/plugins/typesafe/src/index.js +3 -1
  475. package/dist/plugins/typesafe/src/shared.js +23 -35
  476. package/dist/plugins/unleashedSoftware/src/credentials.js +21 -0
  477. package/dist/plugins/unleashedSoftware/src/index.js +13 -37
  478. package/dist/plugins/uplead/src/credentials.js +16 -0
  479. package/dist/plugins/uplead/src/index.js +11 -16
  480. package/dist/plugins/uproc/src/credentials.js +14 -0
  481. package/dist/plugins/uproc/src/index.js +7 -10
  482. package/dist/plugins/uptimerobot/src/credentials.js +14 -0
  483. package/dist/plugins/uptimerobot/src/index.js +28 -39
  484. package/dist/plugins/urlscanio/src/credentials.js +13 -0
  485. package/dist/plugins/urlscanio/src/index.js +13 -22
  486. package/dist/plugins/vercel/src/credentials.js +19 -0
  487. package/dist/plugins/vercel/src/deployments.js +27 -11
  488. package/dist/plugins/vercel/src/env.js +31 -12
  489. package/dist/plugins/vercel/src/index.js +2 -0
  490. package/dist/plugins/vercel/src/projects.js +6 -3
  491. package/dist/plugins/vercel/src/shared.js +32 -37
  492. package/dist/plugins/vero/src/credentials.js +17 -0
  493. package/dist/plugins/vero/src/index.js +18 -21
  494. package/dist/plugins/vonage/src/credentials.js +17 -0
  495. package/dist/plugins/vonage/src/index.js +14 -18
  496. package/dist/plugins/wekan/src/credentials.js +16 -0
  497. package/dist/plugins/wekan/src/index.js +33 -46
  498. package/dist/plugins/wolt/src/account.js +6 -0
  499. package/dist/plugins/wolt/src/catalog.js +2 -2
  500. package/dist/plugins/wolt/src/credentials.js +64 -0
  501. package/dist/plugins/wolt/src/index.js +8 -3
  502. package/dist/plugins/wolt/src/orders.js +2 -2
  503. package/dist/plugins/wolt/src/public.js +91 -0
  504. package/dist/plugins/wolt/src/shared.js +49 -158
  505. package/dist/plugins/woocommerce/src/credentials.js +16 -0
  506. package/dist/plugins/woocommerce/src/index.js +19 -37
  507. package/dist/plugins/wordpress/src/credentials.js +16 -0
  508. package/dist/plugins/wordpress/src/index.js +23 -42
  509. package/dist/plugins/xai/src/credentials.js +13 -0
  510. package/dist/plugins/xai/src/index.js +32 -31
  511. package/dist/plugins/xero/src/credentials.js +17 -0
  512. package/dist/plugins/xero/src/index.js +19 -36
  513. package/dist/plugins/yourls/src/credentials.js +17 -0
  514. package/dist/plugins/yourls/src/index.js +13 -23
  515. package/dist/plugins/zammad/src/credentials.js +15 -0
  516. package/dist/plugins/zammad/src/index.js +27 -47
  517. package/dist/plugins/zendesk/src/credentials.js +26 -0
  518. package/dist/plugins/zendesk/src/index.js +29 -48
  519. package/dist/plugins/zoho/src/credentials.js +17 -0
  520. package/dist/plugins/zoho/src/index.js +18 -38
  521. package/dist/plugins/zoom/src/credentials.js +19 -0
  522. package/dist/plugins/zoom/src/index.js +15 -30
  523. package/dist/plugins/zulip/src/credentials.js +16 -0
  524. package/dist/plugins/zulip/src/index.js +36 -42
  525. package/dist/sdk.d.ts +8 -0
  526. package/dist/sdk.js +3 -0
  527. package/package.json +2 -1
  528. package/dist/plugins/_shared/authedFetch.js +0 -33
  529. package/dist/plugins/_shared/tokenRefresh.js +0 -41
  530. package/dist/tests/helpers/engine-harness.d.ts +0 -1
  531. package/dist/tests/helpers/engine-harness.js +0 -236
@@ -1,43 +1,24 @@
1
- function buildBaseUrl(subdomain) {
2
- return `https://api.bamboohr.com/api/gateway.php/${subdomain}/v1`;
3
- }
4
- async function apiRequest(subdomain, apiKey, method, endpoint, body) {
5
- const url = `${buildBaseUrl(subdomain)}/${endpoint}`;
6
- const opts = {
1
+ import { credentialOk, jsonAnswer, jsonOrAcknowledged, pathSegment, } from "../../_shared/credentials.js";
2
+ import { bambooHrCredential } from "./credentials.js";
3
+ async function apiRequest(ctx, method, path, body, query) {
4
+ const res = await credentialOk(ctx, bambooHrCredential, "bambooHr", {
5
+ target: "api",
6
+ path,
7
7
  method,
8
- headers: {
9
- "Content-Type": "application/json",
10
- Accept: "application/json",
11
- Authorization: `Basic ${btoa(`${apiKey}:x`)}`,
12
- },
13
- };
14
- if (body &&
15
- Object.keys(body).length > 0 &&
16
- method !== "GET" &&
17
- method !== "DELETE") {
18
- opts.body = JSON.stringify(body);
19
- }
20
- const res = await fetch(url, opts);
21
- if (!res.ok) {
22
- const text = await res.text();
23
- throw new Error(`BambooHR API error ${res.status}: ${text}`);
24
- }
25
- if (res.status === 204 || res.headers.get("content-length") === "0")
26
- return { success: true };
27
- const contentType = res.headers.get("content-type") ?? "";
28
- if (contentType.includes("application/json"))
29
- return res.json();
30
- return { success: true };
31
- }
32
- function getConn(ctx) {
33
- return {
34
- subdomain: ctx.connection.config.subdomain,
35
- apiKey: ctx.connection.config.apiKey,
36
- };
8
+ query,
9
+ ...(body &&
10
+ Object.keys(body).length > 0 &&
11
+ method !== "GET" &&
12
+ method !== "DELETE"
13
+ ? { json: body }
14
+ : {}),
15
+ });
16
+ return jsonOrAcknowledged(res);
37
17
  }
38
18
  export default function bambooHr(rl) {
39
19
  rl.setName("bambooHr");
40
20
  rl.setVersion("0.1.0");
21
+ rl.setCredential(bambooHrCredential);
41
22
  rl.setConnectionSchema({
42
23
  subdomain: {
43
24
  type: "string",
@@ -93,19 +74,13 @@ export default function bambooHr(rl) {
93
74
  },
94
75
  },
95
76
  async execute(input, ctx) {
96
- const { subdomain, apiKey } = getConn(ctx);
97
77
  const body = input;
98
- const res = await fetch(`${buildBaseUrl(subdomain)}/employees`, {
78
+ const res = await credentialOk(ctx, bambooHrCredential, "bambooHr", {
79
+ target: "api",
80
+ path: "employees",
99
81
  method: "POST",
100
- headers: {
101
- "Content-Type": "application/json",
102
- Accept: "application/json",
103
- Authorization: `Basic ${btoa(`${apiKey}:x`)}`,
104
- },
105
- body: JSON.stringify(body),
82
+ json: body,
106
83
  });
107
- if (!res.ok)
108
- throw new Error(`BambooHR error ${res.status}: ${await res.text()}`);
109
84
  const location = res.headers.get("location") ?? "";
110
85
  const employeeId = location.split("/").pop();
111
86
  return { id: employeeId };
@@ -128,14 +103,15 @@ export default function bambooHr(rl) {
128
103
  },
129
104
  async execute(input, ctx) {
130
105
  const { employeeId, fields } = input;
131
- const { subdomain, apiKey } = getConn(ctx);
132
106
  let fieldList = fields ?? "all";
133
107
  if (fieldList === "all") {
134
- const dir = (await apiRequest(subdomain, apiKey, "GET", "employees/directory"));
108
+ const dir = (await apiRequest(ctx, "GET", "employees/directory"));
135
109
  const dirFields = dir.fields ?? [];
136
110
  fieldList = dirFields.map((f) => f.id).join(",");
137
111
  }
138
- return apiRequest(subdomain, apiKey, "GET", `employees/${employeeId}?fields=${fieldList}`);
112
+ return apiRequest(ctx, "GET", `employees/${pathSegment(employeeId)}`, undefined, {
113
+ fields: fieldList,
114
+ });
139
115
  },
140
116
  });
141
117
  rl.registerAction("employee.list", {
@@ -150,8 +126,7 @@ export default function bambooHr(rl) {
150
126
  },
151
127
  async execute(input, ctx) {
152
128
  const { limit } = (input ?? {});
153
- const { subdomain, apiKey } = getConn(ctx);
154
- const data = (await apiRequest(subdomain, apiKey, "GET", "employees/directory"));
129
+ const data = (await apiRequest(ctx, "GET", "employees/directory"));
155
130
  const employees = data.employees ?? [];
156
131
  if (limit)
157
132
  return employees.slice(0, limit);
@@ -190,8 +165,7 @@ export default function bambooHr(rl) {
190
165
  },
191
166
  async execute(input, ctx) {
192
167
  const { employeeId, ...fields } = input;
193
- const { subdomain, apiKey } = getConn(ctx);
194
- await apiRequest(subdomain, apiKey, "POST", `employees/${employeeId}`, fields);
168
+ await apiRequest(ctx, "POST", `employees/${pathSegment(employeeId)}`, fields);
195
169
  return { success: true };
196
170
  },
197
171
  });
@@ -213,8 +187,7 @@ export default function bambooHr(rl) {
213
187
  },
214
188
  async execute(input, ctx) {
215
189
  const { employeeId, limit } = input;
216
- const { subdomain, apiKey } = getConn(ctx);
217
- const data = (await apiRequest(subdomain, apiKey, "GET", `employees/${employeeId}/files/view/`));
190
+ const data = (await apiRequest(ctx, "GET", `employees/${pathSegment(employeeId)}/files/view/`));
218
191
  const categories = data.categories ?? [];
219
192
  // Flatten files from all categories
220
193
  const files = [];
@@ -240,8 +213,7 @@ export default function bambooHr(rl) {
240
213
  },
241
214
  async execute(input, ctx) {
242
215
  const { employeeId, fileId } = input;
243
- const { subdomain, apiKey } = getConn(ctx);
244
- await apiRequest(subdomain, apiKey, "DELETE", `employees/${employeeId}/files/${fileId}`);
216
+ await apiRequest(ctx, "DELETE", `employees/${pathSegment(employeeId)}/files/${pathSegment(fileId)}`);
245
217
  return { success: true };
246
218
  },
247
219
  });
@@ -263,10 +235,9 @@ export default function bambooHr(rl) {
263
235
  },
264
236
  async execute(input, ctx) {
265
237
  const { employeeId, fileId, shareWithEmployee } = input;
266
- const { subdomain, apiKey } = getConn(ctx);
267
238
  const body = {};
268
239
  body.shareWithEmployee = shareWithEmployee ? "yes" : "no";
269
- await apiRequest(subdomain, apiKey, "POST", `employees/${employeeId}/files/${fileId}`, body);
240
+ await apiRequest(ctx, "POST", `employees/${pathSegment(employeeId)}/files/${pathSegment(fileId)}`, body);
270
241
  return { success: true };
271
242
  },
272
243
  });
@@ -283,8 +254,7 @@ export default function bambooHr(rl) {
283
254
  },
284
255
  async execute(input, ctx) {
285
256
  const { limit } = (input ?? {});
286
- const { subdomain, apiKey } = getConn(ctx);
287
- const data = (await apiRequest(subdomain, apiKey, "GET", "files/view"));
257
+ const data = (await apiRequest(ctx, "GET", "files/view"));
288
258
  const categories = data.categories ?? [];
289
259
  const files = [];
290
260
  for (const cat of categories) {
@@ -304,8 +274,7 @@ export default function bambooHr(rl) {
304
274
  },
305
275
  async execute(input, ctx) {
306
276
  const { fileId } = input;
307
- const { subdomain, apiKey } = getConn(ctx);
308
- await apiRequest(subdomain, apiKey, "DELETE", `files/${fileId}`);
277
+ await apiRequest(ctx, "DELETE", `files/${pathSegment(fileId)}`);
309
278
  return { success: true };
310
279
  },
311
280
  });
@@ -322,8 +291,7 @@ export default function bambooHr(rl) {
322
291
  },
323
292
  async execute(input, ctx) {
324
293
  const { fileId, shareWithEmployee } = input;
325
- const { subdomain, apiKey } = getConn(ctx);
326
- await apiRequest(subdomain, apiKey, "POST", `files/${fileId}`, {
294
+ await apiRequest(ctx, "POST", `files/${pathSegment(fileId)}`, {
327
295
  shareWithEmployee: shareWithEmployee ? "yes" : "no",
328
296
  });
329
297
  return { success: true };
@@ -338,13 +306,19 @@ export default function bambooHr(rl) {
338
306
  format: {
339
307
  type: "string",
340
308
  required: false,
341
- description: "Format: JSON, CSV, XLS, XML, PDF (default: JSON)",
309
+ description: "Format: JSON (default, parsed), CSV or XML (returned as text)",
342
310
  },
343
311
  },
344
312
  async execute(input, ctx) {
345
313
  const { reportId, format = "JSON" } = input;
346
- const { subdomain, apiKey } = getConn(ctx);
347
- return apiRequest(subdomain, apiKey, "GET", `reports/${reportId}/?format=${format}&fd=true&onlyCurrent=true`);
314
+ if (!["JSON", "CSV", "XML"].includes(format))
315
+ throw new Error("bambooHr: format must be JSON, CSV, or XML");
316
+ const res = await credentialOk(ctx, bambooHrCredential, "bambooHr", {
317
+ target: "api",
318
+ path: `reports/${pathSegment(reportId)}/`,
319
+ query: { format, fd: "true", onlyCurrent: "true" },
320
+ });
321
+ return format === "JSON" ? jsonAnswer(res) : res.text();
348
322
  },
349
323
  });
350
324
  }
@@ -0,0 +1,19 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** A project API key, sent as a bearer to Bannerbear's one API origin. */
3
+ export const bannerbearCredential = staticCredential({
4
+ id: "bannerbear",
5
+ auth: { kind: "bearer" },
6
+ local: { secret: "apiKey" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://api.bannerbear.com/v2/",
10
+ methods: ["GET", "POST"],
11
+ },
12
+ },
13
+ probe: {
14
+ target: "api",
15
+ path: "account",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });
@@ -1,29 +1,18 @@
1
- const BASE_URL = "https://api.bannerbear.com/v2";
2
- async function apiRequest(apiKey, method, endpoint, body) {
3
- const opts = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { bannerbearCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body) {
4
+ const json = body && Object.keys(body).length > 0 && method !== "GET" ? body : undefined;
5
+ return credentialJson(ctx, bannerbearCredential, "bannerbear", {
6
+ target: "api",
7
+ path,
4
8
  method,
5
- headers: {
6
- "Content-Type": "application/json",
7
- Accept: "application/json",
8
- Authorization: `Bearer ${apiKey}`,
9
- },
10
- };
11
- if (body && Object.keys(body).length > 0 && method !== "GET") {
12
- opts.body = JSON.stringify(body);
13
- }
14
- const res = await fetch(`${BASE_URL}${endpoint}`, opts);
15
- if (!res.ok) {
16
- const text = await res.text();
17
- throw new Error(`Bannerbear API error ${res.status}: ${text}`);
18
- }
19
- return res.json();
20
- }
21
- function getKey(ctx) {
22
- return ctx.connection.config.apiKey;
9
+ ...(json !== undefined ? { json } : {}),
10
+ });
23
11
  }
24
12
  export default function bannerbear(rl) {
25
13
  rl.setName("bannerbear");
26
14
  rl.setVersion("0.1.0");
15
+ rl.setCredential(bannerbearCredential);
27
16
  rl.setConnectionSchema({
28
17
  apiKey: {
29
18
  type: "string",
@@ -70,7 +59,6 @@ export default function bannerbear(rl) {
70
59
  },
71
60
  async execute(input, ctx) {
72
61
  const { templateId, modifications, webhookUrl, metadata, waitForImage, maxTries = 3, } = (input ?? {});
73
- const apiKey = getKey(ctx);
74
62
  const body = { template: templateId };
75
63
  if (modifications)
76
64
  body.modifications = modifications;
@@ -78,12 +66,12 @@ export default function bannerbear(rl) {
78
66
  body.webhook_url = webhookUrl;
79
67
  if (metadata)
80
68
  body.metadata = metadata;
81
- let result = (await apiRequest(apiKey, "POST", "/images", body));
69
+ let result = (await apiRequest(ctx, "POST", "images", body));
82
70
  if (waitForImage && result.status !== "completed") {
83
71
  let tries = maxTries;
84
72
  while (tries > 0) {
85
73
  await new Promise((r) => setTimeout(r, 2000));
86
- result = (await apiRequest(apiKey, "GET", `/images/${result.uid}`));
74
+ result = (await apiRequest(ctx, "GET", `images/${pathSegment(result.uid)}`));
87
75
  if (result.status === "completed")
88
76
  break;
89
77
  tries--;
@@ -103,7 +91,7 @@ export default function bannerbear(rl) {
103
91
  },
104
92
  async execute(input, ctx) {
105
93
  const { imageId } = input;
106
- return apiRequest(getKey(ctx), "GET", `/images/${imageId}`);
94
+ return apiRequest(ctx, "GET", `images/${pathSegment(imageId)}`);
107
95
  },
108
96
  });
109
97
  // ── Template ────────────────────────────────────────
@@ -119,14 +107,14 @@ export default function bannerbear(rl) {
119
107
  },
120
108
  async execute(input, ctx) {
121
109
  const { templateId } = input;
122
- return apiRequest(getKey(ctx), "GET", `/templates/${templateId}`);
110
+ return apiRequest(ctx, "GET", `templates/${pathSegment(templateId)}`);
123
111
  },
124
112
  });
125
113
  rl.registerAction("template.list", {
126
114
  access: "read",
127
115
  description: "List all templates",
128
116
  async execute(_input, ctx) {
129
- return apiRequest(getKey(ctx), "GET", "/templates");
117
+ return apiRequest(ctx, "GET", "templates");
130
118
  },
131
119
  });
132
120
  }
@@ -0,0 +1,17 @@
1
+ import { httpsBase, staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * A database token, sent as `Authorization: Token {token}` to the
4
+ * configured host's /api/ base — Baserow's cloud unless the connection
5
+ * names a self-hosted one, which must be HTTPS.
6
+ */
7
+ export const baserowCredential = staticCredential({
8
+ id: "baserow",
9
+ auth: { kind: "apiKey", header: "Authorization", prefix: "Token " },
10
+ local: { secret: "token" },
11
+ targets: (config) => ({
12
+ api: {
13
+ baseUrl: httpsBase(config.host ?? "https://api.baserow.io", "api/"),
14
+ methods: ["GET", "POST", "PATCH", "DELETE"],
15
+ },
16
+ }),
17
+ });
@@ -1,36 +1,21 @@
1
- async function apiRequest(host, token, method, endpoint, body, qs) {
2
- const url = new URL(`${host}${endpoint}`);
3
- if (qs) {
4
- for (const [k, v] of Object.entries(qs)) {
5
- if (v !== undefined)
6
- url.searchParams.set(k, String(v));
7
- }
8
- }
9
- const opts = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { baserowCredential } from "./credentials.js";
3
+ /** A path beneath the host's /api/ base, signed through the credential. */
4
+ function apiRequest(ctx, method, path, body, query) {
5
+ return credentialJson(ctx, baserowCredential, "baserow", {
6
+ target: "api",
7
+ path,
10
8
  method,
11
- headers: {
12
- "Content-Type": "application/json",
13
- Authorization: `Token ${token}`,
14
- },
15
- };
16
- if (body && method !== "GET" && method !== "DELETE") {
17
- opts.body = JSON.stringify(body);
18
- }
19
- const res = await fetch(url.toString(), opts);
20
- if (!res.ok) {
21
- const text = await res.text();
22
- throw new Error(`Baserow API error ${res.status}: ${text}`);
23
- }
24
- if (res.status === 204)
25
- return { success: true };
26
- return res.json();
9
+ query,
10
+ ...(body && method !== "GET" && method !== "DELETE" ? { json: body } : {}),
11
+ });
27
12
  }
28
- async function paginateAll(host, token, endpoint, qs, limit) {
13
+ async function paginateAll(ctx, path, qs, limit) {
29
14
  const results = [];
30
15
  let page = 1;
31
16
  const size = 100;
32
17
  while (true) {
33
- const data = (await apiRequest(host, token, "GET", endpoint, undefined, {
18
+ const data = (await apiRequest(ctx, "GET", path, undefined, {
34
19
  ...qs,
35
20
  page,
36
21
  size,
@@ -44,15 +29,10 @@ async function paginateAll(host, token, endpoint, qs, limit) {
44
29
  }
45
30
  return results;
46
31
  }
47
- function getConn(ctx) {
48
- return {
49
- host: ctx.connection.config.host.replace(/\/$/, ""),
50
- token: ctx.connection.config.token,
51
- };
52
- }
53
32
  export default function baserow(rl) {
54
33
  rl.setName("baserow");
55
34
  rl.setVersion("0.1.0");
35
+ rl.setCredential(baserowCredential);
56
36
  rl.setConnectionSchema({
57
37
  host: {
58
38
  type: "string",
@@ -82,8 +62,7 @@ export default function baserow(rl) {
82
62
  },
83
63
  async execute(input, ctx) {
84
64
  const { tableId, fields } = input;
85
- const { host, token } = getConn(ctx);
86
- return apiRequest(host, token, "POST", `/api/database/rows/table/${tableId}/`, fields);
65
+ return apiRequest(ctx, "POST", `database/rows/table/${pathSegment(tableId)}/`, fields);
87
66
  },
88
67
  });
89
68
  rl.registerAction("row.get", {
@@ -95,8 +74,7 @@ export default function baserow(rl) {
95
74
  },
96
75
  async execute(input, ctx) {
97
76
  const { tableId, rowId } = input;
98
- const { host, token } = getConn(ctx);
99
- return apiRequest(host, token, "GET", `/api/database/rows/table/${tableId}/${rowId}/`);
77
+ return apiRequest(ctx, "GET", `database/rows/table/${pathSegment(tableId)}/${pathSegment(rowId)}/`);
100
78
  },
101
79
  });
102
80
  rl.registerAction("row.list", {
@@ -118,13 +96,12 @@ export default function baserow(rl) {
118
96
  },
119
97
  async execute(input, ctx) {
120
98
  const { tableId, search, orderBy, limit } = input;
121
- const { host, token } = getConn(ctx);
122
99
  const qs = {};
123
100
  if (search)
124
101
  qs.search = search;
125
102
  if (orderBy)
126
103
  qs.order_by = orderBy;
127
- return paginateAll(host, token, `/api/database/rows/table/${tableId}/`, qs, limit);
104
+ return paginateAll(ctx, `database/rows/table/${pathSegment(tableId)}/`, qs, limit);
128
105
  },
129
106
  });
130
107
  rl.registerAction("row.update", {
@@ -141,8 +118,7 @@ export default function baserow(rl) {
141
118
  },
142
119
  async execute(input, ctx) {
143
120
  const { tableId, rowId, fields } = input;
144
- const { host, token } = getConn(ctx);
145
- return apiRequest(host, token, "PATCH", `/api/database/rows/table/${tableId}/${rowId}/`, fields);
121
+ return apiRequest(ctx, "PATCH", `database/rows/table/${pathSegment(tableId)}/${pathSegment(rowId)}/`, fields);
146
122
  },
147
123
  });
148
124
  rl.registerAction("row.delete", {
@@ -154,8 +130,7 @@ export default function baserow(rl) {
154
130
  },
155
131
  async execute(input, ctx) {
156
132
  const { tableId, rowId } = input;
157
- const { host, token } = getConn(ctx);
158
- await apiRequest(host, token, "DELETE", `/api/database/rows/table/${tableId}/${rowId}/`);
133
+ await apiRequest(ctx, "DELETE", `database/rows/table/${pathSegment(tableId)}/${pathSegment(rowId)}/`);
159
134
  return { success: true };
160
135
  },
161
136
  });
@@ -172,8 +147,9 @@ export default function baserow(rl) {
172
147
  },
173
148
  async execute(input, ctx) {
174
149
  const { tableId, items } = input;
175
- const { host, token } = getConn(ctx);
176
- return apiRequest(host, token, "POST", `/api/database/rows/table/${tableId}/batch/`, { items });
150
+ return apiRequest(ctx, "POST", `database/rows/table/${pathSegment(tableId)}/batch/`, {
151
+ items,
152
+ });
177
153
  },
178
154
  });
179
155
  rl.registerAction("row.batchUpdate", {
@@ -189,8 +165,7 @@ export default function baserow(rl) {
189
165
  },
190
166
  async execute(input, ctx) {
191
167
  const { tableId, items } = input;
192
- const { host, token } = getConn(ctx);
193
- return apiRequest(host, token, "PATCH", `/api/database/rows/table/${tableId}/batch/`, { items });
168
+ return apiRequest(ctx, "PATCH", `database/rows/table/${pathSegment(tableId)}/batch/`, { items });
194
169
  },
195
170
  });
196
171
  rl.registerAction("row.batchDelete", {
@@ -206,8 +181,7 @@ export default function baserow(rl) {
206
181
  },
207
182
  async execute(input, ctx) {
208
183
  const { tableId, rowIds } = input;
209
- const { host, token } = getConn(ctx);
210
- await apiRequest(host, token, "POST", `/api/database/rows/table/${tableId}/batch-delete/`, {
184
+ await apiRequest(ctx, "POST", `database/rows/table/${pathSegment(tableId)}/batch-delete/`, {
211
185
  items: rowIds,
212
186
  });
213
187
  return { success: true, deleted: rowIds };
@@ -0,0 +1,19 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** A personal API token, sent as the auth_token query parameter. */
3
+ export const beeminderCredential = staticCredential({
4
+ id: "beeminder",
5
+ auth: { kind: "queryKey", param: "auth_token" },
6
+ local: { secret: "apiToken" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://www.beeminder.com/api/v1/",
10
+ methods: ["GET", "POST", "PUT", "DELETE"],
11
+ },
12
+ },
13
+ probe: {
14
+ target: "api",
15
+ path: "users/me.json",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });