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,30 +1,18 @@
1
- const BASE = "https://api.phantombuster.com/api/v2";
2
- async function apiRequest(apiKey, method, path, body, qs) {
3
- const url = new URL(`${BASE}${path}`);
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 init = {
1
+ import { credentialJson } from "../../_shared/credentials.js";
2
+ import { phantombusterCredential } from "./credentials.js";
3
+ function api(ctx, method, path, body, qs) {
4
+ return credentialJson(ctx, phantombusterCredential, "phantombuster", {
5
+ target: "api",
6
+ path,
11
7
  method,
12
- headers: {
13
- "X-Phantombuster-Key": apiKey,
14
- "Content-Type": "application/json",
15
- },
16
- };
17
- if (body && Object.keys(body).length > 0)
18
- init.body = JSON.stringify(body);
19
- const res = await fetch(url.toString(), init);
20
- if (!res.ok)
21
- throw new Error(`Phantombuster error ${res.status}: ${await res.text()}`);
22
- const text = await res.text();
23
- return text ? JSON.parse(text) : {};
8
+ query: qs,
9
+ ...(body && Object.keys(body).length > 0 ? { json: body } : {}),
10
+ });
24
11
  }
25
12
  export default function phantombuster(rl) {
26
13
  rl.setName("phantombuster");
27
14
  rl.setVersion("0.1.0");
15
+ rl.setCredential(phantombusterCredential);
28
16
  rl.setConnectionSchema({
29
17
  apiKey: {
30
18
  type: "string",
@@ -33,14 +21,13 @@ export default function phantombuster(rl) {
33
21
  env: "PHANTOMBUSTER_API_KEY",
34
22
  },
35
23
  });
36
- const key = (ctx) => ctx.connection.config.apiKey;
37
24
  rl.registerAction("agent.delete", {
38
25
  access: "write",
39
26
  description: "Delete an agent",
40
27
  inputSchema: { agentId: { type: "string", required: true } },
41
28
  async execute(input, ctx) {
42
29
  const { agentId } = input;
43
- await apiRequest(key(ctx), "POST", "/agents/delete", { id: agentId });
30
+ await api(ctx, "POST", "agents/delete", { id: agentId });
44
31
  return { success: true };
45
32
  },
46
33
  });
@@ -50,9 +37,7 @@ export default function phantombuster(rl) {
50
37
  inputSchema: { agentId: { type: "string", required: true } },
51
38
  async execute(input, ctx) {
52
39
  const { agentId } = input;
53
- return apiRequest(key(ctx), "GET", "/agents/fetch", undefined, {
54
- id: agentId,
55
- });
40
+ return api(ctx, "GET", "agents/fetch", undefined, { id: agentId });
56
41
  },
57
42
  });
58
43
  rl.registerAction("agent.getOutput", {
@@ -68,9 +53,11 @@ export default function phantombuster(rl) {
68
53
  },
69
54
  async execute(input, ctx) {
70
55
  const p = input;
71
- const data = (await apiRequest(key(ctx), "GET", "/agents/fetch-output", undefined, { id: p.agentId }));
56
+ const data = (await api(ctx, "GET", "agents/fetch-output", undefined, {
57
+ id: p.agentId,
58
+ }));
72
59
  if (p.resolveData) {
73
- const result = (await apiRequest(key(ctx), "GET", "/containers/fetch-result-object", undefined, { id: data.containerId }));
60
+ const result = (await api(ctx, "GET", "containers/fetch-result-object", undefined, { id: data.containerId }));
74
61
  if (!result.resultObject)
75
62
  return {};
76
63
  return JSON.parse(result.resultObject);
@@ -83,7 +70,7 @@ export default function phantombuster(rl) {
83
70
  description: "List all agents",
84
71
  inputSchema: { limit: { type: "number", required: false } },
85
72
  async execute(input, ctx) {
86
- const agents = (await apiRequest(key(ctx), "GET", "/agents/fetch-all"));
73
+ const agents = (await api(ctx, "GET", "agents/fetch-all"));
87
74
  const limit = input?.limit;
88
75
  if (limit)
89
76
  return agents.slice(0, limit);
@@ -118,9 +105,9 @@ export default function phantombuster(rl) {
118
105
  body.arguments = p.arguments;
119
106
  if (p.bonusArgument)
120
107
  body.bonusArgument = p.bonusArgument;
121
- const data = (await apiRequest(key(ctx), "POST", "/agents/launch", body));
108
+ const data = (await api(ctx, "POST", "agents/launch", body));
122
109
  if (p.resolveData) {
123
- return apiRequest(key(ctx), "GET", "/containers/fetch", undefined, {
110
+ return api(ctx, "GET", "containers/fetch", undefined, {
124
111
  id: data.containerId,
125
112
  });
126
113
  }
@@ -0,0 +1,17 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * An OAuth2 access token, sent as a bearer to the Hue remote API. The
4
+ * bridge username is public config and rides in the request path beneath
5
+ * the target, never in the declaration.
6
+ */
7
+ export const philipsHueCredential = staticCredential({
8
+ id: "philipsHue",
9
+ auth: { kind: "bearer" },
10
+ local: { secret: "accessToken" },
11
+ targets: {
12
+ api: {
13
+ baseUrl: "https://api.meethue.com/route/",
14
+ methods: ["GET", "PUT", "DELETE"],
15
+ },
16
+ },
17
+ });
@@ -1,22 +1,17 @@
1
- const BASE = "https://api.meethue.com/route";
2
- async function apiRequest(accessToken, method, path, body) {
3
- const init = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { philipsHueCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body) {
4
+ return credentialJson(ctx, philipsHueCredential, "philipsHue", {
5
+ target: "api",
6
+ path,
4
7
  method,
5
- headers: {
6
- Authorization: `Bearer ${accessToken}`,
7
- "Content-Type": "application/json",
8
- },
9
- };
10
- if (body && Object.keys(body).length > 0)
11
- init.body = JSON.stringify(body);
12
- const res = await fetch(`${BASE}${path}`, init);
13
- if (!res.ok)
14
- throw new Error(`Philips Hue error ${res.status}: ${await res.text()}`);
15
- return res.json();
8
+ ...(body && Object.keys(body).length > 0 ? { json: body } : {}),
9
+ });
16
10
  }
17
11
  export default function philipsHue(rl) {
18
12
  rl.setName("philipsHue");
19
13
  rl.setVersion("0.1.0");
14
+ rl.setCredential(philipsHueCredential);
20
15
  rl.setConnectionSchema({
21
16
  accessToken: {
22
17
  type: "string",
@@ -31,11 +26,8 @@ export default function philipsHue(rl) {
31
26
  env: "PHILIPS_HUE_USERNAME",
32
27
  },
33
28
  });
34
- function conn(ctx) {
35
- return {
36
- token: ctx.connection.config.accessToken,
37
- user: ctx.connection.config.username,
38
- };
29
+ function user(ctx) {
30
+ return pathSegment(ctx.connection.config.username);
39
31
  }
40
32
  rl.registerAction("light.get", {
41
33
  access: "read",
@@ -43,8 +35,7 @@ export default function philipsHue(rl) {
43
35
  inputSchema: { lightId: { type: "string", required: true } },
44
36
  async execute(input, ctx) {
45
37
  const { lightId } = input;
46
- const c = conn(ctx);
47
- return apiRequest(c.token, "GET", `/api/${c.user}/lights/${lightId}`);
38
+ return apiRequest(ctx, "GET", `api/${user(ctx)}/lights/${pathSegment(lightId)}`);
48
39
  },
49
40
  });
50
41
  rl.registerAction("light.list", {
@@ -52,8 +43,7 @@ export default function philipsHue(rl) {
52
43
  description: "List all lights",
53
44
  inputSchema: { limit: { type: "number", required: false } },
54
45
  async execute(input, ctx) {
55
- const c = conn(ctx);
56
- const data = (await apiRequest(c.token, "GET", `/api/${c.user}/lights`));
46
+ const data = (await apiRequest(ctx, "GET", `api/${user(ctx)}/lights`));
57
47
  const lights = Object.entries(data).map(([id, v]) => ({
58
48
  id,
59
49
  ...v,
@@ -113,7 +103,6 @@ export default function philipsHue(rl) {
113
103
  },
114
104
  async execute(input, ctx) {
115
105
  const p = input;
116
- const c = conn(ctx);
117
106
  const body = { on: p.on };
118
107
  if (p.bri !== undefined)
119
108
  body.bri = p.bri;
@@ -131,7 +120,7 @@ export default function philipsHue(rl) {
131
120
  body.alert = p.alert;
132
121
  if (p.effect)
133
122
  body.effect = p.effect;
134
- const data = (await apiRequest(c.token, "PUT", `/api/${c.user}/lights/${p.lightId}/state`, body));
123
+ const data = (await apiRequest(ctx, "PUT", `api/${user(ctx)}/lights/${pathSegment(p.lightId)}/state`, body));
135
124
  const result = {};
136
125
  for (const item of data) {
137
126
  if (item.success)
@@ -146,8 +135,7 @@ export default function philipsHue(rl) {
146
135
  inputSchema: { lightId: { type: "string", required: true } },
147
136
  async execute(input, ctx) {
148
137
  const { lightId } = input;
149
- const c = conn(ctx);
150
- return apiRequest(c.token, "DELETE", `/api/${c.user}/lights/${lightId}`);
138
+ return apiRequest(ctx, "DELETE", `api/${user(ctx)}/lights/${pathSegment(lightId)}`);
151
139
  },
152
140
  });
153
141
  }
@@ -0,0 +1,26 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * An API token, appended by the transport as the api_token query parameter
4
+ * on Pipedrive's v2 and v1 API bases.
5
+ */
6
+ export const pipedriveCredential = staticCredential({
7
+ id: "pipedrive",
8
+ auth: { kind: "queryKey", param: "api_token" },
9
+ local: { secret: "apiToken" },
10
+ targets: {
11
+ v2: {
12
+ baseUrl: "https://api.pipedrive.com/api/v2/",
13
+ methods: ["GET", "POST", "PATCH", "DELETE"],
14
+ },
15
+ v1: {
16
+ baseUrl: "https://api.pipedrive.com/v1/",
17
+ methods: ["GET", "PUT", "DELETE"],
18
+ },
19
+ },
20
+ probe: {
21
+ target: "v1",
22
+ path: "users/me",
23
+ method: "GET",
24
+ acceptedStatuses: [200],
25
+ },
26
+ });
@@ -1,51 +1,32 @@
1
- const V2 = "https://api.pipedrive.com/api/v2";
2
- const V1 = "https://api.pipedrive.com/v1";
3
- function getConn(ctx) {
4
- return ctx.connection.config.apiToken;
5
- }
6
- async function api(token, method, endpoint, body, qs, version = "v2") {
7
- const base = version === "v1" ? V1 : V2;
8
- const url = new URL(`${base}${endpoint}`);
9
- url.searchParams.set("api_token", token);
10
- if (qs) {
11
- for (const [k, v] of Object.entries(qs)) {
12
- if (v !== undefined && v !== null)
13
- url.searchParams.set(k, String(v));
14
- }
15
- }
16
- const init = {
1
+ import { answerFailed, credentialJson, pathSegment, } from "../../_shared/credentials.js";
2
+ import { pipedriveCredential } from "./credentials.js";
3
+ async function api(ctx, method, path, body, qs, version = "v2") {
4
+ const json = (await credentialJson(ctx, pipedriveCredential, "pipedrive", {
5
+ target: version,
6
+ path,
17
7
  method,
18
- headers: { Accept: "application/json", "Content-Type": "application/json" },
19
- };
20
- if (body && Object.keys(body).length > 0)
21
- init.body = JSON.stringify(body);
22
- const res = await fetch(url.toString(), init);
23
- if (!res.ok)
24
- throw new Error(`Pipedrive error ${res.status}: ${await res.text()}`);
25
- const json = (await res.json());
8
+ query: qs,
9
+ ...(body && Object.keys(body).length > 0 ? { json: body } : {}),
10
+ }));
26
11
  if (json.success === false)
27
- throw new Error(`Pipedrive: ${JSON.stringify(json)}`);
12
+ throw answerFailed("pipedrive", {
13
+ code: json.errorCode,
14
+ message: json.error,
15
+ });
28
16
  return json.data ?? json;
29
17
  }
30
- async function paginate(token, endpoint, qs = {}) {
18
+ async function paginate(ctx, path, qs = {}) {
31
19
  const results = [];
32
20
  qs.limit = 500;
33
21
  let cursor;
34
22
  do {
35
23
  if (cursor)
36
24
  qs.cursor = cursor;
37
- const url = new URL(`${V2}${endpoint}`);
38
- url.searchParams.set("api_token", token);
39
- for (const [k, v] of Object.entries(qs)) {
40
- if (v !== undefined && v !== null)
41
- url.searchParams.set(k, String(v));
42
- }
43
- const res = await fetch(url.toString(), {
44
- headers: { Accept: "application/json" },
45
- });
46
- if (!res.ok)
47
- throw new Error(`Pipedrive error ${res.status}: ${await res.text()}`);
48
- const json = (await res.json());
25
+ const json = (await credentialJson(ctx, pipedriveCredential, "pipedrive", {
26
+ target: "v2",
27
+ path,
28
+ query: qs,
29
+ }));
49
30
  const data = json.data;
50
31
  if (Array.isArray(data))
51
32
  results.push(...data);
@@ -57,8 +38,7 @@ async function paginate(token, endpoint, qs = {}) {
57
38
  return results;
58
39
  }
59
40
  function registerCrud(rl, resource, endpoint, opts) {
60
- const cap = resource.charAt(0).toUpperCase() + resource.slice(1);
61
- const updateMethod = opts?.updateMethod ?? "PATCH";
41
+ const updateMethod = (opts?.updateMethod ?? "PATCH");
62
42
  rl.registerAction(`${resource}.create`, {
63
43
  access: "write",
64
44
  description: `Create a ${resource}`,
@@ -71,8 +51,7 @@ function registerCrud(rl, resource, endpoint, opts) {
71
51
  ...(opts?.extraCreate ?? {}),
72
52
  },
73
53
  async execute(input, ctx) {
74
- const t = getConn(ctx);
75
- return api(t, "POST", endpoint, input.data);
54
+ return api(ctx, "POST", endpoint, input.data);
76
55
  },
77
56
  });
78
57
  rl.registerAction(`${resource}.get`, {
@@ -80,8 +59,7 @@ function registerCrud(rl, resource, endpoint, opts) {
80
59
  description: `Get a ${resource}`,
81
60
  inputSchema: { id: { type: "number", required: true } },
82
61
  async execute(input, ctx) {
83
- const t = getConn(ctx);
84
- return api(t, "GET", `${endpoint}/${input.id}`);
62
+ return api(ctx, "GET", `${endpoint}/${pathSegment(input.id)}`);
85
63
  },
86
64
  });
87
65
  rl.registerAction(`${resource}.list`, {
@@ -92,16 +70,15 @@ function registerCrud(rl, resource, endpoint, opts) {
92
70
  filterId: { type: "number", required: false },
93
71
  },
94
72
  async execute(input, ctx) {
95
- const t = getConn(ctx);
96
73
  const p = (input ?? {});
97
74
  const qs = {};
98
75
  if (p.filterId)
99
76
  qs.filter_id = p.filterId;
100
77
  if (p.limit) {
101
78
  qs.limit = p.limit;
102
- return api(t, "GET", endpoint, undefined, qs);
79
+ return api(ctx, "GET", endpoint, undefined, qs);
103
80
  }
104
- return paginate(t, endpoint, qs);
81
+ return paginate(ctx, endpoint, qs);
105
82
  },
106
83
  });
107
84
  rl.registerAction(`${resource}.update`, {
@@ -113,9 +90,8 @@ function registerCrud(rl, resource, endpoint, opts) {
113
90
  ...(opts?.extraUpdate ?? {}),
114
91
  },
115
92
  async execute(input, ctx) {
116
- const t = getConn(ctx);
117
93
  const p = input;
118
- return api(t, updateMethod, `${endpoint}/${p.id}`, p.data);
94
+ return api(ctx, updateMethod, `${endpoint}/${pathSegment(p.id)}`, p.data);
119
95
  },
120
96
  });
121
97
  rl.registerAction(`${resource}.delete`, {
@@ -123,8 +99,7 @@ function registerCrud(rl, resource, endpoint, opts) {
123
99
  description: `Delete a ${resource}`,
124
100
  inputSchema: { id: { type: "number", required: true } },
125
101
  async execute(input, ctx) {
126
- const t = getConn(ctx);
127
- await api(t, "DELETE", `${endpoint}/${input.id}`);
102
+ await api(ctx, "DELETE", `${endpoint}/${pathSegment(input.id)}`);
128
103
  return { success: true };
129
104
  },
130
105
  });
@@ -143,7 +118,6 @@ function registerCrud(rl, resource, endpoint, opts) {
143
118
  },
144
119
  },
145
120
  async execute(input, ctx) {
146
- const t = getConn(ctx);
147
121
  const p = input;
148
122
  const qs = { term: p.term };
149
123
  if (p.exactMatch)
@@ -153,7 +127,7 @@ function registerCrud(rl, resource, endpoint, opts) {
153
127
  if (p.fields)
154
128
  qs.fields = p.fields;
155
129
  // Search uses v1 API
156
- const res = (await api(t, "GET", `${endpoint}/search`, undefined, qs, "v1"));
130
+ const res = (await api(ctx, "GET", `${endpoint}/search`, undefined, qs, "v1"));
157
131
  if (Array.isArray(res))
158
132
  return res.map((r) => r.item ?? r);
159
133
  return res;
@@ -166,8 +140,7 @@ function registerCrud(rl, resource, endpoint, opts) {
166
140
  description: `Duplicate a ${resource}`,
167
141
  inputSchema: { id: { type: "number", required: true } },
168
142
  async execute(input, ctx) {
169
- const t = getConn(ctx);
170
- return api(t, "POST", `${endpoint}/${input.id}/duplicate`);
143
+ return api(ctx, "POST", `${endpoint}/${pathSegment(input.id)}/duplicate`);
171
144
  },
172
145
  });
173
146
  }
@@ -175,6 +148,7 @@ function registerCrud(rl, resource, endpoint, opts) {
175
148
  export default function pipedrive(rl) {
176
149
  rl.setName("pipedrive");
177
150
  rl.setVersion("0.1.0");
151
+ rl.setCredential(pipedriveCredential);
178
152
  rl.setConnectionSchema({
179
153
  apiToken: {
180
154
  type: "string",
@@ -184,9 +158,9 @@ export default function pipedrive(rl) {
184
158
  },
185
159
  });
186
160
  // ── Activity ────────────────────────────────────────
187
- registerCrud(rl, "activity", "/activities");
161
+ registerCrud(rl, "activity", "activities");
188
162
  // ── Deal ────────────────────────────────────────────
189
- registerCrud(rl, "deal", "/deals", { hasSearch: true, hasDuplicate: true });
163
+ registerCrud(rl, "deal", "deals", { hasSearch: true, hasDuplicate: true });
190
164
  // ── Deal Product ────────────────────────────────────
191
165
  rl.registerAction("dealProduct.add", {
192
166
  access: "write",
@@ -205,9 +179,8 @@ export default function pipedrive(rl) {
205
179
  comments: { type: "string", required: false },
206
180
  },
207
181
  async execute(input, ctx) {
208
- const t = getConn(ctx);
209
182
  const { dealId, ...body } = input;
210
- return api(t, "POST", `/deals/${dealId}/products`, {
183
+ return api(ctx, "POST", `deals/${pathSegment(dealId)}/products`, {
211
184
  product_id: body.productId,
212
185
  item_price: body.itemPrice,
213
186
  quantity: body.quantity,
@@ -225,12 +198,11 @@ export default function pipedrive(rl) {
225
198
  limit: { type: "number", required: false },
226
199
  },
227
200
  async execute(input, ctx) {
228
- const t = getConn(ctx);
229
201
  const p = input;
230
202
  const qs = {};
231
203
  if (p.limit)
232
204
  qs.limit = p.limit;
233
- return api(t, "GET", `/deals/${p.dealId}/products`, undefined, qs);
205
+ return api(ctx, "GET", `deals/${pathSegment(p.dealId)}/products`, undefined, qs);
234
206
  },
235
207
  });
236
208
  rl.registerAction("dealProduct.update", {
@@ -242,9 +214,8 @@ export default function pipedrive(rl) {
242
214
  data: { type: "object", required: true },
243
215
  },
244
216
  async execute(input, ctx) {
245
- const t = getConn(ctx);
246
217
  const p = input;
247
- return api(t, "PATCH", `/deals/${p.dealId}/products/${p.productAttachmentId}`, p.data);
218
+ return api(ctx, "PATCH", `deals/${pathSegment(p.dealId)}/products/${pathSegment(p.productAttachmentId)}`, p.data);
248
219
  },
249
220
  });
250
221
  rl.registerAction("dealProduct.remove", {
@@ -255,9 +226,8 @@ export default function pipedrive(rl) {
255
226
  productAttachmentId: { type: "number", required: true },
256
227
  },
257
228
  async execute(input, ctx) {
258
- const t = getConn(ctx);
259
229
  const p = input;
260
- await api(t, "DELETE", `/deals/${p.dealId}/products/${p.productAttachmentId}`);
230
+ await api(ctx, "DELETE", `deals/${pathSegment(p.dealId)}/products/${pathSegment(p.productAttachmentId)}`);
261
231
  return { success: true };
262
232
  },
263
233
  });
@@ -267,7 +237,7 @@ export default function pipedrive(rl) {
267
237
  description: "Get file metadata",
268
238
  inputSchema: { id: { type: "number", required: true } },
269
239
  async execute(input, ctx) {
270
- return api(getConn(ctx), "GET", `/files/${input.id}`, undefined, undefined, "v1");
240
+ return api(ctx, "GET", `files/${pathSegment(input.id)}`, undefined, undefined, "v1");
271
241
  },
272
242
  });
273
243
  rl.registerAction("file.delete", {
@@ -275,7 +245,7 @@ export default function pipedrive(rl) {
275
245
  description: "Delete a file",
276
246
  inputSchema: { id: { type: "number", required: true } },
277
247
  async execute(input, ctx) {
278
- await api(getConn(ctx), "DELETE", `/files/${input.id}`, undefined, undefined, "v1");
248
+ await api(ctx, "DELETE", `files/${pathSegment(input.id)}`, undefined, undefined, "v1");
279
249
  return { success: true };
280
250
  },
281
251
  });
@@ -289,17 +259,17 @@ export default function pipedrive(rl) {
289
259
  },
290
260
  async execute(input, ctx) {
291
261
  const { id, ...body } = input;
292
- return api(getConn(ctx), "PUT", `/files/${id}`, body, undefined, "v1");
262
+ return api(ctx, "PUT", `files/${pathSegment(id)}`, body, undefined, "v1");
293
263
  },
294
264
  });
295
265
  // ── Lead ────────────────────────────────────────────
296
- registerCrud(rl, "lead", "/leads");
266
+ registerCrud(rl, "lead", "leads");
297
267
  // ── Note ────────────────────────────────────────────
298
- registerCrud(rl, "note", "/notes");
268
+ registerCrud(rl, "note", "notes");
299
269
  // ── Organization ────────────────────────────────────
300
- registerCrud(rl, "organization", "/organizations", { hasSearch: true });
270
+ registerCrud(rl, "organization", "organizations", { hasSearch: true });
301
271
  // ── Person ──────────────────────────────────────────
302
- registerCrud(rl, "person", "/persons", { hasSearch: true });
272
+ registerCrud(rl, "person", "persons", { hasSearch: true });
303
273
  // ── Product ─────────────────────────────────────────
304
- registerCrud(rl, "product", "/products", { hasSearch: true });
274
+ registerCrud(rl, "product", "products", { hasSearch: true });
305
275
  }
@@ -1,5 +1,5 @@
1
1
  import * as t from "typebox";
2
- import { blockContent, blocks, dateBoundary, list, PLAUD_OAUTH, PLAUD_PUBLIC_CLIENT_ID, PLAUD_REDIRECT_URI, recording, request, scan, } from "./shared.js";
2
+ import { blockContent, blocks, dateBoundary, list, PLAUD_OAUTH, PLAUD_PUBLIC_CLIENT_ID, PLAUD_REDIRECT_URI, plaudCredential, recording, request, scan, } from "./shared.js";
3
3
  const strict = { additionalProperties: false };
4
4
  const Id = t.String({ minLength: 1, maxLength: 512 });
5
5
  const RecordingInput = t.Object({ id: Id }, strict);
@@ -43,6 +43,7 @@ const SummaryInput = t.Object({ id: Id, index: t.Optional(t.Integer({ minimum: 0
43
43
  export default function plaud(rl) {
44
44
  rl.setName("plaud");
45
45
  rl.setVersion("0.1.0");
46
+ rl.setCredential(plaudCredential);
46
47
  rl.setOAuth({
47
48
  protocol: PLAUD_OAUTH,
48
49
  scopes: [],
@@ -1,6 +1,5 @@
1
- import { AuthError, downloadResource, OAuthGrantSchema, } from "runline";
2
- import * as t from "typebox";
3
- import { credentialRuntime } from "../../_shared/credentialAdapter.js";
1
+ import { AuthError, downloadResource, } from "runline";
2
+ import { credentialOk, grantSchema, pathSegment, } from "../../_shared/credentials.js";
4
3
  const BASE = "https://platform.plaud.ai/developer/api";
5
4
  /** Public client identifier and fixed callback published in Plaud's official CLI. */
6
5
  export const PLAUD_PUBLIC_CLIENT_ID = "client_f9e0b214-c11f-434b-8b95-c4497d1feb81";
@@ -27,10 +26,10 @@ export const PLAUD_CREDENTIAL = {
27
26
  id: "plaud",
28
27
  methods: {
29
28
  oauth2: {
30
- schema: t.Object({ grant: t.Optional(OAuthGrantSchema) }, { additionalProperties: false }),
29
+ schema: grantSchema,
31
30
  authentication: {
32
31
  kind: "oauth2",
33
- grantField: "grant",
32
+ field: "grant",
34
33
  definition: PLAUD_OAUTH,
35
34
  renewal: "refresh",
36
35
  },
@@ -46,34 +45,39 @@ export const PLAUD_CREDENTIAL = {
46
45
  },
47
46
  },
48
47
  };
49
- export function plaudRuntime(ctx) {
50
- return credentialRuntime(ctx, PLAUD_CREDENTIAL, "oauth2", (config) => [
51
- config.clientId,
52
- ]);
53
- }
48
+ /** Plaud signs one way: its public client's OAuth grant. */
49
+ export const plaudCredential = (config) => ({
50
+ type: PLAUD_CREDENTIAL,
51
+ method: "oauth2",
52
+ application: { clientId: config.clientId },
53
+ });
54
54
  function object(value) {
55
55
  if (!value || typeof value !== "object" || Array.isArray(value))
56
56
  throw new AuthError("invalid_response");
57
57
  return value;
58
58
  }
59
- export async function request(ctx, path) {
60
- const { binding, transport } = plaudRuntime(ctx);
61
- const response = await transport.request(binding, { target: "api", path });
62
- if (!response.ok)
63
- throw new Error(`plaud: request failed (HTTP ${response.status})`);
59
+ /** Every Plaud answer is one JSON object; anything else, empty included, is invalid_response. */
60
+ export async function request(ctx, path, query) {
61
+ const response = await credentialOk(ctx, plaudCredential, "plaud", {
62
+ target: "api",
63
+ path,
64
+ query,
65
+ });
64
66
  try {
65
- return object(await response.json());
67
+ return object(JSON.parse(await response.text()));
66
68
  }
67
69
  catch {
68
70
  throw new AuthError("invalid_response");
69
71
  }
70
72
  }
71
73
  export async function recording(ctx, id) {
72
- // Encoding protects separators/query injection; the transport also rejects traversal.
73
- return request(ctx, `files/${encodeURIComponent(id)}`);
74
+ return request(ctx, `files/${pathSegment(id)}`);
74
75
  }
75
76
  export async function list(ctx, page, pageSize) {
76
- const result = await request(ctx, `files/?${new URLSearchParams({ page: String(page), page_size: String(pageSize) })}`);
77
+ const result = await request(ctx, "files/", {
78
+ page,
79
+ page_size: pageSize,
80
+ });
77
81
  if (!Array.isArray(result.data) || result.data.length > pageSize)
78
82
  throw new AuthError("invalid_response");
79
83
  const data = result.data.map(object);
@@ -0,0 +1,20 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * The auth ID and token: the ID is both the Basic username and the account
4
+ * segment of every path, so one stored part serves both.
5
+ */
6
+ export const plivoCredential = staticCredential({
7
+ id: "plivo",
8
+ auth: {
9
+ kind: "static",
10
+ parts: ["authId", "authToken"],
11
+ placements: [
12
+ { in: "path", part: "authId" },
13
+ { in: "basic", username: "authId", password: "authToken" },
14
+ ],
15
+ },
16
+ local: { authId: "authId", authToken: "authToken" },
17
+ targets: {
18
+ api: { baseUrl: "https://api.plivo.com/v1/Account/", methods: ["POST"] },
19
+ },
20
+ });