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,54 +1,31 @@
1
- const BASE_URL = "https://app.asana.com/api/1.0";
2
- async function apiRequest(token, method, endpoint, body, qs) {
3
- const url = new URL(`${BASE_URL}${endpoint}`);
4
- if (qs) {
5
- for (const [k, v] of Object.entries(qs)) {
6
- if (v !== undefined)
7
- url.searchParams.set(k, String(v));
8
- }
9
- }
10
- const opts = {
1
+ import { credentialJson, pathSegment, pathWithin, } from "../../_shared/credentials.js";
2
+ import { asanaCredential } from "./credentials.js";
3
+ async function apiRequest(ctx, method, path, body, qs) {
4
+ const json = (await credentialJson(ctx, asanaCredential, "asana", {
5
+ target: "api",
6
+ path,
11
7
  method,
12
- headers: {
13
- "Content-Type": "application/json",
14
- Authorization: `Bearer ${token}`,
15
- },
16
- };
17
- if (body &&
18
- Object.keys(body).length > 0 &&
19
- method !== "GET" &&
20
- method !== "DELETE") {
21
- opts.body = JSON.stringify({ data: body });
22
- }
23
- const res = await fetch(url.toString(), opts);
24
- if (!res.ok) {
25
- const text = await res.text();
26
- throw new Error(`Asana API error ${res.status}: ${text}`);
27
- }
28
- if (res.status === 204)
29
- return { success: true };
30
- const json = (await res.json());
8
+ query: qs,
9
+ ...(body &&
10
+ Object.keys(body).length > 0 &&
11
+ method !== "GET" &&
12
+ method !== "DELETE"
13
+ ? { json: { data: body } }
14
+ : {}),
15
+ }));
31
16
  return json.data ?? json;
32
17
  }
33
- async function paginateAll(token, endpoint, qs, limit) {
18
+ async function paginateAll(ctx, path, qs, limit) {
34
19
  const results = [];
35
- const _qs = { limit: 100, ...qs };
36
- let uri;
20
+ let page = {
21
+ path,
22
+ query: { limit: 100, ...qs },
23
+ };
37
24
  while (true) {
38
- const fetchUrl = uri ?? `${BASE_URL}${endpoint}`;
39
- const url = new URL(fetchUrl);
40
- if (!uri) {
41
- for (const [k, v] of Object.entries(_qs)) {
42
- if (v !== undefined)
43
- url.searchParams.set(k, String(v));
44
- }
45
- }
46
- const res = await fetch(url.toString(), {
47
- headers: { Authorization: `Bearer ${token}` },
48
- });
49
- if (!res.ok)
50
- throw new Error(`Asana API error ${res.status}: ${await res.text()}`);
51
- const json = (await res.json());
25
+ const json = (await credentialJson(ctx, asanaCredential, "asana", {
26
+ target: "api",
27
+ ...page,
28
+ }));
52
29
  const data = json.data ?? [];
53
30
  results.push(...data);
54
31
  if (limit && results.length >= limit)
@@ -56,16 +33,14 @@ async function paginateAll(token, endpoint, qs, limit) {
56
33
  const nextPage = json.next_page;
57
34
  if (!nextPage?.uri)
58
35
  break;
59
- uri = nextPage.uri;
36
+ page = { path: pathWithin(ctx, asanaCredential, "api", nextPage.uri) };
60
37
  }
61
38
  return results;
62
39
  }
63
- function getToken(ctx) {
64
- return ctx.connection.config.token;
65
- }
66
40
  export default function asana(rl) {
67
41
  rl.setName("asana");
68
42
  rl.setVersion("0.1.0");
43
+ rl.setCredential(asanaCredential);
69
44
  rl.setConnectionSchema({
70
45
  token: {
71
46
  type: "string",
@@ -120,7 +95,7 @@ export default function asana(rl) {
120
95
  body.due_on = dueOn;
121
96
  if (completed !== undefined)
122
97
  body.completed = completed;
123
- return apiRequest(getToken(ctx), "POST", "/tasks", body);
98
+ return apiRequest(ctx, "POST", "tasks", body);
124
99
  },
125
100
  });
126
101
  rl.registerAction("task.get", {
@@ -131,7 +106,7 @@ export default function asana(rl) {
131
106
  },
132
107
  async execute(input, ctx) {
133
108
  const { taskId } = input;
134
- return apiRequest(getToken(ctx), "GET", `/tasks/${taskId}`);
109
+ return apiRequest(ctx, "GET", `tasks/${pathSegment(taskId)}`);
135
110
  },
136
111
  });
137
112
  rl.registerAction("task.list", {
@@ -168,7 +143,7 @@ export default function asana(rl) {
168
143
  qs.workspace = workspace;
169
144
  if (assignee)
170
145
  qs.assignee = assignee;
171
- return paginateAll(getToken(ctx), "/tasks", qs, limit);
146
+ return paginateAll(ctx, "tasks", qs, limit);
172
147
  },
173
148
  });
174
149
  rl.registerAction("task.update", {
@@ -199,7 +174,7 @@ export default function asana(rl) {
199
174
  const body = { ...fields };
200
175
  if (dueOn)
201
176
  body.due_on = dueOn;
202
- return apiRequest(getToken(ctx), "PUT", `/tasks/${taskId}`, body);
177
+ return apiRequest(ctx, "PUT", `tasks/${pathSegment(taskId)}`, body);
203
178
  },
204
179
  });
205
180
  rl.registerAction("task.delete", {
@@ -210,7 +185,7 @@ export default function asana(rl) {
210
185
  },
211
186
  async execute(input, ctx) {
212
187
  const { taskId } = input;
213
- await apiRequest(getToken(ctx), "DELETE", `/tasks/${taskId}`);
188
+ await apiRequest(ctx, "DELETE", `tasks/${pathSegment(taskId)}`);
214
189
  return { success: true };
215
190
  },
216
191
  });
@@ -227,7 +202,9 @@ export default function asana(rl) {
227
202
  },
228
203
  async execute(input, ctx) {
229
204
  const { taskId, sectionId } = input;
230
- await apiRequest(getToken(ctx), "POST", `/sections/${sectionId}/addTask`, { task: taskId });
205
+ await apiRequest(ctx, "POST", `sections/${pathSegment(sectionId)}/addTask`, {
206
+ task: taskId,
207
+ });
231
208
  return { success: true };
232
209
  },
233
210
  });
@@ -258,7 +235,7 @@ export default function asana(rl) {
258
235
  qs.text = text;
259
236
  if (completed !== undefined)
260
237
  qs.completed = completed;
261
- return apiRequest(getToken(ctx), "GET", `/workspaces/${workspace}/tasks/search`, undefined, qs);
238
+ return apiRequest(ctx, "GET", `workspaces/${pathSegment(workspace)}/tasks/search`, undefined, qs);
262
239
  },
263
240
  });
264
241
  // ── Subtask ─────────────────────────────────────────
@@ -294,7 +271,7 @@ export default function asana(rl) {
294
271
  const body = { ...fields };
295
272
  if (dueOn)
296
273
  body.due_on = dueOn;
297
- return apiRequest(getToken(ctx), "POST", `/tasks/${taskId}/subtasks`, body);
274
+ return apiRequest(ctx, "POST", `tasks/${pathSegment(taskId)}/subtasks`, body);
298
275
  },
299
276
  });
300
277
  rl.registerAction("subtask.list", {
@@ -314,7 +291,7 @@ export default function asana(rl) {
314
291
  },
315
292
  async execute(input, ctx) {
316
293
  const { taskId, limit } = input;
317
- const data = (await apiRequest(getToken(ctx), "GET", `/tasks/${taskId}/subtasks`));
294
+ const data = (await apiRequest(ctx, "GET", `tasks/${pathSegment(taskId)}/subtasks`));
318
295
  if (limit)
319
296
  return data.slice(0, limit);
320
297
  return data;
@@ -345,7 +322,7 @@ export default function asana(rl) {
345
322
  : { text };
346
323
  if (isPinned)
347
324
  body.is_pinned = true;
348
- return apiRequest(getToken(ctx), "POST", `/tasks/${taskId}/stories`, body);
325
+ return apiRequest(ctx, "POST", `tasks/${pathSegment(taskId)}/stories`, body);
349
326
  },
350
327
  });
351
328
  rl.registerAction("taskComment.remove", {
@@ -360,7 +337,7 @@ export default function asana(rl) {
360
337
  },
361
338
  async execute(input, ctx) {
362
339
  const { commentId } = input;
363
- await apiRequest(getToken(ctx), "DELETE", `/stories/${commentId}`);
340
+ await apiRequest(ctx, "DELETE", `stories/${pathSegment(commentId)}`);
364
341
  return { success: true };
365
342
  },
366
343
  });
@@ -374,7 +351,7 @@ export default function asana(rl) {
374
351
  },
375
352
  async execute(input, ctx) {
376
353
  const { taskId, tagId } = input;
377
- await apiRequest(getToken(ctx), "POST", `/tasks/${taskId}/addTag`, {
354
+ await apiRequest(ctx, "POST", `tasks/${pathSegment(taskId)}/addTag`, {
378
355
  tag: tagId,
379
356
  });
380
357
  return { success: true };
@@ -389,7 +366,7 @@ export default function asana(rl) {
389
366
  },
390
367
  async execute(input, ctx) {
391
368
  const { taskId, tagId } = input;
392
- await apiRequest(getToken(ctx), "POST", `/tasks/${taskId}/removeTag`, {
369
+ await apiRequest(ctx, "POST", `tasks/${pathSegment(taskId)}/removeTag`, {
393
370
  tag: tagId,
394
371
  });
395
372
  return { success: true };
@@ -413,7 +390,7 @@ export default function asana(rl) {
413
390
  const body = { project: projectId };
414
391
  if (section)
415
392
  body.section = section;
416
- await apiRequest(getToken(ctx), "POST", `/tasks/${taskId}/addProject`, body);
393
+ await apiRequest(ctx, "POST", `tasks/${pathSegment(taskId)}/addProject`, body);
417
394
  return { success: true };
418
395
  },
419
396
  });
@@ -426,7 +403,9 @@ export default function asana(rl) {
426
403
  },
427
404
  async execute(input, ctx) {
428
405
  const { taskId, projectId } = input;
429
- await apiRequest(getToken(ctx), "POST", `/tasks/${taskId}/removeProject`, { project: projectId });
406
+ await apiRequest(ctx, "POST", `tasks/${pathSegment(taskId)}/removeProject`, {
407
+ project: projectId,
408
+ });
430
409
  return { success: true };
431
410
  },
432
411
  });
@@ -443,7 +422,7 @@ export default function asana(rl) {
443
422
  },
444
423
  async execute(input, ctx) {
445
424
  const { userId } = input;
446
- return apiRequest(getToken(ctx), "GET", `/users/${userId}`);
425
+ return apiRequest(ctx, "GET", `users/${pathSegment(userId)}`);
447
426
  },
448
427
  });
449
428
  rl.registerAction("user.list", {
@@ -458,7 +437,7 @@ export default function asana(rl) {
458
437
  },
459
438
  async execute(input, ctx) {
460
439
  const { workspace } = input;
461
- return apiRequest(getToken(ctx), "GET", `/workspaces/${workspace}/users`);
440
+ return apiRequest(ctx, "GET", `workspaces/${pathSegment(workspace)}/users`);
462
441
  },
463
442
  });
464
443
  // ── Project ─────────────────────────────────────────
@@ -494,7 +473,7 @@ export default function asana(rl) {
494
473
  body.color = color;
495
474
  if (dueOn)
496
475
  body.due_on = dueOn;
497
- return apiRequest(getToken(ctx), "POST", `/teams/${team}/projects`, body);
476
+ return apiRequest(ctx, "POST", `teams/${pathSegment(team)}/projects`, body);
498
477
  },
499
478
  });
500
479
  rl.registerAction("project.get", {
@@ -505,7 +484,7 @@ export default function asana(rl) {
505
484
  },
506
485
  async execute(input, ctx) {
507
486
  const { projectId } = input;
508
- return apiRequest(getToken(ctx), "GET", `/projects/${projectId}`);
487
+ return apiRequest(ctx, "GET", `projects/${pathSegment(projectId)}`);
509
488
  },
510
489
  });
511
490
  rl.registerAction("project.list", {
@@ -544,7 +523,7 @@ export default function asana(rl) {
544
523
  }
545
524
  if (archived !== undefined)
546
525
  qs.archived = archived;
547
- return paginateAll(getToken(ctx), "/projects", qs, limit);
526
+ return paginateAll(ctx, "projects", qs, limit);
548
527
  },
549
528
  });
550
529
  rl.registerAction("project.update", {
@@ -571,7 +550,7 @@ export default function asana(rl) {
571
550
  const body = { ...fields };
572
551
  if (dueOn)
573
552
  body.due_on = dueOn;
574
- return apiRequest(getToken(ctx), "PUT", `/projects/${projectId}`, body);
553
+ return apiRequest(ctx, "PUT", `projects/${pathSegment(projectId)}`, body);
575
554
  },
576
555
  });
577
556
  rl.registerAction("project.delete", {
@@ -582,7 +561,7 @@ export default function asana(rl) {
582
561
  },
583
562
  async execute(input, ctx) {
584
563
  const { projectId } = input;
585
- await apiRequest(getToken(ctx), "DELETE", `/projects/${projectId}`);
564
+ await apiRequest(ctx, "DELETE", `projects/${pathSegment(projectId)}`);
586
565
  return { success: true };
587
566
  },
588
567
  });
@@ -0,0 +1,19 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** An API key, sent as the autopilotapikey header to Autopilot's one origin. */
3
+ export const autopilotCredential = staticCredential({
4
+ id: "autopilot",
5
+ auth: { kind: "apiKey", header: "autopilotapikey" },
6
+ local: { secret: "apiKey" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://api2.autopilothq.com/v1/",
10
+ methods: ["GET", "POST", "DELETE"],
11
+ },
12
+ },
13
+ probe: {
14
+ target: "api",
15
+ path: "lists",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });
@@ -1,32 +1,23 @@
1
- const BASE_URL = "https://api2.autopilothq.com/v1";
2
- async function apiRequest(apiKey, method, endpoint, body) {
3
- const opts = {
1
+ import { credentialJson, credentialRequest, pathSegment, requestFailed, } from "../../_shared/credentials.js";
2
+ import { autopilotCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body) {
4
+ return credentialJson(ctx, autopilotCredential, "autopilot", {
5
+ target: "api",
6
+ path,
4
7
  method,
5
- headers: {
6
- "Content-Type": "application/json",
7
- autopilotapikey: apiKey,
8
- },
9
- };
10
- if (body &&
11
- Object.keys(body).length > 0 &&
12
- method !== "GET" &&
13
- method !== "DELETE") {
14
- opts.body = JSON.stringify(body);
15
- }
16
- const res = await fetch(`${BASE_URL}${endpoint}`, opts);
17
- if (!res.ok) {
18
- const text = await res.text();
19
- throw new Error(`Autopilot API error ${res.status}: ${text}`);
20
- }
21
- if (res.status === 204 || res.headers.get("content-length") === "0")
22
- return { success: true };
23
- return res.json();
8
+ ...(body &&
9
+ Object.keys(body).length > 0 &&
10
+ method !== "GET" &&
11
+ method !== "DELETE"
12
+ ? { json: body }
13
+ : {}),
14
+ });
24
15
  }
25
- async function paginateAll(apiKey, endpoint, dataKey, limit) {
16
+ async function paginateAll(ctx, path, dataKey, limit) {
26
17
  const results = [];
27
- let currentEndpoint = endpoint;
18
+ let currentPath = path;
28
19
  while (true) {
29
- const data = (await apiRequest(apiKey, "GET", currentEndpoint));
20
+ const data = (await apiRequest(ctx, "GET", currentPath));
30
21
  const items = data[dataKey] ?? [];
31
22
  results.push(...items);
32
23
  if (limit && results.length >= limit)
@@ -34,16 +25,14 @@ async function paginateAll(apiKey, endpoint, dataKey, limit) {
34
25
  const bookmark = data.bookmark;
35
26
  if (!bookmark)
36
27
  break;
37
- currentEndpoint = `${endpoint}/${bookmark}`;
28
+ currentPath = `${path}/${pathSegment(bookmark)}`;
38
29
  }
39
30
  return results;
40
31
  }
41
- function getKey(ctx) {
42
- return ctx.connection.config.apiKey;
43
- }
44
32
  export default function autopilot(rl) {
45
33
  rl.setName("autopilot");
46
34
  rl.setVersion("0.1.0");
35
+ rl.setCredential(autopilotCredential);
47
36
  rl.setConnectionSchema({
48
37
  apiKey: {
49
38
  type: "string",
@@ -88,7 +77,7 @@ export default function autopilot(rl) {
88
77
  contact._autopilot_list = listId;
89
78
  if (newEmail)
90
79
  contact._NewEmail = newEmail;
91
- return apiRequest(getKey(ctx), "POST", "/contact", { contact });
80
+ return apiRequest(ctx, "POST", "contact", { contact });
92
81
  },
93
82
  });
94
83
  rl.registerAction("contact.get", {
@@ -103,7 +92,7 @@ export default function autopilot(rl) {
103
92
  },
104
93
  async execute(input, ctx) {
105
94
  const { contactId } = input;
106
- return apiRequest(getKey(ctx), "GET", `/contact/${contactId}`);
95
+ return apiRequest(ctx, "GET", `contact/${pathSegment(contactId)}`);
107
96
  },
108
97
  });
109
98
  rl.registerAction("contact.list", {
@@ -118,7 +107,7 @@ export default function autopilot(rl) {
118
107
  },
119
108
  async execute(input, ctx) {
120
109
  const { limit } = (input ?? {});
121
- return paginateAll(getKey(ctx), "/contacts", "contacts", limit);
110
+ return paginateAll(ctx, "contacts", "contacts", limit);
122
111
  },
123
112
  });
124
113
  rl.registerAction("contact.delete", {
@@ -129,7 +118,7 @@ export default function autopilot(rl) {
129
118
  },
130
119
  async execute(input, ctx) {
131
120
  const { contactId } = input;
132
- await apiRequest(getKey(ctx), "DELETE", `/contact/${contactId}`);
121
+ await apiRequest(ctx, "DELETE", `contact/${pathSegment(contactId)}`);
133
122
  return { success: true };
134
123
  },
135
124
  });
@@ -147,7 +136,7 @@ export default function autopilot(rl) {
147
136
  },
148
137
  async execute(input, ctx) {
149
138
  const { triggerId, contactId } = input;
150
- await apiRequest(getKey(ctx), "POST", `/trigger/${triggerId}/contact/${contactId}`);
139
+ await apiRequest(ctx, "POST", `trigger/${pathSegment(triggerId)}/contact/${pathSegment(contactId)}`);
151
140
  return { success: true };
152
141
  },
153
142
  });
@@ -161,7 +150,7 @@ export default function autopilot(rl) {
161
150
  },
162
151
  async execute(input, ctx) {
163
152
  const { listId, contactId } = input;
164
- await apiRequest(getKey(ctx), "POST", `/list/${listId}/contact/${contactId}`);
153
+ await apiRequest(ctx, "POST", `list/${pathSegment(listId)}/contact/${pathSegment(contactId)}`);
165
154
  return { success: true };
166
155
  },
167
156
  });
@@ -174,7 +163,7 @@ export default function autopilot(rl) {
174
163
  },
175
164
  async execute(input, ctx) {
176
165
  const { listId, contactId } = input;
177
- await apiRequest(getKey(ctx), "DELETE", `/list/${listId}/contact/${contactId}`);
166
+ await apiRequest(ctx, "DELETE", `list/${pathSegment(listId)}/contact/${pathSegment(contactId)}`);
178
167
  return { success: true };
179
168
  },
180
169
  });
@@ -187,13 +176,17 @@ export default function autopilot(rl) {
187
176
  },
188
177
  async execute(input, ctx) {
189
178
  const { listId, contactId } = input;
190
- try {
191
- await apiRequest(getKey(ctx), "GET", `/list/${listId}/contact/${contactId}`);
192
- return { exists: true };
193
- }
194
- catch {
179
+ // Membership is the lookup's status: 404 means not in the list; any
180
+ // other failure is reported, not mistaken for an answer.
181
+ const response = await credentialRequest(ctx, autopilotCredential, {
182
+ target: "api",
183
+ path: `list/${pathSegment(listId)}/contact/${pathSegment(contactId)}`,
184
+ });
185
+ if (response.status === 404)
195
186
  return { exists: false };
196
- }
187
+ if (!response.ok)
188
+ throw requestFailed("autopilot", response.status);
189
+ return { exists: true };
197
190
  },
198
191
  });
199
192
  rl.registerAction("contactList.list", {
@@ -209,7 +202,7 @@ export default function autopilot(rl) {
209
202
  },
210
203
  async execute(input, ctx) {
211
204
  const { listId, limit } = input;
212
- return paginateAll(getKey(ctx), `/list/${listId}/contacts`, "contacts", limit);
205
+ return paginateAll(ctx, `list/${pathSegment(listId)}/contacts`, "contacts", limit);
213
206
  },
214
207
  });
215
208
  // ── List ────────────────────────────────────────────
@@ -221,7 +214,7 @@ export default function autopilot(rl) {
221
214
  },
222
215
  async execute(input, ctx) {
223
216
  const { name } = input;
224
- return apiRequest(getKey(ctx), "POST", "/list", { name });
217
+ return apiRequest(ctx, "POST", "list", { name });
225
218
  },
226
219
  });
227
220
  rl.registerAction("list.list", {
@@ -236,7 +229,7 @@ export default function autopilot(rl) {
236
229
  },
237
230
  async execute(input, ctx) {
238
231
  const { limit } = (input ?? {});
239
- const data = (await apiRequest(getKey(ctx), "GET", "/lists"));
232
+ const data = (await apiRequest(ctx, "GET", "lists"));
240
233
  if (limit)
241
234
  return data.lists.slice(0, limit);
242
235
  return data.lists;
@@ -0,0 +1,16 @@
1
+ import { hostLabel, staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * The API key as the Basic username, with BambooHR's fixed "x" password,
4
+ * sent to the connection's own company path on the one API gateway host.
5
+ */
6
+ export const bambooHrCredential = staticCredential({
7
+ id: "bambooHr",
8
+ auth: { kind: "basic" },
9
+ local: { username: "apiKey", password: { value: "x" } },
10
+ targets: (config) => ({
11
+ api: {
12
+ baseUrl: `https://api.bamboohr.com/api/gateway.php/${hostLabel(config.subdomain)}/v1/`,
13
+ methods: ["GET", "POST", "DELETE"],
14
+ },
15
+ }),
16
+ });