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
- const BASE_URL = "https://api.convertkit.com/v3";
2
- async function apiRequest(apiSecret, method, endpoint, body, qs) {
3
- const url = new URL(`${BASE_URL}${endpoint}`);
4
- // GET requests use api_secret as query param
5
- if (method === "GET" || method === "DELETE") {
6
- url.searchParams.set("api_secret", apiSecret);
7
- }
8
- if (qs) {
9
- for (const [k, v] of Object.entries(qs)) {
10
- if (v !== undefined && v !== null)
11
- url.searchParams.set(k, String(v));
12
- }
13
- }
14
- const opts = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { convertkitCredential } from "./credentials.js";
3
+ /** Every write carries a JSON body, the one the API secret travels in. */
4
+ function apiRequest(ctx, method, path, body, query) {
5
+ return credentialJson(ctx, convertkitCredential, "convertkit", {
6
+ target: "api",
7
+ path,
15
8
  method,
16
- headers: { "Content-Type": "application/json" },
17
- };
18
- if (method === "POST" || method === "PUT") {
19
- const b = { api_secret: apiSecret, ...body };
20
- opts.body = JSON.stringify(b);
21
- }
22
- const res = await fetch(url.toString(), opts);
23
- if (!res.ok)
24
- throw new Error(`ConvertKit API error ${res.status}: ${await res.text()}`);
25
- if (res.status === 204)
26
- return { success: true };
27
- return res.json();
28
- }
29
- function getSecret(ctx) {
30
- return ctx.connection.config.apiSecret;
9
+ query,
10
+ ...(method === "POST" || method === "PUT" ? { json: body ?? {} } : {}),
11
+ });
31
12
  }
32
13
  export default function convertkit(rl) {
33
14
  rl.setName("convertkit");
34
15
  rl.setVersion("0.1.0");
16
+ rl.setCredential(convertkitCredential);
35
17
  rl.setConnectionSchema({
36
18
  apiSecret: {
37
19
  type: "string",
@@ -49,7 +31,7 @@ export default function convertkit(rl) {
49
31
  },
50
32
  async execute(input, ctx) {
51
33
  const { label } = input;
52
- return apiRequest(getSecret(ctx), "POST", "/custom_fields", { label });
34
+ return apiRequest(ctx, "POST", "custom_fields", { label });
53
35
  },
54
36
  });
55
37
  rl.registerAction("customField.get", {
@@ -59,7 +41,7 @@ export default function convertkit(rl) {
59
41
  id: { type: "string", required: true, description: "Field ID" },
60
42
  },
61
43
  async execute(input, ctx) {
62
- return apiRequest(getSecret(ctx), "GET", `/custom_fields/${input.id}`);
44
+ return apiRequest(ctx, "GET", `custom_fields/${pathSegment(input.id)}`);
63
45
  },
64
46
  });
65
47
  rl.registerAction("customField.list", {
@@ -69,7 +51,7 @@ export default function convertkit(rl) {
69
51
  limit: { type: "number", required: false, description: "Max results" },
70
52
  },
71
53
  async execute(input, ctx) {
72
- const data = (await apiRequest(getSecret(ctx), "GET", "/custom_fields"));
54
+ const data = (await apiRequest(ctx, "GET", "custom_fields"));
73
55
  const fields = data.custom_fields ?? [];
74
56
  const { limit } = (input ?? {});
75
57
  if (limit)
@@ -86,7 +68,7 @@ export default function convertkit(rl) {
86
68
  },
87
69
  async execute(input, ctx) {
88
70
  const { id, label } = input;
89
- await apiRequest(getSecret(ctx), "PUT", `/custom_fields/${id}`, {
71
+ await apiRequest(ctx, "PUT", `custom_fields/${pathSegment(id)}`, {
90
72
  label,
91
73
  });
92
74
  return { success: true };
@@ -99,7 +81,7 @@ export default function convertkit(rl) {
99
81
  id: { type: "string", required: true, description: "Field ID" },
100
82
  },
101
83
  async execute(input, ctx) {
102
- return apiRequest(getSecret(ctx), "DELETE", `/custom_fields/${input.id}`);
84
+ return apiRequest(ctx, "DELETE", `custom_fields/${pathSegment(input.id)}`);
103
85
  },
104
86
  });
105
87
  // ── Form ────────────────────────────────────────────
@@ -130,7 +112,7 @@ export default function convertkit(rl) {
130
112
  body.tags = tags;
131
113
  if (fields)
132
114
  body.fields = fields;
133
- const data = (await apiRequest(getSecret(ctx), "POST", `/forms/${formId}/subscribe`, body));
115
+ const data = (await apiRequest(ctx, "POST", `forms/${pathSegment(formId)}/subscribe`, body));
134
116
  return data.subscription;
135
117
  },
136
118
  });
@@ -141,7 +123,7 @@ export default function convertkit(rl) {
141
123
  limit: { type: "number", required: false, description: "Max results" },
142
124
  },
143
125
  async execute(input, ctx) {
144
- const data = (await apiRequest(getSecret(ctx), "GET", "/forms"));
126
+ const data = (await apiRequest(ctx, "GET", "forms"));
145
127
  const forms = data.forms ?? [];
146
128
  const { limit } = (input ?? {});
147
129
  if (limit)
@@ -166,7 +148,7 @@ export default function convertkit(rl) {
166
148
  const qs = {};
167
149
  if (subscriberState)
168
150
  qs.subscriber_state = subscriberState;
169
- const data = (await apiRequest(getSecret(ctx), "GET", `/forms/${formId}/subscriptions`, undefined, qs));
151
+ const data = (await apiRequest(ctx, "GET", `forms/${pathSegment(formId)}/subscriptions`, undefined, qs));
170
152
  const subs = data.subscriptions ?? [];
171
153
  if (limit)
172
154
  return subs.slice(0, limit);
@@ -201,7 +183,7 @@ export default function convertkit(rl) {
201
183
  body.tags = tags;
202
184
  if (fields)
203
185
  body.fields = fields;
204
- const data = (await apiRequest(getSecret(ctx), "POST", `/sequences/${sequenceId}/subscribe`, body));
186
+ const data = (await apiRequest(ctx, "POST", `sequences/${pathSegment(sequenceId)}/subscribe`, body));
205
187
  return data.subscription;
206
188
  },
207
189
  });
@@ -212,7 +194,7 @@ export default function convertkit(rl) {
212
194
  limit: { type: "number", required: false, description: "Max results" },
213
195
  },
214
196
  async execute(input, ctx) {
215
- const data = (await apiRequest(getSecret(ctx), "GET", "/sequences"));
197
+ const data = (await apiRequest(ctx, "GET", "sequences"));
216
198
  const courses = data.courses ?? [];
217
199
  const { limit } = (input ?? {});
218
200
  if (limit)
@@ -241,7 +223,7 @@ export default function convertkit(rl) {
241
223
  const qs = {};
242
224
  if (subscriberState)
243
225
  qs.subscriber_state = subscriberState;
244
- const data = (await apiRequest(getSecret(ctx), "GET", `/sequences/${sequenceId}/subscriptions`, undefined, qs));
226
+ const data = (await apiRequest(ctx, "GET", `sequences/${pathSegment(sequenceId)}/subscriptions`, undefined, qs));
245
227
  const subs = data.subscriptions ?? [];
246
228
  if (limit)
247
229
  return subs.slice(0, limit);
@@ -262,7 +244,7 @@ export default function convertkit(rl) {
262
244
  async execute(input, ctx) {
263
245
  const { names } = input;
264
246
  const tag = names.split(",").map((n) => ({ name: n.trim() }));
265
- return apiRequest(getSecret(ctx), "POST", "/tags", { tag });
247
+ return apiRequest(ctx, "POST", "tags", { tag });
266
248
  },
267
249
  });
268
250
  rl.registerAction("tag.list", {
@@ -272,7 +254,7 @@ export default function convertkit(rl) {
272
254
  limit: { type: "number", required: false, description: "Max results" },
273
255
  },
274
256
  async execute(input, ctx) {
275
- const data = (await apiRequest(getSecret(ctx), "GET", "/tags"));
257
+ const data = (await apiRequest(ctx, "GET", "tags"));
276
258
  const tags = data.tags ?? [];
277
259
  const { limit } = (input ?? {});
278
260
  if (limit)
@@ -301,7 +283,7 @@ export default function convertkit(rl) {
301
283
  body.first_name = firstName;
302
284
  if (fields)
303
285
  body.fields = fields;
304
- const data = (await apiRequest(getSecret(ctx), "POST", `/tags/${tagId}/subscribe`, body));
286
+ const data = (await apiRequest(ctx, "POST", `tags/${pathSegment(tagId)}/subscribe`, body));
305
287
  return data.subscription;
306
288
  },
307
289
  });
@@ -314,7 +296,7 @@ export default function convertkit(rl) {
314
296
  },
315
297
  async execute(input, ctx) {
316
298
  const { tagId, limit } = input;
317
- const data = (await apiRequest(getSecret(ctx), "GET", `/tags/${tagId}/subscriptions`));
299
+ const data = (await apiRequest(ctx, "GET", `tags/${pathSegment(tagId)}/subscriptions`));
318
300
  const subs = data.subscriptions ?? [];
319
301
  if (limit)
320
302
  return subs.slice(0, limit);
@@ -334,7 +316,7 @@ export default function convertkit(rl) {
334
316
  },
335
317
  async execute(input, ctx) {
336
318
  const { tagId, email } = input;
337
- return apiRequest(getSecret(ctx), "POST", `/tags/${tagId}/unsubscribe`, {
319
+ return apiRequest(ctx, "POST", `tags/${pathSegment(tagId)}/unsubscribe`, {
338
320
  email,
339
321
  });
340
322
  },
@@ -0,0 +1,17 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * A user API key in the X-PW-AccessToken header. Its public companions —
4
+ * X-PW-Application and the user's X-PW-UserEmail — ride as allowed headers.
5
+ */
6
+ export const copperCredential = staticCredential({
7
+ id: "copper",
8
+ auth: { kind: "apiKey", header: "X-PW-AccessToken" },
9
+ local: { secret: "apiKey" },
10
+ targets: {
11
+ api: {
12
+ baseUrl: "https://api.copper.com/developer_api/v1/",
13
+ methods: ["GET", "POST", "PUT", "DELETE"],
14
+ allowedHeaders: ["X-PW-Application", "X-PW-UserEmail"],
15
+ },
16
+ },
17
+ });
@@ -1,33 +1,23 @@
1
- const BASE_URL = "https://api.copper.com/developer_api/v1";
2
- async function apiRequest(apiKey, email, method, endpoint, body) {
3
- const opts = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { copperCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body) {
4
+ return credentialJson(ctx, copperCredential, "copper", {
5
+ target: "api",
6
+ path,
4
7
  method,
5
8
  headers: {
6
- "Content-Type": "application/json",
7
- "X-PW-AccessToken": apiKey,
8
9
  "X-PW-Application": "developer_api",
9
- "X-PW-UserEmail": email,
10
+ "X-PW-UserEmail": String(ctx.connection.config.email ?? ""),
10
11
  },
11
- };
12
- if (body && Object.keys(body).length > 0) {
13
- opts.body = JSON.stringify(body);
14
- }
15
- const res = await fetch(`${BASE_URL}${endpoint}`, opts);
16
- if (!res.ok)
17
- throw new Error(`Copper API error ${res.status}: ${await res.text()}`);
18
- if (res.status === 204)
19
- return { success: true };
20
- const ct = res.headers.get("content-type") ?? "";
21
- if (ct.includes("application/json"))
22
- return res.json();
23
- return { success: true };
12
+ ...(body && Object.keys(body).length > 0 ? { json: body } : {}),
13
+ });
24
14
  }
25
- async function searchAll(apiKey, email, endpoint, body, limit) {
15
+ async function searchAll(ctx, path, body, limit) {
26
16
  const results = [];
27
17
  let page = 1;
28
18
  const size = 200;
29
19
  while (true) {
30
- const data = (await apiRequest(apiKey, email, "POST", endpoint, {
20
+ const data = (await apiRequest(ctx, "POST", path, {
31
21
  ...body,
32
22
  page_number: page,
33
23
  page_size: size,
@@ -43,12 +33,6 @@ async function searchAll(apiKey, email, endpoint, body, limit) {
43
33
  }
44
34
  return results;
45
35
  }
46
- function getConn(ctx) {
47
- return {
48
- apiKey: ctx.connection.config.apiKey,
49
- email: ctx.connection.config.email,
50
- };
51
- }
52
36
  function registerCrud(rl, resource, endpoint, idParam, nameRequired, extraCreateFields) {
53
37
  rl.registerAction(`${resource}.create`, {
54
38
  access: "write",
@@ -66,8 +50,7 @@ function registerCrud(rl, resource, endpoint, idParam, nameRequired, extraCreate
66
50
  ...extraCreateFields,
67
51
  },
68
52
  async execute(input, ctx) {
69
- const { apiKey, email } = getConn(ctx);
70
- return apiRequest(apiKey, email, "POST", endpoint, (input ?? {}));
53
+ return apiRequest(ctx, "POST", endpoint, (input ?? {}));
71
54
  },
72
55
  });
73
56
  rl.registerAction(`${resource}.get`, {
@@ -81,8 +64,7 @@ function registerCrud(rl, resource, endpoint, idParam, nameRequired, extraCreate
81
64
  },
82
65
  },
83
66
  async execute(input, ctx) {
84
- const { apiKey, email } = getConn(ctx);
85
- return apiRequest(apiKey, email, "GET", `${endpoint}/${input[idParam]}`);
67
+ return apiRequest(ctx, "GET", `${endpoint}/${pathSegment(input[idParam])}`);
86
68
  },
87
69
  });
88
70
  rl.registerAction(`${resource}.list`, {
@@ -92,9 +74,8 @@ function registerCrud(rl, resource, endpoint, idParam, nameRequired, extraCreate
92
74
  limit: { type: "number", required: false, description: "Max results" },
93
75
  },
94
76
  async execute(input, ctx) {
95
- const { apiKey, email } = getConn(ctx);
96
77
  const { limit } = (input ?? {});
97
- return searchAll(apiKey, email, `${endpoint}/search`, undefined, limit);
78
+ return searchAll(ctx, `${endpoint}/search`, undefined, limit);
98
79
  },
99
80
  });
100
81
  rl.registerAction(`${resource}.update`, {
@@ -108,9 +89,8 @@ function registerCrud(rl, resource, endpoint, idParam, nameRequired, extraCreate
108
89
  },
109
90
  },
110
91
  async execute(input, ctx) {
111
- const { apiKey, email } = getConn(ctx);
112
92
  const { [idParam]: id, ...body } = input;
113
- return apiRequest(apiKey, email, "PUT", `${endpoint}/${id}`, body);
93
+ return apiRequest(ctx, "PUT", `${endpoint}/${pathSegment(id)}`, body);
114
94
  },
115
95
  });
116
96
  rl.registerAction(`${resource}.delete`, {
@@ -124,14 +104,14 @@ function registerCrud(rl, resource, endpoint, idParam, nameRequired, extraCreate
124
104
  },
125
105
  },
126
106
  async execute(input, ctx) {
127
- const { apiKey, email } = getConn(ctx);
128
- return apiRequest(apiKey, email, "DELETE", `${endpoint}/${input[idParam]}`);
107
+ return apiRequest(ctx, "DELETE", `${endpoint}/${pathSegment(input[idParam])}`);
129
108
  },
130
109
  });
131
110
  }
132
111
  export default function copper(rl) {
133
112
  rl.setName("copper");
134
113
  rl.setVersion("0.1.0");
114
+ rl.setCredential(copperCredential);
135
115
  rl.setConnectionSchema({
136
116
  apiKey: {
137
117
  type: "string",
@@ -147,9 +127,9 @@ export default function copper(rl) {
147
127
  },
148
128
  });
149
129
  // CRUD resources
150
- registerCrud(rl, "company", "/companies", "companyId", true);
151
- registerCrud(rl, "lead", "/leads", "leadId", true);
152
- registerCrud(rl, "opportunity", "/opportunities", "opportunityId", true, {
130
+ registerCrud(rl, "company", "companies", "companyId", true);
131
+ registerCrud(rl, "lead", "leads", "leadId", true);
132
+ registerCrud(rl, "opportunity", "opportunities", "opportunityId", true, {
153
133
  customerSourceId: {
154
134
  type: "string",
155
135
  required: true,
@@ -161,9 +141,9 @@ export default function copper(rl) {
161
141
  description: "Primary contact ID",
162
142
  },
163
143
  });
164
- registerCrud(rl, "person", "/people", "personId", true);
165
- registerCrud(rl, "project", "/projects", "projectId", true);
166
- registerCrud(rl, "task", "/tasks", "taskId", true);
144
+ registerCrud(rl, "person", "people", "personId", true);
145
+ registerCrud(rl, "project", "projects", "projectId", true);
146
+ registerCrud(rl, "task", "tasks", "taskId", true);
167
147
  // Read-only resources
168
148
  rl.registerAction("customerSource.list", {
169
149
  access: "read",
@@ -172,8 +152,7 @@ export default function copper(rl) {
172
152
  limit: { type: "number", required: false, description: "Max results" },
173
153
  },
174
154
  async execute(input, ctx) {
175
- const { apiKey, email } = getConn(ctx);
176
- const data = (await apiRequest(apiKey, email, "GET", "/customer_sources"));
155
+ const data = (await apiRequest(ctx, "GET", "customer_sources"));
177
156
  const { limit } = (input ?? {});
178
157
  if (limit)
179
158
  return data.slice(0, limit);
@@ -187,9 +166,8 @@ export default function copper(rl) {
187
166
  limit: { type: "number", required: false, description: "Max results" },
188
167
  },
189
168
  async execute(input, ctx) {
190
- const { apiKey, email } = getConn(ctx);
191
169
  const { limit } = (input ?? {});
192
- return searchAll(apiKey, email, "/users/search", undefined, limit);
170
+ return searchAll(ctx, "users/search", undefined, limit);
193
171
  },
194
172
  });
195
173
  }
@@ -0,0 +1,28 @@
1
+ import { httpsBase, staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * The longest report wait analyzer.execute accepts. The waiting target
4
+ * declares that wait plus a 60 s allowance for the exchange itself, which
5
+ * lands exactly on the 10-minute host ceiling.
6
+ */
7
+ export const MAX_WAIT_SECONDS = 540;
8
+ /**
9
+ * A Cortex API key, sent as a bearer to the connection's own Cortex
10
+ * instance beneath /api/. The `wait` target is the same surface with the
11
+ * long deadline /job/{id}/waitreport holds a request open for.
12
+ */
13
+ export const cortexCredential = staticCredential({
14
+ id: "cortex",
15
+ auth: { kind: "bearer" },
16
+ local: { secret: "apiKey" },
17
+ targets: (config) => {
18
+ const baseUrl = httpsBase(config.host, "api/");
19
+ return {
20
+ api: { baseUrl, methods: ["GET", "POST"] },
21
+ wait: {
22
+ baseUrl,
23
+ methods: ["GET"],
24
+ timeoutMs: MAX_WAIT_SECONDS * 1000 + 60_000,
25
+ },
26
+ };
27
+ },
28
+ });
@@ -1,38 +1,20 @@
1
- async function apiRequest(host, apiKey, method, endpoint, body, qs) {
2
- const url = new URL(`${host}/api${endpoint}`);
3
- if (qs) {
4
- for (const [k, v] of Object.entries(qs)) {
5
- if (v !== undefined && v !== null)
6
- url.searchParams.set(k, String(v));
7
- }
8
- }
9
- const opts = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { cortexCredential, MAX_WAIT_SECONDS } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, options = {}) {
4
+ return credentialJson(ctx, cortexCredential, "cortex", {
5
+ target: options.target ?? "api",
6
+ path,
10
7
  method,
11
- headers: {
12
- "Content-Type": "application/json",
13
- Authorization: `Bearer ${apiKey}`,
14
- },
15
- };
16
- if (body &&
17
- Object.keys(body).length > 0 &&
18
- method !== "GET" &&
19
- method !== "DELETE") {
20
- opts.body = JSON.stringify(body);
21
- }
22
- const res = await fetch(url.toString(), opts);
23
- if (!res.ok)
24
- throw new Error(`Cortex API error ${res.status}: ${await res.text()}`);
25
- return res.json();
26
- }
27
- function getConn(ctx) {
28
- return {
29
- host: ctx.connection.config.host.replace(/\/$/, ""),
30
- apiKey: ctx.connection.config.apiKey,
31
- };
8
+ query: options.query,
9
+ ...(options.json && Object.keys(options.json).length > 0
10
+ ? { json: options.json }
11
+ : {}),
12
+ });
32
13
  }
33
14
  export default function cortex(rl) {
34
15
  rl.setName("cortex");
35
16
  rl.setVersion("0.1.0");
17
+ rl.setCredential(cortexCredential);
36
18
  rl.setConnectionSchema({
37
19
  host: {
38
20
  type: "string",
@@ -72,24 +54,20 @@ export default function cortex(rl) {
72
54
  timeout: {
73
55
  type: "number",
74
56
  required: false,
75
- description: "Wait for report (seconds). If set, blocks until report is ready.",
57
+ description: "Wait for report (seconds, at most 540). If set, blocks until " +
58
+ "the report is ready.",
76
59
  },
77
60
  },
78
61
  async execute(input, ctx) {
79
62
  const { analyzerId, dataType, data, tlp = 2, force, timeout, } = input;
80
- const { host, apiKey } = getConn(ctx);
81
- const qs = {};
82
- if (force)
83
- qs.force = true;
84
- const result = (await apiRequest(host, apiKey, "POST", `/analyzer/${analyzerId}/run`, {
85
- dataType,
86
- data,
87
- tlp,
88
- }, qs));
63
+ const result = (await apiRequest(ctx, "POST", `analyzer/${pathSegment(analyzerId)}/run`, {
64
+ json: { dataType, data, tlp },
65
+ ...(force ? { query: { force: true } } : {}),
66
+ }));
89
67
  if (timeout && result.id) {
90
- return apiRequest(host, apiKey, "GET", `/job/${result.id}/waitreport`, undefined, {
91
- atMost: `${timeout}second`,
92
- });
68
+ // The wait target's declared deadline covers the longest atMost.
69
+ const atMost = Math.min(Number(timeout), MAX_WAIT_SECONDS);
70
+ return apiRequest(ctx, "GET", `job/${pathSegment(result.id)}/waitreport`, { target: "wait", query: { atMost: `${atMost}second` } });
93
71
  }
94
72
  return result;
95
73
  },
@@ -103,8 +81,7 @@ export default function cortex(rl) {
103
81
  },
104
82
  async execute(input, ctx) {
105
83
  const { jobId } = input;
106
- const { host, apiKey } = getConn(ctx);
107
- return apiRequest(host, apiKey, "GET", `/job/${jobId}`);
84
+ return apiRequest(ctx, "GET", `job/${pathSegment(jobId)}`);
108
85
  },
109
86
  });
110
87
  rl.registerAction("job.getReport", {
@@ -115,8 +92,7 @@ export default function cortex(rl) {
115
92
  },
116
93
  async execute(input, ctx) {
117
94
  const { jobId } = input;
118
- const { host, apiKey } = getConn(ctx);
119
- return apiRequest(host, apiKey, "GET", `/job/${jobId}/report`);
95
+ return apiRequest(ctx, "GET", `job/${pathSegment(jobId)}/report`);
120
96
  },
121
97
  });
122
98
  // ── Responder ───────────────────────────────────────
@@ -153,7 +129,6 @@ export default function cortex(rl) {
153
129
  },
154
130
  async execute(input, ctx) {
155
131
  const { responderId, entityType, data, tlp = 2, pap = 2, message, } = input;
156
- const { host, apiKey } = getConn(ctx);
157
132
  const entityData = {
158
133
  _type: entityType,
159
134
  ...data,
@@ -187,7 +162,9 @@ export default function cortex(rl) {
187
162
  break;
188
163
  }
189
164
  body.label = label;
190
- return apiRequest(host, apiKey, "POST", `/responder/${responderId}/run`, body);
165
+ return apiRequest(ctx, "POST", `responder/${pathSegment(responderId)}/run`, {
166
+ json: body,
167
+ });
191
168
  },
192
169
  });
193
170
  }
@@ -0,0 +1,19 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** An API key, sent as a bearer to Currents' one API origin. */
3
+ export const currentsCredential = staticCredential({
4
+ id: "currents",
5
+ auth: { kind: "bearer" },
6
+ local: { secret: "apiKey" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://api.currents.dev/v1/",
10
+ methods: ["GET", "POST", "PUT", "DELETE"],
11
+ },
12
+ },
13
+ probe: {
14
+ target: "api",
15
+ path: "projects",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });