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,37 +1,19 @@
1
- function getConn(ctx) {
2
- const c = ctx.connection.config;
3
- const sandbox = c.sandbox;
4
- const base = sandbox
5
- ? "https://sandbox-vendors.paddle.com/api"
6
- : "https://vendors.paddle.com/api";
7
- return {
8
- base,
9
- vendorId: c.vendorId,
10
- vendorAuthCode: c.vendorAuthCode,
11
- };
12
- }
13
- async function apiRequest(conn, endpoint, body = {}) {
14
- body.vendor_id = conn.vendorId;
15
- body.vendor_auth_code = conn.vendorAuthCode;
16
- const res = await fetch(`${conn.base}${endpoint}`, {
17
- method: "POST",
18
- headers: { "Content-Type": "application/json" },
19
- body: JSON.stringify(body),
20
- });
21
- if (!res.ok)
22
- throw new Error(`Paddle API error ${res.status}: ${await res.text()}`);
23
- const json = (await res.json());
1
+ import { credentialJson } from "../../_shared/credentials.js";
2
+ import { paddleCredential } from "./credentials.js";
3
+ /** A Paddle JSON call; an answer without success is a failure. */
4
+ async function apiRequest(ctx, endpoint, body = {}) {
5
+ const json = await credentialJson(ctx, paddleCredential, "paddle", { target: "api", path: endpoint, method: "POST", json: body });
24
6
  if (!json.success)
25
7
  throw new Error(`Paddle API error: ${JSON.stringify(json.error ?? json)}`);
26
8
  return json.response;
27
9
  }
28
- async function paginate(conn, endpoint, body = {}) {
10
+ async function paginate(ctx, endpoint, body = {}) {
29
11
  const all = [];
30
12
  body.results_per_page = 200;
31
13
  body.page = 1;
32
14
  let items;
33
15
  do {
34
- const resp = await apiRequest(conn, endpoint, { ...body });
16
+ const resp = await apiRequest(ctx, endpoint, { ...body });
35
17
  items = Array.isArray(resp) ? resp : [];
36
18
  all.push(...items);
37
19
  body.page = body.page + 1;
@@ -41,6 +23,7 @@ async function paginate(conn, endpoint, body = {}) {
41
23
  export default function paddle(rl) {
42
24
  rl.setName("paddle");
43
25
  rl.setVersion("0.1.0");
26
+ rl.setCredential(paddleCredential);
44
27
  rl.setConnectionSchema({
45
28
  vendorId: {
46
29
  type: "string",
@@ -126,7 +109,7 @@ export default function paddle(rl) {
126
109
  body.num_coupons = p.numberOfCoupons;
127
110
  if (p.description)
128
111
  body.description = p.description;
129
- const resp = (await apiRequest(getConn(ctx), "/2.1/product/create_coupon", body));
112
+ const resp = (await apiRequest(ctx, "2.1/product/create_coupon", body));
130
113
  return resp.coupon_codes;
131
114
  },
132
115
  });
@@ -139,7 +122,9 @@ export default function paddle(rl) {
139
122
  },
140
123
  async execute(input, ctx) {
141
124
  const p = (input ?? {});
142
- const resp = (await apiRequest(getConn(ctx), "/2.0/product/list_coupons", { product_id: p.productId }));
125
+ const resp = (await apiRequest(ctx, "2.0/product/list_coupons", {
126
+ product_id: p.productId,
127
+ }));
143
128
  if (p.limit)
144
129
  return resp.slice(0, p.limit);
145
130
  return resp;
@@ -191,7 +176,7 @@ export default function paddle(rl) {
191
176
  body.product_ids = p.productIds;
192
177
  if (p.recurring !== undefined)
193
178
  body.recurring = p.recurring ? 1 : 0;
194
- return apiRequest(getConn(ctx), "/2.1/product/update_coupon", body);
179
+ return apiRequest(ctx, "2.1/product/update_coupon", body);
195
180
  },
196
181
  });
197
182
  // ── Payment ─────────────────────────────────────────
@@ -222,7 +207,7 @@ export default function paddle(rl) {
222
207
  body.from = p.from;
223
208
  if (p.to)
224
209
  body.to = p.to;
225
- const resp = (await apiRequest(getConn(ctx), "/2.0/subscription/payments", body));
210
+ const resp = (await apiRequest(ctx, "2.0/subscription/payments", body));
226
211
  if (p.limit)
227
212
  return resp.slice(0, p.limit);
228
213
  return resp;
@@ -241,7 +226,7 @@ export default function paddle(rl) {
241
226
  },
242
227
  async execute(input, ctx) {
243
228
  const { paymentId, date } = input;
244
- return apiRequest(getConn(ctx), "/2.0/subscription/payments_reschedule", {
229
+ return apiRequest(ctx, "2.0/subscription/payments_reschedule", {
245
230
  payment_id: paymentId,
246
231
  date,
247
232
  });
@@ -254,7 +239,7 @@ export default function paddle(rl) {
254
239
  inputSchema: { planId: { type: "string", required: true } },
255
240
  async execute(input, ctx) {
256
241
  const { planId } = input;
257
- return apiRequest(getConn(ctx), "/2.0/subscription/plans", {
242
+ return apiRequest(ctx, "2.0/subscription/plans", {
258
243
  plan: planId,
259
244
  });
260
245
  },
@@ -264,7 +249,7 @@ export default function paddle(rl) {
264
249
  description: "List all subscription plans",
265
250
  inputSchema: { limit: { type: "number", required: false } },
266
251
  async execute(input, ctx) {
267
- const resp = (await apiRequest(getConn(ctx), "/2.0/subscription/plans"));
252
+ const resp = (await apiRequest(ctx, "2.0/subscription/plans"));
268
253
  const limit = input?.limit;
269
254
  if (limit)
270
255
  return resp.slice(0, limit);
@@ -277,7 +262,7 @@ export default function paddle(rl) {
277
262
  description: "List all products",
278
263
  inputSchema: { limit: { type: "number", required: false } },
279
264
  async execute(input, ctx) {
280
- const resp = (await apiRequest(getConn(ctx), "/2.0/product/get_products"));
265
+ const resp = (await apiRequest(ctx, "2.0/product/get_products"));
281
266
  const products = (resp.products ?? resp);
282
267
  const limit = input?.limit;
283
268
  if (limit)
@@ -301,7 +286,6 @@ export default function paddle(rl) {
301
286
  },
302
287
  async execute(input, ctx) {
303
288
  const p = (input ?? {});
304
- const conn = getConn(ctx);
305
289
  const body = {};
306
290
  if (p.state)
307
291
  body.state = p.state;
@@ -311,9 +295,9 @@ export default function paddle(rl) {
311
295
  body.subscription_id = p.subscriptionId;
312
296
  if (p.limit) {
313
297
  body.results_per_page = p.limit;
314
- return apiRequest(conn, "/2.0/subscription/users", body);
298
+ return apiRequest(ctx, "2.0/subscription/users", body);
315
299
  }
316
- return paginate(conn, "/2.0/subscription/users", body);
300
+ return paginate(ctx, "2.0/subscription/users", body);
317
301
  },
318
302
  });
319
303
  }
@@ -0,0 +1,24 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * A REST API token, sent as `Authorization: Token token={key}` to
4
+ * PagerDuty's one API origin. From is the caller's attribution email on
5
+ * incident writes.
6
+ */
7
+ export const pagerdutyCredential = staticCredential({
8
+ id: "pagerduty",
9
+ auth: { kind: "apiKey", header: "Authorization", prefix: "Token token=" },
10
+ local: { secret: "apiToken" },
11
+ targets: {
12
+ api: {
13
+ baseUrl: "https://api.pagerduty.com/",
14
+ methods: ["GET", "POST", "PUT"],
15
+ allowedHeaders: ["From"],
16
+ },
17
+ },
18
+ probe: {
19
+ target: "api",
20
+ path: "abilities",
21
+ method: "GET",
22
+ acceptedStatuses: [200],
23
+ },
24
+ });
@@ -1,37 +1,25 @@
1
- const BASE = "https://api.pagerduty.com";
2
- function getToken(ctx) {
3
- return ctx.connection.config.apiToken;
4
- }
5
- async function apiRequest(token, method, endpoint, body, qs, extraHeaders) {
6
- const url = new URL(`${BASE}${endpoint}`);
7
- if (qs) {
8
- for (const [k, v] of Object.entries(qs)) {
9
- if (v !== undefined && v !== null)
10
- url.searchParams.set(k, String(v));
11
- }
12
- }
13
- const headers = {
14
- Authorization: `Token token=${token}`,
15
- Accept: "application/vnd.pagerduty+json;version=2",
16
- "Content-Type": "application/json",
17
- ...extraHeaders,
18
- };
19
- const init = { method, headers };
20
- if (body && Object.keys(body).length > 0)
21
- init.body = JSON.stringify(body);
22
- const res = await fetch(url.toString(), init);
23
- if (!res.ok)
24
- throw new Error(`PagerDuty API error ${res.status}: ${await res.text()}`);
25
- const text = await res.text();
26
- return text ? JSON.parse(text) : {};
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { pagerdutyCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body, qs, extraHeaders) {
4
+ return credentialJson(ctx, pagerdutyCredential, "pagerduty", {
5
+ target: "api",
6
+ path,
7
+ method,
8
+ query: qs,
9
+ headers: {
10
+ Accept: "application/vnd.pagerduty+json;version=2",
11
+ ...extraHeaders,
12
+ },
13
+ ...(body && Object.keys(body).length > 0 ? { json: body } : {}),
14
+ });
27
15
  }
28
- async function paginate(token, endpoint, propertyName, qs = {}) {
16
+ async function paginate(ctx, path, propertyName, qs = {}) {
29
17
  const all = [];
30
18
  qs.limit = 100;
31
19
  qs.offset = 0;
32
20
  let hasMore = true;
33
21
  while (hasMore) {
34
- const data = (await apiRequest(token, "GET", endpoint, undefined, qs));
22
+ const data = (await apiRequest(ctx, "GET", path, undefined, qs));
35
23
  const items = (data[propertyName] ?? []);
36
24
  all.push(...items);
37
25
  hasMore = data.more === true;
@@ -42,6 +30,7 @@ async function paginate(token, endpoint, propertyName, qs = {}) {
42
30
  export default function pagerduty(rl) {
43
31
  rl.setName("pagerduty");
44
32
  rl.setVersion("0.1.0");
33
+ rl.setCredential(pagerdutyCredential);
45
34
  rl.setConnectionSchema({
46
35
  apiToken: {
47
36
  type: "string",
@@ -92,7 +81,7 @@ export default function pagerduty(rl) {
92
81
  };
93
82
  if (p.incidentKey)
94
83
  incident.incident_key = p.incidentKey;
95
- const data = (await apiRequest(getToken(ctx), "POST", "/incidents", { incident }, undefined, { From: p.from }));
84
+ const data = (await apiRequest(ctx, "POST", "incidents", { incident }, undefined, { From: p.from }));
96
85
  return data.incident;
97
86
  },
98
87
  });
@@ -102,7 +91,7 @@ export default function pagerduty(rl) {
102
91
  inputSchema: { incidentId: { type: "string", required: true } },
103
92
  async execute(input, ctx) {
104
93
  const { incidentId } = input;
105
- const data = (await apiRequest(getToken(ctx), "GET", `/incidents/${incidentId}`));
94
+ const data = (await apiRequest(ctx, "GET", `incidents/${pathSegment(incidentId)}`));
106
95
  return data.incident;
107
96
  },
108
97
  });
@@ -127,10 +116,10 @@ export default function pagerduty(rl) {
127
116
  qs.sort_by = p.sortBy;
128
117
  if (p.limit) {
129
118
  qs.limit = p.limit;
130
- const d = (await apiRequest(getToken(ctx), "GET", "/incidents", undefined, qs));
119
+ const d = (await apiRequest(ctx, "GET", "incidents", undefined, qs));
131
120
  return d.incidents;
132
121
  }
133
- return paginate(getToken(ctx), "/incidents", "incidents", qs);
122
+ return paginate(ctx, "incidents", "incidents", qs);
134
123
  },
135
124
  });
136
125
  rl.registerAction("incident.update", {
@@ -175,7 +164,7 @@ export default function pagerduty(rl) {
175
164
  id: p.escalationPolicyId,
176
165
  type: "escalation_policy_reference",
177
166
  };
178
- const data = (await apiRequest(getToken(ctx), "PUT", `/incidents/${p.incidentId}`, { incident }, undefined, { From: p.from }));
167
+ const data = (await apiRequest(ctx, "PUT", `incidents/${pathSegment(p.incidentId)}`, { incident }, undefined, { From: p.from }));
179
168
  return data.incident;
180
169
  },
181
170
  });
@@ -194,7 +183,7 @@ export default function pagerduty(rl) {
194
183
  },
195
184
  async execute(input, ctx) {
196
185
  const { incidentId, from, content } = input;
197
- return apiRequest(getToken(ctx), "POST", `/incidents/${incidentId}/notes`, { note: { content } }, undefined, { From: from });
186
+ return apiRequest(ctx, "POST", `incidents/${pathSegment(incidentId)}/notes`, { note: { content } }, undefined, { From: from });
198
187
  },
199
188
  });
200
189
  rl.registerAction("incidentNote.list", {
@@ -209,7 +198,7 @@ export default function pagerduty(rl) {
209
198
  const qs = {};
210
199
  if (p.limit)
211
200
  qs.limit = p.limit;
212
- const data = (await apiRequest(getToken(ctx), "GET", `/incidents/${p.incidentId}/notes`, undefined, qs));
201
+ const data = (await apiRequest(ctx, "GET", `incidents/${pathSegment(p.incidentId)}/notes`, undefined, qs));
213
202
  return data.notes;
214
203
  },
215
204
  });
@@ -220,7 +209,7 @@ export default function pagerduty(rl) {
220
209
  inputSchema: { logEntryId: { type: "string", required: true } },
221
210
  async execute(input, ctx) {
222
211
  const { logEntryId } = input;
223
- const data = (await apiRequest(getToken(ctx), "GET", `/log_entries/${logEntryId}`));
212
+ const data = (await apiRequest(ctx, "GET", `log_entries/${pathSegment(logEntryId)}`));
224
213
  return data.log_entry;
225
214
  },
226
215
  });
@@ -231,10 +220,12 @@ export default function pagerduty(rl) {
231
220
  async execute(input, ctx) {
232
221
  const p = (input ?? {});
233
222
  if (p.limit) {
234
- const data = (await apiRequest(getToken(ctx), "GET", "/log_entries", undefined, { limit: p.limit }));
223
+ const data = (await apiRequest(ctx, "GET", "log_entries", undefined, {
224
+ limit: p.limit,
225
+ }));
235
226
  return data.log_entries;
236
227
  }
237
- return paginate(getToken(ctx), "/log_entries", "log_entries");
228
+ return paginate(ctx, "log_entries", "log_entries");
238
229
  },
239
230
  });
240
231
  // ── User ────────────────────────────────────────────
@@ -244,7 +235,7 @@ export default function pagerduty(rl) {
244
235
  inputSchema: { userId: { type: "string", required: true } },
245
236
  async execute(input, ctx) {
246
237
  const { userId } = input;
247
- const data = (await apiRequest(getToken(ctx), "GET", `/users/${userId}`));
238
+ const data = (await apiRequest(ctx, "GET", `users/${pathSegment(userId)}`));
248
239
  return data.user;
249
240
  },
250
241
  });
@@ -0,0 +1,18 @@
1
+ import { httpsBase, staticCredential } from "../../_shared/credentials.js";
2
+ export const DEFAULT_BASE = "https://api.parallel.ai";
3
+ /**
4
+ * An API key, sent as the x-api-key header to the configured Parallel.ai
5
+ * API base (api.parallel.ai unless overridden). The base URL is public
6
+ * config and must be HTTPS.
7
+ */
8
+ export const parallelCredential = staticCredential({
9
+ id: "parallel",
10
+ auth: { kind: "apiKey", header: "x-api-key" },
11
+ local: { secret: "apiKey" },
12
+ targets: (config) => ({
13
+ api: {
14
+ baseUrl: httpsBase(config.baseUrl ?? DEFAULT_BASE, "v1beta/"),
15
+ methods: ["POST"],
16
+ },
17
+ }),
18
+ });
@@ -1,8 +1,10 @@
1
+ import { credentialJson } from "../../_shared/credentials.js";
2
+ import { DEFAULT_BASE, parallelCredential } from "./credentials.js";
1
3
  const NAME = "parallel";
2
- const DEFAULT_BASE = "https://api.parallel.ai";
3
4
  export default function parallel(rl) {
4
5
  rl.setName(NAME);
5
6
  rl.setVersion("0.1.0");
7
+ rl.setCredential(parallelCredential);
6
8
  rl.setConnectionSchema({
7
9
  apiKey: {
8
10
  type: "string",
@@ -30,7 +32,7 @@ export default function parallel(rl) {
30
32
  search_queries: {
31
33
  type: "array",
32
34
  required: false,
33
- description: "Optional explicit query strings to run (e.g. [\"x vacancy rate 2026\"]). Provide objective and/or this.",
35
+ description: 'Optional explicit query strings to run (e.g. ["x vacancy rate 2026"]). Provide objective and/or this.',
34
36
  },
35
37
  processor: {
36
38
  type: "string",
@@ -51,39 +53,31 @@ export default function parallel(rl) {
51
53
  },
52
54
  },
53
55
  async execute(input, ctx) {
54
- const cfg = (ctx.connection.config ?? {});
55
- const apiKey = cfg.apiKey;
56
- if (!apiKey)
57
- throw new Error("Missing PARALLEL_API_KEY. Configure it before using the parallel plugin.");
58
- const baseUrl = (cfg.baseUrl || DEFAULT_BASE).replace(/\/+$/, "");
59
- const objective = typeof input.objective === "string" ? input.objective.trim() : "";
60
- const queries = Array.isArray(input.search_queries)
61
- ? input.search_queries.map((q) => String(q)).filter((q) => q.trim())
56
+ const p = (input ?? {});
57
+ const objective = typeof p.objective === "string" ? p.objective.trim() : "";
58
+ const queries = Array.isArray(p.search_queries)
59
+ ? p.search_queries.map((q) => String(q)).filter((q) => q.trim())
62
60
  : [];
63
61
  if (!objective && !queries.length) {
64
62
  throw new Error("Provide objective and/or search_queries");
65
63
  }
66
64
  const body = {
67
- processor: String(input.processor || "base"),
68
- max_results: Number(input.max_results) > 0 ? Math.floor(Number(input.max_results)) : 5,
65
+ processor: String(p.processor || "base"),
66
+ max_results: Number(p.max_results) > 0 ? Math.floor(Number(p.max_results)) : 5,
69
67
  };
70
68
  if (objective)
71
69
  body.objective = objective;
72
70
  if (queries.length)
73
71
  body.search_queries = queries;
74
- if (Number(input.max_chars_per_result) > 0) {
75
- body.max_chars_per_result = Math.floor(Number(input.max_chars_per_result));
72
+ if (Number(p.max_chars_per_result) > 0) {
73
+ body.max_chars_per_result = Math.floor(Number(p.max_chars_per_result));
76
74
  }
77
- const res = await fetch(`${baseUrl}/v1beta/search`, {
75
+ const data = await credentialJson(ctx, parallelCredential, NAME, {
76
+ target: "api",
77
+ path: "search",
78
78
  method: "POST",
79
- headers: { "x-api-key": apiKey, "Content-Type": "application/json" },
80
- body: JSON.stringify(body),
79
+ json: body,
81
80
  });
82
- const text = await res.text();
83
- if (!res.ok) {
84
- throw new Error(`Parallel search -> ${res.status}: ${text.slice(0, 300)}`);
85
- }
86
- const data = text ? JSON.parse(text) : {};
87
81
  const results = (data.results ?? []).map((r) => ({
88
82
  url: r.url,
89
83
  title: r.title,
@@ -0,0 +1,44 @@
1
+ import { configChoice, grantSchema } from "../../_shared/credentials.js";
2
+ /**
3
+ * A client-credentials OAuth grant against the environment's own token
4
+ * endpoint. The env config field picks live or sandbox (the default);
5
+ * both the token request and every API call stay on that one host.
6
+ */
7
+ export const paypalCredential = (config) => {
8
+ const base = configChoice(config.env, ["live", "sandbox"], "sandbox") === "live"
9
+ ? "https://api-m.paypal.com"
10
+ : "https://api-m.sandbox.paypal.com";
11
+ return {
12
+ type: {
13
+ id: "paypal",
14
+ methods: {
15
+ oauth2: {
16
+ schema: grantSchema,
17
+ authentication: {
18
+ kind: "oauth2",
19
+ field: "grant",
20
+ renewal: "clientCredentials",
21
+ definition: {
22
+ id: "paypal.oauth2",
23
+ provider: "paypal",
24
+ clientCredentials: {
25
+ url: `${base}/v1/oauth2/token`,
26
+ clientAuthentication: "client_secret_basic",
27
+ },
28
+ },
29
+ },
30
+ targets: {
31
+ api: { baseUrl: `${base}/v1/`, methods: ["GET", "POST"] },
32
+ },
33
+ },
34
+ },
35
+ },
36
+ method: "oauth2",
37
+ application: {
38
+ clientId: config.clientId,
39
+ ...(typeof config.secret === "string"
40
+ ? { clientSecret: config.secret }
41
+ : {}),
42
+ },
43
+ };
44
+ };
@@ -1,44 +1,18 @@
1
- import { coordinatedAccessToken, requestToken, } from "../../_shared/tokenRefresh.js";
2
- function getConn(c) {
3
- const env = c.env ?? "sandbox";
4
- const base = env === "live"
5
- ? "https://api-m.paypal.com"
6
- : "https://api-m.sandbox.paypal.com";
7
- return { base, clientId: c.clientId, secret: c.secret };
8
- }
9
- async function apiRequest(ctx, method, endpoint, body, qs) {
10
- const token = await coordinatedAccessToken(ctx, (current) => {
11
- const conn = getConn(current);
12
- return requestToken({
13
- url: `${conn.base}/v1/oauth2/token`,
14
- clientAuthentication: "client_secret_basic",
15
- }, { grant_type: "client_credentials" }, { clientId: conn.clientId, clientSecret: conn.secret });
16
- });
17
- const url = new URL(`${getConn(ctx.connection.config).base}/v1${endpoint}`);
18
- if (qs) {
19
- for (const [k, v] of Object.entries(qs)) {
20
- if (v !== undefined && v !== null)
21
- url.searchParams.set(k, String(v));
22
- }
23
- }
24
- const init = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { paypalCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body, qs) {
4
+ return credentialJson(ctx, paypalCredential, "paypal", {
5
+ target: "api",
6
+ path,
25
7
  method,
26
- headers: {
27
- Authorization: `Bearer ${token}`,
28
- "Content-Type": "application/json",
29
- },
30
- };
31
- if (body !== undefined)
32
- init.body = JSON.stringify(body);
33
- const res = await fetch(url.toString(), init);
34
- if (!res.ok)
35
- throw new Error(`PayPal API error ${res.status}: ${await res.text()}`);
36
- const text = await res.text();
37
- return text ? JSON.parse(text) : {};
8
+ query: qs,
9
+ ...(body !== undefined ? { json: body } : {}),
10
+ });
38
11
  }
39
12
  export default function paypal(rl) {
40
13
  rl.setName("paypal");
41
14
  rl.setVersion("0.1.0");
15
+ rl.setCredential(paypalCredential);
42
16
  rl.setConnectionSchema({
43
17
  clientId: {
44
18
  type: "string",
@@ -88,7 +62,7 @@ export default function paypal(rl) {
88
62
  header.email_message = p.emailMessage;
89
63
  if (p.note)
90
64
  header.note = p.note;
91
- return apiRequest(ctx, "POST", "/payments/payouts", {
65
+ return apiRequest(ctx, "POST", "payments/payouts", {
92
66
  sender_batch_header: header,
93
67
  items: p.items,
94
68
  });
@@ -110,7 +84,7 @@ export default function paypal(rl) {
110
84
  const qs = {};
111
85
  if (p.limit)
112
86
  qs.page_size = p.limit;
113
- const data = (await apiRequest(ctx, "GET", `/payments/payouts/${p.payoutBatchId}`, undefined, qs));
87
+ const data = (await apiRequest(ctx, "GET", `payments/payouts/${pathSegment(p.payoutBatchId)}`, undefined, qs));
114
88
  return data.items;
115
89
  },
116
90
  });
@@ -120,7 +94,7 @@ export default function paypal(rl) {
120
94
  inputSchema: { payoutItemId: { type: "string", required: true } },
121
95
  async execute(input, ctx) {
122
96
  const { payoutItemId } = input;
123
- return apiRequest(ctx, "GET", `/payments/payouts-item/${payoutItemId}`);
97
+ return apiRequest(ctx, "GET", `payments/payouts-item/${pathSegment(payoutItemId)}`);
124
98
  },
125
99
  });
126
100
  rl.registerAction("payoutItem.cancel", {
@@ -129,7 +103,7 @@ export default function paypal(rl) {
129
103
  inputSchema: { payoutItemId: { type: "string", required: true } },
130
104
  async execute(input, ctx) {
131
105
  const { payoutItemId } = input;
132
- return apiRequest(ctx, "POST", `/payments/payouts-item/${payoutItemId}/cancel`);
106
+ return apiRequest(ctx, "POST", `payments/payouts-item/${pathSegment(payoutItemId)}/cancel`);
133
107
  },
134
108
  });
135
109
  }
@@ -0,0 +1,16 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * An API key, sent as the X-API-Key header to Peekalink's origin. The
4
+ * preview endpoint is the bare origin itself, so the target base is /.
5
+ */
6
+ export const peekalinkCredential = staticCredential({
7
+ id: "peekalink",
8
+ auth: { kind: "apiKey", header: "X-API-Key" },
9
+ local: { secret: "apiKey" },
10
+ targets: {
11
+ api: {
12
+ baseUrl: "https://api.peekalink.io/",
13
+ methods: ["POST"],
14
+ },
15
+ },
16
+ });
@@ -1,17 +1,17 @@
1
- const BASE = "https://api.peekalink.io";
2
- async function apiRequest(apiKey, endpoint, body) {
3
- const res = await fetch(`${BASE}${endpoint}`, {
1
+ import { credentialJson } from "../../_shared/credentials.js";
2
+ import { peekalinkCredential } from "./credentials.js";
3
+ function apiRequest(ctx, path, body) {
4
+ return credentialJson(ctx, peekalinkCredential, "peekalink", {
5
+ target: "api",
6
+ path,
4
7
  method: "POST",
5
- headers: { "X-API-Key": apiKey, "Content-Type": "application/json" },
6
- body: JSON.stringify(body),
8
+ json: body,
7
9
  });
8
- if (!res.ok)
9
- throw new Error(`Peekalink error ${res.status}: ${await res.text()}`);
10
- return res.json();
11
10
  }
12
11
  export default function peekalink(rl) {
13
12
  rl.setName("peekalink");
14
13
  rl.setVersion("0.1.0");
14
+ rl.setCredential(peekalinkCredential);
15
15
  rl.setConnectionSchema({
16
16
  apiKey: {
17
17
  type: "string",
@@ -20,7 +20,6 @@ export default function peekalink(rl) {
20
20
  env: "PEEKALINK_API_KEY",
21
21
  },
22
22
  });
23
- const key = (ctx) => ctx.connection.config.apiKey;
24
23
  rl.registerAction("link.preview", {
25
24
  access: "read",
26
25
  description: "Get a rich preview for a URL",
@@ -29,7 +28,7 @@ export default function peekalink(rl) {
29
28
  },
30
29
  async execute(input, ctx) {
31
30
  const { url } = input;
32
- return apiRequest(key(ctx), "", { link: url });
31
+ return apiRequest(ctx, "", { link: url });
33
32
  },
34
33
  });
35
34
  rl.registerAction("link.isAvailable", {
@@ -40,7 +39,7 @@ export default function peekalink(rl) {
40
39
  },
41
40
  async execute(input, ctx) {
42
41
  const { url } = input;
43
- return apiRequest(key(ctx), "/is-available/", { link: url });
42
+ return apiRequest(ctx, "is-available/", { link: url });
44
43
  },
45
44
  });
46
45
  }
@@ -0,0 +1,19 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** An API key, sent as the X-Phantombuster-Key header to the v2 API. */
3
+ export const phantombusterCredential = staticCredential({
4
+ id: "phantombuster",
5
+ auth: { kind: "apiKey", header: "X-Phantombuster-Key" },
6
+ local: { secret: "apiKey" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://api.phantombuster.com/api/v2/",
10
+ methods: ["GET", "POST"],
11
+ },
12
+ },
13
+ probe: {
14
+ target: "api",
15
+ path: "agents/fetch-all",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });