runline 0.32.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 (521) 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 +22 -34
  28. package/dist/plugins/_shared/shiftCredentials.js +83 -0
  29. package/dist/plugins/_shared/shiftUpload.js +1 -1
  30. package/dist/plugins/actionNetwork/src/credentials.js +14 -0
  31. package/dist/plugins/actionNetwork/src/index.js +39 -50
  32. package/dist/plugins/activeCampaign/src/credentials.js +22 -0
  33. package/dist/plugins/activeCampaign/src/index.js +61 -132
  34. package/dist/plugins/adalo/src/credentials.js +16 -0
  35. package/dist/plugins/adalo/src/index.js +19 -43
  36. package/dist/plugins/affinity/src/credentials.js +19 -0
  37. package/dist/plugins/affinity/src/index.js +29 -54
  38. package/dist/plugins/agileCrm/src/credentials.js +16 -0
  39. package/dist/plugins/agileCrm/src/index.js +46 -112
  40. package/dist/plugins/airtable/src/credentials.js +19 -0
  41. package/dist/plugins/airtable/src/index.js +37 -50
  42. package/dist/plugins/airtop/src/credentials.js +20 -0
  43. package/dist/plugins/airtop/src/index.js +51 -75
  44. package/dist/plugins/apiTemplateIo/src/credentials.js +19 -0
  45. package/dist/plugins/apiTemplateIo/src/index.js +14 -31
  46. package/dist/plugins/asana/src/credentials.js +19 -0
  47. package/dist/plugins/asana/src/index.js +51 -72
  48. package/dist/plugins/autopilot/src/credentials.js +19 -0
  49. package/dist/plugins/autopilot/src/index.js +38 -45
  50. package/dist/plugins/bambooHr/src/credentials.js +16 -0
  51. package/dist/plugins/bambooHr/src/index.js +41 -67
  52. package/dist/plugins/bannerbear/src/credentials.js +19 -0
  53. package/dist/plugins/bannerbear/src/index.js +15 -27
  54. package/dist/plugins/baserow/src/credentials.js +17 -0
  55. package/dist/plugins/baserow/src/index.js +23 -49
  56. package/dist/plugins/beeminder/src/credentials.js +19 -0
  57. package/dist/plugins/beeminder/src/index.js +32 -54
  58. package/dist/plugins/bitly/src/credentials.js +19 -0
  59. package/dist/plugins/bitly/src/index.js +12 -26
  60. package/dist/plugins/bitwarden/src/credentials.js +62 -0
  61. package/dist/plugins/bitwarden/src/index.js +34 -80
  62. package/dist/plugins/box/src/credentials.js +19 -0
  63. package/dist/plugins/box/src/index.js +24 -49
  64. package/dist/plugins/brandfetch/src/credentials.js +13 -0
  65. package/dist/plugins/brandfetch/src/index.js +12 -17
  66. package/dist/plugins/brevo/src/credentials.js +19 -0
  67. package/dist/plugins/brevo/src/index.js +30 -51
  68. package/dist/plugins/bubble/src/credentials.js +28 -0
  69. package/dist/plugins/bubble/src/index.js +29 -65
  70. package/dist/plugins/chargebee/src/credentials.js +16 -0
  71. package/dist/plugins/chargebee/src/index.js +15 -45
  72. package/dist/plugins/circleci/src/credentials.js +19 -0
  73. package/dist/plugins/circleci/src/index.js +19 -39
  74. package/dist/plugins/ciscoWebex/src/credentials.js +19 -0
  75. package/dist/plugins/ciscoWebex/src/index.js +43 -61
  76. package/dist/plugins/clearbit/src/credentials.js +22 -0
  77. package/dist/plugins/clearbit/src/index.js +11 -21
  78. package/dist/plugins/clickup/src/credentials.js +19 -0
  79. package/dist/plugins/clickup/src/index.js +85 -117
  80. package/dist/plugins/clockify/src/credentials.js +19 -0
  81. package/dist/plugins/clockify/src/index.js +46 -61
  82. package/dist/plugins/cloudflare/src/credentials.js +19 -0
  83. package/dist/plugins/cloudflare/src/index.js +19 -34
  84. package/dist/plugins/cockpit/src/credentials.js +17 -0
  85. package/dist/plugins/cockpit/src/index.js +18 -31
  86. package/dist/plugins/coda/src/credentials.js +19 -0
  87. package/dist/plugins/coda/src/index.js +33 -50
  88. package/dist/plugins/coingecko/src/credentials.js +20 -0
  89. package/dist/plugins/coingecko/src/index.js +24 -34
  90. package/dist/plugins/contentful/src/credentials.js +26 -0
  91. package/dist/plugins/contentful/src/index.js +19 -40
  92. package/dist/plugins/convertkit/src/credentials.js +26 -0
  93. package/dist/plugins/convertkit/src/index.js +27 -45
  94. package/dist/plugins/copper/src/credentials.js +17 -0
  95. package/dist/plugins/copper/src/index.js +25 -47
  96. package/dist/plugins/cortex/src/credentials.js +28 -0
  97. package/dist/plugins/cortex/src/index.js +26 -49
  98. package/dist/plugins/currents/src/credentials.js +19 -0
  99. package/dist/plugins/currents/src/index.js +46 -59
  100. package/dist/plugins/customerIo/src/credentials.js +52 -0
  101. package/dist/plugins/customerIo/src/index.js +30 -58
  102. package/dist/plugins/databricks/src/credentials.js +13 -0
  103. package/dist/plugins/databricks/src/index.js +51 -103
  104. package/dist/plugins/deepl/src/credentials.js +19 -0
  105. package/dist/plugins/deepl/src/index.js +13 -39
  106. package/dist/plugins/demio/src/credentials.js +26 -0
  107. package/dist/plugins/demio/src/index.js +17 -41
  108. package/dist/plugins/dhl/src/credentials.js +13 -0
  109. package/dist/plugins/dhl/src/index.js +8 -19
  110. package/dist/plugins/discord/src/credentials.js +19 -0
  111. package/dist/plugins/discord/src/index.js +30 -58
  112. package/dist/plugins/discourse/src/credentials.js +18 -0
  113. package/dist/plugins/discourse/src/index.js +36 -53
  114. package/dist/plugins/disqus/src/credentials.js +13 -0
  115. package/dist/plugins/disqus/src/index.js +14 -32
  116. package/dist/plugins/drift/src/credentials.js +13 -0
  117. package/dist/plugins/drift/src/index.js +16 -26
  118. package/dist/plugins/dropbox/src/credentials.js +13 -0
  119. package/dist/plugins/dropbox/src/index.js +23 -30
  120. package/dist/plugins/dropcontact/src/credentials.js +13 -0
  121. package/dist/plugins/dropcontact/src/index.js +13 -18
  122. package/dist/plugins/egoi/src/credentials.js +19 -0
  123. package/dist/plugins/egoi/src/index.js +23 -38
  124. package/dist/plugins/elasticsearch/src/credentials.js +18 -0
  125. package/dist/plugins/elasticsearch/src/index.js +27 -48
  126. package/dist/plugins/elevenlabs/src/credentials.js +30 -0
  127. package/dist/plugins/elevenlabs/src/index.js +4 -1
  128. package/dist/plugins/elevenlabs/src/schemas.js +2 -1
  129. package/dist/plugins/elevenlabs/src/shared.js +74 -35
  130. package/dist/plugins/elevenlabs/src/workflows.js +2 -2
  131. package/dist/plugins/emelia/src/credentials.js +14 -0
  132. package/dist/plugins/emelia/src/index.js +19 -23
  133. package/dist/plugins/erpnext/src/credentials.js +27 -0
  134. package/dist/plugins/erpnext/src/index.js +21 -42
  135. package/dist/plugins/facebookGraph/src/credentials.js +20 -0
  136. package/dist/plugins/facebookGraph/src/index.js +39 -37
  137. package/dist/plugins/fal/src/credentials.js +14 -0
  138. package/dist/plugins/fal/src/index.js +4 -2
  139. package/dist/plugins/fal/src/shared.js +58 -63
  140. package/dist/plugins/freshdesk/src/credentials.js +20 -0
  141. package/dist/plugins/freshdesk/src/index.js +25 -46
  142. package/dist/plugins/freshservice/src/credentials.js +16 -0
  143. package/dist/plugins/freshservice/src/index.js +37 -58
  144. package/dist/plugins/freshworksCrm/src/credentials.js +16 -0
  145. package/dist/plugins/freshworksCrm/src/index.js +20 -39
  146. package/dist/plugins/getresponse/src/credentials.js +22 -0
  147. package/dist/plugins/getresponse/src/index.js +20 -32
  148. package/dist/plugins/gett/src/credentials.js +64 -0
  149. package/dist/plugins/gett/src/index.js +11 -6
  150. package/dist/plugins/gett/src/login.js +24 -0
  151. package/dist/plugins/gett/src/session.js +15 -38
  152. package/dist/plugins/gett/src/shared.js +41 -84
  153. package/dist/plugins/ghost/src/credentials.js +36 -0
  154. package/dist/plugins/ghost/src/index.js +18 -59
  155. package/dist/plugins/github/src/credentials.js +18 -0
  156. package/dist/plugins/github/src/index.js +55 -78
  157. package/dist/plugins/gitlab/src/credentials.js +24 -0
  158. package/dist/plugins/gitlab/src/index.js +29 -48
  159. package/dist/plugins/gmail/src/index.js +26 -24
  160. package/dist/plugins/gong/src/credentials.js +16 -0
  161. package/dist/plugins/gong/src/index.js +16 -32
  162. package/dist/plugins/googleAppsScript/src/index.js +108 -42
  163. package/dist/plugins/googleCalendar/src/index.js +15 -13
  164. package/dist/plugins/googleContacts/src/index.js +12 -9
  165. package/dist/plugins/googleDocs/src/index.js +2 -0
  166. package/dist/plugins/googleDocs/src/shared.js +2 -1
  167. package/dist/plugins/googleDrive/src/index.js +50 -53
  168. package/dist/plugins/googleImage/src/credentials.js +14 -0
  169. package/dist/plugins/googleImage/src/index.js +14 -25
  170. package/dist/plugins/googleSheets/src/index.js +26 -27
  171. package/dist/plugins/googleSlides/src/index.js +6 -4
  172. package/dist/plugins/googleTasks/src/index.js +13 -11
  173. package/dist/plugins/gotify/src/credentials.js +32 -0
  174. package/dist/plugins/gotify/src/index.js +14 -36
  175. package/dist/plugins/gotowebinar/src/credentials.js +13 -0
  176. package/dist/plugins/gotowebinar/src/index.js +52 -69
  177. package/dist/plugins/grafana/src/credentials.js +16 -0
  178. package/dist/plugins/grafana/src/index.js +34 -53
  179. package/dist/plugins/graphql/src/credentials.js +42 -0
  180. package/dist/plugins/graphql/src/index.js +21 -46
  181. package/dist/plugins/grist/src/credentials.js +30 -0
  182. package/dist/plugins/grist/src/index.js +14 -43
  183. package/dist/plugins/halopsa/src/credentials.js +56 -0
  184. package/dist/plugins/halopsa/src/index.js +20 -47
  185. package/dist/plugins/harvest/src/credentials.js +20 -0
  186. package/dist/plugins/harvest/src/index.js +24 -43
  187. package/dist/plugins/helpscout/src/credentials.js +13 -0
  188. package/dist/plugins/helpscout/src/index.js +26 -38
  189. package/dist/plugins/highlevel/src/credentials.js +19 -0
  190. package/dist/plugins/highlevel/src/index.js +34 -63
  191. package/dist/plugins/homeAssistant/src/credentials.js +27 -0
  192. package/dist/plugins/homeAssistant/src/index.js +34 -52
  193. package/dist/plugins/hubspot/src/credentials.js +16 -0
  194. package/dist/plugins/hubspot/src/index.js +29 -41
  195. package/dist/plugins/humanticAi/src/credentials.js +13 -0
  196. package/dist/plugins/humanticAi/src/index.js +15 -22
  197. package/dist/plugins/hunter/src/credentials.js +13 -0
  198. package/dist/plugins/hunter/src/index.js +18 -17
  199. package/dist/plugins/intercom/src/credentials.js +19 -0
  200. package/dist/plugins/intercom/src/index.js +25 -38
  201. package/dist/plugins/iterable/src/credentials.js +17 -0
  202. package/dist/plugins/iterable/src/index.js +26 -40
  203. package/dist/plugins/jenkins/src/credentials.js +16 -0
  204. package/dist/plugins/jenkins/src/index.js +22 -36
  205. package/dist/plugins/jira/src/credentials.js +16 -0
  206. package/dist/plugins/jira/src/index.js +35 -61
  207. package/dist/plugins/keap/src/credentials.js +19 -0
  208. package/dist/plugins/keap/src/index.js +43 -71
  209. package/dist/plugins/kobotoolbox/src/credentials.js +13 -0
  210. package/dist/plugins/kobotoolbox/src/index.js +46 -84
  211. package/dist/plugins/lemlist/src/credentials.js +19 -0
  212. package/dist/plugins/lemlist/src/index.js +35 -47
  213. package/dist/plugins/linear/src/attachments.js +7 -7
  214. package/dist/plugins/linear/src/comments.js +7 -7
  215. package/dist/plugins/linear/src/credentials.js +17 -0
  216. package/dist/plugins/linear/src/cycles.js +5 -5
  217. package/dist/plugins/linear/src/index.js +2 -0
  218. package/dist/plugins/linear/src/initiatives.js +6 -6
  219. package/dist/plugins/linear/src/issues.js +14 -14
  220. package/dist/plugins/linear/src/labels.js +6 -6
  221. package/dist/plugins/linear/src/organization.js +2 -2
  222. package/dist/plugins/linear/src/projects.js +12 -12
  223. package/dist/plugins/linear/src/shared.js +34 -32
  224. package/dist/plugins/linear/src/states.js +3 -3
  225. package/dist/plugins/linear/src/teams.js +4 -4
  226. package/dist/plugins/linear/src/users.js +3 -3
  227. package/dist/plugins/linear/src/views.js +5 -5
  228. package/dist/plugins/linear/src/webhooks.js +5 -5
  229. package/dist/plugins/lingvanex/src/credentials.js +13 -0
  230. package/dist/plugins/lingvanex/src/index.js +7 -9
  231. package/dist/plugins/linkedin/src/credentials.js +17 -0
  232. package/dist/plugins/linkedin/src/index.js +13 -17
  233. package/dist/plugins/lonescale/src/credentials.js +13 -0
  234. package/dist/plugins/lonescale/src/index.js +16 -26
  235. package/dist/plugins/magento/src/credentials.js +16 -0
  236. package/dist/plugins/magento/src/index.js +67 -84
  237. package/dist/plugins/mailcheck/src/credentials.js +17 -0
  238. package/dist/plugins/mailcheck/src/index.js +7 -9
  239. package/dist/plugins/mailchimp/src/credentials.js +32 -0
  240. package/dist/plugins/mailchimp/src/index.js +36 -44
  241. package/dist/plugins/mailerlite/src/credentials.js +13 -0
  242. package/dist/plugins/mailerlite/src/index.js +19 -32
  243. package/dist/plugins/mailgun/src/credentials.js +21 -0
  244. package/dist/plugins/mailgun/src/index.js +15 -21
  245. package/dist/plugins/mailjet/src/credentials.js +38 -0
  246. package/dist/plugins/mailjet/src/index.js +60 -115
  247. package/dist/plugins/mandrill/src/credentials.js +17 -0
  248. package/dist/plugins/mandrill/src/index.js +11 -12
  249. package/dist/plugins/marketstack/src/credentials.js +16 -0
  250. package/dist/plugins/marketstack/src/index.js +18 -28
  251. package/dist/plugins/matrix/src/credentials.js +19 -0
  252. package/dist/plugins/matrix/src/index.js +23 -52
  253. package/dist/plugins/mattermost/src/credentials.js +19 -0
  254. package/dist/plugins/mattermost/src/index.js +41 -73
  255. package/dist/plugins/mautic/src/credentials.js +16 -0
  256. package/dist/plugins/mautic/src/index.js +46 -62
  257. package/dist/plugins/medium/src/credentials.js +20 -0
  258. package/dist/plugins/medium/src/index.js +18 -23
  259. package/dist/plugins/messagebird/src/credentials.js +22 -0
  260. package/dist/plugins/messagebird/src/index.js +13 -18
  261. package/dist/plugins/metabase/src/credentials.js +19 -0
  262. package/dist/plugins/metabase/src/index.js +24 -40
  263. package/dist/plugins/microsoftCalendar/src/index.js +48 -12
  264. package/dist/plugins/microsoftFiles/src/index.js +90 -25
  265. package/dist/plugins/microsoftMail/src/index.js +62 -15
  266. package/dist/plugins/misp/src/credentials.js +16 -0
  267. package/dist/plugins/misp/src/index.js +60 -71
  268. package/dist/plugins/mocean/src/credentials.js +17 -0
  269. package/dist/plugins/mocean/src/index.js +11 -23
  270. package/dist/plugins/monday/src/credentials.js +14 -0
  271. package/dist/plugins/monday/src/index.js +31 -44
  272. package/dist/plugins/monicaCrm/src/credentials.js +19 -0
  273. package/dist/plugins/monicaCrm/src/index.js +25 -42
  274. package/dist/plugins/msg91/src/credentials.js +10 -0
  275. package/dist/plugins/msg91/src/index.js +15 -11
  276. package/dist/plugins/nasa/src/credentials.js +22 -0
  277. package/dist/plugins/nasa/src/index.js +24 -28
  278. package/dist/plugins/netlify/src/credentials.js +19 -0
  279. package/dist/plugins/netlify/src/index.js +27 -51
  280. package/dist/plugins/netscalerAdc/src/credentials.js +18 -0
  281. package/dist/plugins/netscalerAdc/src/index.js +16 -31
  282. package/dist/plugins/nextcloud/src/credentials.js +27 -0
  283. package/dist/plugins/nextcloud/src/index.js +55 -109
  284. package/dist/plugins/nocodb/src/credentials.js +16 -0
  285. package/dist/plugins/nocodb/src/index.js +19 -37
  286. package/dist/plugins/notion/src/credentials.js +21 -0
  287. package/dist/plugins/notion/src/index.js +25 -38
  288. package/dist/plugins/npm/src/credentials.js +19 -0
  289. package/dist/plugins/npm/src/index.js +22 -32
  290. package/dist/plugins/odoo/src/credentials.js +21 -0
  291. package/dist/plugins/odoo/src/index.js +53 -69
  292. package/dist/plugins/okta/src/credentials.js +23 -0
  293. package/dist/plugins/okta/src/index.js +30 -35
  294. package/dist/plugins/oneSimpleApi/src/credentials.js +16 -0
  295. package/dist/plugins/oneSimpleApi/src/index.js +19 -24
  296. package/dist/plugins/onfleet/src/credentials.js +23 -0
  297. package/dist/plugins/onfleet/src/index.js +42 -53
  298. package/dist/plugins/openai/src/credentials.js +13 -0
  299. package/dist/plugins/openai/src/index.js +15 -23
  300. package/dist/plugins/openweathermap/src/credentials.js +16 -0
  301. package/dist/plugins/openweathermap/src/index.js +22 -22
  302. package/dist/plugins/oura/src/credentials.js +19 -0
  303. package/dist/plugins/oura/src/index.js +13 -18
  304. package/dist/plugins/paddle/src/credentials.js +27 -0
  305. package/dist/plugins/paddle/src/index.js +20 -36
  306. package/dist/plugins/pagerduty/src/credentials.js +24 -0
  307. package/dist/plugins/pagerduty/src/index.js +30 -39
  308. package/dist/plugins/parallel/src/credentials.js +18 -0
  309. package/dist/plugins/parallel/src/index.js +16 -22
  310. package/dist/plugins/paypal/src/credentials.js +44 -0
  311. package/dist/plugins/paypal/src/index.js +14 -40
  312. package/dist/plugins/peekalink/src/credentials.js +16 -0
  313. package/dist/plugins/peekalink/src/index.js +10 -11
  314. package/dist/plugins/phantombuster/src/credentials.js +19 -0
  315. package/dist/plugins/phantombuster/src/index.js +19 -32
  316. package/dist/plugins/philipsHue/src/credentials.js +17 -0
  317. package/dist/plugins/philipsHue/src/index.js +15 -27
  318. package/dist/plugins/pipedrive/src/credentials.js +26 -0
  319. package/dist/plugins/pipedrive/src/index.js +43 -73
  320. package/dist/plugins/plaud/src/index.js +2 -1
  321. package/dist/plugins/plaud/src/shared.js +23 -19
  322. package/dist/plugins/plivo/src/credentials.js +20 -0
  323. package/dist/plugins/plivo/src/index.js +13 -19
  324. package/dist/plugins/posthog/src/credentials.js +18 -0
  325. package/dist/plugins/posthog/src/index.js +14 -20
  326. package/dist/plugins/profitwell/src/credentials.js +22 -0
  327. package/dist/plugins/profitwell/src/index.js +10 -17
  328. package/dist/plugins/pushbullet/src/credentials.js +19 -0
  329. package/dist/plugins/pushbullet/src/index.js +19 -27
  330. package/dist/plugins/pushcut/src/credentials.js +19 -0
  331. package/dist/plugins/pushcut/src/index.js +7 -8
  332. package/dist/plugins/pushover/src/credentials.js +14 -0
  333. package/dist/plugins/pushover/src/index.js +7 -12
  334. package/dist/plugins/quickbase/src/credentials.js +15 -0
  335. package/dist/plugins/quickbase/src/index.js +24 -34
  336. package/dist/plugins/quickbooks/src/credentials.js +22 -0
  337. package/dist/plugins/quickbooks/src/index.js +17 -46
  338. package/dist/plugins/raindrop/src/credentials.js +19 -0
  339. package/dist/plugins/raindrop/src/index.js +30 -32
  340. package/dist/plugins/recraft/src/credentials.js +13 -0
  341. package/dist/plugins/recraft/src/index.js +38 -27
  342. package/dist/plugins/reddit/src/credentials.js +26 -0
  343. package/dist/plugins/reddit/src/index.js +30 -34
  344. package/dist/plugins/replicate/src/credentials.js +23 -0
  345. package/dist/plugins/replicate/src/index.js +17 -27
  346. package/dist/plugins/rocketchat/src/credentials.js +17 -0
  347. package/dist/plugins/rocketchat/src/index.js +8 -19
  348. package/dist/plugins/rundeck/src/credentials.js +16 -0
  349. package/dist/plugins/rundeck/src/index.js +12 -28
  350. package/dist/plugins/salesforce/src/credentials.js +73 -0
  351. package/dist/plugins/salesforce/src/index.js +6 -0
  352. package/dist/plugins/salesforce/src/metadata.js +3 -16
  353. package/dist/plugins/salesforce/src/shared.js +25 -100
  354. package/dist/plugins/salesforce/src/sobjects.js +10 -9
  355. package/dist/plugins/salesmate/src/credentials.js +17 -0
  356. package/dist/plugins/salesmate/src/index.js +20 -37
  357. package/dist/plugins/securityScorecard/src/credentials.js +22 -0
  358. package/dist/plugins/securityScorecard/src/index.js +24 -37
  359. package/dist/plugins/segment/src/credentials.js +16 -0
  360. package/dist/plugins/segment/src/index.js +12 -16
  361. package/dist/plugins/sendgrid/src/credentials.js +13 -0
  362. package/dist/plugins/sendgrid/src/index.js +31 -35
  363. package/dist/plugins/sendy/src/credentials.js +18 -0
  364. package/dist/plugins/sendy/src/index.js +18 -24
  365. package/dist/plugins/sentry/src/credentials.js +16 -0
  366. package/dist/plugins/sentry/src/index.js +30 -98
  367. package/dist/plugins/servicenow/src/credentials.js +13 -0
  368. package/dist/plugins/servicenow/src/index.js +22 -41
  369. package/dist/plugins/shiftAtlas/src/graph.js +2 -2
  370. package/dist/plugins/shiftAtlas/src/index.js +2 -0
  371. package/dist/plugins/shiftAtlas/src/shared.js +3 -1
  372. package/dist/plugins/shiftBwm/src/collections.js +201 -0
  373. package/dist/plugins/shiftBwm/src/index.js +35 -0
  374. package/dist/plugins/shiftBwm/src/records.js +180 -0
  375. package/dist/plugins/shiftBwm/src/shared.js +168 -0
  376. package/dist/plugins/shiftBwm/src/vendor/client.js +227 -0
  377. package/dist/plugins/shiftBwm/src/vendor/contracts.js +59 -0
  378. package/dist/plugins/shiftBwm/src/vendor/models.js +525 -0
  379. package/dist/plugins/shiftCrm/src/access.js +2 -2
  380. package/dist/plugins/shiftCrm/src/accounts.js +3 -3
  381. package/dist/plugins/shiftCrm/src/activities.js +3 -3
  382. package/dist/plugins/shiftCrm/src/credentials.js +6 -0
  383. package/dist/plugins/shiftCrm/src/index.js +2 -0
  384. package/dist/plugins/shiftCrm/src/opportunities.js +3 -3
  385. package/dist/plugins/shiftCrm/src/people.js +3 -3
  386. package/dist/plugins/shiftCrm/src/records.js +2 -2
  387. package/dist/plugins/shiftCrm/src/shared.js +2 -1
  388. package/dist/plugins/shiftCrm/src/tasks.js +3 -3
  389. package/dist/plugins/shiftObjects/src/credentials.js +2 -0
  390. package/dist/plugins/shiftObjects/src/index.js +2 -0
  391. package/dist/plugins/shiftObjects/src/objects.js +3 -3
  392. package/dist/plugins/shiftOcr/src/credentials.js +8 -0
  393. package/dist/plugins/shiftOcr/src/index.js +5 -2
  394. package/dist/plugins/shiftPages/src/index.js +2 -0
  395. package/dist/plugins/shiftPages/src/pages.js +5 -3
  396. package/dist/plugins/shiftPages/src/shared.js +3 -1
  397. package/dist/plugins/shiftTranscription/src/index.js +2 -0
  398. package/dist/plugins/shiftTranscription/src/shared.js +11 -1
  399. package/dist/plugins/shiftTranscription/src/transcription.js +3 -2
  400. package/dist/plugins/shiftWork/src/index.js +2 -0
  401. package/dist/plugins/shiftWork/src/issue-views.js +5 -5
  402. package/dist/plugins/shiftWork/src/issues.js +11 -7
  403. package/dist/plugins/shiftWork/src/projects.js +3 -3
  404. package/dist/plugins/shiftWork/src/shared.js +3 -1
  405. package/dist/plugins/shopify/src/credentials.js +16 -0
  406. package/dist/plugins/shopify/src/index.js +32 -59
  407. package/dist/plugins/signl4/src/credentials.js +17 -0
  408. package/dist/plugins/signl4/src/index.js +28 -29
  409. package/dist/plugins/slack/src/credentials.js +19 -0
  410. package/dist/plugins/slack/src/index.js +51 -60
  411. package/dist/plugins/sms77/src/credentials.js +17 -0
  412. package/dist/plugins/sms77/src/index.js +11 -16
  413. package/dist/plugins/splunk/src/credentials.js +19 -0
  414. package/dist/plugins/splunk/src/index.js +32 -74
  415. package/dist/plugins/spotify/src/credentials.js +19 -0
  416. package/dist/plugins/spotify/src/index.js +40 -55
  417. package/dist/plugins/stackby/src/credentials.js +13 -0
  418. package/dist/plugins/stackby/src/index.js +14 -23
  419. package/dist/plugins/steel/src/auth.js +27 -0
  420. package/dist/plugins/steel/src/browser.js +4 -3
  421. package/dist/plugins/steel/src/captchas.js +4 -3
  422. package/dist/plugins/steel/src/extensions.js +3 -2
  423. package/dist/plugins/steel/src/files.js +9 -10
  424. package/dist/plugins/steel/src/index.js +2 -0
  425. package/dist/plugins/steel/src/page/tools.js +3 -3
  426. package/dist/plugins/steel/src/profiles.js +4 -3
  427. package/dist/plugins/steel/src/sessions.js +13 -13
  428. package/dist/plugins/steel/src/shared.js +21 -51
  429. package/dist/plugins/storyblok/src/credentials.js +37 -0
  430. package/dist/plugins/storyblok/src/index.js +22 -66
  431. package/dist/plugins/strapi/src/credentials.js +71 -0
  432. package/dist/plugins/strapi/src/index.js +36 -70
  433. package/dist/plugins/strava/src/credentials.js +19 -0
  434. package/dist/plugins/strava/src/index.js +16 -33
  435. package/dist/plugins/stripe/src/credentials.js +19 -0
  436. package/dist/plugins/stripe/src/index.js +44 -58
  437. package/dist/plugins/supabase/src/credentials.js +30 -0
  438. package/dist/plugins/supabase/src/index.js +18 -40
  439. package/dist/plugins/syncromsp/src/credentials.js +16 -0
  440. package/dist/plugins/syncromsp/src/index.js +37 -70
  441. package/dist/plugins/tapfiliate/src/credentials.js +13 -0
  442. package/dist/plugins/tapfiliate/src/index.js +21 -31
  443. package/dist/plugins/telegram/src/credentials.js +20 -0
  444. package/dist/plugins/telegram/src/index.js +31 -39
  445. package/dist/plugins/thehive/src/credentials.js +14 -0
  446. package/dist/plugins/thehive/src/index.js +33 -50
  447. package/dist/plugins/thehiveProject/src/credentials.js +16 -0
  448. package/dist/plugins/thehiveProject/src/index.js +53 -122
  449. package/dist/plugins/todoist/src/credentials.js +26 -0
  450. package/dist/plugins/todoist/src/index.js +49 -79
  451. package/dist/plugins/together/src/credentials.js +16 -0
  452. package/dist/plugins/together/src/index.js +30 -32
  453. package/dist/plugins/travisci/src/credentials.js +24 -0
  454. package/dist/plugins/travisci/src/index.js +16 -30
  455. package/dist/plugins/trello/src/credentials.js +29 -0
  456. package/dist/plugins/trello/src/index.js +49 -64
  457. package/dist/plugins/twake/src/credentials.js +16 -0
  458. package/dist/plugins/twake/src/index.js +8 -10
  459. package/dist/plugins/twilio/src/credentials.js +23 -0
  460. package/dist/plugins/twilio/src/index.js +12 -26
  461. package/dist/plugins/twist/src/credentials.js +13 -0
  462. package/dist/plugins/twist/src/index.js +32 -44
  463. package/dist/plugins/twitter/src/credentials.js +16 -0
  464. package/dist/plugins/twitter/src/index.js +25 -37
  465. package/dist/plugins/typesafe/src/credentials.js +28 -0
  466. package/dist/plugins/typesafe/src/index.js +3 -1
  467. package/dist/plugins/typesafe/src/shared.js +23 -35
  468. package/dist/plugins/unleashedSoftware/src/credentials.js +21 -0
  469. package/dist/plugins/unleashedSoftware/src/index.js +13 -37
  470. package/dist/plugins/uplead/src/credentials.js +16 -0
  471. package/dist/plugins/uplead/src/index.js +11 -16
  472. package/dist/plugins/uproc/src/credentials.js +14 -0
  473. package/dist/plugins/uproc/src/index.js +7 -10
  474. package/dist/plugins/uptimerobot/src/credentials.js +14 -0
  475. package/dist/plugins/uptimerobot/src/index.js +28 -39
  476. package/dist/plugins/urlscanio/src/credentials.js +13 -0
  477. package/dist/plugins/urlscanio/src/index.js +13 -22
  478. package/dist/plugins/vercel/src/credentials.js +19 -0
  479. package/dist/plugins/vercel/src/deployments.js +27 -11
  480. package/dist/plugins/vercel/src/env.js +31 -12
  481. package/dist/plugins/vercel/src/index.js +2 -0
  482. package/dist/plugins/vercel/src/projects.js +6 -3
  483. package/dist/plugins/vercel/src/shared.js +32 -37
  484. package/dist/plugins/vero/src/credentials.js +17 -0
  485. package/dist/plugins/vero/src/index.js +18 -21
  486. package/dist/plugins/vonage/src/credentials.js +17 -0
  487. package/dist/plugins/vonage/src/index.js +14 -18
  488. package/dist/plugins/wekan/src/credentials.js +16 -0
  489. package/dist/plugins/wekan/src/index.js +33 -46
  490. package/dist/plugins/wolt/src/account.js +6 -0
  491. package/dist/plugins/wolt/src/catalog.js +2 -2
  492. package/dist/plugins/wolt/src/credentials.js +64 -0
  493. package/dist/plugins/wolt/src/index.js +8 -3
  494. package/dist/plugins/wolt/src/orders.js +2 -2
  495. package/dist/plugins/wolt/src/public.js +91 -0
  496. package/dist/plugins/wolt/src/shared.js +49 -158
  497. package/dist/plugins/woocommerce/src/credentials.js +16 -0
  498. package/dist/plugins/woocommerce/src/index.js +19 -37
  499. package/dist/plugins/wordpress/src/credentials.js +16 -0
  500. package/dist/plugins/wordpress/src/index.js +23 -42
  501. package/dist/plugins/xai/src/credentials.js +13 -0
  502. package/dist/plugins/xai/src/index.js +31 -30
  503. package/dist/plugins/xero/src/credentials.js +17 -0
  504. package/dist/plugins/xero/src/index.js +19 -36
  505. package/dist/plugins/yourls/src/credentials.js +17 -0
  506. package/dist/plugins/yourls/src/index.js +13 -23
  507. package/dist/plugins/zammad/src/credentials.js +15 -0
  508. package/dist/plugins/zammad/src/index.js +27 -47
  509. package/dist/plugins/zendesk/src/credentials.js +26 -0
  510. package/dist/plugins/zendesk/src/index.js +29 -48
  511. package/dist/plugins/zoho/src/credentials.js +17 -0
  512. package/dist/plugins/zoho/src/index.js +18 -38
  513. package/dist/plugins/zoom/src/credentials.js +19 -0
  514. package/dist/plugins/zoom/src/index.js +15 -30
  515. package/dist/plugins/zulip/src/credentials.js +16 -0
  516. package/dist/plugins/zulip/src/index.js +36 -42
  517. package/dist/sdk.d.ts +8 -0
  518. package/dist/sdk.js +3 -0
  519. package/package.json +3 -2
  520. package/dist/plugins/_shared/authedFetch.js +0 -33
  521. package/dist/plugins/_shared/tokenRefresh.js +0 -41
@@ -1,59 +1,26 @@
1
- const BASE = "https://api.todoist.com/rest/v2";
2
- const SYNC_BASE = "https://api.todoist.com/sync/v9";
3
- async function api(token, method, endpoint, body, qs) {
4
- const url = new URL(`${BASE}${endpoint}`);
5
- if (qs) {
6
- for (const [k, v] of Object.entries(qs)) {
7
- if (v !== undefined && v !== null)
8
- url.searchParams.set(k, String(v));
9
- }
10
- }
11
- const init = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { todoistCredential } from "./credentials.js";
3
+ function api(ctx, method, endpoint, body, qs) {
4
+ return credentialJson(ctx, todoistCredential, "todoist", {
5
+ target: "rest",
6
+ path: endpoint.replace(/^\//, ""),
12
7
  method,
13
- headers: {
14
- Authorization: `Bearer ${token}`,
15
- "Content-Type": "application/json",
16
- },
17
- };
18
- if (body && Object.keys(body).length > 0)
19
- init.body = JSON.stringify(body);
20
- const res = await fetch(url.toString(), init);
21
- if (res.status === 204)
22
- return { success: true };
23
- if (!res.ok)
24
- throw new Error(`Todoist error ${res.status}: ${await res.text()}`);
25
- const text = await res.text();
26
- return text ? JSON.parse(text) : { success: true };
27
- }
28
- async function syncApi(token, body) {
29
- const res = await fetch(`${SYNC_BASE}/sync`, {
30
- method: "POST",
31
- headers: {
32
- Authorization: `Bearer ${token}`,
33
- "Content-Type": "application/json",
34
- },
35
- body: JSON.stringify(body),
8
+ query: qs,
9
+ ...(body && Object.keys(body).length > 0 ? { json: body } : {}),
36
10
  });
37
- if (!res.ok)
38
- throw new Error(`Todoist Sync error ${res.status}: ${await res.text()}`);
39
- return res.json();
40
11
  }
41
- async function quickAdd(token, body) {
42
- const res = await fetch(`${SYNC_BASE}/quick/add`, {
12
+ function quickAdd(ctx, body) {
13
+ return credentialJson(ctx, todoistCredential, "todoist", {
14
+ target: "sync",
15
+ path: "quick/add",
43
16
  method: "POST",
44
- headers: {
45
- Authorization: `Bearer ${token}`,
46
- "Content-Type": "application/json",
47
- },
48
- body: JSON.stringify(body),
17
+ json: body,
49
18
  });
50
- if (!res.ok)
51
- throw new Error(`Todoist error ${res.status}: ${await res.text()}`);
52
- return res.json();
53
19
  }
54
20
  export default function todoist(rl) {
55
21
  rl.setName("todoist");
56
22
  rl.setVersion("0.1.0");
23
+ rl.setCredential(todoistCredential);
57
24
  rl.setConnectionSchema({
58
25
  apiToken: {
59
26
  type: "string",
@@ -62,7 +29,6 @@ export default function todoist(rl) {
62
29
  env: "TODOIST_API_TOKEN",
63
30
  },
64
31
  });
65
- const t = (ctx) => ctx.connection.config.apiToken;
66
32
  // ── Task ────────────────────────────────────────────
67
33
  rl.registerAction("task.create", {
68
34
  access: "write",
@@ -108,7 +74,7 @@ export default function todoist(rl) {
108
74
  body.parent_id = p.parentId;
109
75
  if (p.assigneeId)
110
76
  body.assignee_id = p.assigneeId;
111
- return api(t(ctx), "POST", "/tasks", body);
77
+ return api(ctx, "POST", "/tasks", body);
112
78
  },
113
79
  });
114
80
  rl.registerAction("task.get", {
@@ -116,7 +82,7 @@ export default function todoist(rl) {
116
82
  description: "Get a task by ID",
117
83
  inputSchema: { id: { type: "string", required: true } },
118
84
  async execute(input, ctx) {
119
- return api(t(ctx), "GET", `/tasks/${input.id}`);
85
+ return api(ctx, "GET", `/tasks/${pathSegment(input.id)}`);
120
86
  },
121
87
  });
122
88
  rl.registerAction("task.list", {
@@ -140,7 +106,7 @@ export default function todoist(rl) {
140
106
  qs.label = p.label;
141
107
  if (p.filter)
142
108
  qs.filter = p.filter;
143
- const data = (await api(t(ctx), "GET", "/tasks", undefined, qs));
109
+ const data = (await api(ctx, "GET", "/tasks", undefined, qs));
144
110
  return p.limit ? data.slice(0, p.limit) : data;
145
111
  },
146
112
  });
@@ -174,7 +140,7 @@ export default function todoist(rl) {
174
140
  body.labels = fields.labels;
175
141
  if (fields.assigneeId)
176
142
  body.assignee_id = fields.assigneeId;
177
- return api(t(ctx), "POST", `/tasks/${id}`, body);
143
+ return api(ctx, "POST", `/tasks/${pathSegment(id)}`, body);
178
144
  },
179
145
  });
180
146
  rl.registerAction("task.close", {
@@ -182,7 +148,7 @@ export default function todoist(rl) {
182
148
  description: "Close (complete) a task",
183
149
  inputSchema: { id: { type: "string", required: true } },
184
150
  async execute(input, ctx) {
185
- await api(t(ctx), "POST", `/tasks/${input.id}/close`);
151
+ await api(ctx, "POST", `/tasks/${pathSegment(input.id)}/close`);
186
152
  return { success: true };
187
153
  },
188
154
  });
@@ -191,7 +157,7 @@ export default function todoist(rl) {
191
157
  description: "Reopen a task",
192
158
  inputSchema: { id: { type: "string", required: true } },
193
159
  async execute(input, ctx) {
194
- await api(t(ctx), "POST", `/tasks/${input.id}/reopen`);
160
+ await api(ctx, "POST", `/tasks/${pathSegment(input.id)}/reopen`);
195
161
  return { success: true };
196
162
  },
197
163
  });
@@ -200,7 +166,7 @@ export default function todoist(rl) {
200
166
  description: "Delete a task",
201
167
  inputSchema: { id: { type: "string", required: true } },
202
168
  async execute(input, ctx) {
203
- await api(t(ctx), "DELETE", `/tasks/${input.id}`);
169
+ await api(ctx, "DELETE", `/tasks/${pathSegment(input.id)}`);
204
170
  return { success: true };
205
171
  },
206
172
  });
@@ -223,7 +189,7 @@ export default function todoist(rl) {
223
189
  body.note = p.note;
224
190
  if (p.reminder)
225
191
  body.reminder = p.reminder;
226
- return quickAdd(t(ctx), body);
192
+ return quickAdd(ctx, body);
227
193
  },
228
194
  });
229
195
  // ── Project ─────────────────────────────────────────
@@ -252,7 +218,7 @@ export default function todoist(rl) {
252
218
  body.parent_id = p.parentId;
253
219
  if (p.viewStyle)
254
220
  body.view_style = p.viewStyle;
255
- return api(t(ctx), "POST", "/projects", body);
221
+ return api(ctx, "POST", "/projects", body);
256
222
  },
257
223
  });
258
224
  rl.registerAction("project.get", {
@@ -260,7 +226,7 @@ export default function todoist(rl) {
260
226
  description: "Get a project",
261
227
  inputSchema: { id: { type: "string", required: true } },
262
228
  async execute(input, ctx) {
263
- return api(t(ctx), "GET", `/projects/${input.id}`);
229
+ return api(ctx, "GET", `/projects/${pathSegment(input.id)}`);
264
230
  },
265
231
  });
266
232
  rl.registerAction("project.list", {
@@ -268,7 +234,7 @@ export default function todoist(rl) {
268
234
  description: "List all projects",
269
235
  inputSchema: {},
270
236
  async execute(_input, ctx) {
271
- return api(t(ctx), "GET", "/projects");
237
+ return api(ctx, "GET", "/projects");
272
238
  },
273
239
  });
274
240
  rl.registerAction("project.update", {
@@ -292,7 +258,7 @@ export default function todoist(rl) {
292
258
  body.is_favorite = fields.isFavorite;
293
259
  if (fields.viewStyle)
294
260
  body.view_style = fields.viewStyle;
295
- return api(t(ctx), "POST", `/projects/${id}`, body);
261
+ return api(ctx, "POST", `/projects/${pathSegment(id)}`, body);
296
262
  },
297
263
  });
298
264
  rl.registerAction("project.delete", {
@@ -300,7 +266,7 @@ export default function todoist(rl) {
300
266
  description: "Delete a project",
301
267
  inputSchema: { id: { type: "string", required: true } },
302
268
  async execute(input, ctx) {
303
- await api(t(ctx), "DELETE", `/projects/${input.id}`);
269
+ await api(ctx, "DELETE", `/projects/${pathSegment(input.id)}`);
304
270
  return { success: true };
305
271
  },
306
272
  });
@@ -309,7 +275,7 @@ export default function todoist(rl) {
309
275
  description: "Archive a project",
310
276
  inputSchema: { id: { type: "string", required: true } },
311
277
  async execute(input, ctx) {
312
- await api(t(ctx), "POST", `/projects/${input.id}/archive`);
278
+ await api(ctx, "POST", `/projects/${pathSegment(input.id)}/archive`);
313
279
  return { success: true };
314
280
  },
315
281
  });
@@ -318,7 +284,7 @@ export default function todoist(rl) {
318
284
  description: "Unarchive a project",
319
285
  inputSchema: { id: { type: "string", required: true } },
320
286
  async execute(input, ctx) {
321
- await api(t(ctx), "POST", `/projects/${input.id}/unarchive`);
287
+ await api(ctx, "POST", `/projects/${pathSegment(input.id)}/unarchive`);
322
288
  return { success: true };
323
289
  },
324
290
  });
@@ -327,7 +293,7 @@ export default function todoist(rl) {
327
293
  description: "Get project collaborators",
328
294
  inputSchema: { id: { type: "string", required: true } },
329
295
  async execute(input, ctx) {
330
- return api(t(ctx), "GET", `/projects/${input.id}/collaborators`);
296
+ return api(ctx, "GET", `/projects/${pathSegment(input.id)}/collaborators`);
331
297
  },
332
298
  });
333
299
  // ── Section ─────────────────────────────────────────
@@ -341,7 +307,7 @@ export default function todoist(rl) {
341
307
  },
342
308
  async execute(input, ctx) {
343
309
  const p = input;
344
- return api(t(ctx), "POST", "/sections", {
310
+ return api(ctx, "POST", "/sections", {
345
311
  project_id: p.projectId,
346
312
  name: p.name,
347
313
  ...(p.order ? { order: p.order } : {}),
@@ -353,7 +319,7 @@ export default function todoist(rl) {
353
319
  description: "Get a section",
354
320
  inputSchema: { id: { type: "string", required: true } },
355
321
  async execute(input, ctx) {
356
- return api(t(ctx), "GET", `/sections/${input.id}`);
322
+ return api(ctx, "GET", `/sections/${pathSegment(input.id)}`);
357
323
  },
358
324
  });
359
325
  rl.registerAction("section.list", {
@@ -364,7 +330,7 @@ export default function todoist(rl) {
364
330
  const qs = {};
365
331
  if (input?.projectId)
366
332
  qs.project_id = input.projectId;
367
- return api(t(ctx), "GET", "/sections", undefined, qs);
333
+ return api(ctx, "GET", "/sections", undefined, qs);
368
334
  },
369
335
  });
370
336
  rl.registerAction("section.update", {
@@ -376,7 +342,9 @@ export default function todoist(rl) {
376
342
  },
377
343
  async execute(input, ctx) {
378
344
  const p = input;
379
- return api(t(ctx), "POST", `/sections/${p.id}`, { name: p.name });
345
+ return api(ctx, "POST", `/sections/${pathSegment(p.id)}`, {
346
+ name: p.name,
347
+ });
380
348
  },
381
349
  });
382
350
  rl.registerAction("section.delete", {
@@ -384,7 +352,7 @@ export default function todoist(rl) {
384
352
  description: "Delete a section",
385
353
  inputSchema: { id: { type: "string", required: true } },
386
354
  async execute(input, ctx) {
387
- await api(t(ctx), "DELETE", `/sections/${input.id}`);
355
+ await api(ctx, "DELETE", `/sections/${pathSegment(input.id)}`);
388
356
  return { success: true };
389
357
  },
390
358
  });
@@ -398,7 +366,7 @@ export default function todoist(rl) {
398
366
  },
399
367
  async execute(input, ctx) {
400
368
  const p = input;
401
- return api(t(ctx), "POST", "/comments", {
369
+ return api(ctx, "POST", "/comments", {
402
370
  task_id: p.taskId,
403
371
  content: p.content,
404
372
  });
@@ -409,7 +377,7 @@ export default function todoist(rl) {
409
377
  description: "Get a comment",
410
378
  inputSchema: { id: { type: "string", required: true } },
411
379
  async execute(input, ctx) {
412
- return api(t(ctx), "GET", `/comments/${input.id}`);
380
+ return api(ctx, "GET", `/comments/${pathSegment(input.id)}`);
413
381
  },
414
382
  });
415
383
  rl.registerAction("comment.list", {
@@ -426,7 +394,7 @@ export default function todoist(rl) {
426
394
  qs.task_id = p.taskId;
427
395
  if (p.projectId)
428
396
  qs.project_id = p.projectId;
429
- return api(t(ctx), "GET", "/comments", undefined, qs);
397
+ return api(ctx, "GET", "/comments", undefined, qs);
430
398
  },
431
399
  });
432
400
  rl.registerAction("comment.update", {
@@ -438,7 +406,9 @@ export default function todoist(rl) {
438
406
  },
439
407
  async execute(input, ctx) {
440
408
  const p = input;
441
- return api(t(ctx), "POST", `/comments/${p.id}`, { content: p.content });
409
+ return api(ctx, "POST", `/comments/${pathSegment(p.id)}`, {
410
+ content: p.content,
411
+ });
442
412
  },
443
413
  });
444
414
  rl.registerAction("comment.delete", {
@@ -446,7 +416,7 @@ export default function todoist(rl) {
446
416
  description: "Delete a comment",
447
417
  inputSchema: { id: { type: "string", required: true } },
448
418
  async execute(input, ctx) {
449
- await api(t(ctx), "DELETE", `/comments/${input.id}`);
419
+ await api(ctx, "DELETE", `/comments/${pathSegment(input.id)}`);
450
420
  return { success: true };
451
421
  },
452
422
  });
@@ -469,7 +439,7 @@ export default function todoist(rl) {
469
439
  body.order = p.order;
470
440
  if (p.isFavorite)
471
441
  body.is_favorite = true;
472
- return api(t(ctx), "POST", "/labels", body);
442
+ return api(ctx, "POST", "/labels", body);
473
443
  },
474
444
  });
475
445
  rl.registerAction("label.get", {
@@ -477,7 +447,7 @@ export default function todoist(rl) {
477
447
  description: "Get a label",
478
448
  inputSchema: { id: { type: "string", required: true } },
479
449
  async execute(input, ctx) {
480
- return api(t(ctx), "GET", `/labels/${input.id}`);
450
+ return api(ctx, "GET", `/labels/${pathSegment(input.id)}`);
481
451
  },
482
452
  });
483
453
  rl.registerAction("label.list", {
@@ -485,7 +455,7 @@ export default function todoist(rl) {
485
455
  description: "List all labels",
486
456
  inputSchema: {},
487
457
  async execute(_input, ctx) {
488
- return api(t(ctx), "GET", "/labels");
458
+ return api(ctx, "GET", "/labels");
489
459
  },
490
460
  });
491
461
  rl.registerAction("label.update", {
@@ -509,7 +479,7 @@ export default function todoist(rl) {
509
479
  body.order = fields.order;
510
480
  if (fields.isFavorite !== undefined)
511
481
  body.is_favorite = fields.isFavorite;
512
- return api(t(ctx), "POST", `/labels/${id}`, body);
482
+ return api(ctx, "POST", `/labels/${pathSegment(id)}`, body);
513
483
  },
514
484
  });
515
485
  rl.registerAction("label.delete", {
@@ -517,7 +487,7 @@ export default function todoist(rl) {
517
487
  description: "Delete a label",
518
488
  inputSchema: { id: { type: "string", required: true } },
519
489
  async execute(input, ctx) {
520
- await api(t(ctx), "DELETE", `/labels/${input.id}`);
490
+ await api(ctx, "DELETE", `/labels/${pathSegment(input.id)}`);
521
491
  return { success: true };
522
492
  },
523
493
  });
@@ -0,0 +1,16 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * An API key, sent as a bearer to Together's v1 image generations
4
+ * endpoint — the only path this plugin calls.
5
+ */
6
+ export const togetherCredential = staticCredential({
7
+ id: "together",
8
+ auth: { kind: "bearer" },
9
+ local: { secret: "apiKey" },
10
+ targets: {
11
+ api: {
12
+ baseUrl: "https://api.together.xyz/v1/",
13
+ methods: ["POST"],
14
+ },
15
+ },
16
+ });
@@ -12,12 +12,22 @@
12
12
  * fidelity switch to FLUX.1-dev / Ideogram / Qwen-Image and bump
13
13
  * `steps` accordingly (20–30 is typical for non-schnell models).
14
14
  */
15
- import { readImageInput, SEND_FILE_NOTE, writeImageFile } from "../../_shared/mediaFile.js";
15
+ import { credentialJson } from "../../_shared/credentials.js";
16
+ import { readImageInput, SEND_FILE_NOTE, writeImageFile, } from "../../_shared/mediaFile.js";
16
17
  import { parseSize } from "../../_shared/parseSize.js";
17
- const ENDPOINT = "https://api.together.xyz/v1/images/generations";
18
+ import { togetherCredential } from "./credentials.js";
19
+ function generate(ctx, body) {
20
+ return credentialJson(ctx, togetherCredential, "together", {
21
+ target: "api",
22
+ path: "images/generations",
23
+ method: "POST",
24
+ json: body,
25
+ });
26
+ }
18
27
  export default function together(rl) {
19
28
  rl.setName("together");
20
29
  rl.setVersion("0.1.0");
30
+ rl.setCredential(togetherCredential);
21
31
  rl.setConnectionSchema({
22
32
  apiKey: {
23
33
  type: "string",
@@ -66,10 +76,9 @@ export default function together(rl) {
66
76
  if (typeof p.prompt !== "string" || p.prompt.length === 0) {
67
77
  throw new Error("together: prompt is required");
68
78
  }
69
- const apiKey = ctx.connection.config.apiKey;
70
79
  const model = p.model ?? "black-forest-labs/FLUX.1-schnell";
71
80
  const { width, height } = parseSize(p.size, "together");
72
- const body = {
81
+ const data = await generate(ctx, {
73
82
  model,
74
83
  prompt: p.prompt,
75
84
  width,
@@ -77,21 +86,16 @@ export default function together(rl) {
77
86
  steps: p.steps ?? 4,
78
87
  n: Math.min(p.n ?? 1, 4),
79
88
  response_format: "base64",
80
- };
81
- const res = await fetch(ENDPOINT, {
82
- method: "POST",
83
- headers: {
84
- "Content-Type": "application/json",
85
- Authorization: `Bearer ${apiKey}`,
86
- },
87
- body: JSON.stringify(body),
88
89
  });
89
- if (!res.ok) {
90
- throw new Error(`Together API error ${res.status}: ${await res.text()}`);
91
- }
92
- const data = (await res.json());
93
90
  const stamp = Date.now();
94
- const images = (data.data ?? []).map((d, i) => writeImageFile({ base64: d.b64_json, mimeType: "image/png", provider: "together", index: i, saveDir: p.saveDir, stamp }));
91
+ const images = (data.data ?? []).map((d, i) => writeImageFile({
92
+ base64: d.b64_json,
93
+ mimeType: "image/png",
94
+ provider: "together",
95
+ index: i,
96
+ saveDir: p.saveDir,
97
+ stamp,
98
+ }));
95
99
  return { provider: "together", model, images, note: SEND_FILE_NOTE };
96
100
  },
97
101
  });
@@ -136,30 +140,24 @@ export default function together(rl) {
136
140
  throw new Error("together: prompt is required");
137
141
  }
138
142
  const img = readImageInput(p.imagePath, "together");
139
- const apiKey = ctx.connection.config.apiKey;
140
143
  const model = p.model ?? "black-forest-labs/FLUX.1-kontext-pro";
141
- const body = {
144
+ const data = await generate(ctx, {
142
145
  model,
143
146
  prompt: p.prompt,
144
147
  image_url: img.dataUri,
145
148
  steps: p.steps ?? 28,
146
149
  n: Math.min(p.n ?? 1, 4),
147
150
  response_format: "base64",
148
- };
149
- const res = await fetch(ENDPOINT, {
150
- method: "POST",
151
- headers: {
152
- "Content-Type": "application/json",
153
- Authorization: `Bearer ${apiKey}`,
154
- },
155
- body: JSON.stringify(body),
156
151
  });
157
- if (!res.ok) {
158
- throw new Error(`Together API error ${res.status}: ${await res.text()}`);
159
- }
160
- const data = (await res.json());
161
152
  const stamp = Date.now();
162
- const images = (data.data ?? []).map((d, i) => writeImageFile({ base64: d.b64_json, mimeType: "image/png", provider: "together", index: i, saveDir: p.saveDir, stamp }));
153
+ const images = (data.data ?? []).map((d, i) => writeImageFile({
154
+ base64: d.b64_json,
155
+ mimeType: "image/png",
156
+ provider: "together",
157
+ index: i,
158
+ saveDir: p.saveDir,
159
+ stamp,
160
+ }));
163
161
  return { provider: "together", model, images, note: SEND_FILE_NOTE };
164
162
  },
165
163
  });
@@ -0,0 +1,24 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * An API token, sent as `Authorization: token <token>` to Travis CI's v3
4
+ * API. A repository slug travels as one encoded segment.
5
+ */
6
+ export const travisciCredential = staticCredential({
7
+ id: "travisci",
8
+ auth: { kind: "apiKey", header: "Authorization", prefix: "token " },
9
+ local: { secret: "apiToken" },
10
+ targets: {
11
+ api: {
12
+ baseUrl: "https://api.travis-ci.com/",
13
+ methods: ["GET", "POST"],
14
+ allowedHeaders: ["Travis-API-Version"],
15
+ encodedSlashes: true,
16
+ },
17
+ },
18
+ probe: {
19
+ target: "api",
20
+ path: "user",
21
+ method: "GET",
22
+ acceptedStatuses: [200],
23
+ },
24
+ });
@@ -1,31 +1,19 @@
1
- const BASE = "https://api.travis-ci.com";
2
- async function apiRequest(token, 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, slashEncodedSegment, } from "../../_shared/credentials.js";
2
+ import { travisciCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, path, body, query) {
4
+ return credentialJson(ctx, travisciCredential, "travisci", {
5
+ target: "api",
6
+ path,
11
7
  method,
12
- headers: {
13
- Authorization: `token ${token}`,
14
- "Travis-API-Version": "3",
15
- Accept: "application/json",
16
- "Content-Type": "application/json",
17
- },
18
- };
19
- if (body !== undefined)
20
- init.body = typeof body === "string" ? body : JSON.stringify(body);
21
- const res = await fetch(url.toString(), init);
22
- if (!res.ok)
23
- throw new Error(`TravisCI error ${res.status}: ${await res.text()}`);
24
- return res.json();
8
+ query,
9
+ headers: { "Travis-API-Version": "3" },
10
+ ...(body !== undefined ? { json: body } : {}),
11
+ });
25
12
  }
26
13
  export default function travisci(rl) {
27
14
  rl.setName("travisci");
28
15
  rl.setVersion("0.1.0");
16
+ rl.setCredential(travisciCredential);
29
17
  rl.setConnectionSchema({
30
18
  apiToken: {
31
19
  type: "string",
@@ -34,13 +22,12 @@ export default function travisci(rl) {
34
22
  env: "TRAVISCI_API_TOKEN",
35
23
  },
36
24
  });
37
- const key = (ctx) => ctx.connection.config.apiToken;
38
25
  rl.registerAction("build.get", {
39
26
  access: "read",
40
27
  description: "Get a build by ID",
41
28
  inputSchema: { buildId: { type: "string", required: true } },
42
29
  async execute(input, ctx) {
43
- return apiRequest(key(ctx), "GET", `/build/${input.buildId}`);
30
+ return apiRequest(ctx, "GET", `build/${pathSegment(input.buildId)}`);
44
31
  },
45
32
  });
46
33
  rl.registerAction("build.list", {
@@ -57,7 +44,7 @@ export default function travisci(rl) {
57
44
  qs.limit = p.limit;
58
45
  if (p.sortBy)
59
46
  qs.sort_by = p.sortBy;
60
- const data = (await apiRequest(key(ctx), "GET", "/builds", undefined, qs));
47
+ const data = (await apiRequest(ctx, "GET", "builds", undefined, qs));
61
48
  return data.builds;
62
49
  },
63
50
  });
@@ -66,7 +53,7 @@ export default function travisci(rl) {
66
53
  description: "Cancel a build",
67
54
  inputSchema: { buildId: { type: "string", required: true } },
68
55
  async execute(input, ctx) {
69
- return apiRequest(key(ctx), "POST", `/build/${input.buildId}/cancel`);
56
+ return apiRequest(ctx, "POST", `build/${pathSegment(input.buildId)}/cancel`);
70
57
  },
71
58
  });
72
59
  rl.registerAction("build.restart", {
@@ -74,7 +61,7 @@ export default function travisci(rl) {
74
61
  description: "Restart a build",
75
62
  inputSchema: { buildId: { type: "string", required: true } },
76
63
  async execute(input, ctx) {
77
- return apiRequest(key(ctx), "POST", `/build/${input.buildId}/restart`);
64
+ return apiRequest(ctx, "POST", `build/${pathSegment(input.buildId)}/restart`);
78
65
  },
79
66
  });
80
67
  rl.registerAction("build.trigger", {
@@ -91,11 +78,10 @@ export default function travisci(rl) {
91
78
  },
92
79
  async execute(input, ctx) {
93
80
  const p = input;
94
- const slug = p.slug.replace(/\//g, "%2F");
95
81
  const request = { branch: p.branch };
96
82
  if (p.message)
97
83
  request.message = p.message;
98
- return apiRequest(key(ctx), "POST", `/repo/${slug}/requests`, {
84
+ return apiRequest(ctx, "POST", `repo/${slashEncodedSegment(p.slug)}/requests`, {
99
85
  request,
100
86
  });
101
87
  },
@@ -0,0 +1,29 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * An API key and a user token, both appended by the transport as the key
4
+ * and token query parameters on Trello's one API origin.
5
+ */
6
+ export const trelloCredential = staticCredential({
7
+ id: "trello",
8
+ auth: {
9
+ kind: "static",
10
+ parts: ["key", "token"],
11
+ placements: [
12
+ { in: "query", part: "key", name: "key" },
13
+ { in: "query", part: "token", name: "token" },
14
+ ],
15
+ },
16
+ local: { key: "apiKey", token: "token" },
17
+ targets: {
18
+ api: {
19
+ baseUrl: "https://api.trello.com/1/",
20
+ methods: ["GET", "POST", "PUT", "DELETE"],
21
+ },
22
+ },
23
+ probe: {
24
+ target: "api",
25
+ path: "members/me",
26
+ method: "GET",
27
+ acceptedStatuses: [200],
28
+ },
29
+ });