runline 0.33.0 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. package/dist/auth/oauth2.d.ts +7 -1
  2. package/dist/auth/oauth2.js +10 -0
  3. package/dist/auth/token.d.ts +1 -0
  4. package/dist/auth/token.js +19 -1
  5. package/dist/auth/types.d.ts +22 -1
  6. package/dist/core/engine.d.ts +7 -0
  7. package/dist/core/engine.js +21 -8
  8. package/dist/credentials/policy.d.ts +53 -1
  9. package/dist/credentials/policy.js +146 -6
  10. package/dist/credentials/registry.d.ts +9 -0
  11. package/dist/credentials/registry.js +184 -22
  12. package/dist/credentials/transport.d.ts +48 -2
  13. package/dist/credentials/transport.js +248 -70
  14. package/dist/credentials/types.d.ts +177 -10
  15. package/dist/index.d.ts +6 -5
  16. package/dist/index.js +3 -2
  17. package/dist/plugin/api.d.ts +7 -0
  18. package/dist/plugin/api.js +7 -0
  19. package/dist/plugin/schema.d.ts +16 -4
  20. package/dist/plugin/schema.js +28 -5
  21. package/dist/plugin/types.d.ts +20 -0
  22. package/dist/plugins/_shared/base64.js +30 -0
  23. package/dist/plugins/_shared/credentialAdapter.js +99 -15
  24. package/dist/plugins/_shared/credentials.js +416 -0
  25. package/dist/plugins/_shared/googleAuth.js +69 -39
  26. package/dist/plugins/_shared/googleCredentials.js +68 -14
  27. package/dist/plugins/_shared/localFile.js +40 -0
  28. package/dist/plugins/_shared/mediaFile.js +12 -12
  29. package/dist/plugins/_shared/microsoftAuth.js +31 -47
  30. package/dist/plugins/_shared/microsoftCredentials.js +42 -15
  31. package/dist/plugins/_shared/provider.js +2 -14
  32. package/dist/plugins/_shared/shiftCloud.js +16 -56
  33. package/dist/plugins/_shared/shiftCredentials.js +83 -0
  34. package/dist/plugins/_shared/shiftUpload.js +14 -10
  35. package/dist/plugins/actionNetwork/src/credentials.js +14 -0
  36. package/dist/plugins/actionNetwork/src/index.js +39 -50
  37. package/dist/plugins/activeCampaign/src/credentials.js +22 -0
  38. package/dist/plugins/activeCampaign/src/index.js +61 -132
  39. package/dist/plugins/adalo/src/credentials.js +16 -0
  40. package/dist/plugins/adalo/src/index.js +19 -43
  41. package/dist/plugins/affinity/src/credentials.js +19 -0
  42. package/dist/plugins/affinity/src/index.js +29 -54
  43. package/dist/plugins/agentMail/src/credentials.js +35 -0
  44. package/dist/plugins/agentMail/src/drafts.js +137 -0
  45. package/dist/plugins/agentMail/src/inboxes.js +95 -0
  46. package/dist/plugins/agentMail/src/index.js +35 -0
  47. package/dist/plugins/agentMail/src/messages.js +154 -0
  48. package/dist/plugins/agentMail/src/schemas.js +156 -0
  49. package/dist/plugins/agentMail/src/shared.js +203 -0
  50. package/dist/plugins/agentMail/src/threads.js +75 -0
  51. package/dist/plugins/agileCrm/src/credentials.js +16 -0
  52. package/dist/plugins/agileCrm/src/index.js +46 -112
  53. package/dist/plugins/airtable/src/credentials.js +19 -0
  54. package/dist/plugins/airtable/src/index.js +37 -50
  55. package/dist/plugins/airtop/src/credentials.js +20 -0
  56. package/dist/plugins/airtop/src/index.js +51 -75
  57. package/dist/plugins/apiTemplateIo/src/credentials.js +19 -0
  58. package/dist/plugins/apiTemplateIo/src/index.js +14 -31
  59. package/dist/plugins/asana/src/credentials.js +19 -0
  60. package/dist/plugins/asana/src/index.js +51 -72
  61. package/dist/plugins/autopilot/src/credentials.js +19 -0
  62. package/dist/plugins/autopilot/src/index.js +38 -45
  63. package/dist/plugins/bambooHr/src/credentials.js +16 -0
  64. package/dist/plugins/bambooHr/src/index.js +41 -67
  65. package/dist/plugins/bannerbear/src/credentials.js +19 -0
  66. package/dist/plugins/bannerbear/src/index.js +15 -27
  67. package/dist/plugins/baserow/src/credentials.js +17 -0
  68. package/dist/plugins/baserow/src/index.js +23 -49
  69. package/dist/plugins/beeminder/src/credentials.js +19 -0
  70. package/dist/plugins/beeminder/src/index.js +32 -54
  71. package/dist/plugins/bitly/src/credentials.js +19 -0
  72. package/dist/plugins/bitly/src/index.js +12 -26
  73. package/dist/plugins/bitwarden/src/credentials.js +62 -0
  74. package/dist/plugins/bitwarden/src/index.js +34 -80
  75. package/dist/plugins/box/src/credentials.js +19 -0
  76. package/dist/plugins/box/src/index.js +24 -49
  77. package/dist/plugins/brandfetch/src/credentials.js +13 -0
  78. package/dist/plugins/brandfetch/src/index.js +12 -17
  79. package/dist/plugins/brevo/src/credentials.js +19 -0
  80. package/dist/plugins/brevo/src/index.js +30 -51
  81. package/dist/plugins/bubble/src/credentials.js +28 -0
  82. package/dist/plugins/bubble/src/index.js +29 -65
  83. package/dist/plugins/chargebee/src/credentials.js +16 -0
  84. package/dist/plugins/chargebee/src/index.js +15 -45
  85. package/dist/plugins/circleci/src/credentials.js +19 -0
  86. package/dist/plugins/circleci/src/index.js +19 -39
  87. package/dist/plugins/ciscoWebex/src/credentials.js +19 -0
  88. package/dist/plugins/ciscoWebex/src/index.js +43 -61
  89. package/dist/plugins/clearbit/src/credentials.js +22 -0
  90. package/dist/plugins/clearbit/src/index.js +11 -21
  91. package/dist/plugins/clickup/src/credentials.js +19 -0
  92. package/dist/plugins/clickup/src/index.js +85 -117
  93. package/dist/plugins/clockify/src/credentials.js +19 -0
  94. package/dist/plugins/clockify/src/index.js +46 -61
  95. package/dist/plugins/cloudflare/src/credentials.js +19 -0
  96. package/dist/plugins/cloudflare/src/index.js +19 -34
  97. package/dist/plugins/cockpit/src/credentials.js +17 -0
  98. package/dist/plugins/cockpit/src/index.js +18 -31
  99. package/dist/plugins/coda/src/credentials.js +19 -0
  100. package/dist/plugins/coda/src/index.js +33 -50
  101. package/dist/plugins/coingecko/src/credentials.js +20 -0
  102. package/dist/plugins/coingecko/src/index.js +24 -34
  103. package/dist/plugins/contentful/src/credentials.js +26 -0
  104. package/dist/plugins/contentful/src/index.js +19 -40
  105. package/dist/plugins/convertkit/src/credentials.js +26 -0
  106. package/dist/plugins/convertkit/src/index.js +27 -45
  107. package/dist/plugins/copper/src/credentials.js +17 -0
  108. package/dist/plugins/copper/src/index.js +25 -47
  109. package/dist/plugins/cortex/src/credentials.js +28 -0
  110. package/dist/plugins/cortex/src/index.js +26 -49
  111. package/dist/plugins/currents/src/credentials.js +19 -0
  112. package/dist/plugins/currents/src/index.js +46 -59
  113. package/dist/plugins/customerIo/src/credentials.js +52 -0
  114. package/dist/plugins/customerIo/src/index.js +30 -58
  115. package/dist/plugins/databricks/src/credentials.js +13 -0
  116. package/dist/plugins/databricks/src/index.js +51 -103
  117. package/dist/plugins/deepl/src/credentials.js +19 -0
  118. package/dist/plugins/deepl/src/index.js +13 -39
  119. package/dist/plugins/demio/src/credentials.js +26 -0
  120. package/dist/plugins/demio/src/index.js +17 -41
  121. package/dist/plugins/dhl/src/credentials.js +13 -0
  122. package/dist/plugins/dhl/src/index.js +8 -19
  123. package/dist/plugins/discord/src/credentials.js +19 -0
  124. package/dist/plugins/discord/src/index.js +30 -58
  125. package/dist/plugins/discourse/src/credentials.js +18 -0
  126. package/dist/plugins/discourse/src/index.js +36 -53
  127. package/dist/plugins/disqus/src/credentials.js +13 -0
  128. package/dist/plugins/disqus/src/index.js +14 -32
  129. package/dist/plugins/drift/src/credentials.js +13 -0
  130. package/dist/plugins/drift/src/index.js +16 -26
  131. package/dist/plugins/dropbox/src/credentials.js +13 -0
  132. package/dist/plugins/dropbox/src/index.js +23 -30
  133. package/dist/plugins/dropcontact/src/credentials.js +13 -0
  134. package/dist/plugins/dropcontact/src/index.js +13 -18
  135. package/dist/plugins/egoi/src/credentials.js +19 -0
  136. package/dist/plugins/egoi/src/index.js +23 -38
  137. package/dist/plugins/elasticsearch/src/credentials.js +18 -0
  138. package/dist/plugins/elasticsearch/src/index.js +27 -48
  139. package/dist/plugins/elevenlabs/src/credentials.js +30 -0
  140. package/dist/plugins/elevenlabs/src/index.js +4 -1
  141. package/dist/plugins/elevenlabs/src/schemas.js +2 -1
  142. package/dist/plugins/elevenlabs/src/shared.js +87 -62
  143. package/dist/plugins/elevenlabs/src/workflows.js +2 -2
  144. package/dist/plugins/emelia/src/credentials.js +14 -0
  145. package/dist/plugins/emelia/src/index.js +19 -23
  146. package/dist/plugins/erpnext/src/credentials.js +27 -0
  147. package/dist/plugins/erpnext/src/index.js +21 -42
  148. package/dist/plugins/facebookGraph/src/credentials.js +20 -0
  149. package/dist/plugins/facebookGraph/src/index.js +39 -37
  150. package/dist/plugins/fal/src/credentials.js +14 -0
  151. package/dist/plugins/fal/src/index.js +5 -3
  152. package/dist/plugins/fal/src/shared.js +58 -63
  153. package/dist/plugins/freshdesk/src/credentials.js +20 -0
  154. package/dist/plugins/freshdesk/src/index.js +25 -46
  155. package/dist/plugins/freshservice/src/credentials.js +16 -0
  156. package/dist/plugins/freshservice/src/index.js +37 -58
  157. package/dist/plugins/freshworksCrm/src/credentials.js +16 -0
  158. package/dist/plugins/freshworksCrm/src/index.js +20 -39
  159. package/dist/plugins/getresponse/src/credentials.js +22 -0
  160. package/dist/plugins/getresponse/src/index.js +20 -32
  161. package/dist/plugins/gett/src/credentials.js +64 -0
  162. package/dist/plugins/gett/src/index.js +11 -6
  163. package/dist/plugins/gett/src/login.js +24 -0
  164. package/dist/plugins/gett/src/session.js +15 -38
  165. package/dist/plugins/gett/src/shared.js +41 -84
  166. package/dist/plugins/ghost/src/credentials.js +36 -0
  167. package/dist/plugins/ghost/src/index.js +18 -59
  168. package/dist/plugins/github/src/credentials.js +18 -0
  169. package/dist/plugins/github/src/index.js +55 -78
  170. package/dist/plugins/gitlab/src/credentials.js +24 -0
  171. package/dist/plugins/gitlab/src/index.js +29 -48
  172. package/dist/plugins/gmail/src/index.js +47 -108
  173. package/dist/plugins/gong/src/credentials.js +16 -0
  174. package/dist/plugins/gong/src/index.js +16 -32
  175. package/dist/plugins/googleAppsScript/src/index.js +109 -42
  176. package/dist/plugins/googleCalendar/src/index.js +20 -51
  177. package/dist/plugins/googleContacts/src/index.js +13 -40
  178. package/dist/plugins/googleDocs/src/index.js +3 -32
  179. package/dist/plugins/googleDocs/src/shared.js +2 -1
  180. package/dist/plugins/googleDrive/src/index.js +68 -97
  181. package/dist/plugins/googleImage/src/credentials.js +14 -0
  182. package/dist/plugins/googleImage/src/index.js +15 -26
  183. package/dist/plugins/googleSheets/src/index.js +27 -60
  184. package/dist/plugins/googleSlides/src/index.js +7 -35
  185. package/dist/plugins/googleTasks/src/index.js +14 -42
  186. package/dist/plugins/gotify/src/credentials.js +32 -0
  187. package/dist/plugins/gotify/src/index.js +14 -36
  188. package/dist/plugins/gotowebinar/src/credentials.js +13 -0
  189. package/dist/plugins/gotowebinar/src/index.js +52 -69
  190. package/dist/plugins/grafana/src/credentials.js +16 -0
  191. package/dist/plugins/grafana/src/index.js +34 -53
  192. package/dist/plugins/graphql/src/credentials.js +42 -0
  193. package/dist/plugins/graphql/src/index.js +21 -46
  194. package/dist/plugins/grist/src/credentials.js +30 -0
  195. package/dist/plugins/grist/src/index.js +14 -43
  196. package/dist/plugins/halopsa/src/credentials.js +56 -0
  197. package/dist/plugins/halopsa/src/index.js +20 -47
  198. package/dist/plugins/harvest/src/credentials.js +20 -0
  199. package/dist/plugins/harvest/src/index.js +24 -43
  200. package/dist/plugins/helpscout/src/credentials.js +13 -0
  201. package/dist/plugins/helpscout/src/index.js +26 -38
  202. package/dist/plugins/highlevel/src/credentials.js +19 -0
  203. package/dist/plugins/highlevel/src/index.js +42 -65
  204. package/dist/plugins/homeAssistant/src/credentials.js +27 -0
  205. package/dist/plugins/homeAssistant/src/index.js +34 -52
  206. package/dist/plugins/hubspot/src/credentials.js +16 -0
  207. package/dist/plugins/hubspot/src/index.js +29 -41
  208. package/dist/plugins/humanticAi/src/credentials.js +13 -0
  209. package/dist/plugins/humanticAi/src/index.js +15 -22
  210. package/dist/plugins/hunter/src/credentials.js +13 -0
  211. package/dist/plugins/hunter/src/index.js +18 -17
  212. package/dist/plugins/intercom/src/credentials.js +19 -0
  213. package/dist/plugins/intercom/src/index.js +25 -38
  214. package/dist/plugins/iterable/src/credentials.js +17 -0
  215. package/dist/plugins/iterable/src/index.js +26 -40
  216. package/dist/plugins/jenkins/src/credentials.js +16 -0
  217. package/dist/plugins/jenkins/src/index.js +22 -36
  218. package/dist/plugins/jira/src/credentials.js +16 -0
  219. package/dist/plugins/jira/src/index.js +35 -61
  220. package/dist/plugins/keap/src/credentials.js +19 -0
  221. package/dist/plugins/keap/src/index.js +43 -71
  222. package/dist/plugins/kobotoolbox/src/credentials.js +13 -0
  223. package/dist/plugins/kobotoolbox/src/index.js +46 -84
  224. package/dist/plugins/lemlist/src/credentials.js +19 -0
  225. package/dist/plugins/lemlist/src/index.js +35 -47
  226. package/dist/plugins/linear/src/attachments.js +7 -7
  227. package/dist/plugins/linear/src/comments.js +7 -7
  228. package/dist/plugins/linear/src/credentials.js +17 -0
  229. package/dist/plugins/linear/src/cycles.js +5 -5
  230. package/dist/plugins/linear/src/index.js +2 -0
  231. package/dist/plugins/linear/src/initiatives.js +6 -6
  232. package/dist/plugins/linear/src/issues.js +14 -14
  233. package/dist/plugins/linear/src/labels.js +6 -6
  234. package/dist/plugins/linear/src/organization.js +2 -2
  235. package/dist/plugins/linear/src/projects.js +12 -12
  236. package/dist/plugins/linear/src/shared.js +34 -32
  237. package/dist/plugins/linear/src/states.js +3 -3
  238. package/dist/plugins/linear/src/teams.js +4 -4
  239. package/dist/plugins/linear/src/users.js +3 -3
  240. package/dist/plugins/linear/src/views.js +5 -5
  241. package/dist/plugins/linear/src/webhooks.js +5 -5
  242. package/dist/plugins/lingvanex/src/credentials.js +13 -0
  243. package/dist/plugins/lingvanex/src/index.js +7 -9
  244. package/dist/plugins/linkedin/src/credentials.js +17 -0
  245. package/dist/plugins/linkedin/src/index.js +13 -17
  246. package/dist/plugins/lonescale/src/credentials.js +13 -0
  247. package/dist/plugins/lonescale/src/index.js +16 -26
  248. package/dist/plugins/magento/src/credentials.js +16 -0
  249. package/dist/plugins/magento/src/index.js +67 -84
  250. package/dist/plugins/mailcheck/src/credentials.js +17 -0
  251. package/dist/plugins/mailcheck/src/index.js +7 -9
  252. package/dist/plugins/mailchimp/src/credentials.js +32 -0
  253. package/dist/plugins/mailchimp/src/index.js +36 -44
  254. package/dist/plugins/mailerlite/src/credentials.js +13 -0
  255. package/dist/plugins/mailerlite/src/index.js +19 -32
  256. package/dist/plugins/mailgun/src/credentials.js +21 -0
  257. package/dist/plugins/mailgun/src/index.js +15 -21
  258. package/dist/plugins/mailjet/src/credentials.js +38 -0
  259. package/dist/plugins/mailjet/src/index.js +60 -115
  260. package/dist/plugins/mandrill/src/credentials.js +17 -0
  261. package/dist/plugins/mandrill/src/index.js +11 -12
  262. package/dist/plugins/marketstack/src/credentials.js +16 -0
  263. package/dist/plugins/marketstack/src/index.js +18 -28
  264. package/dist/plugins/matrix/src/credentials.js +19 -0
  265. package/dist/plugins/matrix/src/index.js +23 -52
  266. package/dist/plugins/mattermost/src/credentials.js +19 -0
  267. package/dist/plugins/mattermost/src/index.js +41 -73
  268. package/dist/plugins/mautic/src/credentials.js +16 -0
  269. package/dist/plugins/mautic/src/index.js +46 -62
  270. package/dist/plugins/medium/src/credentials.js +20 -0
  271. package/dist/plugins/medium/src/index.js +18 -23
  272. package/dist/plugins/messagebird/src/credentials.js +22 -0
  273. package/dist/plugins/messagebird/src/index.js +13 -18
  274. package/dist/plugins/metabase/src/credentials.js +19 -0
  275. package/dist/plugins/metabase/src/index.js +24 -40
  276. package/dist/plugins/microsoftCalendar/src/index.js +49 -18
  277. package/dist/plugins/microsoftFiles/src/index.js +95 -31
  278. package/dist/plugins/microsoftMail/src/index.js +63 -21
  279. package/dist/plugins/misp/src/credentials.js +16 -0
  280. package/dist/plugins/misp/src/index.js +60 -71
  281. package/dist/plugins/mocean/src/credentials.js +17 -0
  282. package/dist/plugins/mocean/src/index.js +11 -23
  283. package/dist/plugins/monday/src/credentials.js +14 -0
  284. package/dist/plugins/monday/src/index.js +31 -44
  285. package/dist/plugins/monicaCrm/src/credentials.js +19 -0
  286. package/dist/plugins/monicaCrm/src/index.js +25 -42
  287. package/dist/plugins/msg91/src/credentials.js +10 -0
  288. package/dist/plugins/msg91/src/index.js +15 -11
  289. package/dist/plugins/nasa/src/credentials.js +22 -0
  290. package/dist/plugins/nasa/src/index.js +24 -28
  291. package/dist/plugins/netlify/src/credentials.js +19 -0
  292. package/dist/plugins/netlify/src/index.js +27 -51
  293. package/dist/plugins/netscalerAdc/src/credentials.js +18 -0
  294. package/dist/plugins/netscalerAdc/src/index.js +16 -31
  295. package/dist/plugins/nextcloud/src/credentials.js +27 -0
  296. package/dist/plugins/nextcloud/src/index.js +55 -109
  297. package/dist/plugins/nocodb/src/credentials.js +16 -0
  298. package/dist/plugins/nocodb/src/index.js +19 -37
  299. package/dist/plugins/notion/src/credentials.js +21 -0
  300. package/dist/plugins/notion/src/index.js +25 -38
  301. package/dist/plugins/npm/src/credentials.js +19 -0
  302. package/dist/plugins/npm/src/index.js +22 -32
  303. package/dist/plugins/odoo/src/credentials.js +21 -0
  304. package/dist/plugins/odoo/src/index.js +53 -69
  305. package/dist/plugins/okta/src/credentials.js +23 -0
  306. package/dist/plugins/okta/src/index.js +30 -35
  307. package/dist/plugins/oneSimpleApi/src/credentials.js +16 -0
  308. package/dist/plugins/oneSimpleApi/src/index.js +19 -24
  309. package/dist/plugins/onfleet/src/credentials.js +23 -0
  310. package/dist/plugins/onfleet/src/index.js +42 -53
  311. package/dist/plugins/openai/src/credentials.js +13 -0
  312. package/dist/plugins/openai/src/index.js +16 -24
  313. package/dist/plugins/openweathermap/src/credentials.js +16 -0
  314. package/dist/plugins/openweathermap/src/index.js +22 -22
  315. package/dist/plugins/oura/src/credentials.js +19 -0
  316. package/dist/plugins/oura/src/index.js +13 -18
  317. package/dist/plugins/paddle/src/credentials.js +27 -0
  318. package/dist/plugins/paddle/src/index.js +20 -36
  319. package/dist/plugins/pagerduty/src/credentials.js +24 -0
  320. package/dist/plugins/pagerduty/src/index.js +30 -39
  321. package/dist/plugins/parallel/src/credentials.js +18 -0
  322. package/dist/plugins/parallel/src/index.js +16 -22
  323. package/dist/plugins/paypal/src/credentials.js +44 -0
  324. package/dist/plugins/paypal/src/index.js +14 -40
  325. package/dist/plugins/peekalink/src/credentials.js +16 -0
  326. package/dist/plugins/peekalink/src/index.js +10 -11
  327. package/dist/plugins/phantombuster/src/credentials.js +19 -0
  328. package/dist/plugins/phantombuster/src/index.js +19 -32
  329. package/dist/plugins/philipsHue/src/credentials.js +17 -0
  330. package/dist/plugins/philipsHue/src/index.js +15 -27
  331. package/dist/plugins/pipedrive/src/credentials.js +26 -0
  332. package/dist/plugins/pipedrive/src/index.js +43 -73
  333. package/dist/plugins/plaud/src/index.js +2 -1
  334. package/dist/plugins/plaud/src/shared.js +23 -19
  335. package/dist/plugins/plivo/src/credentials.js +20 -0
  336. package/dist/plugins/plivo/src/index.js +13 -19
  337. package/dist/plugins/posthog/src/credentials.js +18 -0
  338. package/dist/plugins/posthog/src/index.js +14 -20
  339. package/dist/plugins/profitwell/src/credentials.js +22 -0
  340. package/dist/plugins/profitwell/src/index.js +10 -17
  341. package/dist/plugins/pushbullet/src/credentials.js +19 -0
  342. package/dist/plugins/pushbullet/src/index.js +19 -27
  343. package/dist/plugins/pushcut/src/credentials.js +19 -0
  344. package/dist/plugins/pushcut/src/index.js +7 -8
  345. package/dist/plugins/pushover/src/credentials.js +14 -0
  346. package/dist/plugins/pushover/src/index.js +7 -12
  347. package/dist/plugins/quickbase/src/credentials.js +15 -0
  348. package/dist/plugins/quickbase/src/index.js +24 -34
  349. package/dist/plugins/quickbooks/src/credentials.js +22 -0
  350. package/dist/plugins/quickbooks/src/index.js +17 -46
  351. package/dist/plugins/raindrop/src/credentials.js +19 -0
  352. package/dist/plugins/raindrop/src/index.js +30 -32
  353. package/dist/plugins/recraft/src/credentials.js +13 -0
  354. package/dist/plugins/recraft/src/index.js +39 -28
  355. package/dist/plugins/reddit/src/credentials.js +26 -0
  356. package/dist/plugins/reddit/src/index.js +30 -34
  357. package/dist/plugins/replicate/src/credentials.js +23 -0
  358. package/dist/plugins/replicate/src/index.js +18 -28
  359. package/dist/plugins/rocketchat/src/credentials.js +17 -0
  360. package/dist/plugins/rocketchat/src/index.js +8 -19
  361. package/dist/plugins/rundeck/src/credentials.js +16 -0
  362. package/dist/plugins/rundeck/src/index.js +12 -28
  363. package/dist/plugins/salesforce/src/credentials.js +73 -0
  364. package/dist/plugins/salesforce/src/index.js +6 -0
  365. package/dist/plugins/salesforce/src/metadata.js +3 -16
  366. package/dist/plugins/salesforce/src/shared.js +25 -100
  367. package/dist/plugins/salesforce/src/sobjects.js +10 -9
  368. package/dist/plugins/salesmate/src/credentials.js +17 -0
  369. package/dist/plugins/salesmate/src/index.js +20 -37
  370. package/dist/plugins/securityScorecard/src/credentials.js +22 -0
  371. package/dist/plugins/securityScorecard/src/index.js +24 -37
  372. package/dist/plugins/segment/src/credentials.js +16 -0
  373. package/dist/plugins/segment/src/index.js +12 -16
  374. package/dist/plugins/sendgrid/src/credentials.js +13 -0
  375. package/dist/plugins/sendgrid/src/index.js +31 -35
  376. package/dist/plugins/sendy/src/credentials.js +18 -0
  377. package/dist/plugins/sendy/src/index.js +18 -24
  378. package/dist/plugins/sentry/src/credentials.js +16 -0
  379. package/dist/plugins/sentry/src/index.js +30 -98
  380. package/dist/plugins/servicenow/src/credentials.js +13 -0
  381. package/dist/plugins/servicenow/src/index.js +22 -41
  382. package/dist/plugins/shiftAtlas/src/graph.js +2 -2
  383. package/dist/plugins/shiftAtlas/src/index.js +2 -0
  384. package/dist/plugins/shiftAtlas/src/shared.js +3 -1
  385. package/dist/plugins/shiftBwm/src/index.js +4 -2
  386. package/dist/plugins/shiftBwm/src/shared.js +41 -16
  387. package/dist/plugins/shiftCrm/src/access.js +2 -2
  388. package/dist/plugins/shiftCrm/src/accounts.js +3 -3
  389. package/dist/plugins/shiftCrm/src/activities.js +3 -3
  390. package/dist/plugins/shiftCrm/src/credentials.js +6 -0
  391. package/dist/plugins/shiftCrm/src/index.js +2 -0
  392. package/dist/plugins/shiftCrm/src/opportunities.js +3 -3
  393. package/dist/plugins/shiftCrm/src/people.js +3 -3
  394. package/dist/plugins/shiftCrm/src/records.js +2 -2
  395. package/dist/plugins/shiftCrm/src/shared.js +2 -1
  396. package/dist/plugins/shiftCrm/src/tasks.js +3 -3
  397. package/dist/plugins/shiftObjects/src/credentials.js +2 -0
  398. package/dist/plugins/shiftObjects/src/index.js +2 -0
  399. package/dist/plugins/shiftObjects/src/objects.js +4 -3
  400. package/dist/plugins/shiftOcr/src/credentials.js +8 -0
  401. package/dist/plugins/shiftOcr/src/index.js +14 -8
  402. package/dist/plugins/shiftPages/src/index.js +2 -0
  403. package/dist/plugins/shiftPages/src/pages.js +5 -3
  404. package/dist/plugins/shiftPages/src/shared.js +3 -1
  405. package/dist/plugins/shiftTranscription/src/index.js +2 -0
  406. package/dist/plugins/shiftTranscription/src/shared.js +11 -1
  407. package/dist/plugins/shiftTranscription/src/transcription.js +5 -5
  408. package/dist/plugins/shiftWork/src/index.js +2 -0
  409. package/dist/plugins/shiftWork/src/issue-views.js +5 -5
  410. package/dist/plugins/shiftWork/src/issues.js +11 -7
  411. package/dist/plugins/shiftWork/src/projects.js +3 -3
  412. package/dist/plugins/shiftWork/src/shared.js +3 -1
  413. package/dist/plugins/shopify/src/credentials.js +16 -0
  414. package/dist/plugins/shopify/src/index.js +32 -59
  415. package/dist/plugins/signl4/src/credentials.js +17 -0
  416. package/dist/plugins/signl4/src/index.js +28 -29
  417. package/dist/plugins/slack/src/credentials.js +19 -0
  418. package/dist/plugins/slack/src/index.js +51 -60
  419. package/dist/plugins/sms77/src/credentials.js +17 -0
  420. package/dist/plugins/sms77/src/index.js +11 -16
  421. package/dist/plugins/splunk/src/credentials.js +19 -0
  422. package/dist/plugins/splunk/src/index.js +32 -74
  423. package/dist/plugins/spotify/src/credentials.js +19 -0
  424. package/dist/plugins/spotify/src/index.js +40 -55
  425. package/dist/plugins/stackby/src/credentials.js +13 -0
  426. package/dist/plugins/stackby/src/index.js +14 -23
  427. package/dist/plugins/steel/src/auth.js +27 -0
  428. package/dist/plugins/steel/src/browser.js +4 -3
  429. package/dist/plugins/steel/src/captchas.js +4 -3
  430. package/dist/plugins/steel/src/extensions.js +3 -2
  431. package/dist/plugins/steel/src/files.js +9 -10
  432. package/dist/plugins/steel/src/index.js +2 -0
  433. package/dist/plugins/steel/src/page/tools.js +3 -3
  434. package/dist/plugins/steel/src/profiles.js +4 -3
  435. package/dist/plugins/steel/src/sessions.js +13 -13
  436. package/dist/plugins/steel/src/shared.js +21 -51
  437. package/dist/plugins/storyblok/src/credentials.js +37 -0
  438. package/dist/plugins/storyblok/src/index.js +22 -66
  439. package/dist/plugins/strapi/src/credentials.js +71 -0
  440. package/dist/plugins/strapi/src/index.js +36 -70
  441. package/dist/plugins/strava/src/credentials.js +19 -0
  442. package/dist/plugins/strava/src/index.js +16 -33
  443. package/dist/plugins/stripe/src/credentials.js +19 -0
  444. package/dist/plugins/stripe/src/index.js +44 -58
  445. package/dist/plugins/supabase/src/credentials.js +30 -0
  446. package/dist/plugins/supabase/src/index.js +18 -40
  447. package/dist/plugins/syncromsp/src/credentials.js +16 -0
  448. package/dist/plugins/syncromsp/src/index.js +37 -70
  449. package/dist/plugins/tapfiliate/src/credentials.js +13 -0
  450. package/dist/plugins/tapfiliate/src/index.js +21 -31
  451. package/dist/plugins/telegram/src/credentials.js +20 -0
  452. package/dist/plugins/telegram/src/index.js +31 -39
  453. package/dist/plugins/thehive/src/credentials.js +14 -0
  454. package/dist/plugins/thehive/src/index.js +33 -50
  455. package/dist/plugins/thehiveProject/src/credentials.js +16 -0
  456. package/dist/plugins/thehiveProject/src/index.js +53 -122
  457. package/dist/plugins/todoist/src/credentials.js +26 -0
  458. package/dist/plugins/todoist/src/index.js +49 -79
  459. package/dist/plugins/together/src/credentials.js +16 -0
  460. package/dist/plugins/together/src/index.js +31 -33
  461. package/dist/plugins/travisci/src/credentials.js +24 -0
  462. package/dist/plugins/travisci/src/index.js +16 -30
  463. package/dist/plugins/trello/src/credentials.js +29 -0
  464. package/dist/plugins/trello/src/index.js +49 -64
  465. package/dist/plugins/twake/src/credentials.js +16 -0
  466. package/dist/plugins/twake/src/index.js +8 -10
  467. package/dist/plugins/twilio/src/credentials.js +23 -0
  468. package/dist/plugins/twilio/src/index.js +12 -26
  469. package/dist/plugins/twist/src/credentials.js +13 -0
  470. package/dist/plugins/twist/src/index.js +32 -44
  471. package/dist/plugins/twitter/src/credentials.js +16 -0
  472. package/dist/plugins/twitter/src/index.js +25 -37
  473. package/dist/plugins/typesafe/src/credentials.js +28 -0
  474. package/dist/plugins/typesafe/src/index.js +3 -1
  475. package/dist/plugins/typesafe/src/shared.js +23 -35
  476. package/dist/plugins/unleashedSoftware/src/credentials.js +21 -0
  477. package/dist/plugins/unleashedSoftware/src/index.js +13 -37
  478. package/dist/plugins/uplead/src/credentials.js +16 -0
  479. package/dist/plugins/uplead/src/index.js +11 -16
  480. package/dist/plugins/uproc/src/credentials.js +14 -0
  481. package/dist/plugins/uproc/src/index.js +7 -10
  482. package/dist/plugins/uptimerobot/src/credentials.js +14 -0
  483. package/dist/plugins/uptimerobot/src/index.js +28 -39
  484. package/dist/plugins/urlscanio/src/credentials.js +13 -0
  485. package/dist/plugins/urlscanio/src/index.js +13 -22
  486. package/dist/plugins/vercel/src/credentials.js +19 -0
  487. package/dist/plugins/vercel/src/deployments.js +27 -11
  488. package/dist/plugins/vercel/src/env.js +31 -12
  489. package/dist/plugins/vercel/src/index.js +2 -0
  490. package/dist/plugins/vercel/src/projects.js +6 -3
  491. package/dist/plugins/vercel/src/shared.js +32 -37
  492. package/dist/plugins/vero/src/credentials.js +17 -0
  493. package/dist/plugins/vero/src/index.js +18 -21
  494. package/dist/plugins/vonage/src/credentials.js +17 -0
  495. package/dist/plugins/vonage/src/index.js +14 -18
  496. package/dist/plugins/wekan/src/credentials.js +16 -0
  497. package/dist/plugins/wekan/src/index.js +33 -46
  498. package/dist/plugins/wolt/src/account.js +6 -0
  499. package/dist/plugins/wolt/src/catalog.js +2 -2
  500. package/dist/plugins/wolt/src/credentials.js +64 -0
  501. package/dist/plugins/wolt/src/index.js +8 -3
  502. package/dist/plugins/wolt/src/orders.js +2 -2
  503. package/dist/plugins/wolt/src/public.js +91 -0
  504. package/dist/plugins/wolt/src/shared.js +49 -158
  505. package/dist/plugins/woocommerce/src/credentials.js +16 -0
  506. package/dist/plugins/woocommerce/src/index.js +19 -37
  507. package/dist/plugins/wordpress/src/credentials.js +16 -0
  508. package/dist/plugins/wordpress/src/index.js +23 -42
  509. package/dist/plugins/xai/src/credentials.js +13 -0
  510. package/dist/plugins/xai/src/index.js +32 -31
  511. package/dist/plugins/xero/src/credentials.js +17 -0
  512. package/dist/plugins/xero/src/index.js +19 -36
  513. package/dist/plugins/yourls/src/credentials.js +17 -0
  514. package/dist/plugins/yourls/src/index.js +13 -23
  515. package/dist/plugins/zammad/src/credentials.js +15 -0
  516. package/dist/plugins/zammad/src/index.js +27 -47
  517. package/dist/plugins/zendesk/src/credentials.js +26 -0
  518. package/dist/plugins/zendesk/src/index.js +29 -48
  519. package/dist/plugins/zoho/src/credentials.js +17 -0
  520. package/dist/plugins/zoho/src/index.js +18 -38
  521. package/dist/plugins/zoom/src/credentials.js +19 -0
  522. package/dist/plugins/zoom/src/index.js +15 -30
  523. package/dist/plugins/zulip/src/credentials.js +16 -0
  524. package/dist/plugins/zulip/src/index.js +36 -42
  525. package/dist/sdk.d.ts +8 -0
  526. package/dist/sdk.js +3 -0
  527. package/package.json +2 -1
  528. package/dist/plugins/_shared/authedFetch.js +0 -33
  529. package/dist/plugins/_shared/tokenRefresh.js +0 -41
  530. package/dist/tests/helpers/engine-harness.d.ts +0 -1
  531. package/dist/tests/helpers/engine-harness.js +0 -236
@@ -1,30 +1,18 @@
1
- const BASE_URL = "https://api.helpscout.net/v2";
2
- async function apiRequest(token, method, endpoint, body, qs) {
3
- const url = new URL(`${BASE_URL}${endpoint}`);
4
- if (qs) {
5
- for (const [k, v] of Object.entries(qs)) {
6
- if (v !== undefined && v !== null)
7
- url.searchParams.set(k, String(v));
8
- }
9
- }
10
- const opts = {
1
+ import { credentialOk, jsonAnswer, pathSegment, } from "../../_shared/credentials.js";
2
+ import { helpscoutCredential } from "./credentials.js";
3
+ async function apiRequest(ctx, method, endpoint, body, qs) {
4
+ const res = await credentialOk(ctx, helpscoutCredential, "helpscout", {
5
+ target: "api",
6
+ path: endpoint,
11
7
  method,
12
- headers: {
13
- Authorization: `Bearer ${token}`,
14
- "Content-Type": "application/json",
15
- },
16
- };
17
- if (body &&
18
- Object.keys(body).length > 0 &&
19
- method !== "GET" &&
20
- method !== "DELETE")
21
- opts.body = JSON.stringify(body);
22
- const res = await fetch(url.toString(), opts);
23
- if (!res.ok)
24
- throw new Error(`HelpScout API error ${res.status}: ${await res.text()}`);
8
+ query: qs,
9
+ ...(body && Object.keys(body).length > 0 && method !== "GET"
10
+ ? { json: body }
11
+ : {}),
12
+ });
25
13
  if (res.status === 201 || res.status === 204)
26
14
  return { success: true, location: res.headers.get("Location") };
27
- return res.json();
15
+ return jsonAnswer(res);
28
16
  }
29
17
  function unwrapEmbedded(data, key) {
30
18
  if (data &&
@@ -37,6 +25,7 @@ function unwrapEmbedded(data, key) {
37
25
  export default function helpscout(rl) {
38
26
  rl.setName("helpscout");
39
27
  rl.setVersion("0.1.0");
28
+ rl.setCredential(helpscoutCredential);
40
29
  rl.setConnectionSchema({
41
30
  accessToken: {
42
31
  type: "string",
@@ -45,7 +34,6 @@ export default function helpscout(rl) {
45
34
  env: "HELPSCOUT_ACCESS_TOKEN",
46
35
  },
47
36
  });
48
- const tok = (ctx) => ctx.connection.config.accessToken;
49
37
  // ── Conversation ────────────────────────────────────
50
38
  rl.registerAction("conversation.create", {
51
39
  access: "write",
@@ -88,7 +76,7 @@ export default function helpscout(rl) {
88
76
  body.status = status;
89
77
  if (tags)
90
78
  body.tags = tags;
91
- return apiRequest(tok(ctx), "POST", "/conversations", body);
79
+ return apiRequest(ctx, "POST", "conversations", body);
92
80
  },
93
81
  });
94
82
  rl.registerAction("conversation.get", {
@@ -102,7 +90,7 @@ export default function helpscout(rl) {
102
90
  },
103
91
  },
104
92
  async execute(input, ctx) {
105
- return apiRequest(tok(ctx), "GET", `/conversations/${input.conversationId}`);
93
+ return apiRequest(ctx, "GET", `conversations/${pathSegment(input.conversationId)}`);
106
94
  },
107
95
  });
108
96
  rl.registerAction("conversation.list", {
@@ -133,7 +121,7 @@ export default function helpscout(rl) {
133
121
  qs.pageSize = limit;
134
122
  if (page)
135
123
  qs.page = page;
136
- return unwrapEmbedded(await apiRequest(tok(ctx), "GET", "/conversations", undefined, qs), "conversations");
124
+ return unwrapEmbedded(await apiRequest(ctx, "GET", "conversations", undefined, qs), "conversations");
137
125
  },
138
126
  });
139
127
  rl.registerAction("conversation.delete", {
@@ -147,7 +135,7 @@ export default function helpscout(rl) {
147
135
  },
148
136
  },
149
137
  async execute(input, ctx) {
150
- await apiRequest(tok(ctx), "DELETE", `/conversations/${input.conversationId}`);
138
+ await apiRequest(ctx, "DELETE", `conversations/${pathSegment(input.conversationId)}`);
151
139
  return { success: true };
152
140
  },
153
141
  });
@@ -174,7 +162,7 @@ export default function helpscout(rl) {
174
162
  body.emails = emails;
175
163
  if (phones)
176
164
  body.phones = phones;
177
- return apiRequest(tok(ctx), "POST", "/customers", body);
165
+ return apiRequest(ctx, "POST", "customers", body);
178
166
  },
179
167
  });
180
168
  rl.registerAction("customer.get", {
@@ -188,7 +176,7 @@ export default function helpscout(rl) {
188
176
  },
189
177
  },
190
178
  async execute(input, ctx) {
191
- return apiRequest(tok(ctx), "GET", `/customers/${input.customerId}`);
179
+ return apiRequest(ctx, "GET", `customers/${pathSegment(input.customerId)}`);
192
180
  },
193
181
  });
194
182
  rl.registerAction("customer.list", {
@@ -205,7 +193,7 @@ export default function helpscout(rl) {
205
193
  qs.pageSize = limit;
206
194
  if (page)
207
195
  qs.page = page;
208
- return unwrapEmbedded(await apiRequest(tok(ctx), "GET", "/customers", undefined, qs), "customers");
196
+ return unwrapEmbedded(await apiRequest(ctx, "GET", "customers", undefined, qs), "customers");
209
197
  },
210
198
  });
211
199
  rl.registerAction("customer.update", {
@@ -225,7 +213,7 @@ export default function helpscout(rl) {
225
213
  },
226
214
  async execute(input, ctx) {
227
215
  const { customerId, properties } = input;
228
- return apiRequest(tok(ctx), "PUT", `/customers/${customerId}`, properties);
216
+ return apiRequest(ctx, "PUT", `customers/${pathSegment(customerId)}`, properties);
229
217
  },
230
218
  });
231
219
  rl.registerAction("customer.getProperties", {
@@ -239,7 +227,7 @@ export default function helpscout(rl) {
239
227
  },
240
228
  },
241
229
  async execute(input, ctx) {
242
- return apiRequest(tok(ctx), "GET", `/customers/${input.customerId}/properties`);
230
+ return apiRequest(ctx, "GET", `customers/${pathSegment(input.customerId)}/properties`);
243
231
  },
244
232
  });
245
233
  // ── Mailbox ─────────────────────────────────────────
@@ -250,14 +238,14 @@ export default function helpscout(rl) {
250
238
  mailboxId: { type: "number", required: true, description: "Mailbox ID" },
251
239
  },
252
240
  async execute(input, ctx) {
253
- return apiRequest(tok(ctx), "GET", `/mailboxes/${input.mailboxId}`);
241
+ return apiRequest(ctx, "GET", `mailboxes/${pathSegment(input.mailboxId)}`);
254
242
  },
255
243
  });
256
244
  rl.registerAction("mailbox.list", {
257
245
  access: "read",
258
246
  description: "List mailboxes",
259
247
  async execute(_input, ctx) {
260
- return unwrapEmbedded(await apiRequest(tok(ctx), "GET", "/mailboxes"), "mailboxes");
248
+ return unwrapEmbedded(await apiRequest(ctx, "GET", "mailboxes"), "mailboxes");
261
249
  },
262
250
  });
263
251
  // ── Thread ──────────────────────────────────────────
@@ -291,7 +279,7 @@ export default function helpscout(rl) {
291
279
  const body = { type, text };
292
280
  if (customer)
293
281
  body.customer = customer;
294
- return apiRequest(tok(ctx), "POST", `/conversations/${conversationId}/reply`, body);
282
+ return apiRequest(ctx, "POST", `conversations/${pathSegment(conversationId)}/reply`, body);
295
283
  },
296
284
  });
297
285
  rl.registerAction("thread.list", {
@@ -305,7 +293,7 @@ export default function helpscout(rl) {
305
293
  },
306
294
  },
307
295
  async execute(input, ctx) {
308
- return unwrapEmbedded(await apiRequest(tok(ctx), "GET", `/conversations/${input.conversationId}/threads`), "threads");
296
+ return unwrapEmbedded(await apiRequest(ctx, "GET", `conversations/${pathSegment(input.conversationId)}/threads`), "threads");
309
297
  },
310
298
  });
311
299
  }
@@ -0,0 +1,19 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** The API version header every HighLevel request carries. */
3
+ export const HIGHLEVEL_VERSION = "2021-07-28";
4
+ /**
5
+ * An OAuth2 access token, sent as a bearer to HighLevel's one API origin.
6
+ * The Version header is a public API-version marker, not a credential.
7
+ */
8
+ export const highlevelCredential = staticCredential({
9
+ id: "highlevel",
10
+ auth: { kind: "bearer" },
11
+ local: { secret: "accessToken" },
12
+ targets: {
13
+ api: {
14
+ baseUrl: "https://services.leadconnectorhq.com/",
15
+ methods: ["GET", "POST", "PUT", "DELETE"],
16
+ allowedHeaders: ["Version"],
17
+ },
18
+ },
19
+ });
@@ -1,38 +1,22 @@
1
- const BASE = "https://services.leadconnectorhq.com";
2
- function getConn(ctx) {
3
- return {
4
- token: ctx.connection.config.accessToken,
5
- locationId: ctx.connection.config.locationId,
6
- };
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { HIGHLEVEL_VERSION, highlevelCredential } from "./credentials.js";
3
+ function locationOf(ctx) {
4
+ return ctx.connection.config.locationId;
7
5
  }
8
- async function api(token, method, path, body, qs) {
9
- const url = new URL(`${BASE}${path}`);
10
- if (qs) {
11
- for (const [k, v] of Object.entries(qs)) {
12
- if (v !== undefined && v !== null)
13
- url.searchParams.set(k, String(v));
14
- }
15
- }
16
- const init = {
6
+ function api(ctx, method, path, body, qs) {
7
+ return credentialJson(ctx, highlevelCredential, "highlevel", {
8
+ target: "api",
9
+ path,
17
10
  method,
18
- headers: {
19
- Authorization: `Bearer ${token}`,
20
- "Content-Type": "application/json",
21
- Accept: "application/json",
22
- Version: "2021-07-28",
23
- },
24
- };
25
- if (body && Object.keys(body).length > 0)
26
- init.body = JSON.stringify(body);
27
- const res = await fetch(url.toString(), init);
28
- if (!res.ok)
29
- throw new Error(`HighLevel error ${res.status}: ${await res.text()}`);
30
- const text = await res.text();
31
- return text ? JSON.parse(text) : { success: true };
11
+ query: qs,
12
+ headers: { Version: HIGHLEVEL_VERSION },
13
+ ...(body && Object.keys(body).length > 0 ? { json: body } : {}),
14
+ });
32
15
  }
33
16
  export default function highlevel(rl) {
34
17
  rl.setName("highlevel");
35
18
  rl.setVersion("0.1.0");
19
+ rl.setCredential(highlevelCredential);
36
20
  rl.setConnectionSchema({
37
21
  accessToken: {
38
22
  type: "string",
@@ -77,13 +61,16 @@ export default function highlevel(rl) {
77
61
  },
78
62
  },
79
63
  async execute(input, ctx) {
80
- const { token, locationId } = getConn(ctx);
81
- const body = { ...input, locationId };
64
+ const locationId = locationOf(ctx);
65
+ const body = {
66
+ ...input,
67
+ locationId,
68
+ };
82
69
  if (typeof body.tags === "string")
83
70
  body.tags = body.tags
84
71
  .split(",")
85
72
  .map((t) => t.trim());
86
- const res = (await api(token, "POST", "/contacts/upsert/", body));
73
+ const res = (await api(ctx, "POST", "contacts/upsert/", body));
87
74
  return res.contact ?? res;
88
75
  },
89
76
  });
@@ -92,8 +79,7 @@ export default function highlevel(rl) {
92
79
  description: "Get a contact by ID",
93
80
  inputSchema: { id: { type: "string", required: true } },
94
81
  async execute(input, ctx) {
95
- const { token } = getConn(ctx);
96
- const res = (await api(token, "GET", `/contacts/${input.id}/`));
82
+ const res = (await api(ctx, "GET", `contacts/${pathSegment(input.id)}/`));
97
83
  return res.contact ?? res;
98
84
  },
99
85
  });
@@ -115,7 +101,7 @@ export default function highlevel(rl) {
115
101
  order: { type: "string", required: false, description: "asc or desc" },
116
102
  },
117
103
  async execute(input, ctx) {
118
- const { token, locationId } = getConn(ctx);
104
+ const locationId = locationOf(ctx);
119
105
  const p = (input ?? {});
120
106
  const qs = { locationId };
121
107
  if (p.limit)
@@ -126,7 +112,7 @@ export default function highlevel(rl) {
126
112
  qs.sortBy = p.sortBy;
127
113
  if (p.order)
128
114
  qs.order = p.order;
129
- const res = (await api(token, "GET", "/contacts/", undefined, qs));
115
+ const res = (await api(ctx, "GET", "contacts/", undefined, qs));
130
116
  return res.contacts ?? res;
131
117
  },
132
118
  });
@@ -150,13 +136,12 @@ export default function highlevel(rl) {
150
136
  customFields: { type: "object", required: false },
151
137
  },
152
138
  async execute(input, ctx) {
153
- const { token } = getConn(ctx);
154
139
  const { id, ...body } = input;
155
140
  if (typeof body.tags === "string")
156
141
  body.tags = body.tags
157
142
  .split(",")
158
143
  .map((t) => t.trim());
159
- const res = (await api(token, "PUT", `/contacts/${id}/`, body));
144
+ const res = (await api(ctx, "PUT", `contacts/${pathSegment(id)}/`, body));
160
145
  return res.contact ?? res;
161
146
  },
162
147
  });
@@ -165,8 +150,7 @@ export default function highlevel(rl) {
165
150
  description: "Delete a contact",
166
151
  inputSchema: { id: { type: "string", required: true } },
167
152
  async execute(input, ctx) {
168
- const { token } = getConn(ctx);
169
- await api(token, "DELETE", `/contacts/${input.id}/`);
153
+ await api(ctx, "DELETE", `contacts/${pathSegment(input.id)}/`);
170
154
  return { success: true };
171
155
  },
172
156
  });
@@ -194,8 +178,11 @@ export default function highlevel(rl) {
194
178
  tags: { type: "object", required: false },
195
179
  },
196
180
  async execute(input, ctx) {
197
- const { token, locationId } = getConn(ctx);
198
- const body = { ...input, locationId };
181
+ const locationId = locationOf(ctx);
182
+ const body = {
183
+ ...input,
184
+ locationId,
185
+ };
199
186
  if (body.stageId) {
200
187
  body.pipelineStageId = body.stageId;
201
188
  delete body.stageId;
@@ -204,7 +191,7 @@ export default function highlevel(rl) {
204
191
  body.tags = body.tags
205
192
  .split(",")
206
193
  .map((t) => t.trim());
207
- return api(token, "POST", "/opportunities/", body);
194
+ return api(ctx, "POST", "opportunities/", body);
208
195
  },
209
196
  });
210
197
  rl.registerAction("opportunity.get", {
@@ -212,8 +199,7 @@ export default function highlevel(rl) {
212
199
  description: "Get an opportunity",
213
200
  inputSchema: { id: { type: "string", required: true } },
214
201
  async execute(input, ctx) {
215
- const { token } = getConn(ctx);
216
- return api(token, "GET", `/opportunities/${input.id}`);
202
+ return api(ctx, "GET", `opportunities/${pathSegment(input.id)}`);
217
203
  },
218
204
  });
219
205
  rl.registerAction("opportunity.list", {
@@ -230,7 +216,7 @@ export default function highlevel(rl) {
230
216
  endDate: { type: "string", required: false },
231
217
  },
232
218
  async execute(input, ctx) {
233
- const { token, locationId } = getConn(ctx);
219
+ const locationId = locationOf(ctx);
234
220
  const p = (input ?? {});
235
221
  const qs = { location_id: locationId };
236
222
  if (p.limit)
@@ -249,7 +235,7 @@ export default function highlevel(rl) {
249
235
  qs.startDate = new Date(p.startDate).getTime();
250
236
  if (p.endDate)
251
237
  qs.endDate = new Date(p.endDate).getTime();
252
- const res = (await api(token, "GET", "/opportunities/search", undefined, qs));
238
+ const res = (await api(ctx, "GET", "opportunities/search", undefined, qs));
253
239
  return res.opportunities ?? res;
254
240
  },
255
241
  });
@@ -266,13 +252,12 @@ export default function highlevel(rl) {
266
252
  assignedTo: { type: "string", required: false },
267
253
  },
268
254
  async execute(input, ctx) {
269
- const { token } = getConn(ctx);
270
255
  const { id, ...body } = input;
271
256
  if (body.stageId) {
272
257
  body.pipelineStageId = body.stageId;
273
258
  delete body.stageId;
274
259
  }
275
- return api(token, "PUT", `/opportunities/${id}`, body);
260
+ return api(ctx, "PUT", `opportunities/${pathSegment(id)}`, body);
276
261
  },
277
262
  });
278
263
  rl.registerAction("opportunity.delete", {
@@ -280,8 +265,7 @@ export default function highlevel(rl) {
280
265
  description: "Delete an opportunity",
281
266
  inputSchema: { id: { type: "string", required: true } },
282
267
  async execute(input, ctx) {
283
- const { token } = getConn(ctx);
284
- await api(token, "DELETE", `/opportunities/${input.id}`);
268
+ await api(ctx, "DELETE", `opportunities/${pathSegment(input.id)}`);
285
269
  return { success: true };
286
270
  },
287
271
  });
@@ -298,9 +282,8 @@ export default function highlevel(rl) {
298
282
  assignedTo: { type: "string", required: false },
299
283
  },
300
284
  async execute(input, ctx) {
301
- const { token } = getConn(ctx);
302
285
  const { contactId, ...body } = input;
303
- return api(token, "POST", `/contacts/${contactId}/tasks/`, body);
286
+ return api(ctx, "POST", `contacts/${pathSegment(contactId)}/tasks/`, body);
304
287
  },
305
288
  });
306
289
  rl.registerAction("task.get", {
@@ -311,9 +294,8 @@ export default function highlevel(rl) {
311
294
  taskId: { type: "string", required: true },
312
295
  },
313
296
  async execute(input, ctx) {
314
- const { token } = getConn(ctx);
315
297
  const p = input;
316
- return api(token, "GET", `/contacts/${p.contactId}/tasks/${p.taskId}/`);
298
+ return api(ctx, "GET", `contacts/${pathSegment(p.contactId)}/tasks/${pathSegment(p.taskId)}/`);
317
299
  },
318
300
  });
319
301
  rl.registerAction("task.list", {
@@ -321,8 +303,7 @@ export default function highlevel(rl) {
321
303
  description: "List tasks for a contact",
322
304
  inputSchema: { contactId: { type: "string", required: true } },
323
305
  async execute(input, ctx) {
324
- const { token } = getConn(ctx);
325
- const res = (await api(token, "GET", `/contacts/${input.contactId}/tasks/`));
306
+ const res = (await api(ctx, "GET", `contacts/${pathSegment(input.contactId)}/tasks/`));
326
307
  return res.tasks ?? res;
327
308
  },
328
309
  });
@@ -339,9 +320,8 @@ export default function highlevel(rl) {
339
320
  assignedTo: { type: "string", required: false },
340
321
  },
341
322
  async execute(input, ctx) {
342
- const { token } = getConn(ctx);
343
323
  const { contactId, taskId, ...body } = input;
344
- return api(token, "PUT", `/contacts/${contactId}/tasks/${taskId}/`, body);
324
+ return api(ctx, "PUT", `contacts/${pathSegment(contactId)}/tasks/${pathSegment(taskId)}/`, body);
345
325
  },
346
326
  });
347
327
  rl.registerAction("task.delete", {
@@ -352,9 +332,8 @@ export default function highlevel(rl) {
352
332
  taskId: { type: "string", required: true },
353
333
  },
354
334
  async execute(input, ctx) {
355
- const { token } = getConn(ctx);
356
335
  const p = input;
357
- await api(token, "DELETE", `/contacts/${p.contactId}/tasks/${p.taskId}/`);
336
+ await api(ctx, "DELETE", `contacts/${pathSegment(p.contactId)}/tasks/${pathSegment(p.taskId)}/`);
358
337
  return { success: true };
359
338
  },
360
339
  });
@@ -383,8 +362,7 @@ export default function highlevel(rl) {
383
362
  toNotify: { type: "boolean", required: false },
384
363
  },
385
364
  async execute(input, ctx) {
386
- const { token } = getConn(ctx);
387
- return api(token, "POST", "/calendars/events/appointments", input);
365
+ return api(ctx, "POST", "calendars/events/appointments", input);
388
366
  },
389
367
  });
390
368
  rl.registerAction("calendar.getFreeSlots", {
@@ -406,7 +384,6 @@ export default function highlevel(rl) {
406
384
  userId: { type: "string", required: false },
407
385
  },
408
386
  async execute(input, ctx) {
409
- const { token } = getConn(ctx);
410
387
  const p = input;
411
388
  const qs = {
412
389
  startDate: p.startDate,
@@ -416,7 +393,7 @@ export default function highlevel(rl) {
416
393
  qs.timezone = p.timezone;
417
394
  if (p.userId)
418
395
  qs.userId = p.userId;
419
- return api(token, "GET", `/calendars/${p.calendarId}/free-slots`, undefined, qs);
396
+ return api(ctx, "GET", `calendars/${pathSegment(p.calendarId)}/free-slots`, undefined, qs);
420
397
  },
421
398
  });
422
399
  }
@@ -0,0 +1,27 @@
1
+ import { configFlag, httpsBase, staticCredential, } from "../../_shared/credentials.js";
2
+ /**
3
+ * A long-lived access token, sent as a bearer to the instance's own /api/
4
+ * base. The target carries the scheme `ssl` selects, and config-derived
5
+ * hosts are HTTPS-only: httpsBase refuses the plain-http base that
6
+ * `ssl: false` (the default) selects, as invalid_credentials.
7
+ */
8
+ export const homeAssistantCredential = staticCredential({
9
+ id: "homeAssistant",
10
+ auth: { kind: "bearer" },
11
+ local: { secret: "accessToken" },
12
+ targets: (config) => {
13
+ const scheme = configFlag(config.ssl) ? "https" : "http";
14
+ return {
15
+ api: {
16
+ baseUrl: httpsBase(`${scheme}://${String(config.host)}:${config.port ?? 8123}`, "api/"),
17
+ methods: ["GET", "POST"],
18
+ },
19
+ };
20
+ },
21
+ probe: {
22
+ target: "api",
23
+ path: "config",
24
+ method: "GET",
25
+ acceptedStatuses: [200],
26
+ },
27
+ });