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,43 +1,32 @@
1
- async function apiRequest(baseUrl, token, method, endpoint, body, qs) {
2
- const url = new URL(`${baseUrl}/api/v4/${endpoint}`);
3
- if (qs) {
4
- for (const [k, v] of Object.entries(qs)) {
5
- if (v !== undefined && v !== null)
6
- url.searchParams.set(k, String(v));
7
- }
8
- }
9
- const opts = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { mattermostCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body, query) {
4
+ return credentialJson(ctx, mattermostCredential, "mattermost", {
5
+ target: "api",
6
+ path,
10
7
  method,
11
- headers: {
12
- Authorization: `Bearer ${token}`,
13
- "Content-Type": "application/json; charset=utf-8",
14
- },
15
- };
16
- if (body !== undefined && method !== "GET" && method !== "DELETE") {
17
- opts.body = typeof body === "string" ? body : JSON.stringify(body);
18
- }
19
- const res = await fetch(url.toString(), opts);
20
- if (!res.ok)
21
- throw new Error(`Mattermost API error ${res.status}: ${await res.text()}`);
22
- if (res.status === 204)
23
- return { success: true };
24
- return res.json();
8
+ query,
9
+ ...(body !== undefined && method !== "GET" && method !== "DELETE"
10
+ ? { json: body }
11
+ : {}),
12
+ });
25
13
  }
26
- async function paginateAll(baseUrl, token, endpoint, qs = {}) {
14
+ async function paginateAll(ctx, path, query = {}) {
27
15
  const all = [];
28
- qs.page = 0;
29
- qs.per_page = 100;
16
+ query.page = 0;
17
+ query.per_page = 100;
30
18
  let data;
31
19
  do {
32
- data = (await apiRequest(baseUrl, token, "GET", endpoint, undefined, qs));
20
+ data = (await apiRequest(ctx, "GET", path, undefined, query));
33
21
  all.push(...data);
34
- qs.page++;
22
+ query.page++;
35
23
  } while (data.length > 0);
36
24
  return all;
37
25
  }
38
26
  export default function mattermost(rl) {
39
27
  rl.setName("mattermost");
40
28
  rl.setVersion("0.1.0");
29
+ rl.setCredential(mattermostCredential);
41
30
  rl.setConnectionSchema({
42
31
  baseUrl: {
43
32
  type: "string",
@@ -52,10 +41,6 @@ export default function mattermost(rl) {
52
41
  env: "MATTERMOST_TOKEN",
53
42
  },
54
43
  });
55
- const conn = (ctx) => ({
56
- baseUrl: ctx.connection.config.baseUrl.replace(/\/$/, ""),
57
- token: ctx.connection.config.accessToken,
58
- });
59
44
  // ── Channel ─────────────────────────────────────────
60
45
  rl.registerAction("channel.create", {
61
46
  access: "write",
@@ -80,8 +65,7 @@ export default function mattermost(rl) {
80
65
  },
81
66
  async execute(input, ctx) {
82
67
  const { teamId, displayName, name, type } = input;
83
- const { baseUrl, token } = conn(ctx);
84
- return apiRequest(baseUrl, token, "POST", "channels", {
68
+ return apiRequest(ctx, "POST", "channels", {
85
69
  team_id: teamId,
86
70
  display_name: displayName,
87
71
  name,
@@ -94,8 +78,7 @@ export default function mattermost(rl) {
94
78
  description: "Delete (archive) a channel",
95
79
  inputSchema: { channelId: { type: "string", required: true } },
96
80
  async execute(input, ctx) {
97
- const { baseUrl, token } = conn(ctx);
98
- return apiRequest(baseUrl, token, "DELETE", `channels/${input.channelId}`);
81
+ return apiRequest(ctx, "DELETE", `channels/${pathSegment(input.channelId)}`);
99
82
  },
100
83
  });
101
84
  rl.registerAction("channel.addUser", {
@@ -107,8 +90,9 @@ export default function mattermost(rl) {
107
90
  },
108
91
  async execute(input, ctx) {
109
92
  const { channelId, userId } = input;
110
- const { baseUrl, token } = conn(ctx);
111
- return apiRequest(baseUrl, token, "POST", `channels/${channelId}/members`, { user_id: userId });
93
+ return apiRequest(ctx, "POST", `channels/${pathSegment(channelId)}/members`, {
94
+ user_id: userId,
95
+ });
112
96
  },
113
97
  });
114
98
  rl.registerAction("channel.members", {
@@ -125,17 +109,16 @@ export default function mattermost(rl) {
125
109
  },
126
110
  async execute(input, ctx) {
127
111
  const { channelId, limit, resolveData } = (input ?? {});
128
- const { baseUrl, token } = conn(ctx);
129
112
  let data;
130
113
  if (limit) {
131
- data = (await apiRequest(baseUrl, token, "GET", `channels/${channelId}/members`, undefined, { per_page: limit }));
114
+ data = (await apiRequest(ctx, "GET", `channels/${pathSegment(channelId)}/members`, undefined, { per_page: limit }));
132
115
  }
133
116
  else {
134
- data = await paginateAll(baseUrl, token, `channels/${channelId}/members`);
117
+ data = await paginateAll(ctx, `channels/${pathSegment(channelId)}/members`);
135
118
  }
136
119
  if (resolveData && data.length > 0) {
137
120
  const userIds = data.map((m) => m.user_id);
138
- return apiRequest(baseUrl, token, "POST", "users/ids", userIds);
121
+ return apiRequest(ctx, "POST", "users/ids", userIds);
139
122
  }
140
123
  return data;
141
124
  },
@@ -145,8 +128,7 @@ export default function mattermost(rl) {
145
128
  description: "Restore (unarchive) a channel",
146
129
  inputSchema: { channelId: { type: "string", required: true } },
147
130
  async execute(input, ctx) {
148
- const { baseUrl, token } = conn(ctx);
149
- return apiRequest(baseUrl, token, "POST", `channels/${input.channelId}/restore`);
131
+ return apiRequest(ctx, "POST", `channels/${pathSegment(input.channelId)}/restore`);
150
132
  },
151
133
  });
152
134
  rl.registerAction("channel.search", {
@@ -159,8 +141,7 @@ export default function mattermost(rl) {
159
141
  },
160
142
  async execute(input, ctx) {
161
143
  const { teamId, term, limit } = input;
162
- const { baseUrl, token } = conn(ctx);
163
- let data = (await apiRequest(baseUrl, token, "POST", `teams/${teamId}/channels/search`, { term }));
144
+ let data = (await apiRequest(ctx, "POST", `teams/${pathSegment(teamId)}/channels/search`, { term }));
164
145
  if (limit)
165
146
  data = data.slice(0, limit);
166
147
  return data;
@@ -171,8 +152,7 @@ export default function mattermost(rl) {
171
152
  description: "Get channel statistics",
172
153
  inputSchema: { channelId: { type: "string", required: true } },
173
154
  async execute(input, ctx) {
174
- const { baseUrl, token } = conn(ctx);
175
- return apiRequest(baseUrl, token, "GET", `channels/${input.channelId}/stats`);
155
+ return apiRequest(ctx, "GET", `channels/${pathSegment(input.channelId)}/stats`);
176
156
  },
177
157
  });
178
158
  // ── Message ─────────────────────────────────────────
@@ -195,13 +175,12 @@ export default function mattermost(rl) {
195
175
  },
196
176
  async execute(input, ctx) {
197
177
  const { channelId, message, attachments, rootId } = input;
198
- const { baseUrl, token } = conn(ctx);
199
178
  const body = { channel_id: channelId, message };
200
179
  if (attachments)
201
180
  body.props = { attachments };
202
181
  if (rootId)
203
182
  body.root_id = rootId;
204
- return apiRequest(baseUrl, token, "POST", "posts", body);
183
+ return apiRequest(ctx, "POST", "posts", body);
205
184
  },
206
185
  });
207
186
  rl.registerAction("message.delete", {
@@ -209,8 +188,7 @@ export default function mattermost(rl) {
209
188
  description: "Delete a message (post)",
210
189
  inputSchema: { postId: { type: "string", required: true } },
211
190
  async execute(input, ctx) {
212
- const { baseUrl, token } = conn(ctx);
213
- return apiRequest(baseUrl, token, "DELETE", `posts/${input.postId}`);
191
+ return apiRequest(ctx, "DELETE", `posts/${pathSegment(input.postId)}`);
214
192
  },
215
193
  });
216
194
  rl.registerAction("message.postEphemeral", {
@@ -227,8 +205,7 @@ export default function mattermost(rl) {
227
205
  },
228
206
  async execute(input, ctx) {
229
207
  const { channelId, userId, message } = input;
230
- const { baseUrl, token } = conn(ctx);
231
- return apiRequest(baseUrl, token, "POST", "posts/ephemeral", {
208
+ return apiRequest(ctx, "POST", "posts/ephemeral", {
232
209
  user_id: userId,
233
210
  post: { channel_id: channelId, message },
234
211
  });
@@ -249,8 +226,7 @@ export default function mattermost(rl) {
249
226
  },
250
227
  async execute(input, ctx) {
251
228
  const { userId, postId, emojiName } = input;
252
- const { baseUrl, token } = conn(ctx);
253
- return apiRequest(baseUrl, token, "POST", "reactions", {
229
+ return apiRequest(ctx, "POST", "reactions", {
254
230
  user_id: userId,
255
231
  post_id: postId,
256
232
  emoji_name: emojiName.replace(/:/g, ""),
@@ -268,9 +244,8 @@ export default function mattermost(rl) {
268
244
  },
269
245
  async execute(input, ctx) {
270
246
  const { userId, postId, emojiName } = input;
271
- const { baseUrl, token } = conn(ctx);
272
247
  const name = emojiName.replace(/:/g, "");
273
- return apiRequest(baseUrl, token, "DELETE", `users/${userId}/posts/${postId}/reactions/${name}`);
248
+ return apiRequest(ctx, "DELETE", `users/${pathSegment(userId)}/posts/${pathSegment(postId)}/reactions/${pathSegment(name)}`);
274
249
  },
275
250
  });
276
251
  rl.registerAction("reaction.list", {
@@ -282,8 +257,7 @@ export default function mattermost(rl) {
282
257
  },
283
258
  async execute(input, ctx) {
284
259
  const { postId, limit } = input;
285
- const { baseUrl, token } = conn(ctx);
286
- let data = (await apiRequest(baseUrl, token, "GET", `posts/${postId}/reactions`));
260
+ let data = (await apiRequest(ctx, "GET", `posts/${pathSegment(postId)}/reactions`));
287
261
  if (data === null)
288
262
  return [];
289
263
  if (limit)
@@ -325,7 +299,6 @@ export default function mattermost(rl) {
325
299
  },
326
300
  async execute(input, ctx) {
327
301
  const { username, authService, email, password, authData, additionalFields, } = input;
328
- const { baseUrl, token } = conn(ctx);
329
302
  const body = {
330
303
  username,
331
304
  auth_service: authService,
@@ -339,7 +312,7 @@ export default function mattermost(rl) {
339
312
  }
340
313
  if (additionalFields)
341
314
  Object.assign(body, additionalFields);
342
- return apiRequest(baseUrl, token, "POST", "users", body);
315
+ return apiRequest(ctx, "POST", "users", body);
343
316
  },
344
317
  });
345
318
  rl.registerAction("user.deactivate", {
@@ -347,8 +320,7 @@ export default function mattermost(rl) {
347
320
  description: "Deactivate (delete) a user",
348
321
  inputSchema: { userId: { type: "string", required: true } },
349
322
  async execute(input, ctx) {
350
- const { baseUrl, token } = conn(ctx);
351
- return apiRequest(baseUrl, token, "DELETE", `users/${input.userId}`);
323
+ return apiRequest(ctx, "DELETE", `users/${pathSegment(input.userId)}`);
352
324
  },
353
325
  });
354
326
  rl.registerAction("user.list", {
@@ -376,7 +348,6 @@ export default function mattermost(rl) {
376
348
  },
377
349
  async execute(input, ctx) {
378
350
  const p = (input ?? {});
379
- const { baseUrl, token } = conn(ctx);
380
351
  const qs = {};
381
352
  if (p.inTeam)
382
353
  qs.in_team = p.inTeam;
@@ -390,9 +361,9 @@ export default function mattermost(rl) {
390
361
  qs.sort = p.sort;
391
362
  if (p.limit) {
392
363
  qs.per_page = p.limit;
393
- return apiRequest(baseUrl, token, "GET", "users", undefined, qs);
364
+ return apiRequest(ctx, "GET", "users", undefined, qs);
394
365
  }
395
- return paginateAll(baseUrl, token, "users", qs);
366
+ return paginateAll(ctx, "users", qs);
396
367
  },
397
368
  });
398
369
  rl.registerAction("user.getByEmail", {
@@ -400,8 +371,7 @@ export default function mattermost(rl) {
400
371
  description: "Get a user by email",
401
372
  inputSchema: { email: { type: "string", required: true } },
402
373
  async execute(input, ctx) {
403
- const { baseUrl, token } = conn(ctx);
404
- return apiRequest(baseUrl, token, "GET", `users/email/${input.email}`);
374
+ return apiRequest(ctx, "GET", `users/email/${pathSegment(input.email)}`);
405
375
  },
406
376
  });
407
377
  rl.registerAction("user.getByIds", {
@@ -421,11 +391,10 @@ export default function mattermost(rl) {
421
391
  },
422
392
  async execute(input, ctx) {
423
393
  const { userIds, since } = input;
424
- const { baseUrl, token } = conn(ctx);
425
394
  const qs = {};
426
395
  if (since)
427
396
  qs.since = new Date(since).getTime();
428
- return apiRequest(baseUrl, token, "POST", "users/ids", userIds, qs);
397
+ return apiRequest(ctx, "POST", "users/ids", userIds, qs);
429
398
  },
430
399
  });
431
400
  rl.registerAction("user.invite", {
@@ -441,8 +410,7 @@ export default function mattermost(rl) {
441
410
  },
442
411
  async execute(input, ctx) {
443
412
  const { teamId, emails } = input;
444
- const { baseUrl, token } = conn(ctx);
445
- return apiRequest(baseUrl, token, "POST", `teams/${teamId}/invite/email`, emails);
413
+ return apiRequest(ctx, "POST", `teams/${pathSegment(teamId)}/invite/email`, emails);
446
414
  },
447
415
  });
448
416
  }
@@ -0,0 +1,16 @@
1
+ import { httpsBase, staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * A Mautic user's Basic credentials, on the connection's own instance
4
+ * beneath /api/.
5
+ */
6
+ export const mauticCredential = staticCredential({
7
+ id: "mautic",
8
+ auth: { kind: "basic" },
9
+ local: { username: "username", password: "password" },
10
+ targets: (config) => ({
11
+ api: {
12
+ baseUrl: httpsBase(config.url, "api/"),
13
+ methods: ["GET", "POST", "PATCH", "DELETE"],
14
+ },
15
+ }),
16
+ });
@@ -1,38 +1,34 @@
1
- async function apiRequest(baseUrl, username, password, method, endpoint, body, qs) {
2
- const url = new URL(`${baseUrl}/api${endpoint}`);
3
- if (qs) {
4
- for (const [k, v] of Object.entries(qs)) {
5
- if (v !== undefined && v !== null)
6
- url.searchParams.set(k, String(v));
7
- }
8
- }
9
- const opts = {
1
+ import { answerFailed, credentialJson, pathSegment, } from "../../_shared/credentials.js";
2
+ import { mauticCredential } from "./credentials.js";
3
+ async function req(ctx, method, path, body, qs) {
4
+ const data = (await credentialJson(ctx, mauticCredential, "mautic", {
5
+ target: "api",
6
+ path,
10
7
  method,
11
- headers: {
12
- Authorization: `Basic ${btoa(`${username}:${password}`)}`,
13
- "Content-Type": "application/json",
14
- },
15
- };
16
- if (body &&
17
- Object.keys(body).length > 0 &&
18
- method !== "GET" &&
19
- method !== "DELETE")
20
- opts.body = JSON.stringify(body);
21
- const res = await fetch(url.toString(), opts);
22
- if (!res.ok)
23
- throw new Error(`Mautic API error ${res.status}: ${await res.text()}`);
24
- const data = (await res.json());
25
- if (data.errors)
26
- throw new Error(`Mautic API error: ${JSON.stringify(data.errors)}`);
8
+ query: qs,
9
+ ...(body &&
10
+ Object.keys(body).length > 0 &&
11
+ method !== "GET" &&
12
+ method !== "DELETE"
13
+ ? { json: body }
14
+ : {}),
15
+ }));
16
+ if (data.errors) {
17
+ const first = (Array.isArray(data.errors) ? data.errors[0] : undefined);
18
+ throw answerFailed("mautic", {
19
+ code: first?.code,
20
+ message: first?.message,
21
+ });
22
+ }
27
23
  return data;
28
24
  }
29
- async function paginateAll(baseUrl, username, password, propertyName, endpoint, qs = {}) {
25
+ async function pagAll(ctx, propertyName, path, qs = {}) {
30
26
  const all = [];
31
27
  qs.limit = 30;
32
28
  qs.start = 0;
33
29
  let data;
34
30
  do {
35
- data = (await apiRequest(baseUrl, username, password, "GET", endpoint, undefined, qs));
31
+ data = (await req(ctx, "GET", path, undefined, qs));
36
32
  const values = Object.values((data[propertyName] ?? {}));
37
33
  all.push(...values);
38
34
  qs.start += qs.limit;
@@ -43,6 +39,7 @@ async function paginateAll(baseUrl, username, password, propertyName, endpoint,
43
39
  export default function mautic(rl) {
44
40
  rl.setName("mautic");
45
41
  rl.setVersion("0.1.0");
42
+ rl.setCredential(mauticCredential);
46
43
  rl.setConnectionSchema({
47
44
  url: {
48
45
  type: "string",
@@ -63,19 +60,6 @@ export default function mautic(rl) {
63
60
  env: "MAUTIC_PASSWORD",
64
61
  },
65
62
  });
66
- const conn = (ctx) => ({
67
- baseUrl: ctx.connection.config.url.replace(/\/$/, ""),
68
- username: ctx.connection.config.username,
69
- password: ctx.connection.config.password,
70
- });
71
- const req = (ctx, method, endpoint, body, qs) => {
72
- const c = conn(ctx);
73
- return apiRequest(c.baseUrl, c.username, c.password, method, endpoint, body, qs);
74
- };
75
- const pagAll = (ctx, prop, endpoint, qs) => {
76
- const c = conn(ctx);
77
- return paginateAll(c.baseUrl, c.username, c.password, prop, endpoint, qs);
78
- };
79
63
  // ── Company ─────────────────────────────────────────
80
64
  rl.registerAction("company.create", {
81
65
  access: "write",
@@ -93,7 +77,7 @@ export default function mautic(rl) {
93
77
  const body = { companyname };
94
78
  if (additionalFields)
95
79
  Object.assign(body, additionalFields);
96
- const data = (await req(ctx, "POST", "/companies/new", body));
80
+ const data = (await req(ctx, "POST", "companies/new", body));
97
81
  return data.company;
98
82
  },
99
83
  });
@@ -110,7 +94,7 @@ export default function mautic(rl) {
110
94
  },
111
95
  async execute(input, ctx) {
112
96
  const { companyId, updateFields } = input;
113
- const data = (await req(ctx, "PATCH", `/companies/${companyId}/edit`, updateFields));
97
+ const data = (await req(ctx, "PATCH", `companies/${pathSegment(companyId)}/edit`, updateFields));
114
98
  return data.company;
115
99
  },
116
100
  });
@@ -119,7 +103,7 @@ export default function mautic(rl) {
119
103
  description: "Get a company by ID",
120
104
  inputSchema: { companyId: { type: "string", required: true } },
121
105
  async execute(input, ctx) {
122
- const data = (await req(ctx, "GET", `/companies/${input.companyId}`));
106
+ const data = (await req(ctx, "GET", `companies/${pathSegment(input.companyId)}`));
123
107
  return data.company;
124
108
  },
125
109
  });
@@ -148,10 +132,10 @@ export default function mautic(rl) {
148
132
  if (p.limit) {
149
133
  qs.limit = p.limit;
150
134
  qs.start = 0;
151
- const data = (await req(ctx, "GET", "/companies", undefined, qs));
135
+ const data = (await req(ctx, "GET", "companies", undefined, qs));
152
136
  return Object.values((data.companies ?? {}));
153
137
  }
154
- return pagAll(ctx, "companies", "/companies", qs);
138
+ return pagAll(ctx, "companies", "companies", qs);
155
139
  },
156
140
  });
157
141
  rl.registerAction("company.delete", {
@@ -159,7 +143,7 @@ export default function mautic(rl) {
159
143
  description: "Delete a company",
160
144
  inputSchema: { companyId: { type: "string", required: true } },
161
145
  async execute(input, ctx) {
162
- const data = (await req(ctx, "DELETE", `/companies/${input.companyId}/delete`));
146
+ const data = (await req(ctx, "DELETE", `companies/${pathSegment(input.companyId)}/delete`));
163
147
  return data.company;
164
148
  },
165
149
  });
@@ -200,7 +184,7 @@ export default function mautic(rl) {
200
184
  }
201
185
  if (additionalFields)
202
186
  Object.assign(body, additionalFields);
203
- const data = (await req(ctx, "POST", "/contacts/new", body));
187
+ const data = (await req(ctx, "POST", "contacts/new", body));
204
188
  return data.contact;
205
189
  },
206
190
  });
@@ -217,7 +201,7 @@ export default function mautic(rl) {
217
201
  },
218
202
  async execute(input, ctx) {
219
203
  const { contactId, updateFields } = input;
220
- const data = (await req(ctx, "PATCH", `/contacts/${contactId}/edit`, updateFields));
204
+ const data = (await req(ctx, "PATCH", `contacts/${pathSegment(contactId)}/edit`, updateFields));
221
205
  return data.contact;
222
206
  },
223
207
  });
@@ -226,7 +210,7 @@ export default function mautic(rl) {
226
210
  description: "Get a contact by ID",
227
211
  inputSchema: { contactId: { type: "string", required: true } },
228
212
  async execute(input, ctx) {
229
- const data = (await req(ctx, "GET", `/contacts/${input.contactId}`));
213
+ const data = (await req(ctx, "GET", `contacts/${pathSegment(input.contactId)}`));
230
214
  return data.contact;
231
215
  },
232
216
  });
@@ -259,10 +243,10 @@ export default function mautic(rl) {
259
243
  if (p.limit) {
260
244
  qs.limit = p.limit;
261
245
  qs.start = 0;
262
- const data = (await req(ctx, "GET", "/contacts", undefined, qs));
246
+ const data = (await req(ctx, "GET", "contacts", undefined, qs));
263
247
  return Object.values((data.contacts ?? {}));
264
248
  }
265
- return pagAll(ctx, "contacts", "/contacts", qs);
249
+ return pagAll(ctx, "contacts", "contacts", qs);
266
250
  },
267
251
  });
268
252
  rl.registerAction("contact.delete", {
@@ -270,7 +254,7 @@ export default function mautic(rl) {
270
254
  description: "Delete a contact",
271
255
  inputSchema: { contactId: { type: "string", required: true } },
272
256
  async execute(input, ctx) {
273
- const data = (await req(ctx, "DELETE", `/contacts/${input.contactId}/delete`));
257
+ const data = (await req(ctx, "DELETE", `contacts/${pathSegment(input.contactId)}/delete`));
274
258
  return data.contact;
275
259
  },
276
260
  });
@@ -287,7 +271,7 @@ export default function mautic(rl) {
287
271
  },
288
272
  async execute(input, ctx) {
289
273
  const { contactId, emailId } = input;
290
- return req(ctx, "POST", `/emails/${emailId}/contact/${contactId}/send`);
274
+ return req(ctx, "POST", `emails/${pathSegment(emailId)}/contact/${pathSegment(contactId)}/send`);
291
275
  },
292
276
  });
293
277
  rl.registerAction("contact.editDoNotContact", {
@@ -319,7 +303,7 @@ export default function mautic(rl) {
319
303
  body.reason = reason;
320
304
  if (comments)
321
305
  body.comments = comments;
322
- const data = (await req(ctx, "POST", `/contacts/${contactId}/dnc/${channel}/${action}`, body));
306
+ const data = (await req(ctx, "POST", `contacts/${pathSegment(contactId)}/dnc/${pathSegment(channel)}/${pathSegment(action)}`, body));
323
307
  return data.contact;
324
308
  },
325
309
  });
@@ -338,7 +322,7 @@ export default function mautic(rl) {
338
322
  async execute(input, ctx) {
339
323
  const { contactId, action, points } = input;
340
324
  const path = action === "add" ? "plus" : "minus";
341
- return req(ctx, "POST", `/contacts/${contactId}/points/${path}/${points}`);
325
+ return req(ctx, "POST", `contacts/${pathSegment(contactId)}/points/${pathSegment(path)}/${pathSegment(points)}`);
342
326
  },
343
327
  });
344
328
  // ── Contact Segment ─────────────────────────────────
@@ -351,7 +335,7 @@ export default function mautic(rl) {
351
335
  },
352
336
  async execute(input, ctx) {
353
337
  const { segmentId, contactId } = input;
354
- return req(ctx, "POST", `/segments/${segmentId}/contact/${contactId}/add`);
338
+ return req(ctx, "POST", `segments/${pathSegment(segmentId)}/contact/${pathSegment(contactId)}/add`);
355
339
  },
356
340
  });
357
341
  rl.registerAction("contactSegment.remove", {
@@ -363,7 +347,7 @@ export default function mautic(rl) {
363
347
  },
364
348
  async execute(input, ctx) {
365
349
  const { segmentId, contactId } = input;
366
- return req(ctx, "POST", `/segments/${segmentId}/contact/${contactId}/remove`);
350
+ return req(ctx, "POST", `segments/${pathSegment(segmentId)}/contact/${pathSegment(contactId)}/remove`);
367
351
  },
368
352
  });
369
353
  // ── Campaign Contact ────────────────────────────────
@@ -376,7 +360,7 @@ export default function mautic(rl) {
376
360
  },
377
361
  async execute(input, ctx) {
378
362
  const { campaignId, contactId } = input;
379
- return req(ctx, "POST", `/campaigns/${campaignId}/contact/${contactId}/add`);
363
+ return req(ctx, "POST", `campaigns/${pathSegment(campaignId)}/contact/${pathSegment(contactId)}/add`);
380
364
  },
381
365
  });
382
366
  rl.registerAction("campaignContact.remove", {
@@ -388,7 +372,7 @@ export default function mautic(rl) {
388
372
  },
389
373
  async execute(input, ctx) {
390
374
  const { campaignId, contactId } = input;
391
- return req(ctx, "POST", `/campaigns/${campaignId}/contact/${contactId}/remove`);
375
+ return req(ctx, "POST", `campaigns/${pathSegment(campaignId)}/contact/${pathSegment(contactId)}/remove`);
392
376
  },
393
377
  });
394
378
  // ── Company Contact ─────────────────────────────────
@@ -401,7 +385,7 @@ export default function mautic(rl) {
401
385
  },
402
386
  async execute(input, ctx) {
403
387
  const { companyId, contactId } = input;
404
- return req(ctx, "POST", `/companies/${companyId}/contact/${contactId}/add`);
388
+ return req(ctx, "POST", `companies/${pathSegment(companyId)}/contact/${pathSegment(contactId)}/add`);
405
389
  },
406
390
  });
407
391
  rl.registerAction("companyContact.remove", {
@@ -413,7 +397,7 @@ export default function mautic(rl) {
413
397
  },
414
398
  async execute(input, ctx) {
415
399
  const { companyId, contactId } = input;
416
- return req(ctx, "POST", `/companies/${companyId}/contact/${contactId}/remove`);
400
+ return req(ctx, "POST", `companies/${pathSegment(companyId)}/contact/${pathSegment(contactId)}/remove`);
417
401
  },
418
402
  });
419
403
  // ── Segment Email ───────────────────────────────────
@@ -428,7 +412,7 @@ export default function mautic(rl) {
428
412
  },
429
413
  },
430
414
  async execute(input, ctx) {
431
- return req(ctx, "POST", `/emails/${input.emailId}/send`);
415
+ return req(ctx, "POST", `emails/${pathSegment(input.emailId)}/send`);
432
416
  },
433
417
  });
434
418
  }
@@ -0,0 +1,20 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** An integration token, sent as a bearer to Medium's one API origin. */
3
+ export const mediumCredential = staticCredential({
4
+ id: "medium",
5
+ auth: { kind: "bearer" },
6
+ local: { secret: "accessToken" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://api.medium.com/v1/",
10
+ methods: ["GET", "POST"],
11
+ allowedHeaders: ["Accept-Charset"],
12
+ },
13
+ },
14
+ probe: {
15
+ target: "api",
16
+ path: "me",
17
+ method: "GET",
18
+ acceptedStatuses: [200],
19
+ },
20
+ });