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,39 +1,20 @@
1
- const BASE_URL = "https://www.beeminder.com/api/v1";
2
- async function apiRequest(token, method, endpoint, body, qs) {
3
- const url = new URL(`${BASE_URL}${endpoint}`);
4
- url.searchParams.set("auth_token", token);
5
- if (qs) {
6
- for (const [k, v] of Object.entries(qs)) {
7
- if (v !== undefined && v !== null)
8
- url.searchParams.set(k, String(v));
9
- }
10
- }
11
- const opts = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { beeminderCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body, query) {
4
+ return credentialJson(ctx, beeminderCredential, "beeminder", {
5
+ target: "api",
6
+ path,
12
7
  method,
13
- headers: { "Content-Type": "application/json" },
14
- };
15
- if (body &&
16
- Object.keys(body).length > 0 &&
17
- method !== "GET" &&
18
- method !== "DELETE") {
19
- opts.body = JSON.stringify(body);
20
- }
21
- const res = await fetch(url.toString(), opts);
22
- if (!res.ok) {
23
- const text = await res.text();
24
- throw new Error(`Beeminder API error ${res.status}: ${text}`);
25
- }
26
- const ct = res.headers.get("content-type") ?? "";
27
- if (ct.includes("application/json"))
28
- return res.json();
29
- return { success: true };
8
+ query,
9
+ ...(body && Object.keys(body).length > 0 ? { json: body } : {}),
10
+ });
30
11
  }
31
- async function paginateAll(token, endpoint, qs) {
12
+ async function paginateAll(ctx, path, query) {
32
13
  const results = [];
33
14
  let page = 1;
34
15
  while (true) {
35
- const data = (await apiRequest(token, "GET", endpoint, undefined, {
36
- ...qs,
16
+ const data = (await apiRequest(ctx, "GET", path, undefined, {
17
+ ...query,
37
18
  page,
38
19
  }));
39
20
  if (!Array.isArray(data) || data.length === 0)
@@ -43,12 +24,10 @@ async function paginateAll(token, endpoint, qs) {
43
24
  }
44
25
  return results;
45
26
  }
46
- function getToken(ctx) {
47
- return ctx.connection.config.apiToken;
48
- }
49
27
  export default function beeminder(rl) {
50
28
  rl.setName("beeminder");
51
29
  rl.setVersion("0.1.0");
30
+ rl.setCredential(beeminderCredential);
52
31
  rl.setConnectionSchema({
53
32
  apiToken: {
54
33
  type: "string",
@@ -78,7 +57,7 @@ export default function beeminder(rl) {
78
57
  },
79
58
  async execute(input, ctx) {
80
59
  const { goalName, ...body } = input;
81
- return apiRequest(getToken(ctx), "POST", `/users/me/goals/${goalName}/datapoints.json`, body);
60
+ return apiRequest(ctx, "POST", `users/me/goals/${pathSegment(goalName)}/datapoints.json`, body);
82
61
  },
83
62
  });
84
63
  rl.registerAction("datapoint.createAll", {
@@ -94,7 +73,7 @@ export default function beeminder(rl) {
94
73
  },
95
74
  async execute(input, ctx) {
96
75
  const { goalName, datapoints } = input;
97
- return apiRequest(getToken(ctx), "POST", `/users/me/goals/${goalName}/datapoints/create_all.json`, { datapoints });
76
+ return apiRequest(ctx, "POST", `users/me/goals/${pathSegment(goalName)}/datapoints/create_all.json`, { datapoints });
98
77
  },
99
78
  });
100
79
  rl.registerAction("datapoint.get", {
@@ -110,7 +89,7 @@ export default function beeminder(rl) {
110
89
  },
111
90
  async execute(input, ctx) {
112
91
  const { goalName, datapointId } = input;
113
- return apiRequest(getToken(ctx), "GET", `/users/me/goals/${goalName}/datapoints/${datapointId}.json`);
92
+ return apiRequest(ctx, "GET", `users/me/goals/${pathSegment(goalName)}/datapoints/${pathSegment(datapointId)}.json`);
114
93
  },
115
94
  });
116
95
  rl.registerAction("datapoint.list", {
@@ -137,7 +116,6 @@ export default function beeminder(rl) {
137
116
  },
138
117
  async execute(input, ctx) {
139
118
  const { goalName, sort, limit, page, per } = (input ?? {});
140
- const token = getToken(ctx);
141
119
  const qs = {};
142
120
  if (sort)
143
121
  qs.sort = sort;
@@ -147,9 +125,9 @@ export default function beeminder(rl) {
147
125
  qs.page = page;
148
126
  if (per)
149
127
  qs.per = per;
150
- return apiRequest(token, "GET", `/users/me/goals/${goalName}/datapoints.json`, undefined, qs);
128
+ return apiRequest(ctx, "GET", `users/me/goals/${pathSegment(goalName)}/datapoints.json`, undefined, qs);
151
129
  }
152
- return paginateAll(token, `/users/me/goals/${goalName}/datapoints.json`, qs);
130
+ return paginateAll(ctx, `users/me/goals/${pathSegment(goalName)}/datapoints.json`, qs);
153
131
  },
154
132
  });
155
133
  rl.registerAction("datapoint.update", {
@@ -172,7 +150,7 @@ export default function beeminder(rl) {
172
150
  },
173
151
  async execute(input, ctx) {
174
152
  const { goalName, datapointId, ...body } = input;
175
- return apiRequest(getToken(ctx), "PUT", `/users/me/goals/${goalName}/datapoints/${datapointId}.json`, body);
153
+ return apiRequest(ctx, "PUT", `users/me/goals/${pathSegment(goalName)}/datapoints/${pathSegment(datapointId)}.json`, body);
176
154
  },
177
155
  });
178
156
  rl.registerAction("datapoint.delete", {
@@ -188,7 +166,7 @@ export default function beeminder(rl) {
188
166
  },
189
167
  async execute(input, ctx) {
190
168
  const { goalName, datapointId } = input;
191
- return apiRequest(getToken(ctx), "DELETE", `/users/me/goals/${goalName}/datapoints/${datapointId}.json`);
169
+ return apiRequest(ctx, "DELETE", `users/me/goals/${pathSegment(goalName)}/datapoints/${pathSegment(datapointId)}.json`);
192
170
  },
193
171
  });
194
172
  // ── Charge ──────────────────────────────────────────
@@ -215,7 +193,7 @@ export default function beeminder(rl) {
215
193
  body.note = note;
216
194
  if (dryrun)
217
195
  body.dryrun = dryrun;
218
- return apiRequest(getToken(ctx), "POST", "/charges.json", body);
196
+ return apiRequest(ctx, "POST", "charges.json", body);
219
197
  },
220
198
  });
221
199
  // ── Goal ────────────────────────────────────────────
@@ -282,7 +260,7 @@ export default function beeminder(rl) {
282
260
  },
283
261
  },
284
262
  async execute(input, ctx) {
285
- return apiRequest(getToken(ctx), "POST", "/users/me/goals.json", input);
263
+ return apiRequest(ctx, "POST", "users/me/goals.json", input);
286
264
  },
287
265
  });
288
266
  rl.registerAction("goal.get", {
@@ -303,7 +281,7 @@ export default function beeminder(rl) {
303
281
  },
304
282
  async execute(input, ctx) {
305
283
  const { goalName, ...qs } = input;
306
- return apiRequest(getToken(ctx), "GET", `/users/me/goals/${goalName}.json`, undefined, qs);
284
+ return apiRequest(ctx, "GET", `users/me/goals/${pathSegment(goalName)}.json`, undefined, qs);
307
285
  },
308
286
  });
309
287
  rl.registerAction("goal.list", {
@@ -318,7 +296,7 @@ export default function beeminder(rl) {
318
296
  },
319
297
  async execute(input, ctx) {
320
298
  const qs = (input ?? {});
321
- return apiRequest(getToken(ctx), "GET", "/users/me/goals.json", undefined, qs);
299
+ return apiRequest(ctx, "GET", "users/me/goals.json", undefined, qs);
322
300
  },
323
301
  });
324
302
  rl.registerAction("goal.listArchived", {
@@ -333,7 +311,7 @@ export default function beeminder(rl) {
333
311
  },
334
312
  async execute(input, ctx) {
335
313
  const qs = (input ?? {});
336
- return apiRequest(getToken(ctx), "GET", "/users/me/goals/archived.json", undefined, qs);
314
+ return apiRequest(ctx, "GET", "users/me/goals/archived.json", undefined, qs);
337
315
  },
338
316
  });
339
317
  rl.registerAction("goal.update", {
@@ -377,7 +355,7 @@ export default function beeminder(rl) {
377
355
  },
378
356
  async execute(input, ctx) {
379
357
  const { goalName, ...body } = input;
380
- return apiRequest(getToken(ctx), "PUT", `/users/me/goals/${goalName}.json`, body);
358
+ return apiRequest(ctx, "PUT", `users/me/goals/${pathSegment(goalName)}.json`, body);
381
359
  },
382
360
  });
383
361
  rl.registerAction("goal.refresh", {
@@ -388,7 +366,7 @@ export default function beeminder(rl) {
388
366
  },
389
367
  async execute(input, ctx) {
390
368
  const { goalName } = input;
391
- return apiRequest(getToken(ctx), "GET", `/users/me/goals/${goalName}/refresh_graph.json`);
369
+ return apiRequest(ctx, "GET", `users/me/goals/${pathSegment(goalName)}/refresh_graph.json`);
392
370
  },
393
371
  });
394
372
  rl.registerAction("goal.shortCircuit", {
@@ -399,7 +377,7 @@ export default function beeminder(rl) {
399
377
  },
400
378
  async execute(input, ctx) {
401
379
  const { goalName } = input;
402
- return apiRequest(getToken(ctx), "POST", `/users/me/goals/${goalName}/shortcircuit.json`);
380
+ return apiRequest(ctx, "POST", `users/me/goals/${pathSegment(goalName)}/shortcircuit.json`);
403
381
  },
404
382
  });
405
383
  rl.registerAction("goal.stepDown", {
@@ -410,7 +388,7 @@ export default function beeminder(rl) {
410
388
  },
411
389
  async execute(input, ctx) {
412
390
  const { goalName } = input;
413
- return apiRequest(getToken(ctx), "POST", `/users/me/goals/${goalName}/stepdown.json`);
391
+ return apiRequest(ctx, "POST", `users/me/goals/${pathSegment(goalName)}/stepdown.json`);
414
392
  },
415
393
  });
416
394
  rl.registerAction("goal.cancelStepDown", {
@@ -421,7 +399,7 @@ export default function beeminder(rl) {
421
399
  },
422
400
  async execute(input, ctx) {
423
401
  const { goalName } = input;
424
- return apiRequest(getToken(ctx), "POST", `/users/me/goals/${goalName}/cancel_stepdown.json`);
402
+ return apiRequest(ctx, "POST", `users/me/goals/${pathSegment(goalName)}/cancel_stepdown.json`);
425
403
  },
426
404
  });
427
405
  rl.registerAction("goal.uncle", {
@@ -432,7 +410,7 @@ export default function beeminder(rl) {
432
410
  },
433
411
  async execute(input, ctx) {
434
412
  const { goalName } = input;
435
- return apiRequest(getToken(ctx), "POST", `/users/me/goals/${goalName}/uncleme.json`);
413
+ return apiRequest(ctx, "POST", `users/me/goals/${pathSegment(goalName)}/uncleme.json`);
436
414
  },
437
415
  });
438
416
  // ── User ────────────────────────────────────────────
@@ -468,7 +446,7 @@ export default function beeminder(rl) {
468
446
  },
469
447
  async execute(input, ctx) {
470
448
  const qs = (input ?? {});
471
- return apiRequest(getToken(ctx), "GET", "/users/me.json", undefined, qs);
449
+ return apiRequest(ctx, "GET", "users/me.json", undefined, qs);
472
450
  },
473
451
  });
474
452
  }
@@ -0,0 +1,19 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** An access token, sent as a bearer to Bitly's one API origin. */
3
+ export const bitlyCredential = staticCredential({
4
+ id: "bitly",
5
+ auth: { kind: "bearer" },
6
+ local: { secret: "accessToken" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://api-ssl.bitly.com/v4/",
10
+ methods: ["GET", "POST", "PATCH"],
11
+ },
12
+ },
13
+ probe: {
14
+ target: "api",
15
+ path: "user",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });
@@ -1,31 +1,17 @@
1
- const BASE_URL = "https://api-ssl.bitly.com/v4";
2
- async function apiRequest(token, method, endpoint, body) {
3
- const opts = {
1
+ import { credentialJson, pathSegments } from "../../_shared/credentials.js";
2
+ import { bitlyCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body) {
4
+ return credentialJson(ctx, bitlyCredential, "bitly", {
5
+ target: "api",
6
+ path,
4
7
  method,
5
- headers: {
6
- "Content-Type": "application/json",
7
- Authorization: `Bearer ${token}`,
8
- },
9
- };
10
- if (body &&
11
- Object.keys(body).length > 0 &&
12
- method !== "GET" &&
13
- method !== "DELETE") {
14
- opts.body = JSON.stringify(body);
15
- }
16
- const res = await fetch(`${BASE_URL}${endpoint}`, opts);
17
- if (!res.ok) {
18
- const text = await res.text();
19
- throw new Error(`Bitly API error ${res.status}: ${text}`);
20
- }
21
- return res.json();
22
- }
23
- function getToken(ctx) {
24
- return ctx.connection.config.accessToken;
8
+ ...(body && Object.keys(body).length > 0 ? { json: body } : {}),
9
+ });
25
10
  }
26
11
  export default function bitly(rl) {
27
12
  rl.setName("bitly");
28
13
  rl.setVersion("0.1.0");
14
+ rl.setCredential(bitlyCredential);
29
15
  rl.setConnectionSchema({
30
16
  accessToken: {
31
17
  type: "string",
@@ -79,7 +65,7 @@ export default function bitly(rl) {
79
65
  body.tags = tags;
80
66
  if (deeplinks)
81
67
  body.deeplinks = deeplinks;
82
- return apiRequest(getToken(ctx), "POST", "/bitlinks", body);
68
+ return apiRequest(ctx, "POST", "bitlinks", body);
83
69
  },
84
70
  });
85
71
  rl.registerAction("link.get", {
@@ -94,7 +80,7 @@ export default function bitly(rl) {
94
80
  },
95
81
  async execute(input, ctx) {
96
82
  const { bitlink } = input;
97
- return apiRequest(getToken(ctx), "GET", `/bitlinks/${bitlink}`);
83
+ return apiRequest(ctx, "GET", `bitlinks/${pathSegments(bitlink)}`);
98
84
  },
99
85
  });
100
86
  rl.registerAction("link.update", {
@@ -140,7 +126,7 @@ export default function bitly(rl) {
140
126
  body.tags = tags;
141
127
  if (deeplinks)
142
128
  body.deeplinks = deeplinks;
143
- return apiRequest(getToken(ctx), "PATCH", `/bitlinks/${bitlink}`, body);
129
+ return apiRequest(ctx, "PATCH", `bitlinks/${pathSegments(bitlink)}`, body);
144
130
  },
145
131
  });
146
132
  }
@@ -0,0 +1,62 @@
1
+ import { configChoice, grantSchema, httpsBase, } from "../../_shared/credentials.js";
2
+ /**
3
+ * An organization API key (client id and secret), exchanged for a bearer
4
+ * token via the client-credentials grant against Bitwarden's identity
5
+ * service — the cloud one, or the self-hosted instance's own. Requests go
6
+ * to the matching Public API beneath /public/. A self-hosted connection
7
+ * must name its HTTPS domain; it is never sent to the cloud instead. The
8
+ * device fields are the fixed client registration Bitwarden's token
9
+ * endpoint requires.
10
+ */
11
+ export const bitwardenCredential = (config) => {
12
+ const selfHosted = configChoice(config.environment, ["cloudHosted", "selfHosted"], "cloudHosted") === "selfHosted";
13
+ const api = {
14
+ baseUrl: selfHosted
15
+ ? httpsBase(config.domain, "api/public/")
16
+ : "https://api.bitwarden.com/public/",
17
+ methods: ["GET", "POST", "PUT", "DELETE"],
18
+ };
19
+ return {
20
+ type: {
21
+ id: "bitwarden",
22
+ methods: {
23
+ oauth2: {
24
+ schema: grantSchema,
25
+ authentication: {
26
+ kind: "oauth2",
27
+ field: "grant",
28
+ definition: {
29
+ id: "bitwarden.oauth2",
30
+ provider: "bitwarden",
31
+ clientCredentials: {
32
+ url: selfHosted
33
+ ? httpsBase(config.domain, "identity/connect/token")
34
+ : "https://identity.bitwarden.com/connect/token",
35
+ clientAuthentication: "client_secret_post",
36
+ parameters: {
37
+ deviceName: "runline",
38
+ deviceType: "2",
39
+ deviceIdentifier: "runline",
40
+ },
41
+ },
42
+ },
43
+ renewal: "clientCredentials",
44
+ scopes: ["api.organization"],
45
+ },
46
+ targets: { api },
47
+ probe: {
48
+ target: "api",
49
+ path: "collections",
50
+ method: "GET",
51
+ acceptedStatuses: [200],
52
+ },
53
+ },
54
+ },
55
+ },
56
+ method: "oauth2",
57
+ application: {
58
+ clientId: config.clientId,
59
+ clientSecret: config.clientSecret,
60
+ },
61
+ };
62
+ };
@@ -1,69 +1,23 @@
1
- import { coordinatedAccessToken, requestToken, } from "../../_shared/tokenRefresh.js";
2
- async function apiRequest(token, baseUrl, method, endpoint, body, qs) {
3
- const url = new URL(`${baseUrl}${endpoint}`);
4
- if (qs) {
5
- for (const [k, v] of Object.entries(qs)) {
6
- if (v !== undefined && v !== null)
7
- url.searchParams.set(k, String(v));
8
- }
9
- }
10
- const opts = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { bitwardenCredential } from "./credentials.js";
3
+ function authedRequest(ctx, method, path, body, qs) {
4
+ return credentialJson(ctx, bitwardenCredential, "bitwarden", {
5
+ target: "api",
6
+ path,
11
7
  method,
12
- headers: {
13
- "Content-Type": "application/json",
14
- Authorization: `Bearer ${token}`,
15
- },
16
- };
17
- if (body &&
18
- Object.keys(body).length > 0 &&
19
- method !== "GET" &&
20
- method !== "DELETE") {
21
- opts.body = JSON.stringify(body);
22
- }
23
- const res = await fetch(url.toString(), opts);
24
- if (!res.ok) {
25
- const text = await res.text();
26
- throw new Error(`Bitwarden API error ${res.status}: ${text}`);
27
- }
28
- if (res.status === 204 || res.headers.get("content-length") === "0")
29
- return { success: true };
30
- const ct = res.headers.get("content-type") ?? "";
31
- if (ct.includes("application/json"))
32
- return res.json();
33
- return { success: true };
34
- }
35
- function getConn(cfg) {
36
- const domain = cfg.domain?.replace(/\/$/, "");
37
- const env = cfg.environment;
38
- const baseUrl = env === "selfHosted" && domain
39
- ? `${domain}/api`
40
- : "https://api.bitwarden.com";
41
- const tokenUrl = env === "selfHosted" && domain
42
- ? `${domain}/identity/connect/token`
43
- : "https://identity.bitwarden.com/connect/token";
44
- return {
45
- clientId: cfg.clientId,
46
- clientSecret: cfg.clientSecret,
47
- baseUrl,
48
- tokenUrl,
49
- };
50
- }
51
- async function authedRequest(ctx, method, endpoint, body, qs) {
52
- const token = await coordinatedAccessToken(ctx, (current) => {
53
- const { clientId, clientSecret, tokenUrl } = getConn(current);
54
- return requestToken({ url: tokenUrl, clientAuthentication: "client_secret_post" }, {
55
- grant_type: "client_credentials",
56
- scope: "api.organization",
57
- deviceName: "runline",
58
- deviceType: "2",
59
- deviceIdentifier: "runline",
60
- }, { clientId, clientSecret });
8
+ query: qs,
9
+ ...(body &&
10
+ Object.keys(body).length > 0 &&
11
+ method !== "GET" &&
12
+ method !== "DELETE"
13
+ ? { json: body }
14
+ : {}),
61
15
  });
62
- return apiRequest(token, getConn(ctx.connection.config).baseUrl, method, endpoint, body, qs);
63
16
  }
64
17
  export default function bitwarden(rl) {
65
18
  rl.setName("bitwarden");
66
19
  rl.setVersion("0.1.0");
20
+ rl.setCredential(bitwardenCredential);
67
21
  rl.setConnectionSchema({
68
22
  clientId: {
69
23
  type: "string",
@@ -104,7 +58,7 @@ export default function bitwarden(rl) {
104
58
  },
105
59
  async execute(input, ctx) {
106
60
  const { collectionId } = input;
107
- return authedRequest(ctx, "GET", `/public/collections/${collectionId}`);
61
+ return authedRequest(ctx, "GET", `collections/${pathSegment(collectionId)}`);
108
62
  },
109
63
  });
110
64
  rl.registerAction("collection.list", {
@@ -115,7 +69,7 @@ export default function bitwarden(rl) {
115
69
  },
116
70
  async execute(input, ctx) {
117
71
  const { limit } = (input ?? {});
118
- const data = (await authedRequest(ctx, "GET", "/public/collections"));
72
+ const data = (await authedRequest(ctx, "GET", "collections"));
119
73
  if (limit)
120
74
  return data.data.slice(0, limit);
121
75
  return data.data;
@@ -152,7 +106,7 @@ export default function bitwarden(rl) {
152
106
  }
153
107
  if (externalId)
154
108
  body.externalId = externalId;
155
- return authedRequest(ctx, "PUT", `/public/collections/${collectionId}`, body);
109
+ return authedRequest(ctx, "PUT", `collections/${pathSegment(collectionId)}`, body);
156
110
  },
157
111
  });
158
112
  rl.registerAction("collection.delete", {
@@ -167,7 +121,7 @@ export default function bitwarden(rl) {
167
121
  },
168
122
  async execute(input, ctx) {
169
123
  const { collectionId } = input;
170
- await authedRequest(ctx, "DELETE", `/public/collections/${collectionId}`);
124
+ await authedRequest(ctx, "DELETE", `collections/${pathSegment(collectionId)}`);
171
125
  return { success: true };
172
126
  },
173
127
  });
@@ -200,7 +154,7 @@ export default function bitwarden(rl) {
200
154
  },
201
155
  async execute(input, ctx) {
202
156
  const { limit, ...qs } = (input ?? {});
203
- const data = (await authedRequest(ctx, "GET", "/public/events", undefined, qs));
157
+ const data = (await authedRequest(ctx, "GET", "events", undefined, qs));
204
158
  if (limit)
205
159
  return data.data.slice(0, limit);
206
160
  return data.data;
@@ -239,7 +193,7 @@ export default function bitwarden(rl) {
239
193
  }
240
194
  if (externalId)
241
195
  body.externalId = externalId;
242
- return authedRequest(ctx, "POST", "/public/groups", body);
196
+ return authedRequest(ctx, "POST", "groups", body);
243
197
  },
244
198
  });
245
199
  rl.registerAction("group.get", {
@@ -250,7 +204,7 @@ export default function bitwarden(rl) {
250
204
  },
251
205
  async execute(input, ctx) {
252
206
  const { groupId } = input;
253
- return authedRequest(ctx, "GET", `/public/groups/${groupId}`);
207
+ return authedRequest(ctx, "GET", `groups/${pathSegment(groupId)}`);
254
208
  },
255
209
  });
256
210
  rl.registerAction("group.list", {
@@ -261,7 +215,7 @@ export default function bitwarden(rl) {
261
215
  },
262
216
  async execute(input, ctx) {
263
217
  const { limit } = (input ?? {});
264
- const data = (await authedRequest(ctx, "GET", "/public/groups"));
218
+ const data = (await authedRequest(ctx, "GET", "groups"));
265
219
  if (limit)
266
220
  return data.data.slice(0, limit);
267
221
  return data.data;
@@ -275,7 +229,7 @@ export default function bitwarden(rl) {
275
229
  },
276
230
  async execute(input, ctx) {
277
231
  const { groupId } = input;
278
- const memberIds = (await authedRequest(ctx, "GET", `/public/groups/${groupId}/member-ids`));
232
+ const memberIds = (await authedRequest(ctx, "GET", `groups/${pathSegment(groupId)}/member-ids`));
279
233
  return memberIds.map((memberId) => ({ memberId }));
280
234
  },
281
235
  });
@@ -309,7 +263,7 @@ export default function bitwarden(rl) {
309
263
  body.name = name;
310
264
  }
311
265
  else {
312
- const current = (await authedRequest(ctx, "GET", `/public/groups/${groupId}`));
266
+ const current = (await authedRequest(ctx, "GET", `groups/${pathSegment(groupId)}`));
313
267
  body.name = current.name;
314
268
  }
315
269
  body.AccessAll = accessAll ?? false;
@@ -321,7 +275,7 @@ export default function bitwarden(rl) {
321
275
  }
322
276
  if (externalId)
323
277
  body.externalId = externalId;
324
- return authedRequest(ctx, "PUT", `/public/groups/${groupId}`, body);
278
+ return authedRequest(ctx, "PUT", `groups/${pathSegment(groupId)}`, body);
325
279
  },
326
280
  });
327
281
  rl.registerAction("group.updateMembers", {
@@ -337,7 +291,7 @@ export default function bitwarden(rl) {
337
291
  },
338
292
  async execute(input, ctx) {
339
293
  const { groupId, memberIds } = input;
340
- await authedRequest(ctx, "PUT", `/public/groups/${groupId}/member-ids`, {
294
+ await authedRequest(ctx, "PUT", `groups/${pathSegment(groupId)}/member-ids`, {
341
295
  memberIds,
342
296
  });
343
297
  return { success: true };
@@ -351,7 +305,7 @@ export default function bitwarden(rl) {
351
305
  },
352
306
  async execute(input, ctx) {
353
307
  const { groupId } = input;
354
- await authedRequest(ctx, "DELETE", `/public/groups/${groupId}`);
308
+ await authedRequest(ctx, "DELETE", `groups/${pathSegment(groupId)}`);
355
309
  return { success: true };
356
310
  },
357
311
  });
@@ -397,7 +351,7 @@ export default function bitwarden(rl) {
397
351
  }
398
352
  if (externalId)
399
353
  body.externalId = externalId;
400
- return authedRequest(ctx, "POST", "/public/members/", body);
354
+ return authedRequest(ctx, "POST", "members/", body);
401
355
  },
402
356
  });
403
357
  rl.registerAction("member.get", {
@@ -408,7 +362,7 @@ export default function bitwarden(rl) {
408
362
  },
409
363
  async execute(input, ctx) {
410
364
  const { memberId } = input;
411
- return authedRequest(ctx, "GET", `/public/members/${memberId}`);
365
+ return authedRequest(ctx, "GET", `members/${pathSegment(memberId)}`);
412
366
  },
413
367
  });
414
368
  rl.registerAction("member.list", {
@@ -419,7 +373,7 @@ export default function bitwarden(rl) {
419
373
  },
420
374
  async execute(input, ctx) {
421
375
  const { limit } = (input ?? {});
422
- const data = (await authedRequest(ctx, "GET", "/public/members"));
376
+ const data = (await authedRequest(ctx, "GET", "members"));
423
377
  if (limit)
424
378
  return data.data.slice(0, limit);
425
379
  return data.data;
@@ -433,7 +387,7 @@ export default function bitwarden(rl) {
433
387
  },
434
388
  async execute(input, ctx) {
435
389
  const { memberId } = input;
436
- const groupIds = (await authedRequest(ctx, "GET", `/public/members/${memberId}/group-ids`));
390
+ const groupIds = (await authedRequest(ctx, "GET", `members/${pathSegment(memberId)}/group-ids`));
437
391
  return groupIds.map((groupId) => ({ groupId }));
438
392
  },
439
393
  });
@@ -478,7 +432,7 @@ export default function bitwarden(rl) {
478
432
  }
479
433
  if (externalId)
480
434
  body.externalId = externalId;
481
- return authedRequest(ctx, "PUT", `/public/members/${memberId}`, body);
435
+ return authedRequest(ctx, "PUT", `members/${pathSegment(memberId)}`, body);
482
436
  },
483
437
  });
484
438
  rl.registerAction("member.updateGroups", {
@@ -494,7 +448,7 @@ export default function bitwarden(rl) {
494
448
  },
495
449
  async execute(input, ctx) {
496
450
  const { memberId, groupIds } = input;
497
- await authedRequest(ctx, "PUT", `/public/members/${memberId}/group-ids`, {
451
+ await authedRequest(ctx, "PUT", `members/${pathSegment(memberId)}/group-ids`, {
498
452
  groupIds,
499
453
  });
500
454
  return { success: true };
@@ -508,7 +462,7 @@ export default function bitwarden(rl) {
508
462
  },
509
463
  async execute(input, ctx) {
510
464
  const { memberId } = input;
511
- await authedRequest(ctx, "DELETE", `/public/members/${memberId}`);
465
+ await authedRequest(ctx, "DELETE", `members/${pathSegment(memberId)}`);
512
466
  return { success: true };
513
467
  },
514
468
  });
@@ -0,0 +1,19 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** An OAuth2 access or developer token, sent as a bearer to Box's API origin. */
3
+ export const boxCredential = staticCredential({
4
+ id: "box",
5
+ auth: { kind: "bearer" },
6
+ local: { secret: "accessToken" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://api.box.com/2.0/",
10
+ methods: ["GET", "POST", "PUT", "DELETE"],
11
+ },
12
+ },
13
+ probe: {
14
+ target: "api",
15
+ path: "users/me",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });