runline 0.33.0 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. package/dist/auth/oauth2.d.ts +7 -1
  2. package/dist/auth/oauth2.js +10 -0
  3. package/dist/auth/token.d.ts +1 -0
  4. package/dist/auth/token.js +19 -1
  5. package/dist/auth/types.d.ts +22 -1
  6. package/dist/core/engine.d.ts +7 -0
  7. package/dist/core/engine.js +21 -8
  8. package/dist/credentials/policy.d.ts +53 -1
  9. package/dist/credentials/policy.js +146 -6
  10. package/dist/credentials/registry.d.ts +9 -0
  11. package/dist/credentials/registry.js +184 -22
  12. package/dist/credentials/transport.d.ts +48 -2
  13. package/dist/credentials/transport.js +248 -70
  14. package/dist/credentials/types.d.ts +177 -10
  15. package/dist/index.d.ts +6 -5
  16. package/dist/index.js +3 -2
  17. package/dist/plugin/api.d.ts +7 -0
  18. package/dist/plugin/api.js +7 -0
  19. package/dist/plugin/schema.d.ts +16 -4
  20. package/dist/plugin/schema.js +28 -5
  21. package/dist/plugin/types.d.ts +20 -0
  22. package/dist/plugins/_shared/base64.js +30 -0
  23. package/dist/plugins/_shared/credentialAdapter.js +99 -15
  24. package/dist/plugins/_shared/credentials.js +416 -0
  25. package/dist/plugins/_shared/googleAuth.js +69 -39
  26. package/dist/plugins/_shared/googleCredentials.js +68 -14
  27. package/dist/plugins/_shared/localFile.js +40 -0
  28. package/dist/plugins/_shared/mediaFile.js +12 -12
  29. package/dist/plugins/_shared/microsoftAuth.js +31 -47
  30. package/dist/plugins/_shared/microsoftCredentials.js +42 -15
  31. package/dist/plugins/_shared/provider.js +2 -14
  32. package/dist/plugins/_shared/shiftCloud.js +16 -56
  33. package/dist/plugins/_shared/shiftCredentials.js +83 -0
  34. package/dist/plugins/_shared/shiftUpload.js +14 -10
  35. package/dist/plugins/actionNetwork/src/credentials.js +14 -0
  36. package/dist/plugins/actionNetwork/src/index.js +39 -50
  37. package/dist/plugins/activeCampaign/src/credentials.js +22 -0
  38. package/dist/plugins/activeCampaign/src/index.js +61 -132
  39. package/dist/plugins/adalo/src/credentials.js +16 -0
  40. package/dist/plugins/adalo/src/index.js +19 -43
  41. package/dist/plugins/affinity/src/credentials.js +19 -0
  42. package/dist/plugins/affinity/src/index.js +29 -54
  43. package/dist/plugins/agentMail/src/credentials.js +35 -0
  44. package/dist/plugins/agentMail/src/drafts.js +137 -0
  45. package/dist/plugins/agentMail/src/inboxes.js +95 -0
  46. package/dist/plugins/agentMail/src/index.js +35 -0
  47. package/dist/plugins/agentMail/src/messages.js +154 -0
  48. package/dist/plugins/agentMail/src/schemas.js +156 -0
  49. package/dist/plugins/agentMail/src/shared.js +203 -0
  50. package/dist/plugins/agentMail/src/threads.js +75 -0
  51. package/dist/plugins/agileCrm/src/credentials.js +16 -0
  52. package/dist/plugins/agileCrm/src/index.js +46 -112
  53. package/dist/plugins/airtable/src/credentials.js +19 -0
  54. package/dist/plugins/airtable/src/index.js +37 -50
  55. package/dist/plugins/airtop/src/credentials.js +20 -0
  56. package/dist/plugins/airtop/src/index.js +51 -75
  57. package/dist/plugins/apiTemplateIo/src/credentials.js +19 -0
  58. package/dist/plugins/apiTemplateIo/src/index.js +14 -31
  59. package/dist/plugins/asana/src/credentials.js +19 -0
  60. package/dist/plugins/asana/src/index.js +51 -72
  61. package/dist/plugins/autopilot/src/credentials.js +19 -0
  62. package/dist/plugins/autopilot/src/index.js +38 -45
  63. package/dist/plugins/bambooHr/src/credentials.js +16 -0
  64. package/dist/plugins/bambooHr/src/index.js +41 -67
  65. package/dist/plugins/bannerbear/src/credentials.js +19 -0
  66. package/dist/plugins/bannerbear/src/index.js +15 -27
  67. package/dist/plugins/baserow/src/credentials.js +17 -0
  68. package/dist/plugins/baserow/src/index.js +23 -49
  69. package/dist/plugins/beeminder/src/credentials.js +19 -0
  70. package/dist/plugins/beeminder/src/index.js +32 -54
  71. package/dist/plugins/bitly/src/credentials.js +19 -0
  72. package/dist/plugins/bitly/src/index.js +12 -26
  73. package/dist/plugins/bitwarden/src/credentials.js +62 -0
  74. package/dist/plugins/bitwarden/src/index.js +34 -80
  75. package/dist/plugins/box/src/credentials.js +19 -0
  76. package/dist/plugins/box/src/index.js +24 -49
  77. package/dist/plugins/brandfetch/src/credentials.js +13 -0
  78. package/dist/plugins/brandfetch/src/index.js +12 -17
  79. package/dist/plugins/brevo/src/credentials.js +19 -0
  80. package/dist/plugins/brevo/src/index.js +30 -51
  81. package/dist/plugins/bubble/src/credentials.js +28 -0
  82. package/dist/plugins/bubble/src/index.js +29 -65
  83. package/dist/plugins/chargebee/src/credentials.js +16 -0
  84. package/dist/plugins/chargebee/src/index.js +15 -45
  85. package/dist/plugins/circleci/src/credentials.js +19 -0
  86. package/dist/plugins/circleci/src/index.js +19 -39
  87. package/dist/plugins/ciscoWebex/src/credentials.js +19 -0
  88. package/dist/plugins/ciscoWebex/src/index.js +43 -61
  89. package/dist/plugins/clearbit/src/credentials.js +22 -0
  90. package/dist/plugins/clearbit/src/index.js +11 -21
  91. package/dist/plugins/clickup/src/credentials.js +19 -0
  92. package/dist/plugins/clickup/src/index.js +85 -117
  93. package/dist/plugins/clockify/src/credentials.js +19 -0
  94. package/dist/plugins/clockify/src/index.js +46 -61
  95. package/dist/plugins/cloudflare/src/credentials.js +19 -0
  96. package/dist/plugins/cloudflare/src/index.js +19 -34
  97. package/dist/plugins/cockpit/src/credentials.js +17 -0
  98. package/dist/plugins/cockpit/src/index.js +18 -31
  99. package/dist/plugins/coda/src/credentials.js +19 -0
  100. package/dist/plugins/coda/src/index.js +33 -50
  101. package/dist/plugins/coingecko/src/credentials.js +20 -0
  102. package/dist/plugins/coingecko/src/index.js +24 -34
  103. package/dist/plugins/contentful/src/credentials.js +26 -0
  104. package/dist/plugins/contentful/src/index.js +19 -40
  105. package/dist/plugins/convertkit/src/credentials.js +26 -0
  106. package/dist/plugins/convertkit/src/index.js +27 -45
  107. package/dist/plugins/copper/src/credentials.js +17 -0
  108. package/dist/plugins/copper/src/index.js +25 -47
  109. package/dist/plugins/cortex/src/credentials.js +28 -0
  110. package/dist/plugins/cortex/src/index.js +26 -49
  111. package/dist/plugins/currents/src/credentials.js +19 -0
  112. package/dist/plugins/currents/src/index.js +46 -59
  113. package/dist/plugins/customerIo/src/credentials.js +52 -0
  114. package/dist/plugins/customerIo/src/index.js +30 -58
  115. package/dist/plugins/databricks/src/credentials.js +13 -0
  116. package/dist/plugins/databricks/src/index.js +51 -103
  117. package/dist/plugins/deepl/src/credentials.js +19 -0
  118. package/dist/plugins/deepl/src/index.js +13 -39
  119. package/dist/plugins/demio/src/credentials.js +26 -0
  120. package/dist/plugins/demio/src/index.js +17 -41
  121. package/dist/plugins/dhl/src/credentials.js +13 -0
  122. package/dist/plugins/dhl/src/index.js +8 -19
  123. package/dist/plugins/discord/src/credentials.js +19 -0
  124. package/dist/plugins/discord/src/index.js +30 -58
  125. package/dist/plugins/discourse/src/credentials.js +18 -0
  126. package/dist/plugins/discourse/src/index.js +36 -53
  127. package/dist/plugins/disqus/src/credentials.js +13 -0
  128. package/dist/plugins/disqus/src/index.js +14 -32
  129. package/dist/plugins/drift/src/credentials.js +13 -0
  130. package/dist/plugins/drift/src/index.js +16 -26
  131. package/dist/plugins/dropbox/src/credentials.js +13 -0
  132. package/dist/plugins/dropbox/src/index.js +23 -30
  133. package/dist/plugins/dropcontact/src/credentials.js +13 -0
  134. package/dist/plugins/dropcontact/src/index.js +13 -18
  135. package/dist/plugins/egoi/src/credentials.js +19 -0
  136. package/dist/plugins/egoi/src/index.js +23 -38
  137. package/dist/plugins/elasticsearch/src/credentials.js +18 -0
  138. package/dist/plugins/elasticsearch/src/index.js +27 -48
  139. package/dist/plugins/elevenlabs/src/credentials.js +30 -0
  140. package/dist/plugins/elevenlabs/src/index.js +4 -1
  141. package/dist/plugins/elevenlabs/src/schemas.js +2 -1
  142. package/dist/plugins/elevenlabs/src/shared.js +87 -62
  143. package/dist/plugins/elevenlabs/src/workflows.js +2 -2
  144. package/dist/plugins/emelia/src/credentials.js +14 -0
  145. package/dist/plugins/emelia/src/index.js +19 -23
  146. package/dist/plugins/erpnext/src/credentials.js +27 -0
  147. package/dist/plugins/erpnext/src/index.js +21 -42
  148. package/dist/plugins/facebookGraph/src/credentials.js +20 -0
  149. package/dist/plugins/facebookGraph/src/index.js +39 -37
  150. package/dist/plugins/fal/src/credentials.js +14 -0
  151. package/dist/plugins/fal/src/index.js +5 -3
  152. package/dist/plugins/fal/src/shared.js +58 -63
  153. package/dist/plugins/freshdesk/src/credentials.js +20 -0
  154. package/dist/plugins/freshdesk/src/index.js +25 -46
  155. package/dist/plugins/freshservice/src/credentials.js +16 -0
  156. package/dist/plugins/freshservice/src/index.js +37 -58
  157. package/dist/plugins/freshworksCrm/src/credentials.js +16 -0
  158. package/dist/plugins/freshworksCrm/src/index.js +20 -39
  159. package/dist/plugins/getresponse/src/credentials.js +22 -0
  160. package/dist/plugins/getresponse/src/index.js +20 -32
  161. package/dist/plugins/gett/src/credentials.js +64 -0
  162. package/dist/plugins/gett/src/index.js +11 -6
  163. package/dist/plugins/gett/src/login.js +24 -0
  164. package/dist/plugins/gett/src/session.js +15 -38
  165. package/dist/plugins/gett/src/shared.js +41 -84
  166. package/dist/plugins/ghost/src/credentials.js +36 -0
  167. package/dist/plugins/ghost/src/index.js +18 -59
  168. package/dist/plugins/github/src/credentials.js +18 -0
  169. package/dist/plugins/github/src/index.js +55 -78
  170. package/dist/plugins/gitlab/src/credentials.js +24 -0
  171. package/dist/plugins/gitlab/src/index.js +29 -48
  172. package/dist/plugins/gmail/src/index.js +47 -108
  173. package/dist/plugins/gong/src/credentials.js +16 -0
  174. package/dist/plugins/gong/src/index.js +16 -32
  175. package/dist/plugins/googleAppsScript/src/index.js +109 -42
  176. package/dist/plugins/googleCalendar/src/index.js +20 -51
  177. package/dist/plugins/googleContacts/src/index.js +13 -40
  178. package/dist/plugins/googleDocs/src/index.js +3 -32
  179. package/dist/plugins/googleDocs/src/shared.js +2 -1
  180. package/dist/plugins/googleDrive/src/index.js +68 -97
  181. package/dist/plugins/googleImage/src/credentials.js +14 -0
  182. package/dist/plugins/googleImage/src/index.js +15 -26
  183. package/dist/plugins/googleSheets/src/index.js +27 -60
  184. package/dist/plugins/googleSlides/src/index.js +7 -35
  185. package/dist/plugins/googleTasks/src/index.js +14 -42
  186. package/dist/plugins/gotify/src/credentials.js +32 -0
  187. package/dist/plugins/gotify/src/index.js +14 -36
  188. package/dist/plugins/gotowebinar/src/credentials.js +13 -0
  189. package/dist/plugins/gotowebinar/src/index.js +52 -69
  190. package/dist/plugins/grafana/src/credentials.js +16 -0
  191. package/dist/plugins/grafana/src/index.js +34 -53
  192. package/dist/plugins/graphql/src/credentials.js +42 -0
  193. package/dist/plugins/graphql/src/index.js +21 -46
  194. package/dist/plugins/grist/src/credentials.js +30 -0
  195. package/dist/plugins/grist/src/index.js +14 -43
  196. package/dist/plugins/halopsa/src/credentials.js +56 -0
  197. package/dist/plugins/halopsa/src/index.js +20 -47
  198. package/dist/plugins/harvest/src/credentials.js +20 -0
  199. package/dist/plugins/harvest/src/index.js +24 -43
  200. package/dist/plugins/helpscout/src/credentials.js +13 -0
  201. package/dist/plugins/helpscout/src/index.js +26 -38
  202. package/dist/plugins/highlevel/src/credentials.js +19 -0
  203. package/dist/plugins/highlevel/src/index.js +42 -65
  204. package/dist/plugins/homeAssistant/src/credentials.js +27 -0
  205. package/dist/plugins/homeAssistant/src/index.js +34 -52
  206. package/dist/plugins/hubspot/src/credentials.js +16 -0
  207. package/dist/plugins/hubspot/src/index.js +29 -41
  208. package/dist/plugins/humanticAi/src/credentials.js +13 -0
  209. package/dist/plugins/humanticAi/src/index.js +15 -22
  210. package/dist/plugins/hunter/src/credentials.js +13 -0
  211. package/dist/plugins/hunter/src/index.js +18 -17
  212. package/dist/plugins/intercom/src/credentials.js +19 -0
  213. package/dist/plugins/intercom/src/index.js +25 -38
  214. package/dist/plugins/iterable/src/credentials.js +17 -0
  215. package/dist/plugins/iterable/src/index.js +26 -40
  216. package/dist/plugins/jenkins/src/credentials.js +16 -0
  217. package/dist/plugins/jenkins/src/index.js +22 -36
  218. package/dist/plugins/jira/src/credentials.js +16 -0
  219. package/dist/plugins/jira/src/index.js +35 -61
  220. package/dist/plugins/keap/src/credentials.js +19 -0
  221. package/dist/plugins/keap/src/index.js +43 -71
  222. package/dist/plugins/kobotoolbox/src/credentials.js +13 -0
  223. package/dist/plugins/kobotoolbox/src/index.js +46 -84
  224. package/dist/plugins/lemlist/src/credentials.js +19 -0
  225. package/dist/plugins/lemlist/src/index.js +35 -47
  226. package/dist/plugins/linear/src/attachments.js +7 -7
  227. package/dist/plugins/linear/src/comments.js +7 -7
  228. package/dist/plugins/linear/src/credentials.js +17 -0
  229. package/dist/plugins/linear/src/cycles.js +5 -5
  230. package/dist/plugins/linear/src/index.js +2 -0
  231. package/dist/plugins/linear/src/initiatives.js +6 -6
  232. package/dist/plugins/linear/src/issues.js +14 -14
  233. package/dist/plugins/linear/src/labels.js +6 -6
  234. package/dist/plugins/linear/src/organization.js +2 -2
  235. package/dist/plugins/linear/src/projects.js +12 -12
  236. package/dist/plugins/linear/src/shared.js +34 -32
  237. package/dist/plugins/linear/src/states.js +3 -3
  238. package/dist/plugins/linear/src/teams.js +4 -4
  239. package/dist/plugins/linear/src/users.js +3 -3
  240. package/dist/plugins/linear/src/views.js +5 -5
  241. package/dist/plugins/linear/src/webhooks.js +5 -5
  242. package/dist/plugins/lingvanex/src/credentials.js +13 -0
  243. package/dist/plugins/lingvanex/src/index.js +7 -9
  244. package/dist/plugins/linkedin/src/credentials.js +17 -0
  245. package/dist/plugins/linkedin/src/index.js +13 -17
  246. package/dist/plugins/lonescale/src/credentials.js +13 -0
  247. package/dist/plugins/lonescale/src/index.js +16 -26
  248. package/dist/plugins/magento/src/credentials.js +16 -0
  249. package/dist/plugins/magento/src/index.js +67 -84
  250. package/dist/plugins/mailcheck/src/credentials.js +17 -0
  251. package/dist/plugins/mailcheck/src/index.js +7 -9
  252. package/dist/plugins/mailchimp/src/credentials.js +32 -0
  253. package/dist/plugins/mailchimp/src/index.js +36 -44
  254. package/dist/plugins/mailerlite/src/credentials.js +13 -0
  255. package/dist/plugins/mailerlite/src/index.js +19 -32
  256. package/dist/plugins/mailgun/src/credentials.js +21 -0
  257. package/dist/plugins/mailgun/src/index.js +15 -21
  258. package/dist/plugins/mailjet/src/credentials.js +38 -0
  259. package/dist/plugins/mailjet/src/index.js +60 -115
  260. package/dist/plugins/mandrill/src/credentials.js +17 -0
  261. package/dist/plugins/mandrill/src/index.js +11 -12
  262. package/dist/plugins/marketstack/src/credentials.js +16 -0
  263. package/dist/plugins/marketstack/src/index.js +18 -28
  264. package/dist/plugins/matrix/src/credentials.js +19 -0
  265. package/dist/plugins/matrix/src/index.js +23 -52
  266. package/dist/plugins/mattermost/src/credentials.js +19 -0
  267. package/dist/plugins/mattermost/src/index.js +41 -73
  268. package/dist/plugins/mautic/src/credentials.js +16 -0
  269. package/dist/plugins/mautic/src/index.js +46 -62
  270. package/dist/plugins/medium/src/credentials.js +20 -0
  271. package/dist/plugins/medium/src/index.js +18 -23
  272. package/dist/plugins/messagebird/src/credentials.js +22 -0
  273. package/dist/plugins/messagebird/src/index.js +13 -18
  274. package/dist/plugins/metabase/src/credentials.js +19 -0
  275. package/dist/plugins/metabase/src/index.js +24 -40
  276. package/dist/plugins/microsoftCalendar/src/index.js +49 -18
  277. package/dist/plugins/microsoftFiles/src/index.js +95 -31
  278. package/dist/plugins/microsoftMail/src/index.js +63 -21
  279. package/dist/plugins/misp/src/credentials.js +16 -0
  280. package/dist/plugins/misp/src/index.js +60 -71
  281. package/dist/plugins/mocean/src/credentials.js +17 -0
  282. package/dist/plugins/mocean/src/index.js +11 -23
  283. package/dist/plugins/monday/src/credentials.js +14 -0
  284. package/dist/plugins/monday/src/index.js +31 -44
  285. package/dist/plugins/monicaCrm/src/credentials.js +19 -0
  286. package/dist/plugins/monicaCrm/src/index.js +25 -42
  287. package/dist/plugins/msg91/src/credentials.js +10 -0
  288. package/dist/plugins/msg91/src/index.js +15 -11
  289. package/dist/plugins/nasa/src/credentials.js +22 -0
  290. package/dist/plugins/nasa/src/index.js +24 -28
  291. package/dist/plugins/netlify/src/credentials.js +19 -0
  292. package/dist/plugins/netlify/src/index.js +27 -51
  293. package/dist/plugins/netscalerAdc/src/credentials.js +18 -0
  294. package/dist/plugins/netscalerAdc/src/index.js +16 -31
  295. package/dist/plugins/nextcloud/src/credentials.js +27 -0
  296. package/dist/plugins/nextcloud/src/index.js +55 -109
  297. package/dist/plugins/nocodb/src/credentials.js +16 -0
  298. package/dist/plugins/nocodb/src/index.js +19 -37
  299. package/dist/plugins/notion/src/credentials.js +21 -0
  300. package/dist/plugins/notion/src/index.js +25 -38
  301. package/dist/plugins/npm/src/credentials.js +19 -0
  302. package/dist/plugins/npm/src/index.js +22 -32
  303. package/dist/plugins/odoo/src/credentials.js +21 -0
  304. package/dist/plugins/odoo/src/index.js +53 -69
  305. package/dist/plugins/okta/src/credentials.js +23 -0
  306. package/dist/plugins/okta/src/index.js +30 -35
  307. package/dist/plugins/oneSimpleApi/src/credentials.js +16 -0
  308. package/dist/plugins/oneSimpleApi/src/index.js +19 -24
  309. package/dist/plugins/onfleet/src/credentials.js +23 -0
  310. package/dist/plugins/onfleet/src/index.js +42 -53
  311. package/dist/plugins/openai/src/credentials.js +13 -0
  312. package/dist/plugins/openai/src/index.js +16 -24
  313. package/dist/plugins/openweathermap/src/credentials.js +16 -0
  314. package/dist/plugins/openweathermap/src/index.js +22 -22
  315. package/dist/plugins/oura/src/credentials.js +19 -0
  316. package/dist/plugins/oura/src/index.js +13 -18
  317. package/dist/plugins/paddle/src/credentials.js +27 -0
  318. package/dist/plugins/paddle/src/index.js +20 -36
  319. package/dist/plugins/pagerduty/src/credentials.js +24 -0
  320. package/dist/plugins/pagerduty/src/index.js +30 -39
  321. package/dist/plugins/parallel/src/credentials.js +18 -0
  322. package/dist/plugins/parallel/src/index.js +16 -22
  323. package/dist/plugins/paypal/src/credentials.js +44 -0
  324. package/dist/plugins/paypal/src/index.js +14 -40
  325. package/dist/plugins/peekalink/src/credentials.js +16 -0
  326. package/dist/plugins/peekalink/src/index.js +10 -11
  327. package/dist/plugins/phantombuster/src/credentials.js +19 -0
  328. package/dist/plugins/phantombuster/src/index.js +19 -32
  329. package/dist/plugins/philipsHue/src/credentials.js +17 -0
  330. package/dist/plugins/philipsHue/src/index.js +15 -27
  331. package/dist/plugins/pipedrive/src/credentials.js +26 -0
  332. package/dist/plugins/pipedrive/src/index.js +43 -73
  333. package/dist/plugins/plaud/src/index.js +2 -1
  334. package/dist/plugins/plaud/src/shared.js +23 -19
  335. package/dist/plugins/plivo/src/credentials.js +20 -0
  336. package/dist/plugins/plivo/src/index.js +13 -19
  337. package/dist/plugins/posthog/src/credentials.js +18 -0
  338. package/dist/plugins/posthog/src/index.js +14 -20
  339. package/dist/plugins/profitwell/src/credentials.js +22 -0
  340. package/dist/plugins/profitwell/src/index.js +10 -17
  341. package/dist/plugins/pushbullet/src/credentials.js +19 -0
  342. package/dist/plugins/pushbullet/src/index.js +19 -27
  343. package/dist/plugins/pushcut/src/credentials.js +19 -0
  344. package/dist/plugins/pushcut/src/index.js +7 -8
  345. package/dist/plugins/pushover/src/credentials.js +14 -0
  346. package/dist/plugins/pushover/src/index.js +7 -12
  347. package/dist/plugins/quickbase/src/credentials.js +15 -0
  348. package/dist/plugins/quickbase/src/index.js +24 -34
  349. package/dist/plugins/quickbooks/src/credentials.js +22 -0
  350. package/dist/plugins/quickbooks/src/index.js +17 -46
  351. package/dist/plugins/raindrop/src/credentials.js +19 -0
  352. package/dist/plugins/raindrop/src/index.js +30 -32
  353. package/dist/plugins/recraft/src/credentials.js +13 -0
  354. package/dist/plugins/recraft/src/index.js +39 -28
  355. package/dist/plugins/reddit/src/credentials.js +26 -0
  356. package/dist/plugins/reddit/src/index.js +30 -34
  357. package/dist/plugins/replicate/src/credentials.js +23 -0
  358. package/dist/plugins/replicate/src/index.js +18 -28
  359. package/dist/plugins/rocketchat/src/credentials.js +17 -0
  360. package/dist/plugins/rocketchat/src/index.js +8 -19
  361. package/dist/plugins/rundeck/src/credentials.js +16 -0
  362. package/dist/plugins/rundeck/src/index.js +12 -28
  363. package/dist/plugins/salesforce/src/credentials.js +73 -0
  364. package/dist/plugins/salesforce/src/index.js +6 -0
  365. package/dist/plugins/salesforce/src/metadata.js +3 -16
  366. package/dist/plugins/salesforce/src/shared.js +25 -100
  367. package/dist/plugins/salesforce/src/sobjects.js +10 -9
  368. package/dist/plugins/salesmate/src/credentials.js +17 -0
  369. package/dist/plugins/salesmate/src/index.js +20 -37
  370. package/dist/plugins/securityScorecard/src/credentials.js +22 -0
  371. package/dist/plugins/securityScorecard/src/index.js +24 -37
  372. package/dist/plugins/segment/src/credentials.js +16 -0
  373. package/dist/plugins/segment/src/index.js +12 -16
  374. package/dist/plugins/sendgrid/src/credentials.js +13 -0
  375. package/dist/plugins/sendgrid/src/index.js +31 -35
  376. package/dist/plugins/sendy/src/credentials.js +18 -0
  377. package/dist/plugins/sendy/src/index.js +18 -24
  378. package/dist/plugins/sentry/src/credentials.js +16 -0
  379. package/dist/plugins/sentry/src/index.js +30 -98
  380. package/dist/plugins/servicenow/src/credentials.js +13 -0
  381. package/dist/plugins/servicenow/src/index.js +22 -41
  382. package/dist/plugins/shiftAtlas/src/graph.js +2 -2
  383. package/dist/plugins/shiftAtlas/src/index.js +2 -0
  384. package/dist/plugins/shiftAtlas/src/shared.js +3 -1
  385. package/dist/plugins/shiftBwm/src/index.js +4 -2
  386. package/dist/plugins/shiftBwm/src/shared.js +41 -16
  387. package/dist/plugins/shiftCrm/src/access.js +2 -2
  388. package/dist/plugins/shiftCrm/src/accounts.js +3 -3
  389. package/dist/plugins/shiftCrm/src/activities.js +3 -3
  390. package/dist/plugins/shiftCrm/src/credentials.js +6 -0
  391. package/dist/plugins/shiftCrm/src/index.js +2 -0
  392. package/dist/plugins/shiftCrm/src/opportunities.js +3 -3
  393. package/dist/plugins/shiftCrm/src/people.js +3 -3
  394. package/dist/plugins/shiftCrm/src/records.js +2 -2
  395. package/dist/plugins/shiftCrm/src/shared.js +2 -1
  396. package/dist/plugins/shiftCrm/src/tasks.js +3 -3
  397. package/dist/plugins/shiftObjects/src/credentials.js +2 -0
  398. package/dist/plugins/shiftObjects/src/index.js +2 -0
  399. package/dist/plugins/shiftObjects/src/objects.js +4 -3
  400. package/dist/plugins/shiftOcr/src/credentials.js +8 -0
  401. package/dist/plugins/shiftOcr/src/index.js +14 -8
  402. package/dist/plugins/shiftPages/src/index.js +2 -0
  403. package/dist/plugins/shiftPages/src/pages.js +5 -3
  404. package/dist/plugins/shiftPages/src/shared.js +3 -1
  405. package/dist/plugins/shiftTranscription/src/index.js +2 -0
  406. package/dist/plugins/shiftTranscription/src/shared.js +11 -1
  407. package/dist/plugins/shiftTranscription/src/transcription.js +5 -5
  408. package/dist/plugins/shiftWork/src/index.js +2 -0
  409. package/dist/plugins/shiftWork/src/issue-views.js +5 -5
  410. package/dist/plugins/shiftWork/src/issues.js +11 -7
  411. package/dist/plugins/shiftWork/src/projects.js +3 -3
  412. package/dist/plugins/shiftWork/src/shared.js +3 -1
  413. package/dist/plugins/shopify/src/credentials.js +16 -0
  414. package/dist/plugins/shopify/src/index.js +32 -59
  415. package/dist/plugins/signl4/src/credentials.js +17 -0
  416. package/dist/plugins/signl4/src/index.js +28 -29
  417. package/dist/plugins/slack/src/credentials.js +19 -0
  418. package/dist/plugins/slack/src/index.js +51 -60
  419. package/dist/plugins/sms77/src/credentials.js +17 -0
  420. package/dist/plugins/sms77/src/index.js +11 -16
  421. package/dist/plugins/splunk/src/credentials.js +19 -0
  422. package/dist/plugins/splunk/src/index.js +32 -74
  423. package/dist/plugins/spotify/src/credentials.js +19 -0
  424. package/dist/plugins/spotify/src/index.js +40 -55
  425. package/dist/plugins/stackby/src/credentials.js +13 -0
  426. package/dist/plugins/stackby/src/index.js +14 -23
  427. package/dist/plugins/steel/src/auth.js +27 -0
  428. package/dist/plugins/steel/src/browser.js +4 -3
  429. package/dist/plugins/steel/src/captchas.js +4 -3
  430. package/dist/plugins/steel/src/extensions.js +3 -2
  431. package/dist/plugins/steel/src/files.js +9 -10
  432. package/dist/plugins/steel/src/index.js +2 -0
  433. package/dist/plugins/steel/src/page/tools.js +3 -3
  434. package/dist/plugins/steel/src/profiles.js +4 -3
  435. package/dist/plugins/steel/src/sessions.js +13 -13
  436. package/dist/plugins/steel/src/shared.js +21 -51
  437. package/dist/plugins/storyblok/src/credentials.js +37 -0
  438. package/dist/plugins/storyblok/src/index.js +22 -66
  439. package/dist/plugins/strapi/src/credentials.js +71 -0
  440. package/dist/plugins/strapi/src/index.js +36 -70
  441. package/dist/plugins/strava/src/credentials.js +19 -0
  442. package/dist/plugins/strava/src/index.js +16 -33
  443. package/dist/plugins/stripe/src/credentials.js +19 -0
  444. package/dist/plugins/stripe/src/index.js +44 -58
  445. package/dist/plugins/supabase/src/credentials.js +30 -0
  446. package/dist/plugins/supabase/src/index.js +18 -40
  447. package/dist/plugins/syncromsp/src/credentials.js +16 -0
  448. package/dist/plugins/syncromsp/src/index.js +37 -70
  449. package/dist/plugins/tapfiliate/src/credentials.js +13 -0
  450. package/dist/plugins/tapfiliate/src/index.js +21 -31
  451. package/dist/plugins/telegram/src/credentials.js +20 -0
  452. package/dist/plugins/telegram/src/index.js +31 -39
  453. package/dist/plugins/thehive/src/credentials.js +14 -0
  454. package/dist/plugins/thehive/src/index.js +33 -50
  455. package/dist/plugins/thehiveProject/src/credentials.js +16 -0
  456. package/dist/plugins/thehiveProject/src/index.js +53 -122
  457. package/dist/plugins/todoist/src/credentials.js +26 -0
  458. package/dist/plugins/todoist/src/index.js +49 -79
  459. package/dist/plugins/together/src/credentials.js +16 -0
  460. package/dist/plugins/together/src/index.js +31 -33
  461. package/dist/plugins/travisci/src/credentials.js +24 -0
  462. package/dist/plugins/travisci/src/index.js +16 -30
  463. package/dist/plugins/trello/src/credentials.js +29 -0
  464. package/dist/plugins/trello/src/index.js +49 -64
  465. package/dist/plugins/twake/src/credentials.js +16 -0
  466. package/dist/plugins/twake/src/index.js +8 -10
  467. package/dist/plugins/twilio/src/credentials.js +23 -0
  468. package/dist/plugins/twilio/src/index.js +12 -26
  469. package/dist/plugins/twist/src/credentials.js +13 -0
  470. package/dist/plugins/twist/src/index.js +32 -44
  471. package/dist/plugins/twitter/src/credentials.js +16 -0
  472. package/dist/plugins/twitter/src/index.js +25 -37
  473. package/dist/plugins/typesafe/src/credentials.js +28 -0
  474. package/dist/plugins/typesafe/src/index.js +3 -1
  475. package/dist/plugins/typesafe/src/shared.js +23 -35
  476. package/dist/plugins/unleashedSoftware/src/credentials.js +21 -0
  477. package/dist/plugins/unleashedSoftware/src/index.js +13 -37
  478. package/dist/plugins/uplead/src/credentials.js +16 -0
  479. package/dist/plugins/uplead/src/index.js +11 -16
  480. package/dist/plugins/uproc/src/credentials.js +14 -0
  481. package/dist/plugins/uproc/src/index.js +7 -10
  482. package/dist/plugins/uptimerobot/src/credentials.js +14 -0
  483. package/dist/plugins/uptimerobot/src/index.js +28 -39
  484. package/dist/plugins/urlscanio/src/credentials.js +13 -0
  485. package/dist/plugins/urlscanio/src/index.js +13 -22
  486. package/dist/plugins/vercel/src/credentials.js +19 -0
  487. package/dist/plugins/vercel/src/deployments.js +27 -11
  488. package/dist/plugins/vercel/src/env.js +31 -12
  489. package/dist/plugins/vercel/src/index.js +2 -0
  490. package/dist/plugins/vercel/src/projects.js +6 -3
  491. package/dist/plugins/vercel/src/shared.js +32 -37
  492. package/dist/plugins/vero/src/credentials.js +17 -0
  493. package/dist/plugins/vero/src/index.js +18 -21
  494. package/dist/plugins/vonage/src/credentials.js +17 -0
  495. package/dist/plugins/vonage/src/index.js +14 -18
  496. package/dist/plugins/wekan/src/credentials.js +16 -0
  497. package/dist/plugins/wekan/src/index.js +33 -46
  498. package/dist/plugins/wolt/src/account.js +6 -0
  499. package/dist/plugins/wolt/src/catalog.js +2 -2
  500. package/dist/plugins/wolt/src/credentials.js +64 -0
  501. package/dist/plugins/wolt/src/index.js +8 -3
  502. package/dist/plugins/wolt/src/orders.js +2 -2
  503. package/dist/plugins/wolt/src/public.js +91 -0
  504. package/dist/plugins/wolt/src/shared.js +49 -158
  505. package/dist/plugins/woocommerce/src/credentials.js +16 -0
  506. package/dist/plugins/woocommerce/src/index.js +19 -37
  507. package/dist/plugins/wordpress/src/credentials.js +16 -0
  508. package/dist/plugins/wordpress/src/index.js +23 -42
  509. package/dist/plugins/xai/src/credentials.js +13 -0
  510. package/dist/plugins/xai/src/index.js +32 -31
  511. package/dist/plugins/xero/src/credentials.js +17 -0
  512. package/dist/plugins/xero/src/index.js +19 -36
  513. package/dist/plugins/yourls/src/credentials.js +17 -0
  514. package/dist/plugins/yourls/src/index.js +13 -23
  515. package/dist/plugins/zammad/src/credentials.js +15 -0
  516. package/dist/plugins/zammad/src/index.js +27 -47
  517. package/dist/plugins/zendesk/src/credentials.js +26 -0
  518. package/dist/plugins/zendesk/src/index.js +29 -48
  519. package/dist/plugins/zoho/src/credentials.js +17 -0
  520. package/dist/plugins/zoho/src/index.js +18 -38
  521. package/dist/plugins/zoom/src/credentials.js +19 -0
  522. package/dist/plugins/zoom/src/index.js +15 -30
  523. package/dist/plugins/zulip/src/credentials.js +16 -0
  524. package/dist/plugins/zulip/src/index.js +36 -42
  525. package/dist/sdk.d.ts +8 -0
  526. package/dist/sdk.js +3 -0
  527. package/package.json +2 -1
  528. package/dist/plugins/_shared/authedFetch.js +0 -33
  529. package/dist/plugins/_shared/tokenRefresh.js +0 -41
  530. package/dist/tests/helpers/engine-harness.d.ts +0 -1
  531. package/dist/tests/helpers/engine-harness.js +0 -236
@@ -1,35 +1,23 @@
1
- const BASE_URL = "https://api.intercom.io";
2
- async function apiRequest(token, method, endpoint, body, qs) {
3
- const url = new URL(`${BASE_URL}${endpoint}`);
4
- if (qs) {
5
- for (const [k, v] of Object.entries(qs)) {
6
- if (v !== undefined && v !== null)
7
- url.searchParams.set(k, String(v));
8
- }
9
- }
10
- const opts = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { intercomCredential } from "./credentials.js";
3
+ function api(ctx, method, path, body, qs) {
4
+ return credentialJson(ctx, intercomCredential, "intercom", {
5
+ target: "api",
6
+ path,
11
7
  method,
12
- headers: {
13
- Authorization: `Bearer ${token}`,
14
- "Content-Type": "application/json",
15
- Accept: "application/json",
16
- },
17
- };
18
- if (body &&
19
- Object.keys(body).length > 0 &&
20
- method !== "GET" &&
21
- method !== "DELETE")
22
- opts.body = JSON.stringify(body);
23
- const res = await fetch(url.toString(), opts);
24
- if (!res.ok)
25
- throw new Error(`Intercom API error ${res.status}: ${await res.text()}`);
26
- if (res.status === 204)
27
- return { success: true };
28
- return res.json();
8
+ query: qs,
9
+ ...(body &&
10
+ Object.keys(body).length > 0 &&
11
+ method !== "GET" &&
12
+ method !== "DELETE"
13
+ ? { json: body }
14
+ : {}),
15
+ });
29
16
  }
30
17
  export default function intercom(rl) {
31
18
  rl.setName("intercom");
32
19
  rl.setVersion("0.1.0");
20
+ rl.setCredential(intercomCredential);
33
21
  rl.setConnectionSchema({
34
22
  accessToken: {
35
23
  type: "string",
@@ -38,7 +26,6 @@ export default function intercom(rl) {
38
26
  env: "INTERCOM_ACCESS_TOKEN",
39
27
  },
40
28
  });
41
- const tok = (ctx) => ctx.connection.config.accessToken;
42
29
  // ── Contact (unified leads + users in v2) ───────────
43
30
  rl.registerAction("contact.create", {
44
31
  access: "write",
@@ -72,7 +59,7 @@ export default function intercom(rl) {
72
59
  body.external_id = externalId;
73
60
  if (customAttributes)
74
61
  body.custom_attributes = customAttributes;
75
- return apiRequest(tok(ctx), "POST", "/contacts", body);
62
+ return api(ctx, "POST", "contacts", body);
76
63
  },
77
64
  });
78
65
  rl.registerAction("contact.get", {
@@ -82,7 +69,7 @@ export default function intercom(rl) {
82
69
  contactId: { type: "string", required: true, description: "Contact ID" },
83
70
  },
84
71
  async execute(input, ctx) {
85
- return apiRequest(tok(ctx), "GET", `/contacts/${input.contactId}`);
72
+ return api(ctx, "GET", `contacts/${pathSegment(input.contactId)}`);
86
73
  },
87
74
  });
88
75
  rl.registerAction("contact.list", {
@@ -103,7 +90,7 @@ export default function intercom(rl) {
103
90
  qs.per_page = limit;
104
91
  if (startingAfter)
105
92
  qs.starting_after = startingAfter;
106
- return apiRequest(tok(ctx), "GET", "/contacts", undefined, qs);
93
+ return api(ctx, "GET", "contacts", undefined, qs);
107
94
  },
108
95
  });
109
96
  rl.registerAction("contact.update", {
@@ -131,7 +118,7 @@ export default function intercom(rl) {
131
118
  body.phone = phone;
132
119
  if (customAttributes)
133
120
  body.custom_attributes = customAttributes;
134
- return apiRequest(tok(ctx), "PUT", `/contacts/${contactId}`, body);
121
+ return api(ctx, "PUT", `contacts/${pathSegment(contactId)}`, body);
135
122
  },
136
123
  });
137
124
  rl.registerAction("contact.delete", {
@@ -141,7 +128,7 @@ export default function intercom(rl) {
141
128
  contactId: { type: "string", required: true, description: "Contact ID" },
142
129
  },
143
130
  async execute(input, ctx) {
144
- return apiRequest(tok(ctx), "DELETE", `/contacts/${input.contactId}`);
131
+ return api(ctx, "DELETE", `contacts/${pathSegment(input.contactId)}`);
145
132
  },
146
133
  });
147
134
  rl.registerAction("contact.search", {
@@ -164,7 +151,7 @@ export default function intercom(rl) {
164
151
  const body = { query };
165
152
  if (limit)
166
153
  body.pagination = { per_page: limit };
167
- return apiRequest(tok(ctx), "POST", "/contacts/search", body);
154
+ return api(ctx, "POST", "contacts/search", body);
168
155
  },
169
156
  });
170
157
  // ── Company ─────────────────────────────────────────
@@ -194,7 +181,7 @@ export default function intercom(rl) {
194
181
  body.plan = plan;
195
182
  if (customAttributes)
196
183
  body.custom_attributes = customAttributes;
197
- return apiRequest(tok(ctx), "POST", "/companies", body);
184
+ return api(ctx, "POST", "companies", body);
198
185
  },
199
186
  });
200
187
  rl.registerAction("company.get", {
@@ -208,7 +195,7 @@ export default function intercom(rl) {
208
195
  },
209
196
  },
210
197
  async execute(input, ctx) {
211
- return apiRequest(tok(ctx), "GET", `/companies/${input.companyId}`);
198
+ return api(ctx, "GET", `companies/${pathSegment(input.companyId)}`);
212
199
  },
213
200
  });
214
201
  rl.registerAction("company.list", {
@@ -225,7 +212,7 @@ export default function intercom(rl) {
225
212
  qs.per_page = limit;
226
213
  if (page)
227
214
  qs.page = page;
228
- return apiRequest(tok(ctx), "GET", "/companies", undefined, qs);
215
+ return api(ctx, "GET", "companies", undefined, qs);
229
216
  },
230
217
  });
231
218
  rl.registerAction("company.listUsers", {
@@ -235,7 +222,7 @@ export default function intercom(rl) {
235
222
  companyId: { type: "string", required: true, description: "Company ID" },
236
223
  },
237
224
  async execute(input, ctx) {
238
- return apiRequest(tok(ctx), "GET", `/companies/${input.companyId}/contacts`);
225
+ return api(ctx, "GET", `companies/${pathSegment(input.companyId)}/contacts`);
239
226
  },
240
227
  });
241
228
  }
@@ -0,0 +1,17 @@
1
+ import { httpsBase, staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * An API key, sent as the Api-Key header beneath /api/ of the configured
4
+ * region base (US default, EU override). The base is public config and
5
+ * must be HTTPS.
6
+ */
7
+ export const iterableCredential = staticCredential({
8
+ id: "iterable",
9
+ auth: { kind: "apiKey", header: "Api-Key" },
10
+ local: { secret: "apiKey" },
11
+ targets: (config) => ({
12
+ api: {
13
+ baseUrl: httpsBase(config.region ?? "https://api.iterable.com", "api/"),
14
+ methods: ["GET", "POST", "DELETE"],
15
+ },
16
+ }),
17
+ });
@@ -1,28 +1,24 @@
1
- async function apiRequest(baseUrl, apiKey, 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 = {
10
- method,
11
- headers: { "Api-Key": apiKey, "Content-Type": "application/json" },
12
- };
13
- if (body &&
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { iterableCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body, qs) {
4
+ const json = body &&
14
5
  Object.keys(body).length > 0 &&
15
6
  method !== "GET" &&
16
- method !== "DELETE")
17
- opts.body = JSON.stringify(body);
18
- const res = await fetch(url.toString(), opts);
19
- if (!res.ok)
20
- throw new Error(`Iterable API error ${res.status}: ${await res.text()}`);
21
- return res.json();
7
+ method !== "DELETE"
8
+ ? body
9
+ : undefined;
10
+ return credentialJson(ctx, iterableCredential, "iterable", {
11
+ target: "api",
12
+ path,
13
+ method,
14
+ query: qs,
15
+ ...(json !== undefined ? { json } : {}),
16
+ });
22
17
  }
23
18
  export default function iterable(rl) {
24
19
  rl.setName("iterable");
25
20
  rl.setVersion("0.1.0");
21
+ rl.setCredential(iterableCredential);
26
22
  rl.setConnectionSchema({
27
23
  apiKey: {
28
24
  type: "string",
@@ -38,10 +34,6 @@ export default function iterable(rl) {
38
34
  default: "https://api.iterable.com",
39
35
  },
40
36
  });
41
- const conn = (ctx) => ({
42
- baseUrl: (ctx.connection.config.region ?? "https://api.iterable.com").replace(/\/$/, ""),
43
- apiKey: ctx.connection.config.apiKey,
44
- });
45
37
  // ── Event ───────────────────────────────────────────
46
38
  rl.registerAction("event.track", {
47
39
  access: "write",
@@ -55,10 +47,7 @@ export default function iterable(rl) {
55
47
  },
56
48
  async execute(input, ctx) {
57
49
  const { events } = input;
58
- const { baseUrl, apiKey } = conn(ctx);
59
- return apiRequest(baseUrl, apiKey, "POST", "/events/trackBulk", {
60
- events,
61
- });
50
+ return apiRequest(ctx, "POST", "events/trackBulk", { events });
62
51
  },
63
52
  });
64
53
  // ── User ────────────────────────────────────────────
@@ -89,7 +78,6 @@ export default function iterable(rl) {
89
78
  },
90
79
  async execute(input, ctx) {
91
80
  const { identifier, value, preferUserId, dataFields } = input;
92
- const { baseUrl, apiKey } = conn(ctx);
93
81
  const body = {};
94
82
  if (identifier === "email") {
95
83
  body.email = value;
@@ -101,7 +89,7 @@ export default function iterable(rl) {
101
89
  }
102
90
  if (dataFields)
103
91
  body.dataFields = dataFields;
104
- return apiRequest(baseUrl, apiKey, "POST", "/users/update", body);
92
+ return apiRequest(ctx, "POST", "users/update", body);
105
93
  },
106
94
  });
107
95
  rl.registerAction("user.get", {
@@ -121,12 +109,13 @@ export default function iterable(rl) {
121
109
  },
122
110
  async execute(input, ctx) {
123
111
  const { by, value } = input;
124
- const { baseUrl, apiKey } = conn(ctx);
125
112
  if (by === "email") {
126
- const data = await apiRequest(baseUrl, apiKey, "GET", "/users/getByEmail", undefined, { email: value });
113
+ const data = await apiRequest(ctx, "GET", "users/getByEmail", undefined, {
114
+ email: value,
115
+ });
127
116
  return data.user ?? data;
128
117
  }
129
- return apiRequest(baseUrl, apiKey, "GET", `/users/byUserId/${encodeURIComponent(value)}`);
118
+ return apiRequest(ctx, "GET", `users/byUserId/${pathSegment(value)}`);
130
119
  },
131
120
  });
132
121
  rl.registerAction("user.delete", {
@@ -146,11 +135,10 @@ export default function iterable(rl) {
146
135
  },
147
136
  async execute(input, ctx) {
148
137
  const { by, value } = input;
149
- const { baseUrl, apiKey } = conn(ctx);
150
138
  const endpoint = by === "email"
151
- ? `/users/${encodeURIComponent(value)}`
152
- : `/users/byUserId/${encodeURIComponent(value)}`;
153
- return apiRequest(baseUrl, apiKey, "DELETE", endpoint);
139
+ ? `users/${pathSegment(value)}`
140
+ : `users/byUserId/${pathSegment(value)}`;
141
+ return apiRequest(ctx, "DELETE", endpoint);
154
142
  },
155
143
  });
156
144
  // ── User List ───────────────────────────────────────
@@ -172,9 +160,8 @@ export default function iterable(rl) {
172
160
  },
173
161
  async execute(input, ctx) {
174
162
  const { listId, identifier, values } = input;
175
- const { baseUrl, apiKey } = conn(ctx);
176
163
  const subscribers = values.map((v) => identifier === "email" ? { email: v } : { userId: v });
177
- return apiRequest(baseUrl, apiKey, "POST", "/lists/subscribe", {
164
+ return apiRequest(ctx, "POST", "lists/subscribe", {
178
165
  listId,
179
166
  subscribers,
180
167
  });
@@ -208,14 +195,13 @@ export default function iterable(rl) {
208
195
  },
209
196
  async execute(input, ctx) {
210
197
  const { listId, identifier, values, campaignId, channelUnsubscribe } = input;
211
- const { baseUrl, apiKey } = conn(ctx);
212
198
  const subscribers = values.map((v) => identifier === "email" ? { email: v } : { userId: v });
213
199
  const body = { listId, subscribers };
214
200
  if (campaignId !== undefined)
215
201
  body.campaignId = campaignId;
216
202
  if (channelUnsubscribe !== undefined)
217
203
  body.channelUnsubscribe = channelUnsubscribe;
218
- return apiRequest(baseUrl, apiKey, "POST", "/lists/unsubscribe", body);
204
+ return apiRequest(ctx, "POST", "lists/unsubscribe", body);
219
205
  },
220
206
  });
221
207
  }
@@ -0,0 +1,16 @@
1
+ import { httpsBase, staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * The username and per-user API token, sent as HTTP Basic to the
4
+ * connection's own Jenkins instance.
5
+ */
6
+ export const jenkinsCredential = staticCredential({
7
+ id: "jenkins",
8
+ auth: { kind: "basic" },
9
+ local: { username: "username", password: "apiToken" },
10
+ targets: (config) => ({
11
+ api: {
12
+ baseUrl: httpsBase(config.baseUrl, ""),
13
+ methods: ["GET", "POST"],
14
+ },
15
+ }),
16
+ });
@@ -1,41 +1,27 @@
1
- async function apiRequest(baseUrl, username, apiToken, method, endpoint, body, contentType, qs) {
2
- const url = new URL(`${baseUrl}${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 headers = {
10
- Authorization: `Basic ${btoa(`${username}:${apiToken}`)}`,
11
- };
12
- if (contentType)
13
- headers["Content-Type"] = contentType;
14
- const opts = { method, headers };
15
- if (body && method !== "GET")
16
- opts.body = typeof body === "string" ? body : JSON.stringify(body);
17
- const res = await fetch(url.toString(), opts);
18
- if (!res.ok)
19
- throw new Error(`Jenkins error ${res.status}: ${await res.text()}`);
1
+ import { credentialOk, jsonAnswer, pathSegments, } from "../../_shared/credentials.js";
2
+ import { jenkinsCredential } from "./credentials.js";
3
+ async function jk(ctx, method, endpoint, body, contentType, qs) {
4
+ const res = await credentialOk(ctx, jenkinsCredential, "jenkins", {
5
+ target: "api",
6
+ path: endpoint.replace(/^\//, ""),
7
+ method,
8
+ query: qs,
9
+ ...(contentType ? { headers: { "Content-Type": contentType } } : {}),
10
+ ...(body && method !== "GET"
11
+ ? typeof body === "string"
12
+ ? { body }
13
+ : { json: body }
14
+ : {}),
15
+ });
20
16
  const ct = res.headers.get("content-type") ?? "";
21
17
  if (ct.includes("json"))
22
- return res.json();
18
+ return jsonAnswer(res);
23
19
  return { success: true };
24
20
  }
25
- function getConn(ctx) {
26
- return {
27
- baseUrl: ctx.connection.config.baseUrl.replace(/\/$/, ""),
28
- username: ctx.connection.config.username,
29
- apiToken: ctx.connection.config.apiToken,
30
- };
31
- }
32
- function jk(ctx, method, endpoint, body, ct, qs) {
33
- const { baseUrl, username, apiToken } = getConn(ctx);
34
- return apiRequest(baseUrl, username, apiToken, method, endpoint, body, ct, qs);
35
- }
36
21
  export default function jenkins(rl) {
37
22
  rl.setName("jenkins");
38
23
  rl.setVersion("0.1.0");
24
+ rl.setCredential(jenkinsCredential);
39
25
  rl.setConnectionSchema({
40
26
  baseUrl: {
41
27
  type: "string",
@@ -64,7 +50,7 @@ export default function jenkins(rl) {
64
50
  jobName: {
65
51
  type: "string",
66
52
  required: true,
67
- description: "Job name (URL-encoded if nested)",
53
+ description: "Job name; a job in a folder as folder/job/name",
68
54
  },
69
55
  parameters: {
70
56
  type: "object",
@@ -77,10 +63,10 @@ export default function jenkins(rl) {
77
63
  if (parameters &&
78
64
  Object.keys(parameters).length > 0) {
79
65
  const qs = parameters;
80
- await jk(ctx, "POST", `/job/${jobName}/buildWithParameters`, undefined, undefined, qs);
66
+ await jk(ctx, "POST", `/job/${pathSegments(jobName)}/buildWithParameters`, undefined, undefined, qs);
81
67
  }
82
68
  else {
83
- await jk(ctx, "POST", `/job/${jobName}/build`);
69
+ await jk(ctx, "POST", `/job/${pathSegments(jobName)}/build`);
84
70
  }
85
71
  return { success: true };
86
72
  },
@@ -92,7 +78,7 @@ export default function jenkins(rl) {
92
78
  jobName: { type: "string", required: true, description: "Job name" },
93
79
  },
94
80
  async execute(input, ctx) {
95
- const data = (await jk(ctx, "GET", `/job/${input.jobName}/api/json`, undefined, undefined, { tree: "actions[parameterDefinitions[*]]" }));
81
+ const data = (await jk(ctx, "GET", `/job/${pathSegments(input.jobName)}/api/json`, undefined, undefined, { tree: "actions[parameterDefinitions[*]]" }));
96
82
  return data.actions;
97
83
  },
98
84
  });
@@ -145,7 +131,7 @@ export default function jenkins(rl) {
145
131
  async execute(input, ctx) {
146
132
  const { jobName, limit } = input;
147
133
  const tree = limit ? `builds[*]{0,${limit}}` : "builds[*]";
148
- const data = (await jk(ctx, "GET", `/job/${jobName}/api/json`, undefined, undefined, { tree }));
134
+ const data = (await jk(ctx, "GET", `/job/${pathSegments(jobName)}/api/json`, undefined, undefined, { tree }));
149
135
  return data.builds;
150
136
  },
151
137
  });
@@ -0,0 +1,16 @@
1
+ import { httpsBase, staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * An Atlassian API token with the account email as the Basic pair, on the
4
+ * connection's own Jira site beneath /rest/.
5
+ */
6
+ export const jiraCredential = staticCredential({
7
+ id: "jira",
8
+ auth: { kind: "basic" },
9
+ local: { username: "email", password: "apiToken" },
10
+ targets: (config) => ({
11
+ api: {
12
+ baseUrl: httpsBase(config.domain, "rest/"),
13
+ methods: ["GET", "POST", "PUT", "DELETE"],
14
+ },
15
+ }),
16
+ });
@@ -1,48 +1,23 @@
1
- async function apiRequest(domain, email, apiToken, method, endpoint, body, qs) {
2
- const url = new URL(`${domain}/rest${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 { jiraCredential } from "./credentials.js";
3
+ function jr(ctx, method, path, body, qs) {
4
+ return credentialJson(ctx, jiraCredential, "jira", {
5
+ target: "api",
6
+ path,
10
7
  method,
11
- headers: {
12
- Authorization: `Basic ${btoa(`${email}:${apiToken}`)}`,
13
- "Content-Type": "application/json",
14
- Accept: "application/json",
15
- },
16
- };
17
- if (body &&
18
- Object.keys(body).length > 0 &&
19
- method !== "GET" &&
20
- method !== "DELETE")
21
- opts.body = JSON.stringify(body);
22
- const res = await fetch(url.toString(), opts);
23
- if (!res.ok)
24
- throw new Error(`Jira API error ${res.status}: ${await res.text()}`);
25
- if (res.status === 204)
26
- return { success: true };
27
- const ct = res.headers.get("content-type") ?? "";
28
- if (ct.includes("json"))
29
- return res.json();
30
- return { success: true };
31
- }
32
- function getConn(ctx) {
33
- return {
34
- domain: ctx.connection.config.domain.replace(/\/$/, ""),
35
- email: ctx.connection.config.email,
36
- apiToken: ctx.connection.config.apiToken,
37
- };
38
- }
39
- function jr(ctx, method, endpoint, body, qs) {
40
- const { domain, email, apiToken } = getConn(ctx);
41
- return apiRequest(domain, email, apiToken, method, endpoint, body, qs);
8
+ query: qs,
9
+ ...(body &&
10
+ Object.keys(body).length > 0 &&
11
+ method !== "GET" &&
12
+ method !== "DELETE"
13
+ ? { json: body }
14
+ : {}),
15
+ });
42
16
  }
43
17
  export default function jira(rl) {
44
18
  rl.setName("jira");
45
19
  rl.setVersion("0.1.0");
20
+ rl.setCredential(jiraCredential);
46
21
  rl.setConnectionSchema({
47
22
  domain: {
48
23
  type: "string",
@@ -125,7 +100,7 @@ export default function jira(rl) {
125
100
  fields.parent = { key: parentKey };
126
101
  if (customFields)
127
102
  Object.assign(fields, customFields);
128
- return jr(ctx, "POST", "/api/2/issue", { fields });
103
+ return jr(ctx, "POST", "api/2/issue", { fields });
129
104
  },
130
105
  });
131
106
  rl.registerAction("issue.get", {
@@ -155,7 +130,7 @@ export default function jira(rl) {
155
130
  qs.fields = fields;
156
131
  if (expand)
157
132
  qs.expand = expand;
158
- return jr(ctx, "GET", `/api/2/issue/${issueKey}`, undefined, qs);
133
+ return jr(ctx, "GET", `api/2/issue/${pathSegment(issueKey)}`, undefined, qs);
159
134
  },
160
135
  });
161
136
  rl.registerAction("issue.search", {
@@ -188,8 +163,8 @@ export default function jira(rl) {
188
163
  const { jql, fields, maxResults, nextPageToken, expand } = input;
189
164
  const body = {
190
165
  jql,
191
- // The new endpoint returns only id+key by default; preserve the old
192
- // "all navigable fields" behavior unless the caller specifies.
166
+ // The endpoint returns only id+key by default; ask for all fields
167
+ // unless the caller narrows the list.
193
168
  fields: Array.isArray(fields) ? fields : ["*all"],
194
169
  };
195
170
  if (maxResults)
@@ -198,10 +173,9 @@ export default function jira(rl) {
198
173
  body.nextPageToken = nextPageToken;
199
174
  if (expand)
200
175
  body.expand = expand;
201
- // Atlassian removed POST /rest/api/2|3/search (CHANGE-2046).
202
- // The replacement endpoint is POST /rest/api/3/search/jql with
203
- // cursor-based pagination.
204
- return jr(ctx, "POST", "/api/3/search/jql", body);
176
+ // POST api/3/search/jql is Atlassian's JQL search endpoint
177
+ // (CHANGE-2046), with cursor-based pagination.
178
+ return jr(ctx, "POST", "api/3/search/jql", body);
205
179
  },
206
180
  });
207
181
  rl.registerAction("issue.update", {
@@ -230,7 +204,7 @@ export default function jira(rl) {
230
204
  body.update = update;
231
205
  if (transition)
232
206
  body.transition = transition;
233
- return jr(ctx, "PUT", `/api/2/issue/${issueKey}`, body);
207
+ return jr(ctx, "PUT", `api/2/issue/${pathSegment(issueKey)}`, body);
234
208
  },
235
209
  });
236
210
  rl.registerAction("issue.delete", {
@@ -240,7 +214,7 @@ export default function jira(rl) {
240
214
  issueKey: { type: "string", required: true, description: "Issue key" },
241
215
  },
242
216
  async execute(input, ctx) {
243
- await jr(ctx, "DELETE", `/api/2/issue/${input.issueKey}`);
217
+ await jr(ctx, "DELETE", `api/2/issue/${pathSegment(input.issueKey)}`);
244
218
  return { success: true };
245
219
  },
246
220
  });
@@ -267,7 +241,7 @@ export default function jira(rl) {
267
241
  };
268
242
  if (comment)
269
243
  body.update = { comment: [{ add: { body: comment } }] };
270
- return jr(ctx, "POST", `/api/2/issue/${issueKey}/transitions`, body);
244
+ return jr(ctx, "POST", `api/2/issue/${pathSegment(issueKey)}/transitions`, body);
271
245
  },
272
246
  });
273
247
  rl.registerAction("issue.getTransitions", {
@@ -277,7 +251,7 @@ export default function jira(rl) {
277
251
  issueKey: { type: "string", required: true, description: "Issue key" },
278
252
  },
279
253
  async execute(input, ctx) {
280
- return jr(ctx, "GET", `/api/2/issue/${input.issueKey}/transitions`);
254
+ return jr(ctx, "GET", `api/2/issue/${pathSegment(input.issueKey)}/transitions`);
281
255
  },
282
256
  });
283
257
  rl.registerAction("issue.getChangelog", {
@@ -287,7 +261,7 @@ export default function jira(rl) {
287
261
  issueKey: { type: "string", required: true, description: "Issue key" },
288
262
  },
289
263
  async execute(input, ctx) {
290
- return jr(ctx, "GET", `/api/2/issue/${input.issueKey}/changelog`);
264
+ return jr(ctx, "GET", `api/2/issue/${pathSegment(input.issueKey)}/changelog`);
291
265
  },
292
266
  });
293
267
  rl.registerAction("issue.notify", {
@@ -305,7 +279,7 @@ export default function jira(rl) {
305
279
  },
306
280
  async execute(input, ctx) {
307
281
  const { issueKey, subject, htmlBody, to } = input;
308
- return jr(ctx, "POST", `/api/2/issue/${issueKey}/notify`, {
282
+ return jr(ctx, "POST", `api/2/issue/${pathSegment(issueKey)}/notify`, {
309
283
  subject,
310
284
  htmlBody,
311
285
  to,
@@ -322,7 +296,7 @@ export default function jira(rl) {
322
296
  },
323
297
  async execute(input, ctx) {
324
298
  const { issueKey, body: commentBody } = input;
325
- return jr(ctx, "POST", `/api/2/issue/${issueKey}/comment`, {
299
+ return jr(ctx, "POST", `api/2/issue/${pathSegment(issueKey)}/comment`, {
326
300
  body: commentBody,
327
301
  });
328
302
  },
@@ -336,7 +310,7 @@ export default function jira(rl) {
336
310
  },
337
311
  async execute(input, ctx) {
338
312
  const { issueKey, commentId } = input;
339
- return jr(ctx, "GET", `/api/2/issue/${issueKey}/comment/${commentId}`);
313
+ return jr(ctx, "GET", `api/2/issue/${pathSegment(issueKey)}/comment/${pathSegment(commentId)}`);
340
314
  },
341
315
  });
342
316
  rl.registerAction("issueComment.list", {
@@ -346,7 +320,7 @@ export default function jira(rl) {
346
320
  issueKey: { type: "string", required: true, description: "Issue key" },
347
321
  },
348
322
  async execute(input, ctx) {
349
- return jr(ctx, "GET", `/api/2/issue/${input.issueKey}/comment`);
323
+ return jr(ctx, "GET", `api/2/issue/${pathSegment(input.issueKey)}/comment`);
350
324
  },
351
325
  });
352
326
  rl.registerAction("issueComment.update", {
@@ -359,7 +333,7 @@ export default function jira(rl) {
359
333
  },
360
334
  async execute(input, ctx) {
361
335
  const { issueKey, commentId, body: b } = input;
362
- return jr(ctx, "PUT", `/api/2/issue/${issueKey}/comment/${commentId}`, {
336
+ return jr(ctx, "PUT", `api/2/issue/${pathSegment(issueKey)}/comment/${pathSegment(commentId)}`, {
363
337
  body: b,
364
338
  });
365
339
  },
@@ -373,7 +347,7 @@ export default function jira(rl) {
373
347
  },
374
348
  async execute(input, ctx) {
375
349
  const { issueKey, commentId } = input;
376
- await jr(ctx, "DELETE", `/api/2/issue/${issueKey}/comment/${commentId}`);
350
+ await jr(ctx, "DELETE", `api/2/issue/${pathSegment(issueKey)}/comment/${pathSegment(commentId)}`);
377
351
  return { success: true };
378
352
  },
379
353
  });
@@ -385,7 +359,7 @@ export default function jira(rl) {
385
359
  accountId: { type: "string", required: true, description: "Account ID" },
386
360
  },
387
361
  async execute(input, ctx) {
388
- return jr(ctx, "GET", "/api/2/user", undefined, {
362
+ return jr(ctx, "GET", "api/2/user", undefined, {
389
363
  accountId: input.accountId,
390
364
  });
391
365
  },
@@ -406,7 +380,7 @@ export default function jira(rl) {
406
380
  const qs = { query };
407
381
  if (maxResults)
408
382
  qs.maxResults = maxResults;
409
- return jr(ctx, "GET", "/api/2/user/search", undefined, qs);
383
+ return jr(ctx, "GET", "api/2/user/search", undefined, qs);
410
384
  },
411
385
  });
412
386
  }