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,36 +1,22 @@
1
- async function apiRequest(appId, apiKey, method, path, body, qs) {
2
- const url = new URL(`https://api.adalo.com/v0/apps/${appId}${path}`);
3
- if (qs) {
4
- for (const [k, v] of Object.entries(qs)) {
5
- if (v !== undefined)
6
- url.searchParams.set(k, String(v));
7
- }
8
- }
9
- const opts = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { adaloCredential } from "./credentials.js";
3
+ /** A path beneath the connection's app, signed through the credential. */
4
+ function apiRequest(ctx, method, path, body, query) {
5
+ const appId = pathSegment(ctx.connection.config.appId);
6
+ return credentialJson(ctx, adaloCredential, "adalo", {
7
+ target: "api",
8
+ path: `${appId}/${path}`,
10
9
  method,
11
- headers: {
12
- "Content-Type": "application/json",
13
- Authorization: `Bearer ${apiKey}`,
14
- },
15
- };
16
- if (body && Object.keys(body).length > 0) {
17
- opts.body = JSON.stringify(body);
18
- }
19
- const res = await fetch(url.toString(), opts);
20
- if (!res.ok) {
21
- const text = await res.text();
22
- throw new Error(`Adalo API error ${res.status}: ${text}`);
23
- }
24
- if (res.status === 204)
25
- return { success: true };
26
- return res.json();
10
+ query,
11
+ ...(body && Object.keys(body).length > 0 ? { json: body } : {}),
12
+ });
27
13
  }
28
- async function paginate(appId, apiKey, collectionId, limit) {
14
+ async function paginate(ctx, collectionId, limit) {
29
15
  const results = [];
30
16
  let offset = 0;
31
17
  const pageSize = 100;
32
18
  while (true) {
33
- const data = (await apiRequest(appId, apiKey, "GET", `/collections/${collectionId}`, undefined, {
19
+ const data = (await apiRequest(ctx, "GET", `collections/${pathSegment(collectionId)}`, undefined, {
34
20
  limit: pageSize,
35
21
  offset,
36
22
  }));
@@ -44,15 +30,10 @@ async function paginate(appId, apiKey, collectionId, limit) {
44
30
  }
45
31
  return results;
46
32
  }
47
- function getConn(ctx) {
48
- return {
49
- appId: ctx.connection.config.appId,
50
- apiKey: ctx.connection.config.apiKey,
51
- };
52
- }
53
33
  export default function adalo(rl) {
54
34
  rl.setName("adalo");
55
35
  rl.setVersion("0.1.0");
36
+ rl.setCredential(adaloCredential);
56
37
  rl.setConnectionSchema({
57
38
  appId: {
58
39
  type: "string",
@@ -84,8 +65,7 @@ export default function adalo(rl) {
84
65
  },
85
66
  async execute(input, ctx) {
86
67
  const { collectionId, fields } = input;
87
- const { appId, apiKey } = getConn(ctx);
88
- return apiRequest(appId, apiKey, "POST", `/collections/${collectionId}`, fields);
68
+ return apiRequest(ctx, "POST", `collections/${pathSegment(collectionId)}`, fields);
89
69
  },
90
70
  });
91
71
  rl.registerAction("collection.get", {
@@ -101,8 +81,7 @@ export default function adalo(rl) {
101
81
  },
102
82
  async execute(input, ctx) {
103
83
  const { collectionId, rowId } = input;
104
- const { appId, apiKey } = getConn(ctx);
105
- return apiRequest(appId, apiKey, "GET", `/collections/${collectionId}/${rowId}`);
84
+ return apiRequest(ctx, "GET", `collections/${pathSegment(collectionId)}/${pathSegment(rowId)}`);
106
85
  },
107
86
  });
108
87
  rl.registerAction("collection.list", {
@@ -122,8 +101,7 @@ export default function adalo(rl) {
122
101
  },
123
102
  async execute(input, ctx) {
124
103
  const { collectionId, limit } = input;
125
- const { appId, apiKey } = getConn(ctx);
126
- return paginate(appId, apiKey, collectionId, limit);
104
+ return paginate(ctx, collectionId, limit);
127
105
  },
128
106
  });
129
107
  rl.registerAction("collection.update", {
@@ -144,8 +122,7 @@ export default function adalo(rl) {
144
122
  },
145
123
  async execute(input, ctx) {
146
124
  const { collectionId, rowId, fields } = input;
147
- const { appId, apiKey } = getConn(ctx);
148
- return apiRequest(appId, apiKey, "PUT", `/collections/${collectionId}/${rowId}`, fields);
125
+ return apiRequest(ctx, "PUT", `collections/${pathSegment(collectionId)}/${pathSegment(rowId)}`, fields);
149
126
  },
150
127
  });
151
128
  rl.registerAction("collection.delete", {
@@ -161,8 +138,7 @@ export default function adalo(rl) {
161
138
  },
162
139
  async execute(input, ctx) {
163
140
  const { collectionId, rowId } = input;
164
- const { appId, apiKey } = getConn(ctx);
165
- return apiRequest(appId, apiKey, "DELETE", `/collections/${collectionId}/${rowId}`);
141
+ return apiRequest(ctx, "DELETE", `collections/${pathSegment(collectionId)}/${pathSegment(rowId)}`);
166
142
  },
167
143
  });
168
144
  }
@@ -0,0 +1,19 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** An API key as the Basic password, with an empty username, to Affinity's one origin. */
3
+ export const affinityCredential = staticCredential({
4
+ id: "affinity",
5
+ auth: { kind: "basic" },
6
+ local: { username: { value: "" }, password: "apiKey" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://api.affinity.co/",
10
+ methods: ["GET", "POST", "PUT", "DELETE"],
11
+ },
12
+ },
13
+ probe: {
14
+ target: "api",
15
+ path: "auth/whoami",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });
@@ -1,39 +1,22 @@
1
- const BASE_URL = "https://api.affinity.co";
2
- async function apiRequest(apiKey, method, path, body, qs) {
3
- const url = new URL(`${BASE_URL}${path}`);
4
- if (qs) {
5
- for (const [k, v] of Object.entries(qs)) {
6
- if (v !== undefined)
7
- url.searchParams.set(k, String(v));
8
- }
9
- }
10
- const opts = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { affinityCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body, qs) {
4
+ return credentialJson(ctx, affinityCredential, "affinity", {
5
+ target: "api",
6
+ path,
11
7
  method,
12
- headers: {
13
- "Content-Type": "application/json",
14
- Authorization: `Basic ${btoa(`:${apiKey}`)}`,
15
- },
16
- };
17
- if (body && Object.keys(body).length > 0) {
18
- opts.body = JSON.stringify(body);
19
- }
20
- const res = await fetch(url.toString(), opts);
21
- if (!res.ok) {
22
- const text = await res.text();
23
- throw new Error(`Affinity API error ${res.status}: ${text}`);
24
- }
25
- if (res.status === 204)
26
- return { success: true };
27
- return res.json();
8
+ query: qs,
9
+ ...(body && Object.keys(body).length > 0 ? { json: body } : {}),
10
+ });
28
11
  }
29
- async function paginateAll(apiKey, path, dataKey, limit) {
12
+ async function paginateAll(ctx, path, dataKey, limit, extraQuery) {
30
13
  const results = [];
31
14
  let pageToken;
32
15
  while (true) {
33
- const qs = { page_size: 500 };
16
+ const qs = { ...extraQuery, page_size: 500 };
34
17
  if (pageToken)
35
18
  qs.page_token = pageToken;
36
- const data = (await apiRequest(apiKey, "GET", path, undefined, qs));
19
+ const data = (await apiRequest(ctx, "GET", path, undefined, qs));
37
20
  const items = data[dataKey] ?? [];
38
21
  results.push(...items);
39
22
  if (limit && results.length >= limit)
@@ -44,12 +27,10 @@ async function paginateAll(apiKey, path, dataKey, limit) {
44
27
  }
45
28
  return results;
46
29
  }
47
- function getKey(ctx) {
48
- return ctx.connection.config.apiKey;
49
- }
50
30
  export default function affinity(rl) {
51
31
  rl.setName("affinity");
52
32
  rl.setVersion("0.1.0");
33
+ rl.setCredential(affinityCredential);
53
34
  rl.setConnectionSchema({
54
35
  apiKey: {
55
36
  type: "string",
@@ -67,7 +48,7 @@ export default function affinity(rl) {
67
48
  },
68
49
  async execute(input, ctx) {
69
50
  const { listId } = input;
70
- return apiRequest(getKey(ctx), "GET", `/lists/${listId}`);
51
+ return apiRequest(ctx, "GET", `lists/${pathSegment(listId)}`);
71
52
  },
72
53
  });
73
54
  rl.registerAction("list.list", {
@@ -82,7 +63,7 @@ export default function affinity(rl) {
82
63
  },
83
64
  async execute(input, ctx) {
84
65
  const { limit } = input ?? {};
85
- const data = (await apiRequest(getKey(ctx), "GET", "/lists"));
66
+ const data = (await apiRequest(ctx, "GET", "lists"));
86
67
  if (limit)
87
68
  return data.slice(0, limit);
88
69
  return data;
@@ -102,7 +83,7 @@ export default function affinity(rl) {
102
83
  },
103
84
  async execute(input, ctx) {
104
85
  const { listId, entityId, ...rest } = input;
105
- return apiRequest(getKey(ctx), "POST", `/lists/${listId}/list-entries`, {
86
+ return apiRequest(ctx, "POST", `lists/${pathSegment(listId)}/list-entries`, {
106
87
  entity_id: entityId,
107
88
  ...rest,
108
89
  });
@@ -121,7 +102,7 @@ export default function affinity(rl) {
121
102
  },
122
103
  async execute(input, ctx) {
123
104
  const { listId, listEntryId } = input;
124
- return apiRequest(getKey(ctx), "GET", `/lists/${listId}/list-entries/${listEntryId}`);
105
+ return apiRequest(ctx, "GET", `lists/${pathSegment(listId)}/list-entries/${pathSegment(listEntryId)}`);
125
106
  },
126
107
  });
127
108
  rl.registerAction("listEntry.list", {
@@ -137,7 +118,7 @@ export default function affinity(rl) {
137
118
  },
138
119
  async execute(input, ctx) {
139
120
  const { listId, limit } = input;
140
- return paginateAll(getKey(ctx), `/lists/${listId}/list-entries`, "list_entries", limit);
121
+ return paginateAll(ctx, `lists/${pathSegment(listId)}/list-entries`, "list_entries", limit);
141
122
  },
142
123
  });
143
124
  rl.registerAction("listEntry.delete", {
@@ -153,7 +134,7 @@ export default function affinity(rl) {
153
134
  },
154
135
  async execute(input, ctx) {
155
136
  const { listId, listEntryId } = input;
156
- return apiRequest(getKey(ctx), "DELETE", `/lists/${listId}/list-entries/${listEntryId}`);
137
+ return apiRequest(ctx, "DELETE", `lists/${pathSegment(listId)}/list-entries/${pathSegment(listEntryId)}`);
157
138
  },
158
139
  });
159
140
  // ── Person ──────────────────────────────────────────
@@ -183,7 +164,7 @@ export default function affinity(rl) {
183
164
  };
184
165
  if (organizationIds)
185
166
  body.organization_ids = organizationIds;
186
- return apiRequest(getKey(ctx), "POST", "/persons", body);
167
+ return apiRequest(ctx, "POST", "persons", body);
187
168
  },
188
169
  });
189
170
  rl.registerAction("person.get", {
@@ -194,7 +175,7 @@ export default function affinity(rl) {
194
175
  },
195
176
  async execute(input, ctx) {
196
177
  const { personId } = input;
197
- return apiRequest(getKey(ctx), "GET", `/persons/${personId}`);
178
+ return apiRequest(ctx, "GET", `persons/${pathSegment(personId)}`);
198
179
  },
199
180
  });
200
181
  rl.registerAction("person.list", {
@@ -210,10 +191,7 @@ export default function affinity(rl) {
210
191
  },
211
192
  async execute(input, ctx) {
212
193
  const { term, limit } = input ?? {};
213
- const qs = {};
214
- if (term)
215
- qs.term = term;
216
- return paginateAll(getKey(ctx), "/persons", "persons", limit);
194
+ return paginateAll(ctx, "persons", "persons", limit, term ? { term } : undefined);
217
195
  },
218
196
  });
219
197
  rl.registerAction("person.update", {
@@ -243,7 +221,7 @@ export default function affinity(rl) {
243
221
  body.last_name = lastName;
244
222
  if (organizationIds)
245
223
  body.organization_ids = organizationIds;
246
- return apiRequest(getKey(ctx), "PUT", `/persons/${personId}`, body);
224
+ return apiRequest(ctx, "PUT", `persons/${pathSegment(personId)}`, body);
247
225
  },
248
226
  });
249
227
  rl.registerAction("person.delete", {
@@ -254,7 +232,7 @@ export default function affinity(rl) {
254
232
  },
255
233
  async execute(input, ctx) {
256
234
  const { personId } = input;
257
- return apiRequest(getKey(ctx), "DELETE", `/persons/${personId}`);
235
+ return apiRequest(ctx, "DELETE", `persons/${pathSegment(personId)}`);
258
236
  },
259
237
  });
260
238
  // ── Organization ────────────────────────────────────
@@ -283,7 +261,7 @@ export default function affinity(rl) {
283
261
  const body = { name, domain };
284
262
  if (personIds)
285
263
  body.person_ids = personIds;
286
- return apiRequest(getKey(ctx), "POST", "/organizations", body);
264
+ return apiRequest(ctx, "POST", "organizations", body);
287
265
  },
288
266
  });
289
267
  rl.registerAction("organization.get", {
@@ -298,7 +276,7 @@ export default function affinity(rl) {
298
276
  },
299
277
  async execute(input, ctx) {
300
278
  const { organizationId } = input;
301
- return apiRequest(getKey(ctx), "GET", `/organizations/${organizationId}`);
279
+ return apiRequest(ctx, "GET", `organizations/${pathSegment(organizationId)}`);
302
280
  },
303
281
  });
304
282
  rl.registerAction("organization.list", {
@@ -314,10 +292,7 @@ export default function affinity(rl) {
314
292
  },
315
293
  async execute(input, ctx) {
316
294
  const { term, limit } = input ?? {};
317
- const qs = {};
318
- if (term)
319
- qs.term = term;
320
- return paginateAll(getKey(ctx), "/organizations", "organizations", limit);
295
+ return paginateAll(ctx, "organizations", "organizations", limit, term ? { term } : undefined);
321
296
  },
322
297
  });
323
298
  rl.registerAction("organization.update", {
@@ -354,7 +329,7 @@ export default function affinity(rl) {
354
329
  body.domain = domain;
355
330
  if (personIds)
356
331
  body.person_ids = personIds;
357
- return apiRequest(getKey(ctx), "PUT", `/organizations/${organizationId}`, body);
332
+ return apiRequest(ctx, "PUT", `organizations/${pathSegment(organizationId)}`, body);
358
333
  },
359
334
  });
360
335
  rl.registerAction("organization.delete", {
@@ -369,7 +344,7 @@ export default function affinity(rl) {
369
344
  },
370
345
  async execute(input, ctx) {
371
346
  const { organizationId } = input;
372
- return apiRequest(getKey(ctx), "DELETE", `/organizations/${organizationId}`);
347
+ return apiRequest(ctx, "DELETE", `organizations/${pathSegment(organizationId)}`);
373
348
  },
374
349
  });
375
350
  }
@@ -0,0 +1,35 @@
1
+ import { configChoice, staticCredential } from "../../_shared/credentials.js";
2
+ const REGIONS = ["us", "eu"];
3
+ const ORIGINS = {
4
+ us: "https://api.agentmail.to/v0/",
5
+ eu: "https://api.agentmail.eu/v0/",
6
+ };
7
+ /**
8
+ * An AgentMail API key, sent as a bearer to the region's one API origin.
9
+ * Sends get their own `send` target: AgentMail deduplicates sends (and only
10
+ * sends) by `Idempotency-Key`, so that is where the contract is declared and
11
+ * the transport sets the header. Inbox and draft creation deduplicate by the
12
+ * body's `client_id` instead and stay on `api`.
13
+ */
14
+ export const agentMailCredential = staticCredential({
15
+ id: "agentMail",
16
+ auth: { kind: "bearer" },
17
+ local: { secret: "apiKey" },
18
+ targets: (config) => {
19
+ const baseUrl = ORIGINS[configChoice(config.region, REGIONS, "us")];
20
+ return {
21
+ api: { baseUrl, methods: ["GET", "POST", "PATCH", "DELETE"] },
22
+ send: {
23
+ baseUrl,
24
+ methods: ["POST"],
25
+ idempotency: { header: "Idempotency-Key", methods: ["POST"] },
26
+ },
27
+ };
28
+ },
29
+ probe: {
30
+ target: "api",
31
+ path: "auth/me",
32
+ method: "GET",
33
+ acceptedStatuses: [200],
34
+ },
35
+ });
@@ -0,0 +1,137 @@
1
+ import * as t from "typebox";
2
+ import { atLeastOne, attachments, clientId, contentFields, draftFields, id, idList, inboxFields, labelFields, listFields, STRICT, sendFields, strings, timestamp, } from "./schemas.js";
3
+ import { attachmentPath, draftPath, inboxPath, request, sendMessage, } from "./shared.js";
4
+ const list = t.Object({ ...inboxFields, ...listFields }, STRICT);
5
+ const draft = t.Object(draftFields, STRICT);
6
+ const attachment = t.Object({ ...draftFields, attachmentId: id }, STRICT);
7
+ const create = t.Object({
8
+ ...inboxFields,
9
+ ...contentFields,
10
+ to: t.Optional(strings),
11
+ cc: t.Optional(strings),
12
+ bcc: t.Optional(strings),
13
+ replyTo: t.Optional(strings),
14
+ subject: t.Optional(t.String()),
15
+ labels: t.Optional(strings),
16
+ inReplyTo: t.Optional(id),
17
+ forwardOf: t.Optional(id),
18
+ replyAll: t.Optional(t.Boolean()),
19
+ sendAt: t.Optional(timestamp),
20
+ clientId: t.Optional(clientId),
21
+ }, {
22
+ ...STRICT,
23
+ allOf: [
24
+ // A draft replies or forwards, never both.
25
+ { not: { required: ["inReplyTo", "forwardOf"] } },
26
+ // replyAll: true derives every recipient from the message it replies to.
27
+ {
28
+ anyOf: [
29
+ {
30
+ not: {
31
+ required: ["replyAll"],
32
+ properties: { replyAll: { const: true } },
33
+ },
34
+ },
35
+ {
36
+ required: ["inReplyTo"],
37
+ not: {
38
+ anyOf: [
39
+ { required: ["to"] },
40
+ { required: ["cc"] },
41
+ { required: ["bcc"] },
42
+ ],
43
+ },
44
+ },
45
+ ],
46
+ },
47
+ ],
48
+ });
49
+ const nullable = (schema) => t.Optional(t.Union([schema, t.Null()]));
50
+ const changes = {
51
+ ...labelFields,
52
+ to: nullable(strings),
53
+ cc: nullable(strings),
54
+ bcc: nullable(strings),
55
+ replyTo: nullable(strings),
56
+ subject: nullable(t.String()),
57
+ text: nullable(t.String()),
58
+ html: nullable(t.String()),
59
+ sendAt: nullable(timestamp),
60
+ addAttachments: t.Optional(attachments),
61
+ removeAttachments: t.Optional(idList),
62
+ };
63
+ const update = t.Object({ ...draftFields, ...changes }, { ...STRICT, ...atLeastOne(changes) });
64
+ const send = t.Object({ ...draftFields, ...labelFields, ...sendFields }, STRICT);
65
+ export function registerDraftActions(rl) {
66
+ rl.registerAction("draft.list", {
67
+ access: "read",
68
+ description: "List one page of inbox drafts, preserving next_page_token. Includes optional label and timestamp filters.",
69
+ inputSchema: list,
70
+ execute: (input, ctx) => {
71
+ const { inboxId, ...query } = input;
72
+ return request(ctx, `${inboxPath(inboxId)}/drafts`, { query });
73
+ },
74
+ });
75
+ rl.registerAction("draft.get", {
76
+ access: "read",
77
+ description: "Get a draft for review before sending.",
78
+ inputSchema: draft,
79
+ execute: (input, ctx) => {
80
+ const p = input;
81
+ return request(ctx, draftPath(p.inboxId, p.draftId));
82
+ },
83
+ });
84
+ rl.registerAction("draft.create", {
85
+ access: "write",
86
+ description: "Create a draft for review, or schedule automatic delivery with sendAt. Empty drafts are valid. inReplyTo and forwardOf are mutually exclusive; replyAll requires inReplyTo and no recipient overrides. Use clientId for retry-safe creation.",
87
+ inputSchema: create,
88
+ execute: (input, ctx) => {
89
+ const { inboxId, ...body } = input;
90
+ return request(ctx, `${inboxPath(inboxId)}/drafts`, {
91
+ method: "POST",
92
+ body,
93
+ });
94
+ },
95
+ });
96
+ rl.registerAction("draft.update", {
97
+ access: "write",
98
+ description: "Edit a draft without changing its kind. Omitted fields stay unchanged; null or [] clears recipients. sendAt schedules/reschedules automatic delivery; null cancels scheduling. Attachments use addAttachments/removeAttachments.",
99
+ inputSchema: update,
100
+ execute: (input, ctx) => {
101
+ const { inboxId, draftId, ...body } = input;
102
+ return request(ctx, draftPath(inboxId, draftId), {
103
+ method: "PATCH",
104
+ body,
105
+ });
106
+ },
107
+ });
108
+ rl.registerAction("draft.delete", {
109
+ access: "write",
110
+ description: "Delete a draft rather than sending it.",
111
+ inputSchema: draft,
112
+ execute: (input, ctx) => {
113
+ const p = input;
114
+ return request(ctx, draftPath(p.inboxId, p.draftId), {
115
+ method: "DELETE",
116
+ });
117
+ },
118
+ });
119
+ rl.registerAction("draft.send", {
120
+ access: "write",
121
+ description: "Send an existing draft now. Returns message_id and thread_id. No automatic retries; supply idempotencyKey for retries of the identical send within 24 hours.",
122
+ inputSchema: send,
123
+ execute: (input, ctx) => {
124
+ const { inboxId, draftId, idempotencyKey, ...body } = input;
125
+ return sendMessage(ctx, `${draftPath(inboxId, draftId)}/send`, body, idempotencyKey);
126
+ },
127
+ });
128
+ rl.registerAction("draft.attachment", {
129
+ access: "read",
130
+ description: "Get draft attachment metadata and a temporary download_url (plus text_url when text was extracted), without fetching them. Treat the URLs as private.",
131
+ inputSchema: attachment,
132
+ execute: (input, ctx) => {
133
+ const p = input;
134
+ return request(ctx, attachmentPath(draftPath(p.inboxId, p.draftId), p.attachmentId));
135
+ },
136
+ });
137
+ }
@@ -0,0 +1,95 @@
1
+ import * as t from "typebox";
2
+ import { atLeastOne, clientId, id, inboxFields, pageFields, STRICT, } from "./schemas.js";
3
+ import { inboxPath, request } from "./shared.js";
4
+ const metadataValue = t.Union([
5
+ t.String({ maxLength: 256 }),
6
+ t.Number(),
7
+ t.Boolean(),
8
+ ]);
9
+ const metadataKey = t.String({ maxLength: 256 });
10
+ const metadataOptions = { maxProperties: 256, propertyNames: metadataKey };
11
+ const status = t.Union([t.Literal("active"), t.Literal("paused")], {
12
+ description: "paused stops sending and receiving: sends fail with 403 inbox_paused and incoming mail is neither delivered nor bounced, then or on resume. Stored mail, drafts and API keys are kept; set active to resume.",
13
+ });
14
+ const list = t.Object({ ...pageFields, ascending: t.Optional(t.Boolean()) }, STRICT);
15
+ const search = t.Object({
16
+ ...pageFields,
17
+ query: t.String({
18
+ ...id,
19
+ description: "Words matching the start of words in the address or display name (sup matches support@…, port does not). An exact address ranks first.",
20
+ }),
21
+ }, STRICT);
22
+ const inbox = t.Object(inboxFields, STRICT);
23
+ const create = t.Object({
24
+ username: t.Optional(id),
25
+ domain: t.Optional(t.String({
26
+ ...id,
27
+ description: "Verified custom domain; defaults to agentmail.to.",
28
+ })),
29
+ displayName: t.Optional(t.String()),
30
+ status: t.Optional(status),
31
+ clientId: t.Optional(clientId),
32
+ metadata: t.Optional(t.Record(t.String(), metadataValue, metadataOptions)),
33
+ }, STRICT);
34
+ const changes = {
35
+ displayName: t.Optional(t.String()),
36
+ status: t.Optional(status),
37
+ metadata: t.Optional(t.Union([
38
+ t.Record(t.String(), t.Union([metadataValue, t.Null()]), {
39
+ ...metadataOptions,
40
+ minProperties: 1,
41
+ }),
42
+ t.Null(),
43
+ ], {
44
+ description: "Merge keys; null values delete keys, metadata: null clears all. Omitted keys stay unchanged.",
45
+ })),
46
+ };
47
+ const update = t.Object({ ...inboxFields, ...changes }, { ...STRICT, ...atLeastOne(changes) });
48
+ export function registerInboxActions(rl) {
49
+ rl.registerAction("inbox.list", {
50
+ access: "read",
51
+ description: "List one page of inboxes. Preserves next_page_token; pass it as pageToken for the next page.",
52
+ inputSchema: list,
53
+ execute: (input, ctx) => request(ctx, "inboxes", { query: input }),
54
+ });
55
+ rl.registerAction("inbox.search", {
56
+ access: "read",
57
+ description: "Search inboxes by address or display name, ranked by relevance. A page can be empty and still carry next_page_token; keep paging until it is absent.",
58
+ inputSchema: search,
59
+ execute: (input, ctx) => request(ctx, "inboxes/search", {
60
+ query: input,
61
+ }),
62
+ });
63
+ rl.registerAction("inbox.get", {
64
+ access: "read",
65
+ description: "Get an inbox: its email address, status and metadata.",
66
+ inputSchema: inbox,
67
+ execute: (input, ctx) => request(ctx, inboxPath(input.inboxId)),
68
+ });
69
+ rl.registerAction("inbox.create", {
70
+ access: "write",
71
+ description: "Create an email inbox. Omit username for a random address; use clientId to avoid duplicates when retrying.",
72
+ inputSchema: create,
73
+ execute: (input, ctx) => request(ctx, "inboxes", {
74
+ method: "POST",
75
+ body: input,
76
+ }),
77
+ });
78
+ rl.registerAction("inbox.update", {
79
+ access: "write",
80
+ description: "Update display name, pause or resume (status), or merge metadata. Requires at least one change; metadata supports explicit null clearing.",
81
+ inputSchema: update,
82
+ execute: (input, ctx) => {
83
+ const { inboxId, ...body } = input;
84
+ return request(ctx, inboxPath(inboxId), { method: "PATCH", body });
85
+ },
86
+ });
87
+ rl.registerAction("inbox.delete", {
88
+ access: "write",
89
+ description: "Delete an inbox. Destructive; confirm the inbox ID before calling. To stop mail without deleting, set status to paused with inbox.update.",
90
+ inputSchema: inbox,
91
+ execute: (input, ctx) => request(ctx, inboxPath(input.inboxId), {
92
+ method: "DELETE",
93
+ }),
94
+ });
95
+ }
@@ -0,0 +1,35 @@
1
+ import * as t from "typebox";
2
+ import { agentMailCredential } from "./credentials.js";
3
+ import { registerDraftActions } from "./drafts.js";
4
+ import { registerInboxActions } from "./inboxes.js";
5
+ import { registerMessageActions } from "./messages.js";
6
+ import { STRICT } from "./schemas.js";
7
+ import { request } from "./shared.js";
8
+ import { registerThreadActions } from "./threads.js";
9
+ export default function agentMail(rl) {
10
+ rl.setName("agentMail");
11
+ rl.setVersion("0.1.0");
12
+ rl.setCredential(agentMailCredential);
13
+ rl.setConnectionSchema(t.Object({
14
+ apiKey: t.String({
15
+ minLength: 1,
16
+ env: "AGENTMAIL_API_KEY",
17
+ description: "AgentMail API key with permissions for the requested inboxes and operations. https://console.agentmail.to",
18
+ }),
19
+ region: t.Optional(t.String({
20
+ env: "AGENTMAIL_REGION",
21
+ default: "us",
22
+ description: "us (api.agentmail.to, default) or eu (api.agentmail.eu). Any other value is refused rather than sent to the default host.",
23
+ })),
24
+ }));
25
+ rl.registerAction("whoami", {
26
+ access: "read",
27
+ description: "Read the authenticated AgentMail identity and API-key scope.",
28
+ inputSchema: t.Object({}, STRICT),
29
+ execute: (_input, ctx) => request(ctx, "auth/me"),
30
+ });
31
+ registerInboxActions(rl);
32
+ registerMessageActions(rl);
33
+ registerThreadActions(rl);
34
+ registerDraftActions(rl);
35
+ }