runline 0.32.0 → 0.34.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 (521) 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 +9 -0
  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 +179 -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 +167 -10
  15. package/dist/index.d.ts +5 -5
  16. package/dist/index.js +2 -2
  17. package/dist/plugin/api.d.ts +7 -0
  18. package/dist/plugin/api.js +7 -0
  19. package/dist/plugin/types.d.ts +12 -0
  20. package/dist/plugins/_shared/credentialAdapter.js +79 -15
  21. package/dist/plugins/_shared/credentials.js +389 -0
  22. package/dist/plugins/_shared/googleAuth.js +9 -40
  23. package/dist/plugins/_shared/googleCredentials.js +28 -7
  24. package/dist/plugins/_shared/microsoftAuth.js +13 -44
  25. package/dist/plugins/_shared/microsoftCredentials.js +30 -8
  26. package/dist/plugins/_shared/provider.js +2 -14
  27. package/dist/plugins/_shared/shiftCloud.js +22 -34
  28. package/dist/plugins/_shared/shiftCredentials.js +83 -0
  29. package/dist/plugins/_shared/shiftUpload.js +1 -1
  30. package/dist/plugins/actionNetwork/src/credentials.js +14 -0
  31. package/dist/plugins/actionNetwork/src/index.js +39 -50
  32. package/dist/plugins/activeCampaign/src/credentials.js +22 -0
  33. package/dist/plugins/activeCampaign/src/index.js +61 -132
  34. package/dist/plugins/adalo/src/credentials.js +16 -0
  35. package/dist/plugins/adalo/src/index.js +19 -43
  36. package/dist/plugins/affinity/src/credentials.js +19 -0
  37. package/dist/plugins/affinity/src/index.js +29 -54
  38. package/dist/plugins/agileCrm/src/credentials.js +16 -0
  39. package/dist/plugins/agileCrm/src/index.js +46 -112
  40. package/dist/plugins/airtable/src/credentials.js +19 -0
  41. package/dist/plugins/airtable/src/index.js +37 -50
  42. package/dist/plugins/airtop/src/credentials.js +20 -0
  43. package/dist/plugins/airtop/src/index.js +51 -75
  44. package/dist/plugins/apiTemplateIo/src/credentials.js +19 -0
  45. package/dist/plugins/apiTemplateIo/src/index.js +14 -31
  46. package/dist/plugins/asana/src/credentials.js +19 -0
  47. package/dist/plugins/asana/src/index.js +51 -72
  48. package/dist/plugins/autopilot/src/credentials.js +19 -0
  49. package/dist/plugins/autopilot/src/index.js +38 -45
  50. package/dist/plugins/bambooHr/src/credentials.js +16 -0
  51. package/dist/plugins/bambooHr/src/index.js +41 -67
  52. package/dist/plugins/bannerbear/src/credentials.js +19 -0
  53. package/dist/plugins/bannerbear/src/index.js +15 -27
  54. package/dist/plugins/baserow/src/credentials.js +17 -0
  55. package/dist/plugins/baserow/src/index.js +23 -49
  56. package/dist/plugins/beeminder/src/credentials.js +19 -0
  57. package/dist/plugins/beeminder/src/index.js +32 -54
  58. package/dist/plugins/bitly/src/credentials.js +19 -0
  59. package/dist/plugins/bitly/src/index.js +12 -26
  60. package/dist/plugins/bitwarden/src/credentials.js +62 -0
  61. package/dist/plugins/bitwarden/src/index.js +34 -80
  62. package/dist/plugins/box/src/credentials.js +19 -0
  63. package/dist/plugins/box/src/index.js +24 -49
  64. package/dist/plugins/brandfetch/src/credentials.js +13 -0
  65. package/dist/plugins/brandfetch/src/index.js +12 -17
  66. package/dist/plugins/brevo/src/credentials.js +19 -0
  67. package/dist/plugins/brevo/src/index.js +30 -51
  68. package/dist/plugins/bubble/src/credentials.js +28 -0
  69. package/dist/plugins/bubble/src/index.js +29 -65
  70. package/dist/plugins/chargebee/src/credentials.js +16 -0
  71. package/dist/plugins/chargebee/src/index.js +15 -45
  72. package/dist/plugins/circleci/src/credentials.js +19 -0
  73. package/dist/plugins/circleci/src/index.js +19 -39
  74. package/dist/plugins/ciscoWebex/src/credentials.js +19 -0
  75. package/dist/plugins/ciscoWebex/src/index.js +43 -61
  76. package/dist/plugins/clearbit/src/credentials.js +22 -0
  77. package/dist/plugins/clearbit/src/index.js +11 -21
  78. package/dist/plugins/clickup/src/credentials.js +19 -0
  79. package/dist/plugins/clickup/src/index.js +85 -117
  80. package/dist/plugins/clockify/src/credentials.js +19 -0
  81. package/dist/plugins/clockify/src/index.js +46 -61
  82. package/dist/plugins/cloudflare/src/credentials.js +19 -0
  83. package/dist/plugins/cloudflare/src/index.js +19 -34
  84. package/dist/plugins/cockpit/src/credentials.js +17 -0
  85. package/dist/plugins/cockpit/src/index.js +18 -31
  86. package/dist/plugins/coda/src/credentials.js +19 -0
  87. package/dist/plugins/coda/src/index.js +33 -50
  88. package/dist/plugins/coingecko/src/credentials.js +20 -0
  89. package/dist/plugins/coingecko/src/index.js +24 -34
  90. package/dist/plugins/contentful/src/credentials.js +26 -0
  91. package/dist/plugins/contentful/src/index.js +19 -40
  92. package/dist/plugins/convertkit/src/credentials.js +26 -0
  93. package/dist/plugins/convertkit/src/index.js +27 -45
  94. package/dist/plugins/copper/src/credentials.js +17 -0
  95. package/dist/plugins/copper/src/index.js +25 -47
  96. package/dist/plugins/cortex/src/credentials.js +28 -0
  97. package/dist/plugins/cortex/src/index.js +26 -49
  98. package/dist/plugins/currents/src/credentials.js +19 -0
  99. package/dist/plugins/currents/src/index.js +46 -59
  100. package/dist/plugins/customerIo/src/credentials.js +52 -0
  101. package/dist/plugins/customerIo/src/index.js +30 -58
  102. package/dist/plugins/databricks/src/credentials.js +13 -0
  103. package/dist/plugins/databricks/src/index.js +51 -103
  104. package/dist/plugins/deepl/src/credentials.js +19 -0
  105. package/dist/plugins/deepl/src/index.js +13 -39
  106. package/dist/plugins/demio/src/credentials.js +26 -0
  107. package/dist/plugins/demio/src/index.js +17 -41
  108. package/dist/plugins/dhl/src/credentials.js +13 -0
  109. package/dist/plugins/dhl/src/index.js +8 -19
  110. package/dist/plugins/discord/src/credentials.js +19 -0
  111. package/dist/plugins/discord/src/index.js +30 -58
  112. package/dist/plugins/discourse/src/credentials.js +18 -0
  113. package/dist/plugins/discourse/src/index.js +36 -53
  114. package/dist/plugins/disqus/src/credentials.js +13 -0
  115. package/dist/plugins/disqus/src/index.js +14 -32
  116. package/dist/plugins/drift/src/credentials.js +13 -0
  117. package/dist/plugins/drift/src/index.js +16 -26
  118. package/dist/plugins/dropbox/src/credentials.js +13 -0
  119. package/dist/plugins/dropbox/src/index.js +23 -30
  120. package/dist/plugins/dropcontact/src/credentials.js +13 -0
  121. package/dist/plugins/dropcontact/src/index.js +13 -18
  122. package/dist/plugins/egoi/src/credentials.js +19 -0
  123. package/dist/plugins/egoi/src/index.js +23 -38
  124. package/dist/plugins/elasticsearch/src/credentials.js +18 -0
  125. package/dist/plugins/elasticsearch/src/index.js +27 -48
  126. package/dist/plugins/elevenlabs/src/credentials.js +30 -0
  127. package/dist/plugins/elevenlabs/src/index.js +4 -1
  128. package/dist/plugins/elevenlabs/src/schemas.js +2 -1
  129. package/dist/plugins/elevenlabs/src/shared.js +74 -35
  130. package/dist/plugins/elevenlabs/src/workflows.js +2 -2
  131. package/dist/plugins/emelia/src/credentials.js +14 -0
  132. package/dist/plugins/emelia/src/index.js +19 -23
  133. package/dist/plugins/erpnext/src/credentials.js +27 -0
  134. package/dist/plugins/erpnext/src/index.js +21 -42
  135. package/dist/plugins/facebookGraph/src/credentials.js +20 -0
  136. package/dist/plugins/facebookGraph/src/index.js +39 -37
  137. package/dist/plugins/fal/src/credentials.js +14 -0
  138. package/dist/plugins/fal/src/index.js +4 -2
  139. package/dist/plugins/fal/src/shared.js +58 -63
  140. package/dist/plugins/freshdesk/src/credentials.js +20 -0
  141. package/dist/plugins/freshdesk/src/index.js +25 -46
  142. package/dist/plugins/freshservice/src/credentials.js +16 -0
  143. package/dist/plugins/freshservice/src/index.js +37 -58
  144. package/dist/plugins/freshworksCrm/src/credentials.js +16 -0
  145. package/dist/plugins/freshworksCrm/src/index.js +20 -39
  146. package/dist/plugins/getresponse/src/credentials.js +22 -0
  147. package/dist/plugins/getresponse/src/index.js +20 -32
  148. package/dist/plugins/gett/src/credentials.js +64 -0
  149. package/dist/plugins/gett/src/index.js +11 -6
  150. package/dist/plugins/gett/src/login.js +24 -0
  151. package/dist/plugins/gett/src/session.js +15 -38
  152. package/dist/plugins/gett/src/shared.js +41 -84
  153. package/dist/plugins/ghost/src/credentials.js +36 -0
  154. package/dist/plugins/ghost/src/index.js +18 -59
  155. package/dist/plugins/github/src/credentials.js +18 -0
  156. package/dist/plugins/github/src/index.js +55 -78
  157. package/dist/plugins/gitlab/src/credentials.js +24 -0
  158. package/dist/plugins/gitlab/src/index.js +29 -48
  159. package/dist/plugins/gmail/src/index.js +26 -24
  160. package/dist/plugins/gong/src/credentials.js +16 -0
  161. package/dist/plugins/gong/src/index.js +16 -32
  162. package/dist/plugins/googleAppsScript/src/index.js +108 -42
  163. package/dist/plugins/googleCalendar/src/index.js +15 -13
  164. package/dist/plugins/googleContacts/src/index.js +12 -9
  165. package/dist/plugins/googleDocs/src/index.js +2 -0
  166. package/dist/plugins/googleDocs/src/shared.js +2 -1
  167. package/dist/plugins/googleDrive/src/index.js +50 -53
  168. package/dist/plugins/googleImage/src/credentials.js +14 -0
  169. package/dist/plugins/googleImage/src/index.js +14 -25
  170. package/dist/plugins/googleSheets/src/index.js +26 -27
  171. package/dist/plugins/googleSlides/src/index.js +6 -4
  172. package/dist/plugins/googleTasks/src/index.js +13 -11
  173. package/dist/plugins/gotify/src/credentials.js +32 -0
  174. package/dist/plugins/gotify/src/index.js +14 -36
  175. package/dist/plugins/gotowebinar/src/credentials.js +13 -0
  176. package/dist/plugins/gotowebinar/src/index.js +52 -69
  177. package/dist/plugins/grafana/src/credentials.js +16 -0
  178. package/dist/plugins/grafana/src/index.js +34 -53
  179. package/dist/plugins/graphql/src/credentials.js +42 -0
  180. package/dist/plugins/graphql/src/index.js +21 -46
  181. package/dist/plugins/grist/src/credentials.js +30 -0
  182. package/dist/plugins/grist/src/index.js +14 -43
  183. package/dist/plugins/halopsa/src/credentials.js +56 -0
  184. package/dist/plugins/halopsa/src/index.js +20 -47
  185. package/dist/plugins/harvest/src/credentials.js +20 -0
  186. package/dist/plugins/harvest/src/index.js +24 -43
  187. package/dist/plugins/helpscout/src/credentials.js +13 -0
  188. package/dist/plugins/helpscout/src/index.js +26 -38
  189. package/dist/plugins/highlevel/src/credentials.js +19 -0
  190. package/dist/plugins/highlevel/src/index.js +34 -63
  191. package/dist/plugins/homeAssistant/src/credentials.js +27 -0
  192. package/dist/plugins/homeAssistant/src/index.js +34 -52
  193. package/dist/plugins/hubspot/src/credentials.js +16 -0
  194. package/dist/plugins/hubspot/src/index.js +29 -41
  195. package/dist/plugins/humanticAi/src/credentials.js +13 -0
  196. package/dist/plugins/humanticAi/src/index.js +15 -22
  197. package/dist/plugins/hunter/src/credentials.js +13 -0
  198. package/dist/plugins/hunter/src/index.js +18 -17
  199. package/dist/plugins/intercom/src/credentials.js +19 -0
  200. package/dist/plugins/intercom/src/index.js +25 -38
  201. package/dist/plugins/iterable/src/credentials.js +17 -0
  202. package/dist/plugins/iterable/src/index.js +26 -40
  203. package/dist/plugins/jenkins/src/credentials.js +16 -0
  204. package/dist/plugins/jenkins/src/index.js +22 -36
  205. package/dist/plugins/jira/src/credentials.js +16 -0
  206. package/dist/plugins/jira/src/index.js +35 -61
  207. package/dist/plugins/keap/src/credentials.js +19 -0
  208. package/dist/plugins/keap/src/index.js +43 -71
  209. package/dist/plugins/kobotoolbox/src/credentials.js +13 -0
  210. package/dist/plugins/kobotoolbox/src/index.js +46 -84
  211. package/dist/plugins/lemlist/src/credentials.js +19 -0
  212. package/dist/plugins/lemlist/src/index.js +35 -47
  213. package/dist/plugins/linear/src/attachments.js +7 -7
  214. package/dist/plugins/linear/src/comments.js +7 -7
  215. package/dist/plugins/linear/src/credentials.js +17 -0
  216. package/dist/plugins/linear/src/cycles.js +5 -5
  217. package/dist/plugins/linear/src/index.js +2 -0
  218. package/dist/plugins/linear/src/initiatives.js +6 -6
  219. package/dist/plugins/linear/src/issues.js +14 -14
  220. package/dist/plugins/linear/src/labels.js +6 -6
  221. package/dist/plugins/linear/src/organization.js +2 -2
  222. package/dist/plugins/linear/src/projects.js +12 -12
  223. package/dist/plugins/linear/src/shared.js +34 -32
  224. package/dist/plugins/linear/src/states.js +3 -3
  225. package/dist/plugins/linear/src/teams.js +4 -4
  226. package/dist/plugins/linear/src/users.js +3 -3
  227. package/dist/plugins/linear/src/views.js +5 -5
  228. package/dist/plugins/linear/src/webhooks.js +5 -5
  229. package/dist/plugins/lingvanex/src/credentials.js +13 -0
  230. package/dist/plugins/lingvanex/src/index.js +7 -9
  231. package/dist/plugins/linkedin/src/credentials.js +17 -0
  232. package/dist/plugins/linkedin/src/index.js +13 -17
  233. package/dist/plugins/lonescale/src/credentials.js +13 -0
  234. package/dist/plugins/lonescale/src/index.js +16 -26
  235. package/dist/plugins/magento/src/credentials.js +16 -0
  236. package/dist/plugins/magento/src/index.js +67 -84
  237. package/dist/plugins/mailcheck/src/credentials.js +17 -0
  238. package/dist/plugins/mailcheck/src/index.js +7 -9
  239. package/dist/plugins/mailchimp/src/credentials.js +32 -0
  240. package/dist/plugins/mailchimp/src/index.js +36 -44
  241. package/dist/plugins/mailerlite/src/credentials.js +13 -0
  242. package/dist/plugins/mailerlite/src/index.js +19 -32
  243. package/dist/plugins/mailgun/src/credentials.js +21 -0
  244. package/dist/plugins/mailgun/src/index.js +15 -21
  245. package/dist/plugins/mailjet/src/credentials.js +38 -0
  246. package/dist/plugins/mailjet/src/index.js +60 -115
  247. package/dist/plugins/mandrill/src/credentials.js +17 -0
  248. package/dist/plugins/mandrill/src/index.js +11 -12
  249. package/dist/plugins/marketstack/src/credentials.js +16 -0
  250. package/dist/plugins/marketstack/src/index.js +18 -28
  251. package/dist/plugins/matrix/src/credentials.js +19 -0
  252. package/dist/plugins/matrix/src/index.js +23 -52
  253. package/dist/plugins/mattermost/src/credentials.js +19 -0
  254. package/dist/plugins/mattermost/src/index.js +41 -73
  255. package/dist/plugins/mautic/src/credentials.js +16 -0
  256. package/dist/plugins/mautic/src/index.js +46 -62
  257. package/dist/plugins/medium/src/credentials.js +20 -0
  258. package/dist/plugins/medium/src/index.js +18 -23
  259. package/dist/plugins/messagebird/src/credentials.js +22 -0
  260. package/dist/plugins/messagebird/src/index.js +13 -18
  261. package/dist/plugins/metabase/src/credentials.js +19 -0
  262. package/dist/plugins/metabase/src/index.js +24 -40
  263. package/dist/plugins/microsoftCalendar/src/index.js +48 -12
  264. package/dist/plugins/microsoftFiles/src/index.js +90 -25
  265. package/dist/plugins/microsoftMail/src/index.js +62 -15
  266. package/dist/plugins/misp/src/credentials.js +16 -0
  267. package/dist/plugins/misp/src/index.js +60 -71
  268. package/dist/plugins/mocean/src/credentials.js +17 -0
  269. package/dist/plugins/mocean/src/index.js +11 -23
  270. package/dist/plugins/monday/src/credentials.js +14 -0
  271. package/dist/plugins/monday/src/index.js +31 -44
  272. package/dist/plugins/monicaCrm/src/credentials.js +19 -0
  273. package/dist/plugins/monicaCrm/src/index.js +25 -42
  274. package/dist/plugins/msg91/src/credentials.js +10 -0
  275. package/dist/plugins/msg91/src/index.js +15 -11
  276. package/dist/plugins/nasa/src/credentials.js +22 -0
  277. package/dist/plugins/nasa/src/index.js +24 -28
  278. package/dist/plugins/netlify/src/credentials.js +19 -0
  279. package/dist/plugins/netlify/src/index.js +27 -51
  280. package/dist/plugins/netscalerAdc/src/credentials.js +18 -0
  281. package/dist/plugins/netscalerAdc/src/index.js +16 -31
  282. package/dist/plugins/nextcloud/src/credentials.js +27 -0
  283. package/dist/plugins/nextcloud/src/index.js +55 -109
  284. package/dist/plugins/nocodb/src/credentials.js +16 -0
  285. package/dist/plugins/nocodb/src/index.js +19 -37
  286. package/dist/plugins/notion/src/credentials.js +21 -0
  287. package/dist/plugins/notion/src/index.js +25 -38
  288. package/dist/plugins/npm/src/credentials.js +19 -0
  289. package/dist/plugins/npm/src/index.js +22 -32
  290. package/dist/plugins/odoo/src/credentials.js +21 -0
  291. package/dist/plugins/odoo/src/index.js +53 -69
  292. package/dist/plugins/okta/src/credentials.js +23 -0
  293. package/dist/plugins/okta/src/index.js +30 -35
  294. package/dist/plugins/oneSimpleApi/src/credentials.js +16 -0
  295. package/dist/plugins/oneSimpleApi/src/index.js +19 -24
  296. package/dist/plugins/onfleet/src/credentials.js +23 -0
  297. package/dist/plugins/onfleet/src/index.js +42 -53
  298. package/dist/plugins/openai/src/credentials.js +13 -0
  299. package/dist/plugins/openai/src/index.js +15 -23
  300. package/dist/plugins/openweathermap/src/credentials.js +16 -0
  301. package/dist/plugins/openweathermap/src/index.js +22 -22
  302. package/dist/plugins/oura/src/credentials.js +19 -0
  303. package/dist/plugins/oura/src/index.js +13 -18
  304. package/dist/plugins/paddle/src/credentials.js +27 -0
  305. package/dist/plugins/paddle/src/index.js +20 -36
  306. package/dist/plugins/pagerduty/src/credentials.js +24 -0
  307. package/dist/plugins/pagerduty/src/index.js +30 -39
  308. package/dist/plugins/parallel/src/credentials.js +18 -0
  309. package/dist/plugins/parallel/src/index.js +16 -22
  310. package/dist/plugins/paypal/src/credentials.js +44 -0
  311. package/dist/plugins/paypal/src/index.js +14 -40
  312. package/dist/plugins/peekalink/src/credentials.js +16 -0
  313. package/dist/plugins/peekalink/src/index.js +10 -11
  314. package/dist/plugins/phantombuster/src/credentials.js +19 -0
  315. package/dist/plugins/phantombuster/src/index.js +19 -32
  316. package/dist/plugins/philipsHue/src/credentials.js +17 -0
  317. package/dist/plugins/philipsHue/src/index.js +15 -27
  318. package/dist/plugins/pipedrive/src/credentials.js +26 -0
  319. package/dist/plugins/pipedrive/src/index.js +43 -73
  320. package/dist/plugins/plaud/src/index.js +2 -1
  321. package/dist/plugins/plaud/src/shared.js +23 -19
  322. package/dist/plugins/plivo/src/credentials.js +20 -0
  323. package/dist/plugins/plivo/src/index.js +13 -19
  324. package/dist/plugins/posthog/src/credentials.js +18 -0
  325. package/dist/plugins/posthog/src/index.js +14 -20
  326. package/dist/plugins/profitwell/src/credentials.js +22 -0
  327. package/dist/plugins/profitwell/src/index.js +10 -17
  328. package/dist/plugins/pushbullet/src/credentials.js +19 -0
  329. package/dist/plugins/pushbullet/src/index.js +19 -27
  330. package/dist/plugins/pushcut/src/credentials.js +19 -0
  331. package/dist/plugins/pushcut/src/index.js +7 -8
  332. package/dist/plugins/pushover/src/credentials.js +14 -0
  333. package/dist/plugins/pushover/src/index.js +7 -12
  334. package/dist/plugins/quickbase/src/credentials.js +15 -0
  335. package/dist/plugins/quickbase/src/index.js +24 -34
  336. package/dist/plugins/quickbooks/src/credentials.js +22 -0
  337. package/dist/plugins/quickbooks/src/index.js +17 -46
  338. package/dist/plugins/raindrop/src/credentials.js +19 -0
  339. package/dist/plugins/raindrop/src/index.js +30 -32
  340. package/dist/plugins/recraft/src/credentials.js +13 -0
  341. package/dist/plugins/recraft/src/index.js +38 -27
  342. package/dist/plugins/reddit/src/credentials.js +26 -0
  343. package/dist/plugins/reddit/src/index.js +30 -34
  344. package/dist/plugins/replicate/src/credentials.js +23 -0
  345. package/dist/plugins/replicate/src/index.js +17 -27
  346. package/dist/plugins/rocketchat/src/credentials.js +17 -0
  347. package/dist/plugins/rocketchat/src/index.js +8 -19
  348. package/dist/plugins/rundeck/src/credentials.js +16 -0
  349. package/dist/plugins/rundeck/src/index.js +12 -28
  350. package/dist/plugins/salesforce/src/credentials.js +73 -0
  351. package/dist/plugins/salesforce/src/index.js +6 -0
  352. package/dist/plugins/salesforce/src/metadata.js +3 -16
  353. package/dist/plugins/salesforce/src/shared.js +25 -100
  354. package/dist/plugins/salesforce/src/sobjects.js +10 -9
  355. package/dist/plugins/salesmate/src/credentials.js +17 -0
  356. package/dist/plugins/salesmate/src/index.js +20 -37
  357. package/dist/plugins/securityScorecard/src/credentials.js +22 -0
  358. package/dist/plugins/securityScorecard/src/index.js +24 -37
  359. package/dist/plugins/segment/src/credentials.js +16 -0
  360. package/dist/plugins/segment/src/index.js +12 -16
  361. package/dist/plugins/sendgrid/src/credentials.js +13 -0
  362. package/dist/plugins/sendgrid/src/index.js +31 -35
  363. package/dist/plugins/sendy/src/credentials.js +18 -0
  364. package/dist/plugins/sendy/src/index.js +18 -24
  365. package/dist/plugins/sentry/src/credentials.js +16 -0
  366. package/dist/plugins/sentry/src/index.js +30 -98
  367. package/dist/plugins/servicenow/src/credentials.js +13 -0
  368. package/dist/plugins/servicenow/src/index.js +22 -41
  369. package/dist/plugins/shiftAtlas/src/graph.js +2 -2
  370. package/dist/plugins/shiftAtlas/src/index.js +2 -0
  371. package/dist/plugins/shiftAtlas/src/shared.js +3 -1
  372. package/dist/plugins/shiftBwm/src/collections.js +201 -0
  373. package/dist/plugins/shiftBwm/src/index.js +35 -0
  374. package/dist/plugins/shiftBwm/src/records.js +180 -0
  375. package/dist/plugins/shiftBwm/src/shared.js +168 -0
  376. package/dist/plugins/shiftBwm/src/vendor/client.js +227 -0
  377. package/dist/plugins/shiftBwm/src/vendor/contracts.js +59 -0
  378. package/dist/plugins/shiftBwm/src/vendor/models.js +525 -0
  379. package/dist/plugins/shiftCrm/src/access.js +2 -2
  380. package/dist/plugins/shiftCrm/src/accounts.js +3 -3
  381. package/dist/plugins/shiftCrm/src/activities.js +3 -3
  382. package/dist/plugins/shiftCrm/src/credentials.js +6 -0
  383. package/dist/plugins/shiftCrm/src/index.js +2 -0
  384. package/dist/plugins/shiftCrm/src/opportunities.js +3 -3
  385. package/dist/plugins/shiftCrm/src/people.js +3 -3
  386. package/dist/plugins/shiftCrm/src/records.js +2 -2
  387. package/dist/plugins/shiftCrm/src/shared.js +2 -1
  388. package/dist/plugins/shiftCrm/src/tasks.js +3 -3
  389. package/dist/plugins/shiftObjects/src/credentials.js +2 -0
  390. package/dist/plugins/shiftObjects/src/index.js +2 -0
  391. package/dist/plugins/shiftObjects/src/objects.js +3 -3
  392. package/dist/plugins/shiftOcr/src/credentials.js +8 -0
  393. package/dist/plugins/shiftOcr/src/index.js +5 -2
  394. package/dist/plugins/shiftPages/src/index.js +2 -0
  395. package/dist/plugins/shiftPages/src/pages.js +5 -3
  396. package/dist/plugins/shiftPages/src/shared.js +3 -1
  397. package/dist/plugins/shiftTranscription/src/index.js +2 -0
  398. package/dist/plugins/shiftTranscription/src/shared.js +11 -1
  399. package/dist/plugins/shiftTranscription/src/transcription.js +3 -2
  400. package/dist/plugins/shiftWork/src/index.js +2 -0
  401. package/dist/plugins/shiftWork/src/issue-views.js +5 -5
  402. package/dist/plugins/shiftWork/src/issues.js +11 -7
  403. package/dist/plugins/shiftWork/src/projects.js +3 -3
  404. package/dist/plugins/shiftWork/src/shared.js +3 -1
  405. package/dist/plugins/shopify/src/credentials.js +16 -0
  406. package/dist/plugins/shopify/src/index.js +32 -59
  407. package/dist/plugins/signl4/src/credentials.js +17 -0
  408. package/dist/plugins/signl4/src/index.js +28 -29
  409. package/dist/plugins/slack/src/credentials.js +19 -0
  410. package/dist/plugins/slack/src/index.js +51 -60
  411. package/dist/plugins/sms77/src/credentials.js +17 -0
  412. package/dist/plugins/sms77/src/index.js +11 -16
  413. package/dist/plugins/splunk/src/credentials.js +19 -0
  414. package/dist/plugins/splunk/src/index.js +32 -74
  415. package/dist/plugins/spotify/src/credentials.js +19 -0
  416. package/dist/plugins/spotify/src/index.js +40 -55
  417. package/dist/plugins/stackby/src/credentials.js +13 -0
  418. package/dist/plugins/stackby/src/index.js +14 -23
  419. package/dist/plugins/steel/src/auth.js +27 -0
  420. package/dist/plugins/steel/src/browser.js +4 -3
  421. package/dist/plugins/steel/src/captchas.js +4 -3
  422. package/dist/plugins/steel/src/extensions.js +3 -2
  423. package/dist/plugins/steel/src/files.js +9 -10
  424. package/dist/plugins/steel/src/index.js +2 -0
  425. package/dist/plugins/steel/src/page/tools.js +3 -3
  426. package/dist/plugins/steel/src/profiles.js +4 -3
  427. package/dist/plugins/steel/src/sessions.js +13 -13
  428. package/dist/plugins/steel/src/shared.js +21 -51
  429. package/dist/plugins/storyblok/src/credentials.js +37 -0
  430. package/dist/plugins/storyblok/src/index.js +22 -66
  431. package/dist/plugins/strapi/src/credentials.js +71 -0
  432. package/dist/plugins/strapi/src/index.js +36 -70
  433. package/dist/plugins/strava/src/credentials.js +19 -0
  434. package/dist/plugins/strava/src/index.js +16 -33
  435. package/dist/plugins/stripe/src/credentials.js +19 -0
  436. package/dist/plugins/stripe/src/index.js +44 -58
  437. package/dist/plugins/supabase/src/credentials.js +30 -0
  438. package/dist/plugins/supabase/src/index.js +18 -40
  439. package/dist/plugins/syncromsp/src/credentials.js +16 -0
  440. package/dist/plugins/syncromsp/src/index.js +37 -70
  441. package/dist/plugins/tapfiliate/src/credentials.js +13 -0
  442. package/dist/plugins/tapfiliate/src/index.js +21 -31
  443. package/dist/plugins/telegram/src/credentials.js +20 -0
  444. package/dist/plugins/telegram/src/index.js +31 -39
  445. package/dist/plugins/thehive/src/credentials.js +14 -0
  446. package/dist/plugins/thehive/src/index.js +33 -50
  447. package/dist/plugins/thehiveProject/src/credentials.js +16 -0
  448. package/dist/plugins/thehiveProject/src/index.js +53 -122
  449. package/dist/plugins/todoist/src/credentials.js +26 -0
  450. package/dist/plugins/todoist/src/index.js +49 -79
  451. package/dist/plugins/together/src/credentials.js +16 -0
  452. package/dist/plugins/together/src/index.js +30 -32
  453. package/dist/plugins/travisci/src/credentials.js +24 -0
  454. package/dist/plugins/travisci/src/index.js +16 -30
  455. package/dist/plugins/trello/src/credentials.js +29 -0
  456. package/dist/plugins/trello/src/index.js +49 -64
  457. package/dist/plugins/twake/src/credentials.js +16 -0
  458. package/dist/plugins/twake/src/index.js +8 -10
  459. package/dist/plugins/twilio/src/credentials.js +23 -0
  460. package/dist/plugins/twilio/src/index.js +12 -26
  461. package/dist/plugins/twist/src/credentials.js +13 -0
  462. package/dist/plugins/twist/src/index.js +32 -44
  463. package/dist/plugins/twitter/src/credentials.js +16 -0
  464. package/dist/plugins/twitter/src/index.js +25 -37
  465. package/dist/plugins/typesafe/src/credentials.js +28 -0
  466. package/dist/plugins/typesafe/src/index.js +3 -1
  467. package/dist/plugins/typesafe/src/shared.js +23 -35
  468. package/dist/plugins/unleashedSoftware/src/credentials.js +21 -0
  469. package/dist/plugins/unleashedSoftware/src/index.js +13 -37
  470. package/dist/plugins/uplead/src/credentials.js +16 -0
  471. package/dist/plugins/uplead/src/index.js +11 -16
  472. package/dist/plugins/uproc/src/credentials.js +14 -0
  473. package/dist/plugins/uproc/src/index.js +7 -10
  474. package/dist/plugins/uptimerobot/src/credentials.js +14 -0
  475. package/dist/plugins/uptimerobot/src/index.js +28 -39
  476. package/dist/plugins/urlscanio/src/credentials.js +13 -0
  477. package/dist/plugins/urlscanio/src/index.js +13 -22
  478. package/dist/plugins/vercel/src/credentials.js +19 -0
  479. package/dist/plugins/vercel/src/deployments.js +27 -11
  480. package/dist/plugins/vercel/src/env.js +31 -12
  481. package/dist/plugins/vercel/src/index.js +2 -0
  482. package/dist/plugins/vercel/src/projects.js +6 -3
  483. package/dist/plugins/vercel/src/shared.js +32 -37
  484. package/dist/plugins/vero/src/credentials.js +17 -0
  485. package/dist/plugins/vero/src/index.js +18 -21
  486. package/dist/plugins/vonage/src/credentials.js +17 -0
  487. package/dist/plugins/vonage/src/index.js +14 -18
  488. package/dist/plugins/wekan/src/credentials.js +16 -0
  489. package/dist/plugins/wekan/src/index.js +33 -46
  490. package/dist/plugins/wolt/src/account.js +6 -0
  491. package/dist/plugins/wolt/src/catalog.js +2 -2
  492. package/dist/plugins/wolt/src/credentials.js +64 -0
  493. package/dist/plugins/wolt/src/index.js +8 -3
  494. package/dist/plugins/wolt/src/orders.js +2 -2
  495. package/dist/plugins/wolt/src/public.js +91 -0
  496. package/dist/plugins/wolt/src/shared.js +49 -158
  497. package/dist/plugins/woocommerce/src/credentials.js +16 -0
  498. package/dist/plugins/woocommerce/src/index.js +19 -37
  499. package/dist/plugins/wordpress/src/credentials.js +16 -0
  500. package/dist/plugins/wordpress/src/index.js +23 -42
  501. package/dist/plugins/xai/src/credentials.js +13 -0
  502. package/dist/plugins/xai/src/index.js +31 -30
  503. package/dist/plugins/xero/src/credentials.js +17 -0
  504. package/dist/plugins/xero/src/index.js +19 -36
  505. package/dist/plugins/yourls/src/credentials.js +17 -0
  506. package/dist/plugins/yourls/src/index.js +13 -23
  507. package/dist/plugins/zammad/src/credentials.js +15 -0
  508. package/dist/plugins/zammad/src/index.js +27 -47
  509. package/dist/plugins/zendesk/src/credentials.js +26 -0
  510. package/dist/plugins/zendesk/src/index.js +29 -48
  511. package/dist/plugins/zoho/src/credentials.js +17 -0
  512. package/dist/plugins/zoho/src/index.js +18 -38
  513. package/dist/plugins/zoom/src/credentials.js +19 -0
  514. package/dist/plugins/zoom/src/index.js +15 -30
  515. package/dist/plugins/zulip/src/credentials.js +16 -0
  516. package/dist/plugins/zulip/src/index.js +36 -42
  517. package/dist/sdk.d.ts +8 -0
  518. package/dist/sdk.js +3 -0
  519. package/package.json +3 -2
  520. package/dist/plugins/_shared/authedFetch.js +0 -33
  521. package/dist/plugins/_shared/tokenRefresh.js +0 -41
@@ -1,24 +1,20 @@
1
- const BASE_URL = "https://api.medium.com/v1";
2
- async function apiRequest(token, method, endpoint, body) {
3
- const opts = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { mediumCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, endpoint, body) {
4
+ return credentialJson(ctx, mediumCredential, "medium", {
5
+ target: "api",
6
+ path: endpoint,
4
7
  method,
5
- headers: {
6
- Authorization: `Bearer ${token}`,
7
- "Content-Type": "application/json",
8
- Accept: "application/json",
9
- "Accept-Charset": "utf-8",
10
- },
11
- };
12
- if (body && Object.keys(body).length > 0 && method !== "GET")
13
- opts.body = JSON.stringify(body);
14
- const res = await fetch(`${BASE_URL}${endpoint}`, opts);
15
- if (!res.ok)
16
- throw new Error(`Medium API error ${res.status}: ${await res.text()}`);
17
- return res.json();
8
+ headers: { "Accept-Charset": "utf-8" },
9
+ ...(body && Object.keys(body).length > 0 && method !== "GET"
10
+ ? { json: body }
11
+ : {}),
12
+ });
18
13
  }
19
14
  export default function medium(rl) {
20
15
  rl.setName("medium");
21
16
  rl.setVersion("0.1.0");
17
+ rl.setCredential(mediumCredential);
22
18
  rl.setConnectionSchema({
23
19
  accessToken: {
24
20
  type: "string",
@@ -27,7 +23,6 @@ export default function medium(rl) {
27
23
  env: "MEDIUM_ACCESS_TOKEN",
28
24
  },
29
25
  });
30
- const tok = (ctx) => ctx.connection.config.accessToken;
31
26
  rl.registerAction("post.create", {
32
27
  access: "write",
33
28
  description: "Create a post on Medium. Posts under the authenticated user by default, or under a publication if publicationId is provided.",
@@ -95,13 +90,13 @@ export default function medium(rl) {
95
90
  if (notifyFollowers !== undefined)
96
91
  body.notifyFollowers = notifyFollowers;
97
92
  if (publicationId) {
98
- const resp = (await apiRequest(tok(ctx), "POST", `/publications/${publicationId}/posts`, body));
93
+ const resp = (await apiRequest(ctx, "POST", `publications/${pathSegment(publicationId)}/posts`, body));
99
94
  return resp.data;
100
95
  }
101
96
  // Get authenticated user ID first
102
- const me = (await apiRequest(tok(ctx), "GET", "/me"));
97
+ const me = (await apiRequest(ctx, "GET", "me"));
103
98
  const authorId = me.data.id;
104
- const resp = (await apiRequest(tok(ctx), "POST", `/users/${authorId}/posts`, body));
99
+ const resp = (await apiRequest(ctx, "POST", `users/${pathSegment(authorId)}/posts`, body));
105
100
  return resp.data;
106
101
  },
107
102
  });
@@ -111,9 +106,9 @@ export default function medium(rl) {
111
106
  inputSchema: { limit: { type: "number", required: false } },
112
107
  async execute(input, ctx) {
113
108
  const { limit } = (input ?? {});
114
- const me = (await apiRequest(tok(ctx), "GET", "/me"));
109
+ const me = (await apiRequest(ctx, "GET", "me"));
115
110
  const userId = me.data.id;
116
- const resp = (await apiRequest(tok(ctx), "GET", `/users/${userId}/publications`));
111
+ const resp = (await apiRequest(ctx, "GET", `users/${pathSegment(userId)}/publications`));
117
112
  let data = resp.data;
118
113
  if (limit)
119
114
  data = data.slice(0, limit);
@@ -124,7 +119,7 @@ export default function medium(rl) {
124
119
  access: "read",
125
120
  description: "Get the authenticated user's profile",
126
121
  async execute(_input, ctx) {
127
- const resp = (await apiRequest(tok(ctx), "GET", "/me"));
122
+ const resp = (await apiRequest(ctx, "GET", "me"));
128
123
  return resp.data;
129
124
  },
130
125
  });
@@ -0,0 +1,22 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * An access key, sent as `Authorization: AccessKey {key}` to
4
+ * MessageBird's REST origin.
5
+ */
6
+ export const messagebirdCredential = staticCredential({
7
+ id: "messagebird",
8
+ auth: { kind: "apiKey", header: "Authorization", prefix: "AccessKey " },
9
+ local: { secret: "accessKey" },
10
+ targets: {
11
+ api: {
12
+ baseUrl: "https://rest.messagebird.com/",
13
+ methods: ["GET", "POST"],
14
+ },
15
+ },
16
+ probe: {
17
+ target: "api",
18
+ path: "balance",
19
+ method: "GET",
20
+ acceptedStatuses: [200],
21
+ },
22
+ });
@@ -1,23 +1,19 @@
1
- const BASE_URL = "https://rest.messagebird.com";
2
- async function apiRequest(accessKey, method, endpoint, body) {
3
- const opts = {
1
+ import { credentialJson } from "../../_shared/credentials.js";
2
+ import { messagebirdCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body) {
4
+ return credentialJson(ctx, messagebirdCredential, "messagebird", {
5
+ target: "api",
6
+ path,
4
7
  method,
5
- headers: {
6
- Authorization: `AccessKey ${accessKey}`,
7
- Accept: "application/json",
8
- "Content-Type": "application/json",
9
- },
10
- };
11
- if (body && Object.keys(body).length > 0 && method !== "GET")
12
- opts.body = JSON.stringify(body);
13
- const res = await fetch(`${BASE_URL}${endpoint}`, opts);
14
- if (!res.ok)
15
- throw new Error(`MessageBird API error ${res.status}: ${await res.text()}`);
16
- return res.json();
8
+ ...(body && Object.keys(body).length > 0 && method !== "GET"
9
+ ? { json: body }
10
+ : {}),
11
+ });
17
12
  }
18
13
  export default function messagebird(rl) {
19
14
  rl.setName("messagebird");
20
15
  rl.setVersion("0.1.0");
16
+ rl.setCredential(messagebirdCredential);
21
17
  rl.setConnectionSchema({
22
18
  accessKey: {
23
19
  type: "string",
@@ -26,7 +22,6 @@ export default function messagebird(rl) {
26
22
  env: "MESSAGEBIRD_ACCESS_KEY",
27
23
  },
28
24
  });
29
- const key = (ctx) => ctx.connection.config.accessKey;
30
25
  rl.registerAction("sms.send", {
31
26
  access: "write",
32
27
  description: "Send an SMS message",
@@ -111,14 +106,14 @@ export default function messagebird(rl) {
111
106
  if (p[k] !== undefined && p[k] !== null)
112
107
  body[k] = p[k];
113
108
  }
114
- return apiRequest(key(ctx), "POST", "/messages", body);
109
+ return apiRequest(ctx, "POST", "messages", body);
115
110
  },
116
111
  });
117
112
  rl.registerAction("balance.get", {
118
113
  access: "read",
119
114
  description: "Get current account balance",
120
115
  async execute(_input, ctx) {
121
- return apiRequest(key(ctx), "GET", "/balance");
116
+ return apiRequest(ctx, "GET", "balance");
122
117
  },
123
118
  });
124
119
  }
@@ -0,0 +1,19 @@
1
+ import { httpsBase, staticCredential } from "../../_shared/credentials.js";
2
+ /** A session token, sent as X-Metabase-Session, to the instance's own /api/. */
3
+ export const metabaseCredential = staticCredential({
4
+ id: "metabase",
5
+ auth: { kind: "apiKey", header: "X-Metabase-Session" },
6
+ local: { secret: "sessionToken" },
7
+ targets: (config) => ({
8
+ api: {
9
+ baseUrl: httpsBase(config.url, "api/"),
10
+ methods: ["GET", "POST"],
11
+ },
12
+ }),
13
+ probe: {
14
+ target: "api",
15
+ path: "user/current",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });
@@ -1,24 +1,22 @@
1
- async function apiRequest(baseUrl, sessionToken, method, endpoint, body) {
2
- const opts = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { metabaseCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, endpoint, body) {
4
+ return credentialJson(ctx, metabaseCredential, "metabase", {
5
+ target: "api",
6
+ path: endpoint,
3
7
  method,
4
- headers: {
5
- "X-Metabase-Session": sessionToken,
6
- "Content-Type": "application/json",
7
- },
8
- };
9
- if (body &&
10
- Object.keys(body).length > 0 &&
11
- method !== "GET" &&
12
- method !== "DELETE")
13
- opts.body = JSON.stringify(body);
14
- const res = await fetch(`${baseUrl}${endpoint}`, opts);
15
- if (!res.ok)
16
- throw new Error(`Metabase API error ${res.status}: ${await res.text()}`);
17
- return res.json();
8
+ ...(body &&
9
+ Object.keys(body).length > 0 &&
10
+ method !== "GET" &&
11
+ method !== "DELETE"
12
+ ? { json: body }
13
+ : {}),
14
+ });
18
15
  }
19
16
  export default function metabase(rl) {
20
17
  rl.setName("metabase");
21
18
  rl.setVersion("0.1.0");
19
+ rl.setCredential(metabaseCredential);
22
20
  rl.setConnectionSchema({
23
21
  url: {
24
22
  type: "string",
@@ -33,26 +31,20 @@ export default function metabase(rl) {
33
31
  env: "METABASE_SESSION_TOKEN",
34
32
  },
35
33
  });
36
- const conn = (ctx) => ({
37
- baseUrl: ctx.connection.config.url.replace(/\/$/, ""),
38
- token: ctx.connection.config.sessionToken,
39
- });
40
34
  // ── Question (Card) ─────────────────────────────────
41
35
  rl.registerAction("question.get", {
42
36
  access: "read",
43
37
  description: "Get a specific question/card",
44
38
  inputSchema: { questionId: { type: "number", required: true } },
45
39
  async execute(input, ctx) {
46
- const { baseUrl, token } = conn(ctx);
47
- return apiRequest(baseUrl, token, "GET", `/api/card/${input.questionId}`);
40
+ return apiRequest(ctx, "GET", `card/${pathSegment(input.questionId)}`);
48
41
  },
49
42
  });
50
43
  rl.registerAction("question.list", {
51
44
  access: "read",
52
45
  description: "List all questions/cards",
53
46
  async execute(_input, ctx) {
54
- const { baseUrl, token } = conn(ctx);
55
- return apiRequest(baseUrl, token, "GET", "/api/card/");
47
+ return apiRequest(ctx, "GET", "card/");
56
48
  },
57
49
  });
58
50
  rl.registerAction("question.getResults", {
@@ -68,8 +60,7 @@ export default function metabase(rl) {
68
60
  },
69
61
  async execute(input, ctx) {
70
62
  const { questionId, format = "json" } = input;
71
- const { baseUrl, token } = conn(ctx);
72
- return apiRequest(baseUrl, token, "POST", `/api/card/${questionId}/query/${format}`);
63
+ return apiRequest(ctx, "POST", `card/${pathSegment(questionId)}/query/${pathSegment(format)}`);
73
64
  },
74
65
  });
75
66
  // ── Alert ───────────────────────────────────────────
@@ -78,16 +69,14 @@ export default function metabase(rl) {
78
69
  description: "Get a specific alert",
79
70
  inputSchema: { alertId: { type: "number", required: true } },
80
71
  async execute(input, ctx) {
81
- const { baseUrl, token } = conn(ctx);
82
- return apiRequest(baseUrl, token, "GET", `/api/alert/${input.alertId}`);
72
+ return apiRequest(ctx, "GET", `alert/${pathSegment(input.alertId)}`);
83
73
  },
84
74
  });
85
75
  rl.registerAction("alert.list", {
86
76
  access: "read",
87
77
  description: "List all alerts",
88
78
  async execute(_input, ctx) {
89
- const { baseUrl, token } = conn(ctx);
90
- return apiRequest(baseUrl, token, "GET", "/api/alert/");
79
+ return apiRequest(ctx, "GET", "alert/");
91
80
  },
92
81
  });
93
82
  // ── Database ────────────────────────────────────────
@@ -95,8 +84,7 @@ export default function metabase(rl) {
95
84
  access: "read",
96
85
  description: "List all databases",
97
86
  async execute(_input, ctx) {
98
- const { baseUrl, token } = conn(ctx);
99
- const data = (await apiRequest(baseUrl, token, "GET", "/api/database/"));
87
+ const data = (await apiRequest(ctx, "GET", "database/"));
100
88
  return data.data;
101
89
  },
102
90
  });
@@ -105,8 +93,7 @@ export default function metabase(rl) {
105
93
  description: "Get fields from a database",
106
94
  inputSchema: { databaseId: { type: "number", required: true } },
107
95
  async execute(input, ctx) {
108
- const { baseUrl, token } = conn(ctx);
109
- return apiRequest(baseUrl, token, "GET", `/api/database/${input.databaseId}/fields`);
96
+ return apiRequest(ctx, "GET", `database/${pathSegment(input.databaseId)}/fields`);
110
97
  },
111
98
  });
112
99
  rl.registerAction("database.add", {
@@ -144,7 +131,6 @@ export default function metabase(rl) {
144
131
  },
145
132
  async execute(input, ctx) {
146
133
  const { name, engine, host, port, user, password, dbName, isFullSync = true, } = input;
147
- const { baseUrl, token } = conn(ctx);
148
134
  const details = {};
149
135
  if (host)
150
136
  details.host = host;
@@ -156,7 +142,7 @@ export default function metabase(rl) {
156
142
  details.password = password;
157
143
  if (dbName)
158
144
  details.db = dbName;
159
- return apiRequest(baseUrl, token, "POST", "/api/database", {
145
+ return apiRequest(ctx, "POST", "database", {
160
146
  name,
161
147
  engine,
162
148
  details,
@@ -170,16 +156,14 @@ export default function metabase(rl) {
170
156
  description: "Get a specific metric",
171
157
  inputSchema: { metricId: { type: "number", required: true } },
172
158
  async execute(input, ctx) {
173
- const { baseUrl, token } = conn(ctx);
174
- return apiRequest(baseUrl, token, "GET", `/api/metric/${input.metricId}`);
159
+ return apiRequest(ctx, "GET", `metric/${pathSegment(input.metricId)}`);
175
160
  },
176
161
  });
177
162
  rl.registerAction("metric.list", {
178
163
  access: "read",
179
164
  description: "List all metrics",
180
165
  async execute(_input, ctx) {
181
- const { baseUrl, token } = conn(ctx);
182
- return apiRequest(baseUrl, token, "GET", "/api/metric/");
166
+ return apiRequest(ctx, "GET", "metric/");
183
167
  },
184
168
  });
185
169
  }
@@ -1,16 +1,46 @@
1
- import { graphRequest, microsoftSetupHelp, userBase } from "../../_shared/microsoftAuth.js";
1
+ import { graphRequest, microsoftCredential, microsoftSetupHelp, userBase, } from "../../_shared/microsoftAuth.js";
2
2
  const NAME = "microsoftCalendar";
3
3
  const SCOPES = ["https://graph.microsoft.com/Calendars.Read"];
4
4
  export default function microsoftCalendar(rl) {
5
5
  rl.setName(NAME);
6
6
  rl.setVersion("1.0.0");
7
+ rl.setCredential(microsoftCredential(NAME, SCOPES));
7
8
  rl.setConnectionSchema({
8
- authMethod: { type: "string", required: false, description: "delegated or appOnly; legacy configs infer the method from existing credentials" },
9
- tenantId: { type: "string", required: false, env: "MS_GRAPH_TENANT_ID", description: "Entra tenant id (app-only) or omit for OAuth /common" },
10
- clientId: { type: "string", required: false, env: "MS_GRAPH_CLIENT_ID", description: "App (client) id" },
11
- clientSecret: { type: "string", required: false, env: "MS_GRAPH_CLIENT_SECRET", description: "Client secret VALUE" },
12
- refreshToken: { type: "string", required: false, env: "MICROSOFTCALENDAR_REFRESH_TOKEN", description: "OAuth2 refresh token (set by the login flow)" },
13
- userUpn: { type: "string", required: false, env: "MS_GRAPH_USER_UPN", description: "App-only only: target user UPN" },
9
+ authMethod: {
10
+ type: "string",
11
+ required: false,
12
+ description: "delegated or appOnly; legacy configs infer the method from existing credentials",
13
+ },
14
+ tenantId: {
15
+ type: "string",
16
+ required: false,
17
+ env: "MS_GRAPH_TENANT_ID",
18
+ description: "Entra tenant id (app-only) or omit for OAuth /common",
19
+ },
20
+ clientId: {
21
+ type: "string",
22
+ required: false,
23
+ env: "MS_GRAPH_CLIENT_ID",
24
+ description: "App (client) id",
25
+ },
26
+ clientSecret: {
27
+ type: "string",
28
+ required: false,
29
+ env: "MS_GRAPH_CLIENT_SECRET",
30
+ description: "Client secret VALUE",
31
+ },
32
+ refreshToken: {
33
+ type: "string",
34
+ required: false,
35
+ env: "MICROSOFTCALENDAR_REFRESH_TOKEN",
36
+ description: "OAuth2 refresh token (set by the login flow)",
37
+ },
38
+ userUpn: {
39
+ type: "string",
40
+ required: false,
41
+ env: "MS_GRAPH_USER_UPN",
42
+ description: "App-only only: target user UPN",
43
+ },
14
44
  });
15
45
  rl.setOAuth({
16
46
  authUrl: "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
@@ -22,15 +52,20 @@ export default function microsoftCalendar(rl) {
22
52
  access: "read",
23
53
  description: "List calendar events in a date range. Returns [{id,subject,start,end,location,organizer,attendees}].",
24
54
  inputSchema: {
25
- start: { type: "string", required: true, description: "ISO start datetime, e.g. 2026-05-01T00:00:00Z" },
55
+ start: {
56
+ type: "string",
57
+ required: true,
58
+ description: "ISO start datetime, e.g. 2026-05-01T00:00:00Z",
59
+ },
26
60
  end: { type: "string", required: true, description: "ISO end datetime" },
27
61
  top: { type: "number", required: false, default: 50 },
28
62
  },
29
63
  async execute(input, ctx) {
64
+ const p = input;
30
65
  const qs = new URLSearchParams({
31
- startDateTime: input.start,
32
- endDateTime: input.end,
33
- $top: String(input.top ?? 50),
66
+ startDateTime: p.start,
67
+ endDateTime: p.end,
68
+ $top: String(p.top ?? 50),
34
69
  $select: "id,subject,start,end,location,organizer,attendees,isAllDay,webLink",
35
70
  $orderby: "start/dateTime",
36
71
  });
@@ -43,7 +78,8 @@ export default function microsoftCalendar(rl) {
43
78
  description: "Get one calendar event by id (full details incl. body).",
44
79
  inputSchema: { id: { type: "string", required: true } },
45
80
  async execute(input, ctx) {
46
- return graphRequest(ctx, NAME, SCOPES, "GET", `${userBase(ctx)}/events/${encodeURIComponent(input.id)}`);
81
+ const p = input;
82
+ return graphRequest(ctx, NAME, SCOPES, "GET", `${userBase(ctx)}/events/${encodeURIComponent(p.id)}`);
47
83
  },
48
84
  });
49
85
  }
@@ -1,4 +1,5 @@
1
- import { graphRequest, graphResponse, microsoftDownload, microsoftDriveBase, microsoftSetupHelp, } from "../../_shared/microsoftAuth.js";
1
+ import { jsonAnswer, pathSegment, pathSegments, requestFailed, } from "../../_shared/credentials.js";
2
+ import { graphRequest, graphResponse, microsoftCredential, microsoftDownload, microsoftDriveBase, microsoftSetupHelp, } from "../../_shared/microsoftAuth.js";
2
3
  const NAME = "microsoftFiles";
3
4
  const SCOPES = [
4
5
  "https://graph.microsoft.com/Files.ReadWrite.All",
@@ -14,15 +15,55 @@ async function binaryFetch(ctx, method, path, body) {
14
15
  export default function microsoftFiles(rl) {
15
16
  rl.setName(NAME);
16
17
  rl.setVersion("1.0.0");
18
+ rl.setCredential(microsoftCredential(NAME, SCOPES));
17
19
  rl.setConnectionSchema({
18
- authMethod: { type: "string", required: false, description: "delegated or appOnly; legacy configs infer the method from existing credentials" },
19
- tenantId: { type: "string", required: false, env: "MS_GRAPH_TENANT_ID", description: "Entra tenant id (app-only) or omit for OAuth /common" },
20
- clientId: { type: "string", required: false, env: "MS_GRAPH_CLIENT_ID", description: "App (client) id" },
21
- clientSecret: { type: "string", required: false, env: "MS_GRAPH_CLIENT_SECRET", description: "Client secret VALUE" },
22
- refreshToken: { type: "string", required: false, env: "MICROSOFTFILES_REFRESH_TOKEN", description: "OAuth2 refresh token (set by the login flow)" },
23
- userUpn: { type: "string", required: false, env: "MS_GRAPH_USER_UPN", description: "App-only only: target user UPN (their OneDrive)" },
24
- siteId: { type: "string", required: false, env: "MS_SHAREPOINT_SITE_ID", description: "Optional SharePoint site id (use its default drive)" },
25
- driveId: { type: "string", required: false, env: "MS_GRAPH_DRIVE_ID", description: "Optional explicit drive id (overrides site/user)" },
20
+ authMethod: {
21
+ type: "string",
22
+ required: false,
23
+ description: "delegated or appOnly; legacy configs infer the method from existing credentials",
24
+ },
25
+ tenantId: {
26
+ type: "string",
27
+ required: false,
28
+ env: "MS_GRAPH_TENANT_ID",
29
+ description: "Entra tenant id (app-only) or omit for OAuth /common",
30
+ },
31
+ clientId: {
32
+ type: "string",
33
+ required: false,
34
+ env: "MS_GRAPH_CLIENT_ID",
35
+ description: "App (client) id",
36
+ },
37
+ clientSecret: {
38
+ type: "string",
39
+ required: false,
40
+ env: "MS_GRAPH_CLIENT_SECRET",
41
+ description: "Client secret VALUE",
42
+ },
43
+ refreshToken: {
44
+ type: "string",
45
+ required: false,
46
+ env: "MICROSOFTFILES_REFRESH_TOKEN",
47
+ description: "OAuth2 refresh token (set by the login flow)",
48
+ },
49
+ userUpn: {
50
+ type: "string",
51
+ required: false,
52
+ env: "MS_GRAPH_USER_UPN",
53
+ description: "App-only only: target user UPN (their OneDrive)",
54
+ },
55
+ siteId: {
56
+ type: "string",
57
+ required: false,
58
+ env: "MS_SHAREPOINT_SITE_ID",
59
+ description: "Optional SharePoint site id (use its default drive)",
60
+ },
61
+ driveId: {
62
+ type: "string",
63
+ required: false,
64
+ env: "MS_GRAPH_DRIVE_ID",
65
+ description: "Optional explicit drive id (overrides site/user)",
66
+ },
26
67
  });
27
68
  rl.setOAuth({
28
69
  authUrl: "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
@@ -38,9 +79,10 @@ export default function microsoftFiles(rl) {
38
79
  top: { type: "number", required: false, default: 25 },
39
80
  },
40
81
  async execute(input, ctx) {
41
- const q = encodeURIComponent(String(input.query).replace(/'/g, "''"));
82
+ const p = input;
83
+ const q = encodeURIComponent(String(p.query).replace(/'/g, "''"));
42
84
  const qs = new URLSearchParams({
43
- $top: String(input.top ?? 25),
85
+ $top: String(p.top ?? 25),
44
86
  $select: "id,name,size,lastModifiedDateTime,webUrl,folder,file",
45
87
  });
46
88
  const r = await graphRequest(ctx, NAME, SCOPES, "GET", `${driveBase(ctx)}/root/search(q='${q}')?${qs}`);
@@ -51,13 +93,20 @@ export default function microsoftFiles(rl) {
51
93
  access: "read",
52
94
  description: "List children of a folder (default the drive root, or pass folderId).",
53
95
  inputSchema: {
54
- folderId: { type: "string", required: false, description: "Folder item id; omit for root" },
96
+ folderId: {
97
+ type: "string",
98
+ required: false,
99
+ description: "Folder item id; omit for root",
100
+ },
55
101
  top: { type: "number", required: false, default: 100 },
56
102
  },
57
103
  async execute(input, ctx) {
58
- const where = input.folderId ? `/items/${encodeURIComponent(input.folderId)}/children` : "/root/children";
104
+ const p = input;
105
+ const where = p.folderId
106
+ ? `/items/${pathSegment(p.folderId)}/children`
107
+ : "/root/children";
59
108
  const qs = new URLSearchParams({
60
- $top: String(input.top ?? 100),
109
+ $top: String(p.top ?? 100),
61
110
  $select: "id,name,size,lastModifiedDateTime,webUrl,folder,file",
62
111
  });
63
112
  const r = await graphRequest(ctx, NAME, SCOPES, "GET", `${driveBase(ctx)}${where}?${qs}`);
@@ -69,7 +118,8 @@ export default function microsoftFiles(rl) {
69
118
  description: "Download a file by id. Returns {id,name,size,contentType,base64}. base64 is the file bytes.",
70
119
  inputSchema: { id: { type: "string", required: true } },
71
120
  async execute(input, ctx) {
72
- const meta = await graphRequest(ctx, NAME, SCOPES, "GET", `${driveBase(ctx)}/items/${encodeURIComponent(input.id)}`);
121
+ const p = input;
122
+ const meta = await graphRequest(ctx, NAME, SCOPES, "GET", `${driveBase(ctx)}/items/${pathSegment(p.id)}`);
73
123
  const res = await microsoftDownload(meta["@microsoft.graph.downloadUrl"]);
74
124
  if (!res.ok)
75
125
  throw new Error(`${NAME}: download failed (HTTP ${res.status})`);
@@ -87,16 +137,24 @@ export default function microsoftFiles(rl) {
87
137
  access: "write",
88
138
  description: "Upload a file (base64) to a path in the drive, e.g. a dedicated output folder. Returns the created item. For files up to ~4MB.",
89
139
  inputSchema: {
90
- path: { type: "string", required: true, description: "Drive-relative path incl. filename, e.g. 'Agent Output/report.docx'" },
91
- base64: { type: "string", required: true, description: "File content, base64-encoded" },
140
+ path: {
141
+ type: "string",
142
+ required: true,
143
+ description: "Drive-relative path incl. filename, e.g. 'Agent Output/report.docx'",
144
+ },
145
+ base64: {
146
+ type: "string",
147
+ required: true,
148
+ description: "File content, base64-encoded",
149
+ },
92
150
  },
93
151
  async execute(input, ctx) {
94
- const bytes = Buffer.from(input.base64, "base64");
95
- const p = input.path.split("/").map(encodeURIComponent).join("/");
96
- const res = await binaryFetch(ctx, "PUT", `${driveBase(ctx)}/root:/${p}:/content`, bytes);
152
+ const { path, base64 } = input;
153
+ const bytes = Buffer.from(base64, "base64");
154
+ const res = await binaryFetch(ctx, "PUT", `${driveBase(ctx)}/root:/${pathSegments(path)}:/content`, bytes);
97
155
  if (!res.ok)
98
- throw new Error(`${NAME}: upload failed (HTTP ${res.status})`);
99
- return JSON.parse(await res.text());
156
+ throw requestFailed(NAME, res.status);
157
+ return jsonAnswer(res);
100
158
  },
101
159
  });
102
160
  rl.registerAction("folder.create", {
@@ -104,12 +162,19 @@ export default function microsoftFiles(rl) {
104
162
  description: "Create a folder (e.g. a dedicated agent output folder) under the drive root or a parent.",
105
163
  inputSchema: {
106
164
  name: { type: "string", required: true },
107
- parentId: { type: "string", required: false, description: "Parent folder id; omit for root" },
165
+ parentId: {
166
+ type: "string",
167
+ required: false,
168
+ description: "Parent folder id; omit for root",
169
+ },
108
170
  },
109
171
  async execute(input, ctx) {
110
- const where = input.parentId ? `/items/${encodeURIComponent(input.parentId)}/children` : "/root/children";
172
+ const p = input;
173
+ const where = p.parentId
174
+ ? `/items/${pathSegment(p.parentId)}/children`
175
+ : "/root/children";
111
176
  return graphRequest(ctx, NAME, SCOPES, "POST", `${driveBase(ctx)}${where}`, {
112
- name: input.name,
177
+ name: p.name,
113
178
  folder: {},
114
179
  "@microsoft.graph.conflictBehavior": "rename",
115
180
  });