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,37 +1,18 @@
1
- function buildBaseUrl(accountName) {
2
- return `https://${accountName}.chargebee.com/api/v2`;
3
- }
4
- async function apiRequest(accountName, apiKey, method, endpoint, qs) {
5
- const url = new URL(`${buildBaseUrl(accountName)}/${endpoint}`);
6
- if (qs) {
7
- for (const [k, v] of Object.entries(qs)) {
8
- if (v !== undefined && v !== null)
9
- url.searchParams.set(k, String(v));
10
- }
11
- }
12
- const opts = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { chargebeeCredential } from "./credentials.js";
3
+ /** Chargebee takes write parameters as query-string params, never a body. */
4
+ function apiRequest(ctx, method, path, qs) {
5
+ return credentialJson(ctx, chargebeeCredential, "chargebee", {
6
+ target: "api",
7
+ path,
13
8
  method,
14
- headers: {
15
- Authorization: `Basic ${btoa(`${apiKey}:`)}`,
16
- "Content-Type": "application/x-www-form-urlencoded",
17
- },
18
- };
19
- const res = await fetch(url.toString(), opts);
20
- if (!res.ok) {
21
- const text = await res.text();
22
- throw new Error(`Chargebee API error ${res.status}: ${text}`);
23
- }
24
- return res.json();
25
- }
26
- function getConn(ctx) {
27
- return {
28
- accountName: ctx.connection.config.accountName,
29
- apiKey: ctx.connection.config.apiKey,
30
- };
9
+ query: qs,
10
+ });
31
11
  }
32
12
  export default function chargebee(rl) {
33
13
  rl.setName("chargebee");
34
14
  rl.setVersion("0.1.0");
15
+ rl.setCredential(chargebeeCredential);
35
16
  rl.setConnectionSchema({
36
17
  accountName: {
37
18
  type: "string",
@@ -67,10 +48,8 @@ export default function chargebee(rl) {
67
48
  company: { type: "string", required: false, description: "Company" },
68
49
  },
69
50
  async execute(input, ctx) {
70
- const { accountName, apiKey } = getConn(ctx);
71
51
  const params = (input ?? {});
72
- // Chargebee uses form-encoded POST params via query string
73
- return apiRequest(accountName, apiKey, "POST", "customers", params);
52
+ return apiRequest(ctx, "POST", "customers", params);
74
53
  },
75
54
  });
76
55
  // ── Invoice ─────────────────────────────────────────
@@ -83,20 +62,14 @@ export default function chargebee(rl) {
83
62
  required: false,
84
63
  description: "Max results (default: 10, max: 100)",
85
64
  },
86
- sortBy: {
87
- type: "string",
88
- required: false,
89
- description: "Sort field (default: date desc)",
90
- },
91
65
  },
92
66
  async execute(input, ctx) {
93
- const { accountName, apiKey } = getConn(ctx);
94
67
  const { limit = 10 } = (input ?? {});
95
68
  const qs = {
96
69
  limit,
97
70
  "sort_by[desc]": "date",
98
71
  };
99
- const data = (await apiRequest(accountName, apiKey, "GET", "invoices", qs));
72
+ const data = (await apiRequest(ctx, "GET", "invoices", qs));
100
73
  const list = data.list ?? [];
101
74
  return list.map((item) => item.invoice);
102
75
  },
@@ -109,8 +82,7 @@ export default function chargebee(rl) {
109
82
  },
110
83
  async execute(input, ctx) {
111
84
  const { invoiceId } = input;
112
- const { accountName, apiKey } = getConn(ctx);
113
- const data = (await apiRequest(accountName, apiKey, "POST", `invoices/${invoiceId.trim()}/pdf`));
85
+ const data = (await apiRequest(ctx, "POST", `invoices/${pathSegment(invoiceId.trim())}/pdf`));
114
86
  const download = data.download;
115
87
  return { pdfUrl: download?.download_url };
116
88
  },
@@ -133,11 +105,10 @@ export default function chargebee(rl) {
133
105
  },
134
106
  async execute(input, ctx) {
135
107
  const { subscriptionId, endOfTerm } = input;
136
- const { accountName, apiKey } = getConn(ctx);
137
108
  const qs = {};
138
109
  if (endOfTerm)
139
110
  qs.end_of_term = "true";
140
- return apiRequest(accountName, apiKey, "POST", `subscriptions/${subscriptionId.trim()}/cancel`, qs);
111
+ return apiRequest(ctx, "POST", `subscriptions/${pathSegment(subscriptionId.trim())}/cancel`, qs);
141
112
  },
142
113
  });
143
114
  rl.registerAction("subscription.delete", {
@@ -152,8 +123,7 @@ export default function chargebee(rl) {
152
123
  },
153
124
  async execute(input, ctx) {
154
125
  const { subscriptionId } = input;
155
- const { accountName, apiKey } = getConn(ctx);
156
- return apiRequest(accountName, apiKey, "POST", `subscriptions/${subscriptionId.trim()}/delete`);
126
+ return apiRequest(ctx, "POST", `subscriptions/${pathSegment(subscriptionId.trim())}/delete`);
157
127
  },
158
128
  });
159
129
  }
@@ -0,0 +1,19 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** A personal API token, sent in the Circle-Token header to CircleCI's API. */
3
+ export const circleciCredential = staticCredential({
4
+ id: "circleci",
5
+ auth: { kind: "apiKey", header: "Circle-Token" },
6
+ local: { secret: "apiKey" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://circleci.com/api/v2/",
10
+ methods: ["GET", "POST"],
11
+ },
12
+ },
13
+ probe: {
14
+ target: "api",
15
+ path: "me",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });
@@ -1,35 +1,21 @@
1
- const BASE_URL = "https://circleci.com/api/v2";
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, pathSegments, } from "../../_shared/credentials.js";
2
+ import { circleciCredential } from "./credentials.js";
3
+ async function apiRequest(ctx, method, path, body, qs) {
4
+ return credentialJson(ctx, circleciCredential, "circleci", {
5
+ target: "api",
6
+ path,
11
7
  method,
12
- headers: {
13
- "Circle-Token": token,
14
- "Content-Type": "application/json",
15
- Accept: "application/json",
16
- },
17
- };
18
- if (body && Object.keys(body).length > 0 && method !== "GET") {
19
- opts.body = JSON.stringify(body);
20
- }
21
- const res = await fetch(url.toString(), opts);
22
- if (!res.ok) {
23
- const text = await res.text();
24
- throw new Error(`CircleCI API error ${res.status}: ${text}`);
25
- }
26
- return res.json();
8
+ query: qs,
9
+ ...(body && Object.keys(body).length > 0 && method !== "GET"
10
+ ? { json: body }
11
+ : {}),
12
+ });
27
13
  }
28
- async function paginateAll(token, endpoint, qs) {
14
+ async function paginateAll(ctx, path, qs) {
29
15
  const results = [];
30
16
  const q = { ...qs };
31
17
  while (true) {
32
- const data = (await apiRequest(token, "GET", endpoint, undefined, q));
18
+ const data = (await apiRequest(ctx, "GET", path, undefined, q));
33
19
  const items = data.items ?? [];
34
20
  results.push(...items);
35
21
  if (!data.next_page_token)
@@ -38,15 +24,10 @@ async function paginateAll(token, endpoint, qs) {
38
24
  }
39
25
  return results;
40
26
  }
41
- function getToken(ctx) {
42
- return ctx.connection.config.apiKey;
43
- }
44
- function encodeSlug(slug) {
45
- return slug.replace(/\//g, "%2F");
46
- }
47
27
  export default function circleci(rl) {
48
28
  rl.setName("circleci");
49
29
  rl.setVersion("0.1.0");
30
+ rl.setCredential(circleciCredential);
50
31
  rl.setConnectionSchema({
51
32
  apiKey: {
52
33
  type: "string",
@@ -77,7 +58,7 @@ export default function circleci(rl) {
77
58
  },
78
59
  async execute(input, ctx) {
79
60
  const { vcs, projectSlug, pipelineNumber } = input;
80
- return apiRequest(getToken(ctx), "GET", `/project/${vcs}/${encodeSlug(projectSlug)}/pipeline/${pipelineNumber}`);
61
+ return apiRequest(ctx, "GET", `project/${pathSegment(vcs)}/${pathSegments(projectSlug)}/pipeline/${pathSegment(pipelineNumber)}`);
81
62
  },
82
63
  });
83
64
  rl.registerAction("pipeline.list", {
@@ -107,17 +88,16 @@ export default function circleci(rl) {
107
88
  },
108
89
  async execute(input, ctx) {
109
90
  const { vcs, projectSlug, branch, limit } = (input ?? {});
110
- const token = getToken(ctx);
111
- const endpoint = `/project/${vcs}/${encodeSlug(projectSlug)}/pipeline`;
91
+ const endpoint = `project/${pathSegment(vcs)}/${pathSegments(projectSlug)}/pipeline`;
112
92
  const qs = {};
113
93
  if (branch)
114
94
  qs.branch = branch;
115
95
  if (limit) {
116
96
  qs.limit = limit;
117
- const data = (await apiRequest(token, "GET", endpoint, undefined, qs));
97
+ const data = (await apiRequest(ctx, "GET", endpoint, undefined, qs));
118
98
  return (data.items ?? []).slice(0, limit);
119
99
  }
120
- return paginateAll(token, endpoint, qs);
100
+ return paginateAll(ctx, endpoint, qs);
121
101
  },
122
102
  });
123
103
  rl.registerAction("pipeline.trigger", {
@@ -148,7 +128,7 @@ export default function circleci(rl) {
148
128
  body.branch = branch;
149
129
  if (tag)
150
130
  body.tag = tag;
151
- return apiRequest(getToken(ctx), "POST", `/project/${vcs}/${encodeSlug(projectSlug)}/pipeline`, body);
131
+ return apiRequest(ctx, "POST", `project/${pathSegment(vcs)}/${pathSegments(projectSlug)}/pipeline`, body);
152
132
  },
153
133
  });
154
134
  }
@@ -0,0 +1,19 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** A user or bot access token, sent as a bearer to Webex's one API origin. */
3
+ export const ciscoWebexCredential = staticCredential({
4
+ id: "ciscoWebex",
5
+ auth: { kind: "bearer" },
6
+ local: { secret: "accessToken" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://webexapis.com/v1/",
10
+ methods: ["GET", "POST", "PUT", "DELETE"],
11
+ },
12
+ },
13
+ probe: {
14
+ target: "api",
15
+ path: "people/me",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });
@@ -1,56 +1,41 @@
1
- const BASE_URL = "https://webexapis.com/v1";
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, credentialOk, jsonAnswer, pathSegment, pathWithin, } from "../../_shared/credentials.js";
2
+ import { ciscoWebexCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body, qs) {
4
+ return credentialJson(ctx, ciscoWebexCredential, "ciscoWebex", {
5
+ target: "api",
6
+ path,
11
7
  method,
12
- headers: {
13
- "Content-Type": "application/json",
14
- Authorization: `Bearer ${token}`,
15
- },
16
- };
17
- if (body &&
18
- Object.keys(body).length > 0 &&
19
- method !== "GET" &&
20
- method !== "DELETE") {
21
- opts.body = JSON.stringify(body);
22
- }
23
- const res = await fetch(url.toString(), opts);
24
- if (!res.ok) {
25
- const text = await res.text();
26
- throw new Error(`Webex API error ${res.status}: ${text}`);
27
- }
28
- if (res.status === 204)
29
- return { success: true };
30
- const ct = res.headers.get("content-type") ?? "";
31
- if (ct.includes("application/json"))
32
- return res.json();
33
- return { success: true };
8
+ query: qs,
9
+ ...(body &&
10
+ Object.keys(body).length > 0 &&
11
+ method !== "GET" &&
12
+ method !== "DELETE"
13
+ ? { json: body }
14
+ : {}),
15
+ });
34
16
  }
35
- async function paginateAll(token, endpoint, property, qs) {
17
+ async function paginateAll(ctx, path, property, qs) {
36
18
  const results = [];
37
- const q = { ...qs, max: 100 };
38
- let nextUrl;
19
+ let next = {
20
+ path,
21
+ query: { ...qs, max: 100 },
22
+ };
39
23
  while (true) {
40
- const res = await fetch(nextUrl ??
41
- `${BASE_URL}${endpoint}?${new URLSearchParams(Object.entries(q).map(([k, v]) => [k, String(v)]))}`, {
42
- headers: { Authorization: `Bearer ${token}` },
24
+ const res = await credentialOk(ctx, ciscoWebexCredential, "ciscoWebex", {
25
+ target: "api",
26
+ path: next.path,
27
+ query: next.query,
43
28
  });
44
- if (!res.ok)
45
- throw new Error(`Webex API error ${res.status}: ${await res.text()}`);
46
- const data = (await res.json());
29
+ const data = (await jsonAnswer(res));
47
30
  results.push(...(data[property] ?? []));
48
31
  const link = res.headers.get("link");
49
32
  if (link?.includes('rel="next"')) {
50
33
  const match = link.match(/<([^>]+)>/);
51
- nextUrl = match?.[1];
52
- if (!nextUrl)
34
+ if (!match?.[1])
53
35
  break;
36
+ next = {
37
+ path: pathWithin(ctx, ciscoWebexCredential, "api", match[1]),
38
+ };
54
39
  }
55
40
  else {
56
41
  break;
@@ -58,12 +43,10 @@ async function paginateAll(token, endpoint, property, qs) {
58
43
  }
59
44
  return results;
60
45
  }
61
- function getToken(ctx) {
62
- return ctx.connection.config.accessToken;
63
- }
64
46
  export default function ciscoWebex(rl) {
65
47
  rl.setName("ciscoWebex");
66
48
  rl.setVersion("0.1.0");
49
+ rl.setCredential(ciscoWebexCredential);
67
50
  rl.setConnectionSchema({
68
51
  accessToken: {
69
52
  type: "string",
@@ -106,7 +89,7 @@ export default function ciscoWebex(rl) {
106
89
  },
107
90
  async execute(input, ctx) {
108
91
  const body = (input ?? {});
109
- return apiRequest(getToken(ctx), "POST", "/messages", body);
92
+ return apiRequest(ctx, "POST", "messages", body);
110
93
  },
111
94
  });
112
95
  rl.registerAction("message.get", {
@@ -117,7 +100,7 @@ export default function ciscoWebex(rl) {
117
100
  },
118
101
  async execute(input, ctx) {
119
102
  const { messageId } = input;
120
- return apiRequest(getToken(ctx), "GET", `/messages/${messageId}`);
103
+ return apiRequest(ctx, "GET", `messages/${pathSegment(messageId)}`);
121
104
  },
122
105
  });
123
106
  rl.registerAction("message.list", {
@@ -157,10 +140,10 @@ export default function ciscoWebex(rl) {
157
140
  qs.beforeMessage = beforeMessage;
158
141
  if (limit) {
159
142
  qs.max = limit;
160
- const data = (await apiRequest(getToken(ctx), "GET", "/messages", undefined, qs));
143
+ const data = (await apiRequest(ctx, "GET", "messages", undefined, qs));
161
144
  return data.items;
162
145
  }
163
- return paginateAll(getToken(ctx), "/messages", "items", qs);
146
+ return paginateAll(ctx, "messages", "items", qs);
164
147
  },
165
148
  });
166
149
  rl.registerAction("message.update", {
@@ -178,13 +161,13 @@ export default function ciscoWebex(rl) {
178
161
  async execute(input, ctx) {
179
162
  const { messageId, text, markdown } = input;
180
163
  // Need roomId from original message
181
- const original = (await apiRequest(getToken(ctx), "GET", `/messages/${messageId}`));
164
+ const original = (await apiRequest(ctx, "GET", `messages/${pathSegment(messageId)}`));
182
165
  const body = { roomId: original.roomId };
183
166
  if (markdown)
184
167
  body.markdown = markdown;
185
168
  else if (text)
186
169
  body.text = text;
187
- return apiRequest(getToken(ctx), "PUT", `/messages/${messageId}`, body);
170
+ return apiRequest(ctx, "PUT", `messages/${pathSegment(messageId)}`, body);
188
171
  },
189
172
  });
190
173
  rl.registerAction("message.delete", {
@@ -195,7 +178,7 @@ export default function ciscoWebex(rl) {
195
178
  },
196
179
  async execute(input, ctx) {
197
180
  const { messageId } = input;
198
- await apiRequest(getToken(ctx), "DELETE", `/messages/${messageId}`);
181
+ await apiRequest(ctx, "DELETE", `messages/${pathSegment(messageId)}`);
199
182
  return { success: true };
200
183
  },
201
184
  });
@@ -243,7 +226,7 @@ export default function ciscoWebex(rl) {
243
226
  },
244
227
  async execute(input, ctx) {
245
228
  const body = (input ?? {});
246
- return apiRequest(getToken(ctx), "POST", "/meetings", body);
229
+ return apiRequest(ctx, "POST", "meetings", body);
247
230
  },
248
231
  });
249
232
  rl.registerAction("meeting.get", {
@@ -254,7 +237,7 @@ export default function ciscoWebex(rl) {
254
237
  },
255
238
  async execute(input, ctx) {
256
239
  const { meetingId } = input;
257
- return apiRequest(getToken(ctx), "GET", `/meetings/${meetingId}`);
240
+ return apiRequest(ctx, "GET", `meetings/${pathSegment(meetingId)}`);
258
241
  },
259
242
  });
260
243
  rl.registerAction("meeting.list", {
@@ -296,10 +279,10 @@ export default function ciscoWebex(rl) {
296
279
  qs.state = state;
297
280
  if (limit) {
298
281
  qs.max = limit;
299
- const data = (await apiRequest(getToken(ctx), "GET", "/meetings", undefined, qs));
282
+ const data = (await apiRequest(ctx, "GET", "meetings", undefined, qs));
300
283
  return data.items;
301
284
  }
302
- return paginateAll(getToken(ctx), "/meetings", "items", qs);
285
+ return paginateAll(ctx, "meetings", "items", qs);
303
286
  },
304
287
  });
305
288
  rl.registerAction("meeting.update", {
@@ -332,7 +315,7 @@ export default function ciscoWebex(rl) {
332
315
  async execute(input, ctx) {
333
316
  const { meetingId, ...fields } = input;
334
317
  // API requires title, password, start, end — fetch current if not provided
335
- const current = (await apiRequest(getToken(ctx), "GET", `/meetings/${meetingId}`));
318
+ const current = (await apiRequest(ctx, "GET", `meetings/${pathSegment(meetingId)}`));
336
319
  const body = {
337
320
  title: fields.title ?? current.title,
338
321
  password: fields.password ?? current.password,
@@ -340,8 +323,7 @@ export default function ciscoWebex(rl) {
340
323
  end: fields.end ?? current.end,
341
324
  ...fields,
342
325
  };
343
- delete body.meetingId;
344
- return apiRequest(getToken(ctx), "PUT", `/meetings/${meetingId}`, body);
326
+ return apiRequest(ctx, "PUT", `meetings/${pathSegment(meetingId)}`, body);
345
327
  },
346
328
  });
347
329
  rl.registerAction("meeting.delete", {
@@ -352,7 +334,7 @@ export default function ciscoWebex(rl) {
352
334
  },
353
335
  async execute(input, ctx) {
354
336
  const { meetingId } = input;
355
- await apiRequest(getToken(ctx), "DELETE", `/meetings/${meetingId}`);
337
+ await apiRequest(ctx, "DELETE", `meetings/${pathSegment(meetingId)}`);
356
338
  return { success: true };
357
339
  },
358
340
  });
@@ -0,0 +1,22 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** One API key, sent as a bearer to Clearbit's three read-only API hosts:
3
+ * person enrichment, company enrichment, and name autocomplete. */
4
+ export const clearbitCredential = staticCredential({
5
+ id: "clearbit",
6
+ auth: { kind: "bearer" },
7
+ local: { secret: "apiKey" },
8
+ targets: {
9
+ person: {
10
+ baseUrl: "https://person-stream.clearbit.com/v2/",
11
+ methods: ["GET"],
12
+ },
13
+ company: {
14
+ baseUrl: "https://company-stream.clearbit.com/v2/",
15
+ methods: ["GET"],
16
+ },
17
+ autocomplete: {
18
+ baseUrl: "https://autocomplete.clearbit.com/v1/",
19
+ methods: ["GET"],
20
+ },
21
+ },
22
+ });
@@ -1,26 +1,16 @@
1
- async function apiRequest(apiKey, subdomain, endpoint, qs) {
2
- const url = new URL(`https://${subdomain}.clearbit.com${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 res = await fetch(url.toString(), {
10
- headers: { Authorization: `Bearer ${apiKey}` },
1
+ import { credentialJson } from "../../_shared/credentials.js";
2
+ import { clearbitCredential } from "./credentials.js";
3
+ async function apiRequest(ctx, target, endpoint, qs) {
4
+ return credentialJson(ctx, clearbitCredential, "clearbit", {
5
+ target,
6
+ path: endpoint,
7
+ query: qs,
11
8
  });
12
- if (!res.ok) {
13
- const text = await res.text();
14
- throw new Error(`Clearbit API error ${res.status}: ${text}`);
15
- }
16
- return res.json();
17
- }
18
- function getKey(ctx) {
19
- return ctx.connection.config.apiKey;
20
9
  }
21
10
  export default function clearbit(rl) {
22
11
  rl.setName("clearbit");
23
12
  rl.setVersion("0.1.0");
13
+ rl.setCredential(clearbitCredential);
24
14
  rl.setConnectionSchema({
25
15
  apiKey: {
26
16
  type: "string",
@@ -101,7 +91,7 @@ export default function clearbit(rl) {
101
91
  qs.twitter = twitter;
102
92
  if (facebook)
103
93
  qs.facebook = facebook;
104
- return apiRequest(getKey(ctx), "person-stream", "/v2/people/find", qs);
94
+ return apiRequest(ctx, "person", "people/find", qs);
105
95
  },
106
96
  });
107
97
  rl.registerAction("company.enrich", {
@@ -142,7 +132,7 @@ export default function clearbit(rl) {
142
132
  qs.twitter = twitter;
143
133
  if (facebook)
144
134
  qs.facebook = facebook;
145
- return apiRequest(getKey(ctx), "company-stream", "/v2/companies/find", qs);
135
+ return apiRequest(ctx, "company", "companies/find", qs);
146
136
  },
147
137
  });
148
138
  rl.registerAction("company.autocomplete", {
@@ -157,7 +147,7 @@ export default function clearbit(rl) {
157
147
  },
158
148
  async execute(input, ctx) {
159
149
  const { name } = input;
160
- return apiRequest(getKey(ctx), "autocomplete", "/v1/companies/suggest", {
150
+ return apiRequest(ctx, "autocomplete", "companies/suggest", {
161
151
  query: name,
162
152
  });
163
153
  },
@@ -0,0 +1,19 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** A personal or OAuth2 token, sent raw in Authorization, to ClickUp's one API origin. */
3
+ export const clickupCredential = staticCredential({
4
+ id: "clickup",
5
+ auth: { kind: "apiKey", header: "Authorization" },
6
+ local: { secret: "accessToken" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://api.clickup.com/api/v2/",
10
+ methods: ["GET", "POST", "PUT", "DELETE"],
11
+ },
12
+ },
13
+ probe: {
14
+ target: "api",
15
+ path: "user",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });