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,24 +1,18 @@
1
- function getConn(ctx) {
2
- const c = ctx.connection.config;
3
- return { authId: c.authId, authToken: c.authToken };
4
- }
5
- async function apiRequest(conn, method, endpoint, body) {
6
- const url = `https://api.plivo.com/v1/Account/${conn.authId}${endpoint}/`;
7
- const res = await fetch(url, {
8
- method,
9
- headers: {
10
- Authorization: "Basic " + btoa(`${conn.authId}:${conn.authToken}`),
11
- "Content-Type": "application/json",
12
- },
13
- body: JSON.stringify(body),
1
+ import { credentialJson } from "../../_shared/credentials.js";
2
+ import { plivoCredential } from "./credentials.js";
3
+ /** A Plivo JSON call beneath the account; Plivo's resource paths end in /. */
4
+ function apiRequest(ctx, resource, body) {
5
+ return credentialJson(ctx, plivoCredential, "plivo", {
6
+ target: "api",
7
+ path: `${resource}/`,
8
+ method: "POST",
9
+ json: body,
14
10
  });
15
- if (!res.ok)
16
- throw new Error(`Plivo error ${res.status}: ${await res.text()}`);
17
- return res.json();
18
11
  }
19
12
  export default function plivo(rl) {
20
13
  rl.setName("plivo");
21
14
  rl.setVersion("0.1.0");
15
+ rl.setCredential(plivoCredential);
22
16
  rl.setConnectionSchema({
23
17
  authId: {
24
18
  type: "string",
@@ -43,7 +37,7 @@ export default function plivo(rl) {
43
37
  },
44
38
  async execute(input, ctx) {
45
39
  const { from, to, message } = input;
46
- return apiRequest(getConn(ctx), "POST", "/Message", {
40
+ return apiRequest(ctx, "Message", {
47
41
  src: from,
48
42
  dst: to,
49
43
  text: message,
@@ -65,7 +59,7 @@ export default function plivo(rl) {
65
59
  },
66
60
  async execute(input, ctx) {
67
61
  const { from, to, message, mediaUrls } = input;
68
- return apiRequest(getConn(ctx), "POST", "/Message", {
62
+ return apiRequest(ctx, "Message", {
69
63
  src: from,
70
64
  dst: to,
71
65
  text: message,
@@ -93,7 +87,7 @@ export default function plivo(rl) {
93
87
  },
94
88
  async execute(input, ctx) {
95
89
  const { from, to, answerUrl, answerMethod } = input;
96
- return apiRequest(getConn(ctx), "POST", "/Call", {
90
+ return apiRequest(ctx, "Call", {
97
91
  from,
98
92
  to,
99
93
  answer_url: answerUrl,
@@ -0,0 +1,18 @@
1
+ import { httpsBase, staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * A project API key, added by the transport as the api_key field of every
4
+ * JSON capture call, on the connection's own PostHog instance. The
5
+ * instance URL is public config and must be HTTPS.
6
+ */
7
+ export const posthogCredential = staticCredential({
8
+ id: "posthog",
9
+ auth: {
10
+ kind: "static",
11
+ parts: ["key"],
12
+ placements: [{ in: "body", part: "key", name: "api_key" }],
13
+ },
14
+ local: { key: "apiKey" },
15
+ targets: (config) => ({
16
+ api: { baseUrl: httpsBase(config.url, ""), methods: ["POST"] },
17
+ }),
18
+ });
@@ -1,24 +1,18 @@
1
- function getConn(ctx) {
2
- const c = ctx.connection.config;
3
- return {
4
- url: c.url.replace(/\/$/, ""),
5
- apiKey: c.apiKey,
6
- };
7
- }
8
- async function apiRequest(conn, endpoint, body) {
9
- body.api_key = conn.apiKey;
10
- const res = await fetch(`${conn.url}${endpoint}`, {
1
+ import { credentialJson } from "../../_shared/credentials.js";
2
+ import { posthogCredential } from "./credentials.js";
3
+ /** Every PostHog capture call is a JSON POST. */
4
+ function apiRequest(ctx, endpoint, body) {
5
+ return credentialJson(ctx, posthogCredential, "posthog", {
6
+ target: "api",
7
+ path: endpoint,
11
8
  method: "POST",
12
- headers: { "Content-Type": "application/json" },
13
- body: JSON.stringify(body),
9
+ json: body,
14
10
  });
15
- if (!res.ok)
16
- throw new Error(`PostHog error ${res.status}: ${await res.text()}`);
17
- return res.json();
18
11
  }
19
12
  export default function posthog(rl) {
20
13
  rl.setName("posthog");
21
14
  rl.setVersion("0.1.0");
15
+ rl.setCredential(posthogCredential);
22
16
  rl.setConnectionSchema({
23
17
  url: {
24
18
  type: "string",
@@ -60,7 +54,7 @@ export default function posthog(rl) {
60
54
  };
61
55
  if (p.timestamp)
62
56
  body.timestamp = p.timestamp;
63
- return apiRequest(getConn(ctx), "/batch", body);
57
+ return apiRequest(ctx, "batch", body);
64
58
  },
65
59
  });
66
60
  rl.registerAction("event.create", {
@@ -75,7 +69,7 @@ export default function posthog(rl) {
75
69
  },
76
70
  async execute(input, ctx) {
77
71
  const { events } = input;
78
- return apiRequest(getConn(ctx), "/capture", { batch: events });
72
+ return apiRequest(ctx, "capture", { batch: events });
79
73
  },
80
74
  });
81
75
  rl.registerAction("identity.create", {
@@ -99,7 +93,7 @@ export default function posthog(rl) {
99
93
  };
100
94
  if (p.timestamp)
101
95
  body.timestamp = p.timestamp;
102
- return apiRequest(getConn(ctx), "/batch", body);
96
+ return apiRequest(ctx, "batch", body);
103
97
  },
104
98
  });
105
99
  rl.registerAction("track.page", {
@@ -124,7 +118,7 @@ export default function posthog(rl) {
124
118
  };
125
119
  if (p.timestamp)
126
120
  body.timestamp = p.timestamp;
127
- return apiRequest(getConn(ctx), "/batch", body);
121
+ return apiRequest(ctx, "batch", body);
128
122
  },
129
123
  });
130
124
  rl.registerAction("track.screen", {
@@ -149,7 +143,7 @@ export default function posthog(rl) {
149
143
  };
150
144
  if (p.timestamp)
151
145
  body.timestamp = p.timestamp;
152
- return apiRequest(getConn(ctx), "/batch", body);
146
+ return apiRequest(ctx, "batch", body);
153
147
  },
154
148
  });
155
149
  }
@@ -0,0 +1,22 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * An API access token, sent raw in the Authorization header (no scheme)
4
+ * to ProfitWell's one API origin beneath /v2/.
5
+ */
6
+ export const profitwellCredential = staticCredential({
7
+ id: "profitwell",
8
+ auth: { kind: "apiKey", header: "Authorization" },
9
+ local: { secret: "accessToken" },
10
+ targets: {
11
+ api: {
12
+ baseUrl: "https://api.profitwell.com/v2/",
13
+ methods: ["GET"],
14
+ },
15
+ },
16
+ probe: {
17
+ target: "api",
18
+ path: "company/settings/",
19
+ method: "GET",
20
+ acceptedStatuses: [200],
21
+ },
22
+ });
@@ -1,22 +1,16 @@
1
- const BASE = "https://api.profitwell.com/v2";
2
- async function apiRequest(token, endpoint, qs) {
3
- const url = new URL(`${BASE}${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 res = await fetch(url.toString(), {
11
- headers: { Authorization: token },
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { profitwellCredential } from "./credentials.js";
3
+ function apiRequest(ctx, path, qs) {
4
+ return credentialJson(ctx, profitwellCredential, "profitwell", {
5
+ target: "api",
6
+ path,
7
+ query: qs,
12
8
  });
13
- if (!res.ok)
14
- throw new Error(`ProfitWell error ${res.status}: ${await res.text()}`);
15
- return res.json();
16
9
  }
17
10
  export default function profitwell(rl) {
18
11
  rl.setName("profitwell");
19
12
  rl.setVersion("0.1.0");
13
+ rl.setCredential(profitwellCredential);
20
14
  rl.setConnectionSchema({
21
15
  accessToken: {
22
16
  type: "string",
@@ -25,13 +19,12 @@ export default function profitwell(rl) {
25
19
  env: "PROFITWELL_ACCESS_TOKEN",
26
20
  },
27
21
  });
28
- const key = (ctx) => ctx.connection.config.accessToken;
29
22
  rl.registerAction("company.getSettings", {
30
23
  access: "read",
31
24
  description: "Get company settings",
32
25
  inputSchema: {},
33
26
  async execute(_input, ctx) {
34
- return apiRequest(key(ctx), "/company/settings/");
27
+ return apiRequest(ctx, "company/settings/");
35
28
  },
36
29
  });
37
30
  rl.registerAction("metric.get", {
@@ -64,7 +57,7 @@ export default function profitwell(rl) {
64
57
  qs.metrics = p.metrics;
65
58
  if (p.planId)
66
59
  qs.plan_id = p.planId;
67
- const data = (await apiRequest(key(ctx), `/metrics/${p.type}`, qs));
60
+ const data = (await apiRequest(ctx, `metrics/${pathSegment(p.type)}`, qs));
68
61
  return data.data;
69
62
  },
70
63
  });
@@ -0,0 +1,19 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** An access token in the Access-Token header, to Pushbullet's one API origin. */
3
+ export const pushbulletCredential = staticCredential({
4
+ id: "pushbullet",
5
+ auth: { kind: "apiKey", header: "Access-Token" },
6
+ local: { secret: "accessToken" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://api.pushbullet.com/v2/",
10
+ methods: ["GET", "POST", "DELETE"],
11
+ },
12
+ },
13
+ probe: {
14
+ target: "api",
15
+ path: "users/me",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });
@@ -1,31 +1,21 @@
1
- const BASE = "https://api.pushbullet.com/v2";
2
- async function apiRequest(token, method, path, body, qs) {
3
- const url = new URL(`${BASE}${path}`);
4
- if (qs) {
5
- for (const [k, v] of Object.entries(qs)) {
6
- if (v !== undefined && v !== null)
7
- url.searchParams.set(k, String(v));
8
- }
9
- }
10
- const init = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { pushbulletCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body, qs) {
4
+ return credentialJson(ctx, pushbulletCredential, "pushbullet", {
5
+ target: "api",
6
+ path: path.replace(/^\//, ""),
11
7
  method,
12
- headers: { "Access-Token": token, "Content-Type": "application/json" },
13
- };
14
- if (body && Object.keys(body).length > 0)
15
- init.body = JSON.stringify(body);
16
- const res = await fetch(url.toString(), init);
17
- if (!res.ok)
18
- throw new Error(`Pushbullet error ${res.status}: ${await res.text()}`);
19
- const text = await res.text();
20
- return text ? JSON.parse(text) : {};
8
+ query: qs,
9
+ ...(body && Object.keys(body).length > 0 ? { json: body } : {}),
10
+ });
21
11
  }
22
- async function paginate(token, path, qs = {}) {
12
+ async function paginate(ctx, path, qs = {}) {
23
13
  const all = [];
24
14
  let cursor;
25
15
  do {
26
16
  if (cursor)
27
17
  qs.cursor = cursor;
28
- const data = (await apiRequest(token, "GET", path, undefined, qs));
18
+ const data = (await apiRequest(ctx, "GET", path, undefined, qs));
29
19
  const items = (data.pushes ?? []);
30
20
  all.push(...items);
31
21
  cursor = data.cursor;
@@ -35,6 +25,7 @@ async function paginate(token, path, qs = {}) {
35
25
  export default function pushbullet(rl) {
36
26
  rl.setName("pushbullet");
37
27
  rl.setVersion("0.1.0");
28
+ rl.setCredential(pushbulletCredential);
38
29
  rl.setConnectionSchema({
39
30
  accessToken: {
40
31
  type: "string",
@@ -43,7 +34,6 @@ export default function pushbullet(rl) {
43
34
  env: "PUSHBULLET_ACCESS_TOKEN",
44
35
  },
45
36
  });
46
- const key = (ctx) => ctx.connection.config.accessToken;
47
37
  rl.registerAction("push.create", {
48
38
  access: "write",
49
39
  description: "Create a push (note or link)",
@@ -79,7 +69,7 @@ export default function pushbullet(rl) {
79
69
  const target = p.target ?? "default";
80
70
  if (target !== "default" && p.targetValue)
81
71
  reqBody[target] = p.targetValue;
82
- return apiRequest(key(ctx), "POST", "/pushes", reqBody);
72
+ return apiRequest(ctx, "POST", "/pushes", reqBody);
83
73
  },
84
74
  });
85
75
  rl.registerAction("push.list", {
@@ -107,10 +97,10 @@ export default function pushbullet(rl) {
107
97
  qs.modified_after = String(Math.floor(new Date(p.modifiedAfter).getTime() / 1000));
108
98
  if (p.limit) {
109
99
  qs.limit = p.limit;
110
- const d = (await apiRequest(key(ctx), "GET", "/pushes", undefined, qs));
100
+ const d = (await apiRequest(ctx, "GET", "/pushes", undefined, qs));
111
101
  return d.pushes;
112
102
  }
113
- return paginate(key(ctx), "/pushes", qs);
103
+ return paginate(ctx, "/pushes", qs);
114
104
  },
115
105
  });
116
106
  rl.registerAction("push.delete", {
@@ -119,7 +109,7 @@ export default function pushbullet(rl) {
119
109
  inputSchema: { pushId: { type: "string", required: true } },
120
110
  async execute(input, ctx) {
121
111
  const { pushId } = input;
122
- await apiRequest(key(ctx), "DELETE", `/pushes/${pushId}`);
112
+ await apiRequest(ctx, "DELETE", `/pushes/${pathSegment(pushId)}`);
123
113
  return { success: true };
124
114
  },
125
115
  });
@@ -136,7 +126,9 @@ export default function pushbullet(rl) {
136
126
  },
137
127
  async execute(input, ctx) {
138
128
  const { pushId, dismissed } = input;
139
- return apiRequest(key(ctx), "POST", `/pushes/${pushId}`, { dismissed });
129
+ return apiRequest(ctx, "POST", `/pushes/${pathSegment(pushId)}`, {
130
+ dismissed,
131
+ });
140
132
  },
141
133
  });
142
134
  }
@@ -0,0 +1,19 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** An API key in the API-Key header, to Pushcut's one API origin. */
3
+ export const pushcutCredential = staticCredential({
4
+ id: "pushcut",
5
+ auth: { kind: "apiKey", header: "API-Key" },
6
+ local: { secret: "apiKey" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://api.pushcut.io/v1/",
10
+ methods: ["GET", "POST"],
11
+ },
12
+ },
13
+ probe: {
14
+ target: "api",
15
+ path: "devices",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });
@@ -1,7 +1,9 @@
1
- const BASE = "https://api.pushcut.io/v1";
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { pushcutCredential } from "./credentials.js";
2
3
  export default function pushcut(rl) {
3
4
  rl.setName("pushcut");
4
5
  rl.setVersion("0.1.0");
6
+ rl.setCredential(pushcutCredential);
5
7
  rl.setConnectionSchema({
6
8
  apiKey: {
7
9
  type: "string",
@@ -10,7 +12,6 @@ export default function pushcut(rl) {
10
12
  env: "PUSHCUT_API_KEY",
11
13
  },
12
14
  });
13
- const key = (ctx) => ctx.connection.config.apiKey;
14
15
  rl.registerAction("notification.send", {
15
16
  access: "write",
16
17
  description: "Send a Pushcut notification",
@@ -52,14 +53,12 @@ export default function pushcut(rl) {
52
53
  body.input = p.input;
53
54
  if (p.devices)
54
55
  body.devices = p.devices;
55
- const res = await fetch(`${BASE}/notifications/${encodeURIComponent(p.notificationName)}`, {
56
+ return credentialJson(ctx, pushcutCredential, "pushcut", {
57
+ target: "api",
58
+ path: `notifications/${pathSegment(p.notificationName)}`,
56
59
  method: "POST",
57
- headers: { "API-Key": key(ctx), "Content-Type": "application/json" },
58
- body: JSON.stringify(body),
60
+ json: body,
59
61
  });
60
- if (!res.ok)
61
- throw new Error(`Pushcut error ${res.status}: ${await res.text()}`);
62
- return res.json();
63
62
  },
64
63
  });
65
64
  }
@@ -0,0 +1,14 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** An application token, added by the transport as the token field of Pushover's form body. */
3
+ export const pushoverCredential = staticCredential({
4
+ id: "pushover",
5
+ auth: {
6
+ kind: "static",
7
+ parts: ["token"],
8
+ placements: [{ in: "body", part: "token", name: "token" }],
9
+ },
10
+ local: { token: "apiToken" },
11
+ targets: {
12
+ api: { baseUrl: "https://api.pushover.net/1/", methods: ["POST"] },
13
+ },
14
+ });
@@ -1,7 +1,9 @@
1
- const BASE = "https://api.pushover.net/1";
1
+ import { credentialJson } from "../../_shared/credentials.js";
2
+ import { pushoverCredential } from "./credentials.js";
2
3
  export default function pushover(rl) {
3
4
  rl.setName("pushover");
4
5
  rl.setVersion("0.1.0");
6
+ rl.setCredential(pushoverCredential);
5
7
  rl.setConnectionSchema({
6
8
  apiToken: {
7
9
  type: "string",
@@ -10,7 +12,6 @@ export default function pushover(rl) {
10
12
  env: "PUSHOVER_API_TOKEN",
11
13
  },
12
14
  });
13
- const token = (ctx) => ctx.connection.config.apiToken;
14
15
  rl.registerAction("message.push", {
15
16
  access: "write",
16
17
  description: "Send a push notification via Pushover",
@@ -67,7 +68,6 @@ export default function pushover(rl) {
67
68
  async execute(input, ctx) {
68
69
  const p = input;
69
70
  const body = {
70
- token: token(ctx),
71
71
  user: p.userKey,
72
72
  message: p.message,
73
73
  };
@@ -91,17 +91,12 @@ export default function pushover(rl) {
91
91
  body.expire = p.expire;
92
92
  if (p.ttl)
93
93
  body.ttl = p.ttl;
94
- const formBody = Object.entries(body)
95
- .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`)
96
- .join("&");
97
- const res = await fetch(`${BASE}/messages.json`, {
94
+ return credentialJson(ctx, pushoverCredential, "pushover", {
95
+ target: "api",
96
+ path: "messages.json",
98
97
  method: "POST",
99
- headers: { "Content-Type": "application/x-www-form-urlencoded" },
100
- body: formBody,
98
+ form: body,
101
99
  });
102
- if (!res.ok)
103
- throw new Error(`Pushover error ${res.status}: ${await res.text()}`);
104
- return res.json();
105
100
  },
106
101
  });
107
102
  }
@@ -0,0 +1,15 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** A user token, sent as "QB-USER-TOKEN {token}" in Authorization, to QuickBase's
3
+ * one API origin. The realm hostname rides along as a public caller header. */
4
+ export const quickbaseCredential = staticCredential({
5
+ id: "quickbase",
6
+ auth: { kind: "apiKey", header: "Authorization", prefix: "QB-USER-TOKEN " },
7
+ local: { secret: "userToken" },
8
+ targets: {
9
+ api: {
10
+ baseUrl: "https://api.quickbase.com/v1/",
11
+ methods: ["GET", "POST", "DELETE"],
12
+ allowedHeaders: ["QB-Realm-Hostname"],
13
+ },
14
+ },
15
+ });
@@ -1,35 +1,21 @@
1
- const BASE = "https://api.quickbase.com/v1";
2
- function getConn(ctx) {
3
- const c = ctx.connection.config;
4
- return { hostname: c.hostname, userToken: c.userToken };
5
- }
6
- async function apiRequest(conn, method, endpoint, body, qs) {
7
- const url = new URL(`${BASE}${endpoint}`);
8
- if (qs) {
9
- for (const [k, v] of Object.entries(qs)) {
10
- if (v !== undefined && v !== null)
11
- url.searchParams.set(k, String(v));
12
- }
13
- }
14
- const init = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { quickbaseCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, endpoint, body, qs) {
4
+ return credentialJson(ctx, quickbaseCredential, "quickbase", {
5
+ target: "api",
6
+ path: endpoint,
15
7
  method,
8
+ query: qs,
16
9
  headers: {
17
- "QB-Realm-Hostname": conn.hostname,
18
- Authorization: `QB-USER-TOKEN ${conn.userToken}`,
19
- "Content-Type": "application/json",
20
- },
21
- };
22
- if (body !== undefined)
23
- init.body = JSON.stringify(body);
24
- const res = await fetch(url.toString(), init);
25
- if (!res.ok)
26
- throw new Error(`QuickBase error ${res.status}: ${await res.text()}`);
27
- const text = await res.text();
28
- return text ? JSON.parse(text) : {};
10
+ "QB-Realm-Hostname": String(ctx.connection.config.hostname ?? ""),
11
+ },
12
+ ...(body !== undefined ? { json: body } : {}),
13
+ });
29
14
  }
30
15
  export default function quickbase(rl) {
31
16
  rl.setName("quickbase");
32
17
  rl.setVersion("0.1.0");
18
+ rl.setCredential(quickbaseCredential);
33
19
  rl.setConnectionSchema({
34
20
  hostname: {
35
21
  type: "string",
@@ -53,7 +39,9 @@ export default function quickbase(rl) {
53
39
  },
54
40
  async execute(input, ctx) {
55
41
  const p = input;
56
- const data = (await apiRequest(getConn(ctx), "GET", "/fields", undefined, { tableId: p.tableId }));
42
+ const data = (await apiRequest(ctx, "GET", "fields", undefined, {
43
+ tableId: p.tableId,
44
+ }));
57
45
  if (p.limit)
58
46
  return data.slice(0, p.limit);
59
47
  return data;
@@ -70,7 +58,7 @@ export default function quickbase(rl) {
70
58
  },
71
59
  async execute(input, ctx) {
72
60
  const { tableId, recordId, fieldId, versionNumber } = input;
73
- return apiRequest(getConn(ctx), "DELETE", `/files/${tableId}/${recordId}/${fieldId}/${versionNumber}`);
61
+ return apiRequest(ctx, "DELETE", `files/${pathSegment(tableId)}/${pathSegment(recordId)}/${pathSegment(fieldId)}/${pathSegment(versionNumber)}`);
74
62
  },
75
63
  });
76
64
  rl.registerAction("record.create", {
@@ -93,7 +81,7 @@ export default function quickbase(rl) {
93
81
  const p = input;
94
82
  const body = { to: p.tableId, data: p.data };
95
83
  body.fieldsToReturn = p.fieldsToReturn ?? [3];
96
- return apiRequest(getConn(ctx), "POST", "/records", body);
84
+ return apiRequest(ctx, "POST", "records", body);
97
85
  },
98
86
  });
99
87
  rl.registerAction("record.delete", {
@@ -109,7 +97,7 @@ export default function quickbase(rl) {
109
97
  },
110
98
  async execute(input, ctx) {
111
99
  const { tableId, where } = input;
112
- return apiRequest(getConn(ctx), "DELETE", "/records", {
100
+ return apiRequest(ctx, "DELETE", "records", {
113
101
  from: tableId,
114
102
  where,
115
103
  });
@@ -148,7 +136,7 @@ export default function quickbase(rl) {
148
136
  body.sortBy = p.sortBy;
149
137
  if (p.limit)
150
138
  body.options = { top: p.limit };
151
- return apiRequest(getConn(ctx), "POST", "/records/query", body);
139
+ return apiRequest(ctx, "POST", "records/query", body);
152
140
  },
153
141
  });
154
142
  rl.registerAction("record.upsert", {
@@ -180,7 +168,7 @@ export default function quickbase(rl) {
180
168
  mergeFieldId: p.mergeFieldId,
181
169
  };
182
170
  body.fieldsToReturn = p.fieldsToReturn ?? [3];
183
- return apiRequest(getConn(ctx), "POST", "/records", body);
171
+ return apiRequest(ctx, "POST", "records", body);
184
172
  },
185
173
  });
186
174
  rl.registerAction("report.get", {
@@ -192,7 +180,9 @@ export default function quickbase(rl) {
192
180
  },
193
181
  async execute(input, ctx) {
194
182
  const { tableId, reportId } = input;
195
- return apiRequest(getConn(ctx), "GET", `/reports/${reportId}`, undefined, { tableId });
183
+ return apiRequest(ctx, "GET", `reports/${pathSegment(reportId)}`, undefined, {
184
+ tableId,
185
+ });
196
186
  },
197
187
  });
198
188
  rl.registerAction("report.run", {
@@ -208,7 +198,7 @@ export default function quickbase(rl) {
208
198
  const qs = { tableId: p.tableId };
209
199
  if (p.limit)
210
200
  qs.top = p.limit;
211
- return apiRequest(getConn(ctx), "POST", `/reports/${p.reportId}/run`, {}, qs);
201
+ return apiRequest(ctx, "POST", `reports/${pathSegment(p.reportId)}/run`, {}, qs);
212
202
  },
213
203
  });
214
204
  }
@@ -0,0 +1,22 @@
1
+ import { hostLabel, staticCredential } from "../../_shared/credentials.js";
2
+ /** An OAuth2 access token, sent as a bearer to the company's own realm path on
3
+ * Intuit's production or sandbox host, chosen by the sandbox flag. */
4
+ export const quickbooksCredential = staticCredential({
5
+ id: "quickbooks",
6
+ auth: { kind: "bearer" },
7
+ local: { secret: "accessToken" },
8
+ targets: (config) => ({
9
+ api: {
10
+ baseUrl: `${config.sandbox === true
11
+ ? "https://sandbox-quickbooks.api.intuit.com"
12
+ : "https://quickbooks.api.intuit.com"}/v3/company/${hostLabel(config.companyId)}/`,
13
+ methods: ["GET", "POST"],
14
+ },
15
+ }),
16
+ probe: {
17
+ target: "api",
18
+ path: "query?query=select%20*%20from%20CompanyInfo",
19
+ method: "GET",
20
+ acceptedStatuses: [200],
21
+ },
22
+ });