runline 0.33.0 → 0.34.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 (515) 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 +9 -0
  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 +179 -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 +167 -10
  15. package/dist/index.d.ts +5 -5
  16. package/dist/index.js +2 -2
  17. package/dist/plugin/api.d.ts +7 -0
  18. package/dist/plugin/api.js +7 -0
  19. package/dist/plugin/types.d.ts +12 -0
  20. package/dist/plugins/_shared/credentialAdapter.js +79 -15
  21. package/dist/plugins/_shared/credentials.js +389 -0
  22. package/dist/plugins/_shared/googleAuth.js +9 -40
  23. package/dist/plugins/_shared/googleCredentials.js +28 -7
  24. package/dist/plugins/_shared/microsoftAuth.js +13 -44
  25. package/dist/plugins/_shared/microsoftCredentials.js +30 -8
  26. package/dist/plugins/_shared/provider.js +2 -14
  27. package/dist/plugins/_shared/shiftCloud.js +19 -55
  28. package/dist/plugins/_shared/shiftCredentials.js +83 -0
  29. package/dist/plugins/actionNetwork/src/credentials.js +14 -0
  30. package/dist/plugins/actionNetwork/src/index.js +39 -50
  31. package/dist/plugins/activeCampaign/src/credentials.js +22 -0
  32. package/dist/plugins/activeCampaign/src/index.js +61 -132
  33. package/dist/plugins/adalo/src/credentials.js +16 -0
  34. package/dist/plugins/adalo/src/index.js +19 -43
  35. package/dist/plugins/affinity/src/credentials.js +19 -0
  36. package/dist/plugins/affinity/src/index.js +29 -54
  37. package/dist/plugins/agileCrm/src/credentials.js +16 -0
  38. package/dist/plugins/agileCrm/src/index.js +46 -112
  39. package/dist/plugins/airtable/src/credentials.js +19 -0
  40. package/dist/plugins/airtable/src/index.js +37 -50
  41. package/dist/plugins/airtop/src/credentials.js +20 -0
  42. package/dist/plugins/airtop/src/index.js +51 -75
  43. package/dist/plugins/apiTemplateIo/src/credentials.js +19 -0
  44. package/dist/plugins/apiTemplateIo/src/index.js +14 -31
  45. package/dist/plugins/asana/src/credentials.js +19 -0
  46. package/dist/plugins/asana/src/index.js +51 -72
  47. package/dist/plugins/autopilot/src/credentials.js +19 -0
  48. package/dist/plugins/autopilot/src/index.js +38 -45
  49. package/dist/plugins/bambooHr/src/credentials.js +16 -0
  50. package/dist/plugins/bambooHr/src/index.js +41 -67
  51. package/dist/plugins/bannerbear/src/credentials.js +19 -0
  52. package/dist/plugins/bannerbear/src/index.js +15 -27
  53. package/dist/plugins/baserow/src/credentials.js +17 -0
  54. package/dist/plugins/baserow/src/index.js +23 -49
  55. package/dist/plugins/beeminder/src/credentials.js +19 -0
  56. package/dist/plugins/beeminder/src/index.js +32 -54
  57. package/dist/plugins/bitly/src/credentials.js +19 -0
  58. package/dist/plugins/bitly/src/index.js +12 -26
  59. package/dist/plugins/bitwarden/src/credentials.js +62 -0
  60. package/dist/plugins/bitwarden/src/index.js +34 -80
  61. package/dist/plugins/box/src/credentials.js +19 -0
  62. package/dist/plugins/box/src/index.js +24 -49
  63. package/dist/plugins/brandfetch/src/credentials.js +13 -0
  64. package/dist/plugins/brandfetch/src/index.js +12 -17
  65. package/dist/plugins/brevo/src/credentials.js +19 -0
  66. package/dist/plugins/brevo/src/index.js +30 -51
  67. package/dist/plugins/bubble/src/credentials.js +28 -0
  68. package/dist/plugins/bubble/src/index.js +29 -65
  69. package/dist/plugins/chargebee/src/credentials.js +16 -0
  70. package/dist/plugins/chargebee/src/index.js +15 -45
  71. package/dist/plugins/circleci/src/credentials.js +19 -0
  72. package/dist/plugins/circleci/src/index.js +19 -39
  73. package/dist/plugins/ciscoWebex/src/credentials.js +19 -0
  74. package/dist/plugins/ciscoWebex/src/index.js +43 -61
  75. package/dist/plugins/clearbit/src/credentials.js +22 -0
  76. package/dist/plugins/clearbit/src/index.js +11 -21
  77. package/dist/plugins/clickup/src/credentials.js +19 -0
  78. package/dist/plugins/clickup/src/index.js +85 -117
  79. package/dist/plugins/clockify/src/credentials.js +19 -0
  80. package/dist/plugins/clockify/src/index.js +46 -61
  81. package/dist/plugins/cloudflare/src/credentials.js +19 -0
  82. package/dist/plugins/cloudflare/src/index.js +19 -34
  83. package/dist/plugins/cockpit/src/credentials.js +17 -0
  84. package/dist/plugins/cockpit/src/index.js +18 -31
  85. package/dist/plugins/coda/src/credentials.js +19 -0
  86. package/dist/plugins/coda/src/index.js +33 -50
  87. package/dist/plugins/coingecko/src/credentials.js +20 -0
  88. package/dist/plugins/coingecko/src/index.js +24 -34
  89. package/dist/plugins/contentful/src/credentials.js +26 -0
  90. package/dist/plugins/contentful/src/index.js +19 -40
  91. package/dist/plugins/convertkit/src/credentials.js +26 -0
  92. package/dist/plugins/convertkit/src/index.js +27 -45
  93. package/dist/plugins/copper/src/credentials.js +17 -0
  94. package/dist/plugins/copper/src/index.js +25 -47
  95. package/dist/plugins/cortex/src/credentials.js +28 -0
  96. package/dist/plugins/cortex/src/index.js +26 -49
  97. package/dist/plugins/currents/src/credentials.js +19 -0
  98. package/dist/plugins/currents/src/index.js +46 -59
  99. package/dist/plugins/customerIo/src/credentials.js +52 -0
  100. package/dist/plugins/customerIo/src/index.js +30 -58
  101. package/dist/plugins/databricks/src/credentials.js +13 -0
  102. package/dist/plugins/databricks/src/index.js +51 -103
  103. package/dist/plugins/deepl/src/credentials.js +19 -0
  104. package/dist/plugins/deepl/src/index.js +13 -39
  105. package/dist/plugins/demio/src/credentials.js +26 -0
  106. package/dist/plugins/demio/src/index.js +17 -41
  107. package/dist/plugins/dhl/src/credentials.js +13 -0
  108. package/dist/plugins/dhl/src/index.js +8 -19
  109. package/dist/plugins/discord/src/credentials.js +19 -0
  110. package/dist/plugins/discord/src/index.js +30 -58
  111. package/dist/plugins/discourse/src/credentials.js +18 -0
  112. package/dist/plugins/discourse/src/index.js +36 -53
  113. package/dist/plugins/disqus/src/credentials.js +13 -0
  114. package/dist/plugins/disqus/src/index.js +14 -32
  115. package/dist/plugins/drift/src/credentials.js +13 -0
  116. package/dist/plugins/drift/src/index.js +16 -26
  117. package/dist/plugins/dropbox/src/credentials.js +13 -0
  118. package/dist/plugins/dropbox/src/index.js +23 -30
  119. package/dist/plugins/dropcontact/src/credentials.js +13 -0
  120. package/dist/plugins/dropcontact/src/index.js +13 -18
  121. package/dist/plugins/egoi/src/credentials.js +19 -0
  122. package/dist/plugins/egoi/src/index.js +23 -38
  123. package/dist/plugins/elasticsearch/src/credentials.js +18 -0
  124. package/dist/plugins/elasticsearch/src/index.js +27 -48
  125. package/dist/plugins/elevenlabs/src/credentials.js +30 -0
  126. package/dist/plugins/elevenlabs/src/index.js +4 -1
  127. package/dist/plugins/elevenlabs/src/schemas.js +2 -1
  128. package/dist/plugins/elevenlabs/src/shared.js +74 -35
  129. package/dist/plugins/elevenlabs/src/workflows.js +2 -2
  130. package/dist/plugins/emelia/src/credentials.js +14 -0
  131. package/dist/plugins/emelia/src/index.js +19 -23
  132. package/dist/plugins/erpnext/src/credentials.js +27 -0
  133. package/dist/plugins/erpnext/src/index.js +21 -42
  134. package/dist/plugins/facebookGraph/src/credentials.js +20 -0
  135. package/dist/plugins/facebookGraph/src/index.js +39 -37
  136. package/dist/plugins/fal/src/credentials.js +14 -0
  137. package/dist/plugins/fal/src/index.js +4 -2
  138. package/dist/plugins/fal/src/shared.js +58 -63
  139. package/dist/plugins/freshdesk/src/credentials.js +20 -0
  140. package/dist/plugins/freshdesk/src/index.js +25 -46
  141. package/dist/plugins/freshservice/src/credentials.js +16 -0
  142. package/dist/plugins/freshservice/src/index.js +37 -58
  143. package/dist/plugins/freshworksCrm/src/credentials.js +16 -0
  144. package/dist/plugins/freshworksCrm/src/index.js +20 -39
  145. package/dist/plugins/getresponse/src/credentials.js +22 -0
  146. package/dist/plugins/getresponse/src/index.js +20 -32
  147. package/dist/plugins/gett/src/credentials.js +64 -0
  148. package/dist/plugins/gett/src/index.js +11 -6
  149. package/dist/plugins/gett/src/login.js +24 -0
  150. package/dist/plugins/gett/src/session.js +15 -38
  151. package/dist/plugins/gett/src/shared.js +41 -84
  152. package/dist/plugins/ghost/src/credentials.js +36 -0
  153. package/dist/plugins/ghost/src/index.js +18 -59
  154. package/dist/plugins/github/src/credentials.js +18 -0
  155. package/dist/plugins/github/src/index.js +55 -78
  156. package/dist/plugins/gitlab/src/credentials.js +24 -0
  157. package/dist/plugins/gitlab/src/index.js +29 -48
  158. package/dist/plugins/gmail/src/index.js +26 -24
  159. package/dist/plugins/gong/src/credentials.js +16 -0
  160. package/dist/plugins/gong/src/index.js +16 -32
  161. package/dist/plugins/googleAppsScript/src/index.js +108 -42
  162. package/dist/plugins/googleCalendar/src/index.js +15 -13
  163. package/dist/plugins/googleContacts/src/index.js +12 -9
  164. package/dist/plugins/googleDocs/src/index.js +2 -0
  165. package/dist/plugins/googleDocs/src/shared.js +2 -1
  166. package/dist/plugins/googleDrive/src/index.js +50 -53
  167. package/dist/plugins/googleImage/src/credentials.js +14 -0
  168. package/dist/plugins/googleImage/src/index.js +14 -25
  169. package/dist/plugins/googleSheets/src/index.js +26 -27
  170. package/dist/plugins/googleSlides/src/index.js +6 -4
  171. package/dist/plugins/googleTasks/src/index.js +13 -11
  172. package/dist/plugins/gotify/src/credentials.js +32 -0
  173. package/dist/plugins/gotify/src/index.js +14 -36
  174. package/dist/plugins/gotowebinar/src/credentials.js +13 -0
  175. package/dist/plugins/gotowebinar/src/index.js +52 -69
  176. package/dist/plugins/grafana/src/credentials.js +16 -0
  177. package/dist/plugins/grafana/src/index.js +34 -53
  178. package/dist/plugins/graphql/src/credentials.js +42 -0
  179. package/dist/plugins/graphql/src/index.js +21 -46
  180. package/dist/plugins/grist/src/credentials.js +30 -0
  181. package/dist/plugins/grist/src/index.js +14 -43
  182. package/dist/plugins/halopsa/src/credentials.js +56 -0
  183. package/dist/plugins/halopsa/src/index.js +20 -47
  184. package/dist/plugins/harvest/src/credentials.js +20 -0
  185. package/dist/plugins/harvest/src/index.js +24 -43
  186. package/dist/plugins/helpscout/src/credentials.js +13 -0
  187. package/dist/plugins/helpscout/src/index.js +26 -38
  188. package/dist/plugins/highlevel/src/credentials.js +19 -0
  189. package/dist/plugins/highlevel/src/index.js +34 -63
  190. package/dist/plugins/homeAssistant/src/credentials.js +27 -0
  191. package/dist/plugins/homeAssistant/src/index.js +34 -52
  192. package/dist/plugins/hubspot/src/credentials.js +16 -0
  193. package/dist/plugins/hubspot/src/index.js +29 -41
  194. package/dist/plugins/humanticAi/src/credentials.js +13 -0
  195. package/dist/plugins/humanticAi/src/index.js +15 -22
  196. package/dist/plugins/hunter/src/credentials.js +13 -0
  197. package/dist/plugins/hunter/src/index.js +18 -17
  198. package/dist/plugins/intercom/src/credentials.js +19 -0
  199. package/dist/plugins/intercom/src/index.js +25 -38
  200. package/dist/plugins/iterable/src/credentials.js +17 -0
  201. package/dist/plugins/iterable/src/index.js +26 -40
  202. package/dist/plugins/jenkins/src/credentials.js +16 -0
  203. package/dist/plugins/jenkins/src/index.js +22 -36
  204. package/dist/plugins/jira/src/credentials.js +16 -0
  205. package/dist/plugins/jira/src/index.js +35 -61
  206. package/dist/plugins/keap/src/credentials.js +19 -0
  207. package/dist/plugins/keap/src/index.js +43 -71
  208. package/dist/plugins/kobotoolbox/src/credentials.js +13 -0
  209. package/dist/plugins/kobotoolbox/src/index.js +46 -84
  210. package/dist/plugins/lemlist/src/credentials.js +19 -0
  211. package/dist/plugins/lemlist/src/index.js +35 -47
  212. package/dist/plugins/linear/src/attachments.js +7 -7
  213. package/dist/plugins/linear/src/comments.js +7 -7
  214. package/dist/plugins/linear/src/credentials.js +17 -0
  215. package/dist/plugins/linear/src/cycles.js +5 -5
  216. package/dist/plugins/linear/src/index.js +2 -0
  217. package/dist/plugins/linear/src/initiatives.js +6 -6
  218. package/dist/plugins/linear/src/issues.js +14 -14
  219. package/dist/plugins/linear/src/labels.js +6 -6
  220. package/dist/plugins/linear/src/organization.js +2 -2
  221. package/dist/plugins/linear/src/projects.js +12 -12
  222. package/dist/plugins/linear/src/shared.js +34 -32
  223. package/dist/plugins/linear/src/states.js +3 -3
  224. package/dist/plugins/linear/src/teams.js +4 -4
  225. package/dist/plugins/linear/src/users.js +3 -3
  226. package/dist/plugins/linear/src/views.js +5 -5
  227. package/dist/plugins/linear/src/webhooks.js +5 -5
  228. package/dist/plugins/lingvanex/src/credentials.js +13 -0
  229. package/dist/plugins/lingvanex/src/index.js +7 -9
  230. package/dist/plugins/linkedin/src/credentials.js +17 -0
  231. package/dist/plugins/linkedin/src/index.js +13 -17
  232. package/dist/plugins/lonescale/src/credentials.js +13 -0
  233. package/dist/plugins/lonescale/src/index.js +16 -26
  234. package/dist/plugins/magento/src/credentials.js +16 -0
  235. package/dist/plugins/magento/src/index.js +67 -84
  236. package/dist/plugins/mailcheck/src/credentials.js +17 -0
  237. package/dist/plugins/mailcheck/src/index.js +7 -9
  238. package/dist/plugins/mailchimp/src/credentials.js +32 -0
  239. package/dist/plugins/mailchimp/src/index.js +36 -44
  240. package/dist/plugins/mailerlite/src/credentials.js +13 -0
  241. package/dist/plugins/mailerlite/src/index.js +19 -32
  242. package/dist/plugins/mailgun/src/credentials.js +21 -0
  243. package/dist/plugins/mailgun/src/index.js +15 -21
  244. package/dist/plugins/mailjet/src/credentials.js +38 -0
  245. package/dist/plugins/mailjet/src/index.js +60 -115
  246. package/dist/plugins/mandrill/src/credentials.js +17 -0
  247. package/dist/plugins/mandrill/src/index.js +11 -12
  248. package/dist/plugins/marketstack/src/credentials.js +16 -0
  249. package/dist/plugins/marketstack/src/index.js +18 -28
  250. package/dist/plugins/matrix/src/credentials.js +19 -0
  251. package/dist/plugins/matrix/src/index.js +23 -52
  252. package/dist/plugins/mattermost/src/credentials.js +19 -0
  253. package/dist/plugins/mattermost/src/index.js +41 -73
  254. package/dist/plugins/mautic/src/credentials.js +16 -0
  255. package/dist/plugins/mautic/src/index.js +46 -62
  256. package/dist/plugins/medium/src/credentials.js +20 -0
  257. package/dist/plugins/medium/src/index.js +18 -23
  258. package/dist/plugins/messagebird/src/credentials.js +22 -0
  259. package/dist/plugins/messagebird/src/index.js +13 -18
  260. package/dist/plugins/metabase/src/credentials.js +19 -0
  261. package/dist/plugins/metabase/src/index.js +24 -40
  262. package/dist/plugins/microsoftCalendar/src/index.js +48 -12
  263. package/dist/plugins/microsoftFiles/src/index.js +90 -25
  264. package/dist/plugins/microsoftMail/src/index.js +62 -15
  265. package/dist/plugins/misp/src/credentials.js +16 -0
  266. package/dist/plugins/misp/src/index.js +60 -71
  267. package/dist/plugins/mocean/src/credentials.js +17 -0
  268. package/dist/plugins/mocean/src/index.js +11 -23
  269. package/dist/plugins/monday/src/credentials.js +14 -0
  270. package/dist/plugins/monday/src/index.js +31 -44
  271. package/dist/plugins/monicaCrm/src/credentials.js +19 -0
  272. package/dist/plugins/monicaCrm/src/index.js +25 -42
  273. package/dist/plugins/msg91/src/credentials.js +10 -0
  274. package/dist/plugins/msg91/src/index.js +15 -11
  275. package/dist/plugins/nasa/src/credentials.js +22 -0
  276. package/dist/plugins/nasa/src/index.js +24 -28
  277. package/dist/plugins/netlify/src/credentials.js +19 -0
  278. package/dist/plugins/netlify/src/index.js +27 -51
  279. package/dist/plugins/netscalerAdc/src/credentials.js +18 -0
  280. package/dist/plugins/netscalerAdc/src/index.js +16 -31
  281. package/dist/plugins/nextcloud/src/credentials.js +27 -0
  282. package/dist/plugins/nextcloud/src/index.js +55 -109
  283. package/dist/plugins/nocodb/src/credentials.js +16 -0
  284. package/dist/plugins/nocodb/src/index.js +19 -37
  285. package/dist/plugins/notion/src/credentials.js +21 -0
  286. package/dist/plugins/notion/src/index.js +25 -38
  287. package/dist/plugins/npm/src/credentials.js +19 -0
  288. package/dist/plugins/npm/src/index.js +22 -32
  289. package/dist/plugins/odoo/src/credentials.js +21 -0
  290. package/dist/plugins/odoo/src/index.js +53 -69
  291. package/dist/plugins/okta/src/credentials.js +23 -0
  292. package/dist/plugins/okta/src/index.js +30 -35
  293. package/dist/plugins/oneSimpleApi/src/credentials.js +16 -0
  294. package/dist/plugins/oneSimpleApi/src/index.js +19 -24
  295. package/dist/plugins/onfleet/src/credentials.js +23 -0
  296. package/dist/plugins/onfleet/src/index.js +42 -53
  297. package/dist/plugins/openai/src/credentials.js +13 -0
  298. package/dist/plugins/openai/src/index.js +15 -23
  299. package/dist/plugins/openweathermap/src/credentials.js +16 -0
  300. package/dist/plugins/openweathermap/src/index.js +22 -22
  301. package/dist/plugins/oura/src/credentials.js +19 -0
  302. package/dist/plugins/oura/src/index.js +13 -18
  303. package/dist/plugins/paddle/src/credentials.js +27 -0
  304. package/dist/plugins/paddle/src/index.js +20 -36
  305. package/dist/plugins/pagerduty/src/credentials.js +24 -0
  306. package/dist/plugins/pagerduty/src/index.js +30 -39
  307. package/dist/plugins/parallel/src/credentials.js +18 -0
  308. package/dist/plugins/parallel/src/index.js +16 -22
  309. package/dist/plugins/paypal/src/credentials.js +44 -0
  310. package/dist/plugins/paypal/src/index.js +14 -40
  311. package/dist/plugins/peekalink/src/credentials.js +16 -0
  312. package/dist/plugins/peekalink/src/index.js +10 -11
  313. package/dist/plugins/phantombuster/src/credentials.js +19 -0
  314. package/dist/plugins/phantombuster/src/index.js +19 -32
  315. package/dist/plugins/philipsHue/src/credentials.js +17 -0
  316. package/dist/plugins/philipsHue/src/index.js +15 -27
  317. package/dist/plugins/pipedrive/src/credentials.js +26 -0
  318. package/dist/plugins/pipedrive/src/index.js +43 -73
  319. package/dist/plugins/plaud/src/index.js +2 -1
  320. package/dist/plugins/plaud/src/shared.js +23 -19
  321. package/dist/plugins/plivo/src/credentials.js +20 -0
  322. package/dist/plugins/plivo/src/index.js +13 -19
  323. package/dist/plugins/posthog/src/credentials.js +18 -0
  324. package/dist/plugins/posthog/src/index.js +14 -20
  325. package/dist/plugins/profitwell/src/credentials.js +22 -0
  326. package/dist/plugins/profitwell/src/index.js +10 -17
  327. package/dist/plugins/pushbullet/src/credentials.js +19 -0
  328. package/dist/plugins/pushbullet/src/index.js +19 -27
  329. package/dist/plugins/pushcut/src/credentials.js +19 -0
  330. package/dist/plugins/pushcut/src/index.js +7 -8
  331. package/dist/plugins/pushover/src/credentials.js +14 -0
  332. package/dist/plugins/pushover/src/index.js +7 -12
  333. package/dist/plugins/quickbase/src/credentials.js +15 -0
  334. package/dist/plugins/quickbase/src/index.js +24 -34
  335. package/dist/plugins/quickbooks/src/credentials.js +22 -0
  336. package/dist/plugins/quickbooks/src/index.js +17 -46
  337. package/dist/plugins/raindrop/src/credentials.js +19 -0
  338. package/dist/plugins/raindrop/src/index.js +30 -32
  339. package/dist/plugins/recraft/src/credentials.js +13 -0
  340. package/dist/plugins/recraft/src/index.js +38 -27
  341. package/dist/plugins/reddit/src/credentials.js +26 -0
  342. package/dist/plugins/reddit/src/index.js +30 -34
  343. package/dist/plugins/replicate/src/credentials.js +23 -0
  344. package/dist/plugins/replicate/src/index.js +17 -27
  345. package/dist/plugins/rocketchat/src/credentials.js +17 -0
  346. package/dist/plugins/rocketchat/src/index.js +8 -19
  347. package/dist/plugins/rundeck/src/credentials.js +16 -0
  348. package/dist/plugins/rundeck/src/index.js +12 -28
  349. package/dist/plugins/salesforce/src/credentials.js +73 -0
  350. package/dist/plugins/salesforce/src/index.js +6 -0
  351. package/dist/plugins/salesforce/src/metadata.js +3 -16
  352. package/dist/plugins/salesforce/src/shared.js +25 -100
  353. package/dist/plugins/salesforce/src/sobjects.js +10 -9
  354. package/dist/plugins/salesmate/src/credentials.js +17 -0
  355. package/dist/plugins/salesmate/src/index.js +20 -37
  356. package/dist/plugins/securityScorecard/src/credentials.js +22 -0
  357. package/dist/plugins/securityScorecard/src/index.js +24 -37
  358. package/dist/plugins/segment/src/credentials.js +16 -0
  359. package/dist/plugins/segment/src/index.js +12 -16
  360. package/dist/plugins/sendgrid/src/credentials.js +13 -0
  361. package/dist/plugins/sendgrid/src/index.js +31 -35
  362. package/dist/plugins/sendy/src/credentials.js +18 -0
  363. package/dist/plugins/sendy/src/index.js +18 -24
  364. package/dist/plugins/sentry/src/credentials.js +16 -0
  365. package/dist/plugins/sentry/src/index.js +30 -98
  366. package/dist/plugins/servicenow/src/credentials.js +13 -0
  367. package/dist/plugins/servicenow/src/index.js +22 -41
  368. package/dist/plugins/shiftAtlas/src/graph.js +2 -2
  369. package/dist/plugins/shiftAtlas/src/index.js +2 -0
  370. package/dist/plugins/shiftAtlas/src/shared.js +3 -1
  371. package/dist/plugins/shiftBwm/src/index.js +4 -2
  372. package/dist/plugins/shiftBwm/src/shared.js +41 -16
  373. package/dist/plugins/shiftCrm/src/access.js +2 -2
  374. package/dist/plugins/shiftCrm/src/accounts.js +3 -3
  375. package/dist/plugins/shiftCrm/src/activities.js +3 -3
  376. package/dist/plugins/shiftCrm/src/credentials.js +6 -0
  377. package/dist/plugins/shiftCrm/src/index.js +2 -0
  378. package/dist/plugins/shiftCrm/src/opportunities.js +3 -3
  379. package/dist/plugins/shiftCrm/src/people.js +3 -3
  380. package/dist/plugins/shiftCrm/src/records.js +2 -2
  381. package/dist/plugins/shiftCrm/src/shared.js +2 -1
  382. package/dist/plugins/shiftCrm/src/tasks.js +3 -3
  383. package/dist/plugins/shiftObjects/src/credentials.js +2 -0
  384. package/dist/plugins/shiftObjects/src/index.js +2 -0
  385. package/dist/plugins/shiftObjects/src/objects.js +3 -2
  386. package/dist/plugins/shiftOcr/src/credentials.js +8 -0
  387. package/dist/plugins/shiftOcr/src/index.js +6 -5
  388. package/dist/plugins/shiftPages/src/index.js +2 -0
  389. package/dist/plugins/shiftPages/src/pages.js +5 -3
  390. package/dist/plugins/shiftPages/src/shared.js +3 -1
  391. package/dist/plugins/shiftTranscription/src/index.js +2 -0
  392. package/dist/plugins/shiftTranscription/src/shared.js +11 -1
  393. package/dist/plugins/shiftTranscription/src/transcription.js +4 -4
  394. package/dist/plugins/shiftWork/src/index.js +2 -0
  395. package/dist/plugins/shiftWork/src/issue-views.js +5 -5
  396. package/dist/plugins/shiftWork/src/issues.js +11 -7
  397. package/dist/plugins/shiftWork/src/projects.js +3 -3
  398. package/dist/plugins/shiftWork/src/shared.js +3 -1
  399. package/dist/plugins/shopify/src/credentials.js +16 -0
  400. package/dist/plugins/shopify/src/index.js +32 -59
  401. package/dist/plugins/signl4/src/credentials.js +17 -0
  402. package/dist/plugins/signl4/src/index.js +28 -29
  403. package/dist/plugins/slack/src/credentials.js +19 -0
  404. package/dist/plugins/slack/src/index.js +51 -60
  405. package/dist/plugins/sms77/src/credentials.js +17 -0
  406. package/dist/plugins/sms77/src/index.js +11 -16
  407. package/dist/plugins/splunk/src/credentials.js +19 -0
  408. package/dist/plugins/splunk/src/index.js +32 -74
  409. package/dist/plugins/spotify/src/credentials.js +19 -0
  410. package/dist/plugins/spotify/src/index.js +40 -55
  411. package/dist/plugins/stackby/src/credentials.js +13 -0
  412. package/dist/plugins/stackby/src/index.js +14 -23
  413. package/dist/plugins/steel/src/auth.js +27 -0
  414. package/dist/plugins/steel/src/browser.js +4 -3
  415. package/dist/plugins/steel/src/captchas.js +4 -3
  416. package/dist/plugins/steel/src/extensions.js +3 -2
  417. package/dist/plugins/steel/src/files.js +9 -10
  418. package/dist/plugins/steel/src/index.js +2 -0
  419. package/dist/plugins/steel/src/page/tools.js +3 -3
  420. package/dist/plugins/steel/src/profiles.js +4 -3
  421. package/dist/plugins/steel/src/sessions.js +13 -13
  422. package/dist/plugins/steel/src/shared.js +21 -51
  423. package/dist/plugins/storyblok/src/credentials.js +37 -0
  424. package/dist/plugins/storyblok/src/index.js +22 -66
  425. package/dist/plugins/strapi/src/credentials.js +71 -0
  426. package/dist/plugins/strapi/src/index.js +36 -70
  427. package/dist/plugins/strava/src/credentials.js +19 -0
  428. package/dist/plugins/strava/src/index.js +16 -33
  429. package/dist/plugins/stripe/src/credentials.js +19 -0
  430. package/dist/plugins/stripe/src/index.js +44 -58
  431. package/dist/plugins/supabase/src/credentials.js +30 -0
  432. package/dist/plugins/supabase/src/index.js +18 -40
  433. package/dist/plugins/syncromsp/src/credentials.js +16 -0
  434. package/dist/plugins/syncromsp/src/index.js +37 -70
  435. package/dist/plugins/tapfiliate/src/credentials.js +13 -0
  436. package/dist/plugins/tapfiliate/src/index.js +21 -31
  437. package/dist/plugins/telegram/src/credentials.js +20 -0
  438. package/dist/plugins/telegram/src/index.js +31 -39
  439. package/dist/plugins/thehive/src/credentials.js +14 -0
  440. package/dist/plugins/thehive/src/index.js +33 -50
  441. package/dist/plugins/thehiveProject/src/credentials.js +16 -0
  442. package/dist/plugins/thehiveProject/src/index.js +53 -122
  443. package/dist/plugins/todoist/src/credentials.js +26 -0
  444. package/dist/plugins/todoist/src/index.js +49 -79
  445. package/dist/plugins/together/src/credentials.js +16 -0
  446. package/dist/plugins/together/src/index.js +30 -32
  447. package/dist/plugins/travisci/src/credentials.js +24 -0
  448. package/dist/plugins/travisci/src/index.js +16 -30
  449. package/dist/plugins/trello/src/credentials.js +29 -0
  450. package/dist/plugins/trello/src/index.js +49 -64
  451. package/dist/plugins/twake/src/credentials.js +16 -0
  452. package/dist/plugins/twake/src/index.js +8 -10
  453. package/dist/plugins/twilio/src/credentials.js +23 -0
  454. package/dist/plugins/twilio/src/index.js +12 -26
  455. package/dist/plugins/twist/src/credentials.js +13 -0
  456. package/dist/plugins/twist/src/index.js +32 -44
  457. package/dist/plugins/twitter/src/credentials.js +16 -0
  458. package/dist/plugins/twitter/src/index.js +25 -37
  459. package/dist/plugins/typesafe/src/credentials.js +28 -0
  460. package/dist/plugins/typesafe/src/index.js +3 -1
  461. package/dist/plugins/typesafe/src/shared.js +23 -35
  462. package/dist/plugins/unleashedSoftware/src/credentials.js +21 -0
  463. package/dist/plugins/unleashedSoftware/src/index.js +13 -37
  464. package/dist/plugins/uplead/src/credentials.js +16 -0
  465. package/dist/plugins/uplead/src/index.js +11 -16
  466. package/dist/plugins/uproc/src/credentials.js +14 -0
  467. package/dist/plugins/uproc/src/index.js +7 -10
  468. package/dist/plugins/uptimerobot/src/credentials.js +14 -0
  469. package/dist/plugins/uptimerobot/src/index.js +28 -39
  470. package/dist/plugins/urlscanio/src/credentials.js +13 -0
  471. package/dist/plugins/urlscanio/src/index.js +13 -22
  472. package/dist/plugins/vercel/src/credentials.js +19 -0
  473. package/dist/plugins/vercel/src/deployments.js +27 -11
  474. package/dist/plugins/vercel/src/env.js +31 -12
  475. package/dist/plugins/vercel/src/index.js +2 -0
  476. package/dist/plugins/vercel/src/projects.js +6 -3
  477. package/dist/plugins/vercel/src/shared.js +32 -37
  478. package/dist/plugins/vero/src/credentials.js +17 -0
  479. package/dist/plugins/vero/src/index.js +18 -21
  480. package/dist/plugins/vonage/src/credentials.js +17 -0
  481. package/dist/plugins/vonage/src/index.js +14 -18
  482. package/dist/plugins/wekan/src/credentials.js +16 -0
  483. package/dist/plugins/wekan/src/index.js +33 -46
  484. package/dist/plugins/wolt/src/account.js +6 -0
  485. package/dist/plugins/wolt/src/catalog.js +2 -2
  486. package/dist/plugins/wolt/src/credentials.js +64 -0
  487. package/dist/plugins/wolt/src/index.js +8 -3
  488. package/dist/plugins/wolt/src/orders.js +2 -2
  489. package/dist/plugins/wolt/src/public.js +91 -0
  490. package/dist/plugins/wolt/src/shared.js +49 -158
  491. package/dist/plugins/woocommerce/src/credentials.js +16 -0
  492. package/dist/plugins/woocommerce/src/index.js +19 -37
  493. package/dist/plugins/wordpress/src/credentials.js +16 -0
  494. package/dist/plugins/wordpress/src/index.js +23 -42
  495. package/dist/plugins/xai/src/credentials.js +13 -0
  496. package/dist/plugins/xai/src/index.js +31 -30
  497. package/dist/plugins/xero/src/credentials.js +17 -0
  498. package/dist/plugins/xero/src/index.js +19 -36
  499. package/dist/plugins/yourls/src/credentials.js +17 -0
  500. package/dist/plugins/yourls/src/index.js +13 -23
  501. package/dist/plugins/zammad/src/credentials.js +15 -0
  502. package/dist/plugins/zammad/src/index.js +27 -47
  503. package/dist/plugins/zendesk/src/credentials.js +26 -0
  504. package/dist/plugins/zendesk/src/index.js +29 -48
  505. package/dist/plugins/zoho/src/credentials.js +17 -0
  506. package/dist/plugins/zoho/src/index.js +18 -38
  507. package/dist/plugins/zoom/src/credentials.js +19 -0
  508. package/dist/plugins/zoom/src/index.js +15 -30
  509. package/dist/plugins/zulip/src/credentials.js +16 -0
  510. package/dist/plugins/zulip/src/index.js +36 -42
  511. package/dist/sdk.d.ts +8 -0
  512. package/dist/sdk.js +3 -0
  513. package/package.json +1 -1
  514. package/dist/plugins/_shared/authedFetch.js +0 -33
  515. package/dist/plugins/_shared/tokenRefresh.js +0 -41
@@ -1,35 +1,22 @@
1
- const BASE = "https://onfleet.com/api/v2";
2
- async function apiRequest(apiKey, method, endpoint, body, 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 init = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { onfleetCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body, qs) {
4
+ return credentialJson(ctx, onfleetCredential, "onfleet", {
5
+ target: "api",
6
+ path,
11
7
  method,
12
- headers: {
13
- Authorization: `Basic ${btoa(`${apiKey}:`)}`,
14
- "Content-Type": "application/json",
15
- "User-Agent": "runline-onfleet",
16
- },
17
- };
18
- if (body !== undefined && method !== "GET")
19
- init.body = JSON.stringify(body);
20
- const res = await fetch(url.toString(), init);
21
- if (!res.ok)
22
- throw new Error(`Onfleet error ${res.status}: ${await res.text()}`);
23
- const text = await res.text();
24
- return text ? JSON.parse(text) : {};
8
+ query: qs,
9
+ headers: { "User-Agent": "runline-onfleet" },
10
+ ...(body !== undefined && method !== "GET" ? { json: body } : {}),
11
+ });
25
12
  }
26
- function registerCrud(rl, resource, plural, key, createSchema) {
13
+ function registerCrud(rl, resource, plural, createSchema) {
27
14
  rl.registerAction(`${resource}.create`, {
28
15
  access: "write",
29
16
  description: `Create a ${resource}`,
30
17
  inputSchema: createSchema,
31
18
  async execute(input, ctx) {
32
- return apiRequest(key(ctx), "POST", plural, input);
19
+ return apiRequest(ctx, "POST", plural, input);
33
20
  },
34
21
  });
35
22
  rl.registerAction(`${resource}.get`, {
@@ -37,7 +24,7 @@ function registerCrud(rl, resource, plural, key, createSchema) {
37
24
  description: `Get a ${resource} by ID`,
38
25
  inputSchema: { id: { type: "string", required: true } },
39
26
  async execute(input, ctx) {
40
- return apiRequest(key(ctx), "GET", `${plural}/${input.id}`);
27
+ return apiRequest(ctx, "GET", `${plural}/${pathSegment(input.id)}`);
41
28
  },
42
29
  });
43
30
  rl.registerAction(`${resource}.list`, {
@@ -45,7 +32,7 @@ function registerCrud(rl, resource, plural, key, createSchema) {
45
32
  description: `List ${plural}`,
46
33
  inputSchema: { limit: { type: "number", required: false } },
47
34
  async execute(input, ctx) {
48
- const data = (await apiRequest(key(ctx), "GET", plural));
35
+ const data = (await apiRequest(ctx, "GET", plural));
49
36
  const p = (input ?? {});
50
37
  return p.limit ? data.slice(0, p.limit) : data;
51
38
  },
@@ -59,7 +46,7 @@ function registerCrud(rl, resource, plural, key, createSchema) {
59
46
  },
60
47
  async execute(input, ctx) {
61
48
  const p = input;
62
- return apiRequest(key(ctx), "PUT", `${plural}/${p.id}`, p.data);
49
+ return apiRequest(ctx, "PUT", `${plural}/${pathSegment(p.id)}`, p.data);
63
50
  },
64
51
  });
65
52
  rl.registerAction(`${resource}.delete`, {
@@ -67,7 +54,7 @@ function registerCrud(rl, resource, plural, key, createSchema) {
67
54
  description: `Delete a ${resource}`,
68
55
  inputSchema: { id: { type: "string", required: true } },
69
56
  async execute(input, ctx) {
70
- await apiRequest(key(ctx), "DELETE", `${plural}/${input.id}`);
57
+ await apiRequest(ctx, "DELETE", `${plural}/${pathSegment(input.id)}`);
71
58
  return { success: true };
72
59
  },
73
60
  });
@@ -75,6 +62,7 @@ function registerCrud(rl, resource, plural, key, createSchema) {
75
62
  export default function onfleet(rl) {
76
63
  rl.setName("onfleet");
77
64
  rl.setVersion("0.1.0");
65
+ rl.setCredential(onfleetCredential);
78
66
  rl.setConnectionSchema({
79
67
  apiKey: {
80
68
  type: "string",
@@ -83,14 +71,13 @@ export default function onfleet(rl) {
83
71
  env: "ONFLEET_API_KEY",
84
72
  },
85
73
  });
86
- const key = (ctx) => ctx.connection.config.apiKey;
87
74
  // ── Organization ────────────────────────────────────
88
75
  rl.registerAction("organization.get", {
89
76
  access: "read",
90
77
  description: "Get organization details",
91
78
  inputSchema: {},
92
79
  async execute(_input, ctx) {
93
- return apiRequest(key(ctx), "GET", "organization");
80
+ return apiRequest(ctx, "GET", "organization");
94
81
  },
95
82
  });
96
83
  // ── Task ────────────────────────────────────────────
@@ -121,7 +108,7 @@ export default function onfleet(rl) {
121
108
  notes: { type: "string", required: false },
122
109
  },
123
110
  async execute(input, ctx) {
124
- return apiRequest(key(ctx), "POST", "tasks", input);
111
+ return apiRequest(ctx, "POST", "tasks", input);
125
112
  },
126
113
  });
127
114
  rl.registerAction("task.get", {
@@ -130,8 +117,10 @@ export default function onfleet(rl) {
130
117
  inputSchema: { id: { type: "string", required: true } },
131
118
  async execute(input, ctx) {
132
119
  const id = input.id;
133
- const path = id.length <= 8 ? `tasks/shortId/${id}` : `tasks/${id}`;
134
- return apiRequest(key(ctx), "GET", path);
120
+ const path = id.length <= 8
121
+ ? `tasks/shortId/${pathSegment(id)}`
122
+ : `tasks/${pathSegment(id)}`;
123
+ return apiRequest(ctx, "GET", path);
135
124
  },
136
125
  });
137
126
  rl.registerAction("task.list", {
@@ -151,7 +140,7 @@ export default function onfleet(rl) {
151
140
  qs.from = Date.now() - 604800000;
152
141
  if (p.to)
153
142
  qs.to = p.to;
154
- const data = (await apiRequest(key(ctx), "GET", "tasks/all", undefined, qs));
143
+ const data = (await apiRequest(ctx, "GET", "tasks/all", undefined, qs));
155
144
  const tasks = data.tasks;
156
145
  return p.limit ? tasks.slice(0, p.limit) : tasks;
157
146
  },
@@ -165,7 +154,7 @@ export default function onfleet(rl) {
165
154
  },
166
155
  async execute(input, ctx) {
167
156
  const p = input;
168
- return apiRequest(key(ctx), "PUT", `tasks/${p.id}`, p.data);
157
+ return apiRequest(ctx, "PUT", `tasks/${pathSegment(p.id)}`, p.data);
169
158
  },
170
159
  });
171
160
  rl.registerAction("task.delete", {
@@ -173,7 +162,7 @@ export default function onfleet(rl) {
173
162
  description: "Delete a task",
174
163
  inputSchema: { id: { type: "string", required: true } },
175
164
  async execute(input, ctx) {
176
- await apiRequest(key(ctx), "DELETE", `tasks/${input.id}`);
165
+ await apiRequest(ctx, "DELETE", `tasks/${pathSegment(input.id)}`);
177
166
  return { success: true };
178
167
  },
179
168
  });
@@ -192,18 +181,18 @@ export default function onfleet(rl) {
192
181
  };
193
182
  if (p.notes)
194
183
  body.completionDetails.notes = p.notes;
195
- await apiRequest(key(ctx), "POST", `tasks/${p.id}/complete`, body);
184
+ await apiRequest(ctx, "POST", `tasks/${pathSegment(p.id)}/complete`, body);
196
185
  return { success: true };
197
186
  },
198
187
  });
199
188
  // ── Worker ──────────────────────────────────────────
200
- registerCrud(rl, "worker", "workers", key, {
189
+ registerCrud(rl, "worker", "workers", {
201
190
  name: { type: "string", required: true },
202
191
  phone: { type: "string", required: true },
203
192
  teams: { type: "object", required: true, description: "Array of team IDs" },
204
193
  });
205
194
  // ── Admin ───────────────────────────────────────────
206
- registerCrud(rl, "admin", "admins", key, {
195
+ registerCrud(rl, "admin", "admins", {
207
196
  name: { type: "string", required: true },
208
197
  email: { type: "string", required: true },
209
198
  });
@@ -216,7 +205,7 @@ export default function onfleet(rl) {
216
205
  address: { type: "object", required: true },
217
206
  },
218
207
  async execute(input, ctx) {
219
- return apiRequest(key(ctx), "POST", "hubs", input);
208
+ return apiRequest(ctx, "POST", "hubs", input);
220
209
  },
221
210
  });
222
211
  rl.registerAction("hub.list", {
@@ -224,7 +213,7 @@ export default function onfleet(rl) {
224
213
  description: "List hubs",
225
214
  inputSchema: { limit: { type: "number", required: false } },
226
215
  async execute(input, ctx) {
227
- const data = (await apiRequest(key(ctx), "GET", "hubs"));
216
+ const data = (await apiRequest(ctx, "GET", "hubs"));
228
217
  const p = (input ?? {});
229
218
  return p.limit ? data.slice(0, p.limit) : data;
230
219
  },
@@ -238,11 +227,11 @@ export default function onfleet(rl) {
238
227
  },
239
228
  async execute(input, ctx) {
240
229
  const p = input;
241
- return apiRequest(key(ctx), "PUT", `hubs/${p.id}`, p.data);
230
+ return apiRequest(ctx, "PUT", `hubs/${pathSegment(p.id)}`, p.data);
242
231
  },
243
232
  });
244
233
  // ── Team ────────────────────────────────────────────
245
- registerCrud(rl, "team", "teams", key, {
234
+ registerCrud(rl, "team", "teams", {
246
235
  name: { type: "string", required: true },
247
236
  workers: {
248
237
  type: "object",
@@ -265,7 +254,7 @@ export default function onfleet(rl) {
265
254
  notes: { type: "string", required: false },
266
255
  },
267
256
  async execute(input, ctx) {
268
- return apiRequest(key(ctx), "POST", "recipients", input);
257
+ return apiRequest(ctx, "POST", "recipients", input);
269
258
  },
270
259
  });
271
260
  rl.registerAction("recipient.get", {
@@ -273,7 +262,7 @@ export default function onfleet(rl) {
273
262
  description: "Get a recipient by ID",
274
263
  inputSchema: { id: { type: "string", required: true } },
275
264
  async execute(input, ctx) {
276
- return apiRequest(key(ctx), "GET", `recipients/${input.id}`);
265
+ return apiRequest(ctx, "GET", `recipients/${pathSegment(input.id)}`);
277
266
  },
278
267
  });
279
268
  rl.registerAction("recipient.update", {
@@ -285,7 +274,7 @@ export default function onfleet(rl) {
285
274
  },
286
275
  async execute(input, ctx) {
287
276
  const p = input;
288
- return apiRequest(key(ctx), "PUT", `recipients/${p.id}`, p.data);
277
+ return apiRequest(ctx, "PUT", `recipients/${pathSegment(p.id)}`, p.data);
289
278
  },
290
279
  });
291
280
  // ── Container ────────────────────────────────────────
@@ -302,7 +291,7 @@ export default function onfleet(rl) {
302
291
  },
303
292
  async execute(input, ctx) {
304
293
  const p = input;
305
- return apiRequest(key(ctx), "GET", `containers/${p.containerType}/${p.containerId}`);
294
+ return apiRequest(ctx, "GET", `containers/${pathSegment(p.containerType)}/${pathSegment(p.containerId)}`);
306
295
  },
307
296
  });
308
297
  rl.registerAction("container.updateTasks", {
@@ -323,7 +312,7 @@ export default function onfleet(rl) {
323
312
  },
324
313
  async execute(input, ctx) {
325
314
  const p = input;
326
- return apiRequest(key(ctx), "PUT", `containers/${p.containerType}/${p.containerId}`, { tasks: p.tasks });
315
+ return apiRequest(ctx, "PUT", `containers/${pathSegment(p.containerType)}/${pathSegment(p.containerId)}`, { tasks: p.tasks });
327
316
  },
328
317
  });
329
318
  rl.registerAction("team.getTimeEstimates", {
@@ -344,7 +333,7 @@ export default function onfleet(rl) {
344
333
  },
345
334
  async execute(input, ctx) {
346
335
  const { id, ...qs } = input;
347
- return apiRequest(key(ctx), "GET", `teams/${id}/estimate`, undefined, qs);
336
+ return apiRequest(ctx, "GET", `teams/${pathSegment(id)}/estimate`, undefined, qs);
348
337
  },
349
338
  });
350
339
  rl.registerAction("team.autoDispatch", {
@@ -356,7 +345,7 @@ export default function onfleet(rl) {
356
345
  },
357
346
  async execute(input, ctx) {
358
347
  const p = input;
359
- return apiRequest(key(ctx), "POST", `teams/${p.id}/dispatch`, p.data ?? {});
348
+ return apiRequest(ctx, "POST", `teams/${pathSegment(p.id)}/dispatch`, p.data ?? {});
360
349
  },
361
350
  });
362
351
  // ── Destination ─────────────────────────────────────
@@ -371,7 +360,7 @@ export default function onfleet(rl) {
371
360
  },
372
361
  },
373
362
  async execute(input, ctx) {
374
- return apiRequest(key(ctx), "POST", "destinations", input);
363
+ return apiRequest(ctx, "POST", "destinations", input);
375
364
  },
376
365
  });
377
366
  rl.registerAction("destination.get", {
@@ -379,7 +368,7 @@ export default function onfleet(rl) {
379
368
  description: "Get a destination by ID",
380
369
  inputSchema: { id: { type: "string", required: true } },
381
370
  async execute(input, ctx) {
382
- return apiRequest(key(ctx), "GET", `destinations/${input.id}`);
371
+ return apiRequest(ctx, "GET", `destinations/${pathSegment(input.id)}`);
383
372
  },
384
373
  });
385
374
  }
@@ -0,0 +1,13 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** An API key, sent as a bearer to OpenAI's images API base. */
3
+ export const openaiCredential = staticCredential({
4
+ id: "openai",
5
+ auth: { kind: "bearer" },
6
+ local: { secret: "apiKey" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://api.openai.com/v1/images/",
10
+ methods: ["POST"],
11
+ },
12
+ },
13
+ });
@@ -15,9 +15,9 @@
15
15
  * const { images } = await openai.image.create({ prompt: "a red bicycle on snow" })
16
16
  * // images[0].path -> "/tmp/openai-image-….png"
17
17
  */
18
+ import { credentialJson, multipartBody } from "../../_shared/credentials.js";
18
19
  import { readImageInput, SEND_FILE_NOTE, writeImageFile, } from "../../_shared/mediaFile.js";
19
- const ENDPOINT = "https://api.openai.com/v1/images/generations";
20
- const EDIT_ENDPOINT = "https://api.openai.com/v1/images/edits";
20
+ import { openaiCredential } from "./credentials.js";
21
21
  /**
22
22
  * Newest GPT Image model; override per call or via the connection.
23
23
  *
@@ -50,6 +50,7 @@ function resolveModel(explicit, config) {
50
50
  export default function openai(rl) {
51
51
  rl.setName("openai");
52
52
  rl.setVersion("0.1.0");
53
+ rl.setCredential(openaiCredential);
53
54
  rl.setConnectionSchema({
54
55
  apiKey: {
55
56
  type: "string",
@@ -109,7 +110,6 @@ export default function openai(rl) {
109
110
  if (typeof p.prompt !== "string" || p.prompt.length === 0) {
110
111
  throw new Error("openai: prompt is required");
111
112
  }
112
- const apiKey = ctx.connection.config.apiKey;
113
113
  const model = resolveModel(p.model, ctx.connection.config);
114
114
  const body = {
115
115
  model,
@@ -129,18 +129,12 @@ export default function openai(rl) {
129
129
  body.quality = p.quality;
130
130
  if (p.style)
131
131
  body.style = p.style;
132
- const res = await fetch(ENDPOINT, {
132
+ const data = (await credentialJson(ctx, openaiCredential, "openai", {
133
+ target: "api",
134
+ path: "generations",
133
135
  method: "POST",
134
- headers: {
135
- "Content-Type": "application/json",
136
- Authorization: `Bearer ${apiKey}`,
137
- },
138
- body: JSON.stringify(body),
139
- });
140
- if (!res.ok) {
141
- throw new Error(`OpenAI API error ${res.status}: ${await res.text()}`);
142
- }
143
- const data = (await res.json());
136
+ json: body,
137
+ }));
144
138
  const stamp = Date.now();
145
139
  const images = (data.data ?? []).map((d, i) => ({
146
140
  ...writeImageFile({
@@ -214,7 +208,6 @@ export default function openai(rl) {
214
208
  if (paths.length === 0) {
215
209
  throw new Error("openai: imagePath (or imagePaths) is required");
216
210
  }
217
- const apiKey = ctx.connection.config.apiKey;
218
211
  const model = resolveModel(p.model, ctx.connection.config);
219
212
  const form = new FormData();
220
213
  form.append("model", model);
@@ -228,15 +221,14 @@ export default function openai(rl) {
228
221
  const img = readImageInput(path, "openai");
229
222
  form.append("image[]", new Blob([img.bytes], { type: img.mimeType }), img.fileName);
230
223
  }
231
- const res = await fetch(EDIT_ENDPOINT, {
224
+ const { body: formBytes, contentType } = await multipartBody(form);
225
+ const data = (await credentialJson(ctx, openaiCredential, "openai", {
226
+ target: "api",
227
+ path: "edits",
232
228
  method: "POST",
233
- headers: { Authorization: `Bearer ${apiKey}` },
234
- body: form,
235
- });
236
- if (!res.ok) {
237
- throw new Error(`OpenAI API error ${res.status}: ${await res.text()}`);
238
- }
239
- const data = (await res.json());
229
+ body: formBytes,
230
+ headers: { "Content-Type": contentType },
231
+ }));
240
232
  const stamp = Date.now();
241
233
  const images = (data.data ?? []).map((d, i) => ({
242
234
  ...writeImageFile({
@@ -0,0 +1,16 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * An API key, appended by the transport as the APPID query parameter on
4
+ * OpenWeatherMap's data API.
5
+ */
6
+ export const openweathermapCredential = staticCredential({
7
+ id: "openweathermap",
8
+ auth: { kind: "queryKey", param: "APPID" },
9
+ local: { secret: "apiKey" },
10
+ targets: {
11
+ api: {
12
+ baseUrl: "https://api.openweathermap.org/data/2.5/",
13
+ methods: ["GET"],
14
+ },
15
+ },
16
+ });
@@ -1,4 +1,5 @@
1
- const BASE = "https://api.openweathermap.org/data/2.5";
1
+ import { credentialJson } from "../../_shared/credentials.js";
2
+ import { openweathermapCredential } from "./credentials.js";
2
3
  const locationSchema = {
3
4
  cityName: {
4
5
  type: "string",
@@ -28,27 +29,35 @@ const locationSchema = {
28
29
  description: "Language code (e.g. en, de)",
29
30
  },
30
31
  };
31
- function buildQs(apiKey, input) {
32
- const qs = new URLSearchParams();
33
- qs.set("APPID", apiKey);
34
- qs.set("units", input.units ?? "metric");
32
+ function buildQs(input) {
33
+ const qs = {
34
+ units: input.units ?? "metric",
35
+ };
35
36
  if (input.cityName)
36
- qs.set("q", input.cityName);
37
+ qs.q = input.cityName;
37
38
  else if (input.cityId)
38
- qs.set("id", String(input.cityId));
39
+ qs.id = String(input.cityId);
39
40
  else if (input.lat && input.lon) {
40
- qs.set("lat", input.lat);
41
- qs.set("lon", input.lon);
41
+ qs.lat = input.lat;
42
+ qs.lon = input.lon;
42
43
  }
43
44
  else if (input.zip)
44
- qs.set("zip", input.zip);
45
+ qs.zip = input.zip;
45
46
  if (input.lang)
46
- qs.set("lang", input.lang);
47
+ qs.lang = input.lang;
47
48
  return qs;
48
49
  }
50
+ function apiRequest(ctx, path, query) {
51
+ return credentialJson(ctx, openweathermapCredential, "openweathermap", {
52
+ target: "api",
53
+ path,
54
+ query,
55
+ });
56
+ }
49
57
  export default function openWeatherMap(rl) {
50
58
  rl.setName("openweathermap");
51
59
  rl.setVersion("0.1.0");
60
+ rl.setCredential(openweathermapCredential);
52
61
  rl.setConnectionSchema({
53
62
  apiKey: {
54
63
  type: "string",
@@ -57,18 +66,13 @@ export default function openWeatherMap(rl) {
57
66
  env: "OPENWEATHERMAP_API_KEY",
58
67
  },
59
68
  });
60
- const key = (ctx) => ctx.connection.config.apiKey;
61
69
  rl.registerAction("weather.current", {
62
70
  access: "read",
63
71
  description: "Get current weather data for a location",
64
72
  inputSchema: locationSchema,
65
73
  async execute(input, ctx) {
66
74
  const p = (input ?? {});
67
- const qs = buildQs(key(ctx), p);
68
- const res = await fetch(`${BASE}/weather?${qs.toString()}`);
69
- if (!res.ok)
70
- throw new Error(`OpenWeatherMap error ${res.status}: ${await res.text()}`);
71
- return res.json();
75
+ return apiRequest(ctx, "weather", buildQs(p));
72
76
  },
73
77
  });
74
78
  rl.registerAction("weather.forecast5day", {
@@ -77,11 +81,7 @@ export default function openWeatherMap(rl) {
77
81
  inputSchema: locationSchema,
78
82
  async execute(input, ctx) {
79
83
  const p = (input ?? {});
80
- const qs = buildQs(key(ctx), p);
81
- const res = await fetch(`${BASE}/forecast?${qs.toString()}`);
82
- if (!res.ok)
83
- throw new Error(`OpenWeatherMap error ${res.status}: ${await res.text()}`);
84
- return res.json();
84
+ return apiRequest(ctx, "forecast", buildQs(p));
85
85
  },
86
86
  });
87
87
  }
@@ -0,0 +1,19 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** A personal access token, sent as a bearer to Oura's one API origin. */
3
+ export const ouraCredential = staticCredential({
4
+ id: "oura",
5
+ auth: { kind: "bearer" },
6
+ local: { secret: "accessToken" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://api.ouraring.com/v2/",
10
+ methods: ["GET"],
11
+ },
12
+ },
13
+ probe: {
14
+ target: "api",
15
+ path: "usercollection/personal_info",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });
@@ -1,16 +1,11 @@
1
- const BASE = "https://api.ouraring.com/v2";
2
- async function apiRequest(token, endpoint, qs = {}) {
3
- const url = new URL(`${BASE}${endpoint}`);
4
- for (const [k, v] of Object.entries(qs)) {
5
- if (v !== undefined && v !== null)
6
- url.searchParams.set(k, String(v));
7
- }
8
- const res = await fetch(url.toString(), {
9
- headers: { Authorization: `Bearer ${token}` },
1
+ import { credentialJson } from "../../_shared/credentials.js";
2
+ import { ouraCredential } from "./credentials.js";
3
+ function apiRequest(ctx, endpoint, qs = {}) {
4
+ return credentialJson(ctx, ouraCredential, "oura", {
5
+ target: "api",
6
+ path: endpoint,
7
+ query: qs,
10
8
  });
11
- if (!res.ok)
12
- throw new Error(`Oura API error ${res.status}: ${await res.text()}`);
13
- return res.json();
14
9
  }
15
10
  function formatDate(d) {
16
11
  if (!d)
@@ -20,6 +15,7 @@ function formatDate(d) {
20
15
  export default function oura(rl) {
21
16
  rl.setName("oura");
22
17
  rl.setVersion("0.1.0");
18
+ rl.setCredential(ouraCredential);
23
19
  rl.setConnectionSchema({
24
20
  accessToken: {
25
21
  type: "string",
@@ -28,29 +24,28 @@ export default function oura(rl) {
28
24
  env: "OURA_ACCESS_TOKEN",
29
25
  },
30
26
  });
31
- const key = (ctx) => ctx.connection.config.accessToken;
32
27
  rl.registerAction("profile.get", {
33
28
  access: "read",
34
29
  description: "Get the user's personal information",
35
30
  inputSchema: {},
36
31
  async execute(_input, ctx) {
37
- return apiRequest(key(ctx), "/usercollection/personal_info");
32
+ return apiRequest(ctx, "usercollection/personal_info");
38
33
  },
39
34
  });
40
35
  const summaryEndpoints = [
41
36
  {
42
37
  name: "summary.activity",
43
- path: "/usercollection/daily_activity",
38
+ path: "usercollection/daily_activity",
44
39
  description: "Get daily activity summary",
45
40
  },
46
41
  {
47
42
  name: "summary.readiness",
48
- path: "/usercollection/daily_readiness",
43
+ path: "usercollection/daily_readiness",
49
44
  description: "Get daily readiness summary",
50
45
  },
51
46
  {
52
47
  name: "summary.sleep",
53
- path: "/usercollection/daily_sleep",
48
+ path: "usercollection/daily_sleep",
54
49
  description: "Get daily sleep summary",
55
50
  },
56
51
  ];
@@ -82,7 +77,7 @@ export default function oura(rl) {
82
77
  qs.start_date = formatDate(p.startDate);
83
78
  if (p.endDate)
84
79
  qs.end_date = formatDate(p.endDate);
85
- const data = (await apiRequest(key(ctx), ep.path, qs));
80
+ const data = (await apiRequest(ctx, ep.path, qs));
86
81
  let items = (data.data ?? []);
87
82
  if (p.limit)
88
83
  items = items.slice(0, p.limit);
@@ -0,0 +1,27 @@
1
+ import { configFlag, staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * The vendor ID and auth code, added by the transport as the vendor_id and
4
+ * vendor_auth_code fields of every JSON call. Stored together, so a code
5
+ * is never sent under another vendor. `sandbox` selects Paddle's sandbox
6
+ * host.
7
+ */
8
+ export const paddleCredential = staticCredential({
9
+ id: "paddle",
10
+ auth: {
11
+ kind: "static",
12
+ parts: ["vendorId", "authCode"],
13
+ placements: [
14
+ { in: "body", part: "vendorId", name: "vendor_id" },
15
+ { in: "body", part: "authCode", name: "vendor_auth_code" },
16
+ ],
17
+ },
18
+ local: { vendorId: "vendorId", authCode: "vendorAuthCode" },
19
+ targets: (config) => ({
20
+ api: {
21
+ baseUrl: configFlag(config.sandbox)
22
+ ? "https://sandbox-vendors.paddle.com/api/"
23
+ : "https://vendors.paddle.com/api/",
24
+ methods: ["POST"],
25
+ },
26
+ }),
27
+ });