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
@@ -8,14 +8,15 @@
8
8
  * text rendering well. Sized via aspect_ratio rather than W×H —
9
9
  * the API does the math.
10
10
  */
11
- import { readImageInput, SEND_FILE_NOTE, writeImageFile } from "../../_shared/mediaFile.js";
12
- const ENDPOINT = "https://api.x.ai/v1/images/generations";
13
- const EDIT_ENDPOINT = "https://api.x.ai/v1/images/edits";
11
+ import { credentialJson } from "../../_shared/credentials.js";
12
+ import { readImageInput, SEND_FILE_NOTE, writeImageFile, } from "../../_shared/mediaFile.js";
13
+ import { xaiCredential } from "./credentials.js";
14
14
  const MODEL = "grok-imagine-image";
15
15
  const EDIT_MODEL = "grok-imagine-image-2.0";
16
16
  export default function xai(rl) {
17
17
  rl.setName("xai");
18
18
  rl.setVersion("0.1.0");
19
+ rl.setCredential(xaiCredential);
19
20
  rl.setConnectionSchema({
20
21
  apiKey: {
21
22
  type: "string",
@@ -54,7 +55,6 @@ export default function xai(rl) {
54
55
  if (typeof p.prompt !== "string" || p.prompt.length === 0) {
55
56
  throw new Error("xai: prompt is required");
56
57
  }
57
- const apiKey = ctx.connection.config.apiKey;
58
58
  const body = {
59
59
  model: MODEL,
60
60
  prompt: p.prompt,
@@ -63,21 +63,22 @@ export default function xai(rl) {
63
63
  };
64
64
  if (p.aspectRatio)
65
65
  body.aspect_ratio = p.aspectRatio;
66
- const res = await fetch(ENDPOINT, {
66
+ const data = (await credentialJson(ctx, xaiCredential, "xai", {
67
+ target: "api",
68
+ path: "images/generations",
67
69
  method: "POST",
68
- headers: {
69
- "Content-Type": "application/json",
70
- Authorization: `Bearer ${apiKey}`,
71
- },
72
- body: JSON.stringify(body),
73
- });
74
- if (!res.ok) {
75
- throw new Error(`xAI API error ${res.status}: ${await res.text()}`);
76
- }
77
- const data = (await res.json());
70
+ json: body,
71
+ }));
78
72
  const stamp = Date.now();
79
73
  const images = (data.data ?? []).map((d, i) => ({
80
- ...writeImageFile({ base64: d.b64_json, mimeType: d.mime_type ?? "image/jpeg", provider: "xai", index: i, saveDir: p.saveDir, stamp }),
74
+ ...writeImageFile({
75
+ base64: d.b64_json,
76
+ mimeType: d.mime_type ?? "image/jpeg",
77
+ provider: "xai",
78
+ index: i,
79
+ saveDir: p.saveDir,
80
+ stamp,
81
+ }),
81
82
  ...(d.revised_prompt ? { revisedPrompt: d.revised_prompt } : {}),
82
83
  }));
83
84
  return { provider: "xai", model: MODEL, images, note: SEND_FILE_NOTE };
@@ -119,29 +120,29 @@ export default function xai(rl) {
119
120
  throw new Error("xai: prompt is required");
120
121
  }
121
122
  const img = readImageInput(p.imagePath, "xai");
122
- const apiKey = ctx.connection.config.apiKey;
123
123
  const model = p.model ?? EDIT_MODEL;
124
- const res = await fetch(EDIT_ENDPOINT, {
124
+ const data = (await credentialJson(ctx, xaiCredential, "xai", {
125
+ target: "api",
126
+ path: "images/edits",
125
127
  method: "POST",
126
- headers: {
127
- "Content-Type": "application/json",
128
- Authorization: `Bearer ${apiKey}`,
129
- },
130
- body: JSON.stringify({
128
+ json: {
131
129
  model,
132
130
  prompt: p.prompt,
133
131
  image: { url: img.dataUri },
134
132
  n: Math.min(p.n ?? 1, 10),
135
133
  response_format: "b64_json",
136
- }),
137
- });
138
- if (!res.ok) {
139
- throw new Error(`xAI API error ${res.status}: ${await res.text()}`);
140
- }
141
- const data = (await res.json());
134
+ },
135
+ }));
142
136
  const stamp = Date.now();
143
137
  const images = (data.data ?? []).map((d, i) => ({
144
- ...writeImageFile({ base64: d.b64_json, mimeType: d.mime_type ?? "image/jpeg", provider: "xai", index: i, saveDir: p.saveDir, stamp }),
138
+ ...writeImageFile({
139
+ base64: d.b64_json,
140
+ mimeType: d.mime_type ?? "image/jpeg",
141
+ provider: "xai",
142
+ index: i,
143
+ saveDir: p.saveDir,
144
+ stamp,
145
+ }),
145
146
  ...(d.revised_prompt ? { revisedPrompt: d.revised_prompt } : {}),
146
147
  }));
147
148
  return { provider: "xai", model, images, note: SEND_FILE_NOTE };
@@ -0,0 +1,17 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * An OAuth2 access token, sent as a bearer to Xero's accounting API. The
4
+ * public Xero-tenant-id companion header names the organization.
5
+ */
6
+ export const xeroCredential = staticCredential({
7
+ id: "xero",
8
+ auth: { kind: "bearer" },
9
+ local: { secret: "accessToken" },
10
+ targets: {
11
+ api: {
12
+ baseUrl: "https://api.xero.com/api.xro/2.0/",
13
+ methods: ["GET", "POST"],
14
+ allowedHeaders: ["Xero-tenant-id"],
15
+ },
16
+ },
17
+ });
@@ -1,36 +1,19 @@
1
- const BASE = "https://api.xero.com/api.xro/2.0";
2
- function getConn(ctx) {
3
- return {
4
- accessToken: ctx.connection.config.accessToken,
5
- tenantId: ctx.connection.config.tenantId,
6
- };
7
- }
8
- async function api(conn, method, endpoint, body, qs) {
9
- const url = new URL(`${BASE}${endpoint}`);
10
- if (qs) {
11
- for (const [k, v] of Object.entries(qs)) {
12
- if (v !== undefined && v !== null)
13
- url.searchParams.set(k, String(v));
14
- }
15
- }
16
- const init = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { xeroCredential } from "./credentials.js";
3
+ function api(ctx, method, endpoint, body, qs) {
4
+ return credentialJson(ctx, xeroCredential, "xero", {
5
+ target: "api",
6
+ path: endpoint,
17
7
  method,
18
- headers: {
19
- Authorization: `Bearer ${conn.accessToken}`,
20
- "Xero-tenant-id": conn.tenantId,
21
- "Content-Type": "application/json",
22
- },
23
- };
24
- if (body && Object.keys(body).length > 0)
25
- init.body = JSON.stringify(body);
26
- const res = await fetch(url.toString(), init);
27
- if (!res.ok)
28
- throw new Error(`Xero error ${res.status}: ${await res.text()}`);
29
- return res.json();
8
+ query: qs,
9
+ headers: { "Xero-tenant-id": ctx.connection.config.tenantId },
10
+ ...(body && Object.keys(body).length > 0 ? { json: body } : {}),
11
+ });
30
12
  }
31
13
  export default function xero(rl) {
32
14
  rl.setName("xero");
33
15
  rl.setVersion("0.1.0");
16
+ rl.setCredential(xeroCredential);
34
17
  rl.setConnectionSchema({
35
18
  accessToken: {
36
19
  type: "string",
@@ -89,7 +72,7 @@ export default function xero(rl) {
89
72
  body.Reference = p.Reference;
90
73
  if (p.CurrencyCode)
91
74
  body.CurrencyCode = p.CurrencyCode;
92
- const data = (await api(getConn(ctx), "POST", "/Invoices", body));
75
+ const data = (await api(ctx, "POST", "Invoices", body));
93
76
  return data.Invoices;
94
77
  },
95
78
  });
@@ -98,7 +81,7 @@ export default function xero(rl) {
98
81
  description: "Get an invoice by ID",
99
82
  inputSchema: { invoiceId: { type: "string", required: true } },
100
83
  async execute(input, ctx) {
101
- const data = (await api(getConn(ctx), "GET", `/Invoices/${input.invoiceId}`));
84
+ const data = (await api(ctx, "GET", `Invoices/${pathSegment(input.invoiceId)}`));
102
85
  return data.Invoices;
103
86
  },
104
87
  });
@@ -121,7 +104,7 @@ export default function xero(rl) {
121
104
  qs.statuses = p.statuses;
122
105
  if (p.where)
123
106
  qs.where = p.where;
124
- const data = (await api(getConn(ctx), "GET", "/Invoices", undefined, qs));
107
+ const data = (await api(ctx, "GET", "Invoices", undefined, qs));
125
108
  const invoices = data.Invoices;
126
109
  return p.limit ? invoices.slice(0, p.limit) : invoices;
127
110
  },
@@ -139,7 +122,7 @@ export default function xero(rl) {
139
122
  },
140
123
  async execute(input, ctx) {
141
124
  const p = input;
142
- const result = (await api(getConn(ctx), "POST", `/Invoices/${p.invoiceId}`, p.data));
125
+ const result = (await api(ctx, "POST", `Invoices/${pathSegment(p.invoiceId)}`, p.data));
143
126
  return result.Invoices;
144
127
  },
145
128
  });
@@ -156,7 +139,7 @@ export default function xero(rl) {
156
139
  async execute(input, ctx) {
157
140
  const p = input;
158
141
  const body = { Contacts: [p] };
159
- const data = (await api(getConn(ctx), "POST", "/Contacts", body));
142
+ const data = (await api(ctx, "POST", "Contacts", body));
160
143
  return data.Contacts;
161
144
  },
162
145
  });
@@ -165,7 +148,7 @@ export default function xero(rl) {
165
148
  description: "Get a contact by ID",
166
149
  inputSchema: { contactId: { type: "string", required: true } },
167
150
  async execute(input, ctx) {
168
- const data = (await api(getConn(ctx), "GET", `/Contacts/${input.contactId}`));
151
+ const data = (await api(ctx, "GET", `Contacts/${pathSegment(input.contactId)}`));
169
152
  return data.Contacts;
170
153
  },
171
154
  });
@@ -184,7 +167,7 @@ export default function xero(rl) {
184
167
  qs.where = p.where;
185
168
  if (p.includeArchived)
186
169
  qs.includeArchived = "true";
187
- const data = (await api(getConn(ctx), "GET", "/Contacts", undefined, qs));
170
+ const data = (await api(ctx, "GET", "Contacts", undefined, qs));
188
171
  const contacts = data.Contacts;
189
172
  return p.limit ? contacts.slice(0, p.limit) : contacts;
190
173
  },
@@ -203,7 +186,7 @@ export default function xero(rl) {
203
186
  async execute(input, ctx) {
204
187
  const p = input;
205
188
  const body = { Contacts: [p.data] };
206
- const result = (await api(getConn(ctx), "POST", `/Contacts/${p.contactId}`, body));
189
+ const result = (await api(ctx, "POST", `Contacts/${pathSegment(p.contactId)}`, body));
207
190
  return result.Contacts;
208
191
  },
209
192
  });
@@ -0,0 +1,17 @@
1
+ import { httpsBase, staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * A signature token, appended by the transport as the signature query
4
+ * parameter on the installation's own yourls-api.php. The installation
5
+ * URL is public config and must be HTTPS.
6
+ */
7
+ export const yourlsCredential = staticCredential({
8
+ id: "yourls",
9
+ auth: { kind: "queryKey", param: "signature" },
10
+ local: { secret: "signature" },
11
+ targets: (config) => ({
12
+ api: {
13
+ baseUrl: httpsBase(config.url, ""),
14
+ methods: ["GET"],
15
+ },
16
+ }),
17
+ });
@@ -1,29 +1,19 @@
1
- function getConn(ctx) {
2
- const c = ctx.connection.config;
3
- return {
4
- url: c.url.replace(/\/$/, ""),
5
- signature: c.signature,
6
- };
7
- }
8
- async function apiRequest(conn, qs) {
9
- const url = new URL(`${conn.url}/yourls-api.php`);
10
- qs.signature = conn.signature;
11
- qs.format = "json";
12
- for (const [k, v] of Object.entries(qs)) {
13
- if (v !== undefined && v !== null)
14
- url.searchParams.set(k, String(v));
15
- }
16
- const res = await fetch(url.toString());
17
- if (!res.ok)
18
- throw new Error(`Yourls error ${res.status}: ${await res.text()}`);
19
- const data = (await res.json());
1
+ import { answerFailed, credentialJson } from "../../_shared/credentials.js";
2
+ import { yourlsCredential } from "./credentials.js";
3
+ async function apiRequest(ctx, qs) {
4
+ const data = (await credentialJson(ctx, yourlsCredential, "yourls", {
5
+ target: "api",
6
+ path: "yourls-api.php",
7
+ query: { ...qs, format: "json" },
8
+ }));
20
9
  if (data.status === "fail")
21
- throw new Error(`Yourls error: ${data.message}`);
10
+ throw answerFailed("yourls", { code: data.code, message: data.message });
22
11
  return data;
23
12
  }
24
13
  export default function yourls(rl) {
25
14
  rl.setName("yourls");
26
15
  rl.setVersion("0.1.0");
16
+ rl.setCredential(yourlsCredential);
27
17
  rl.setConnectionSchema({
28
18
  url: {
29
19
  type: "string",
@@ -57,7 +47,7 @@ export default function yourls(rl) {
57
47
  qs.keyword = p.keyword;
58
48
  if (p.title)
59
49
  qs.title = p.title;
60
- return apiRequest(getConn(ctx), qs);
50
+ return apiRequest(ctx, qs);
61
51
  },
62
52
  });
63
53
  rl.registerAction("url.expand", {
@@ -65,7 +55,7 @@ export default function yourls(rl) {
65
55
  description: "Expand a short URL to its original",
66
56
  inputSchema: { shortUrl: { type: "string", required: true } },
67
57
  async execute(input, ctx) {
68
- return apiRequest(getConn(ctx), {
58
+ return apiRequest(ctx, {
69
59
  action: "expand",
70
60
  shorturl: input.shortUrl,
71
61
  });
@@ -76,7 +66,7 @@ export default function yourls(rl) {
76
66
  description: "Get stats for a short URL",
77
67
  inputSchema: { shortUrl: { type: "string", required: true } },
78
68
  async execute(input, ctx) {
79
- const data = (await apiRequest(getConn(ctx), {
69
+ const data = (await apiRequest(ctx, {
80
70
  action: "url-stats",
81
71
  shorturl: input.shortUrl,
82
72
  }));
@@ -0,0 +1,15 @@
1
+ import { httpsBase, staticCredential } from "../../_shared/credentials.js";
2
+ /** An access token, sent as `Authorization: Token token={token}` to the
3
+ * connection's own Zammad instance beneath /api/v1/. The instance URL is
4
+ * public config and must be HTTPS. */
5
+ export const zammadCredential = staticCredential({
6
+ id: "zammad",
7
+ auth: { kind: "apiKey", header: "Authorization", prefix: "Token token=" },
8
+ local: { secret: "token" },
9
+ targets: (config) => ({
10
+ api: {
11
+ baseUrl: httpsBase(config.url, "api/v1/"),
12
+ methods: ["GET", "POST", "PUT", "DELETE"],
13
+ },
14
+ }),
15
+ });
@@ -1,41 +1,21 @@
1
- function getConn(ctx) {
2
- const c = ctx.connection.config;
3
- return {
4
- url: c.url.replace(/\/$/, ""),
5
- token: c.token,
6
- };
7
- }
8
- async function api(conn, method, endpoint, body, qs) {
9
- const url = new URL(`${conn.url}/api/v1${endpoint}`);
10
- if (qs) {
11
- for (const [k, v] of Object.entries(qs)) {
12
- if (v !== undefined && v !== null)
13
- url.searchParams.set(k, String(v));
14
- }
15
- }
16
- const init = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { zammadCredential } from "./credentials.js";
3
+ async function api(ctx, method, endpoint, body, qs) {
4
+ return credentialJson(ctx, zammadCredential, "zammad", {
5
+ target: "api",
6
+ path: endpoint,
17
7
  method,
18
- headers: {
19
- Authorization: `Token token=${conn.token}`,
20
- "Content-Type": "application/json",
21
- },
22
- };
23
- if (body && Object.keys(body).length > 0)
24
- init.body = JSON.stringify(body);
25
- const res = await fetch(url.toString(), init);
26
- if (!res.ok)
27
- throw new Error(`Zammad error ${res.status}: ${await res.text()}`);
28
- if (res.status === 204)
29
- return { success: true };
30
- return res.json();
8
+ query: qs,
9
+ ...(body && Object.keys(body).length > 0 ? { json: body } : {}),
10
+ });
31
11
  }
32
- function registerCrud(rl, resource, plural, conn, createSchema) {
12
+ function registerCrud(rl, resource, plural, createSchema) {
33
13
  rl.registerAction(`${resource}.create`, {
34
14
  access: "write",
35
15
  description: `Create a ${resource}`,
36
16
  inputSchema: createSchema,
37
17
  async execute(input, ctx) {
38
- return api(conn(ctx), "POST", `/${plural}`, input);
18
+ return api(ctx, "POST", plural, input);
39
19
  },
40
20
  });
41
21
  rl.registerAction(`${resource}.get`, {
@@ -43,7 +23,7 @@ function registerCrud(rl, resource, plural, conn, createSchema) {
43
23
  description: `Get a ${resource} by ID`,
44
24
  inputSchema: { id: { type: "string", required: true } },
45
25
  async execute(input, ctx) {
46
- return api(conn(ctx), "GET", `/${plural}/${input.id}`);
26
+ return api(ctx, "GET", `${plural}/${pathSegment(input.id)}`);
47
27
  },
48
28
  });
49
29
  rl.registerAction(`${resource}.list`, {
@@ -53,7 +33,7 @@ function registerCrud(rl, resource, plural, conn, createSchema) {
53
33
  async execute(input, ctx) {
54
34
  const p = (input ?? {});
55
35
  const qs = { per_page: p.limit ?? 100 };
56
- return api(conn(ctx), "GET", `/${plural}`, undefined, qs);
36
+ return api(ctx, "GET", plural, undefined, qs);
57
37
  },
58
38
  });
59
39
  rl.registerAction(`${resource}.update`, {
@@ -65,7 +45,7 @@ function registerCrud(rl, resource, plural, conn, createSchema) {
65
45
  },
66
46
  async execute(input, ctx) {
67
47
  const p = input;
68
- return api(conn(ctx), "PUT", `/${plural}/${p.id}`, p.data);
48
+ return api(ctx, "PUT", `${plural}/${pathSegment(p.id)}`, p.data);
69
49
  },
70
50
  });
71
51
  rl.registerAction(`${resource}.delete`, {
@@ -73,7 +53,7 @@ function registerCrud(rl, resource, plural, conn, createSchema) {
73
53
  description: `Delete a ${resource}`,
74
54
  inputSchema: { id: { type: "string", required: true } },
75
55
  async execute(input, ctx) {
76
- await api(conn(ctx), "DELETE", `/${plural}/${input.id}`);
56
+ await api(ctx, "DELETE", `${plural}/${pathSegment(input.id)}`);
77
57
  return { success: true };
78
58
  },
79
59
  });
@@ -81,6 +61,7 @@ function registerCrud(rl, resource, plural, conn, createSchema) {
81
61
  export default function zammad(rl) {
82
62
  rl.setName("zammad");
83
63
  rl.setVersion("0.1.0");
64
+ rl.setCredential(zammadCredential);
84
65
  rl.setConnectionSchema({
85
66
  url: {
86
67
  type: "string",
@@ -95,15 +76,15 @@ export default function zammad(rl) {
95
76
  env: "ZAMMAD_TOKEN",
96
77
  },
97
78
  });
98
- registerCrud(rl, "user", "users", getConn, {
79
+ registerCrud(rl, "user", "users", {
99
80
  firstname: { type: "string", required: true },
100
81
  lastname: { type: "string", required: true },
101
82
  email: { type: "string", required: false },
102
83
  });
103
- registerCrud(rl, "organization", "organizations", getConn, {
84
+ registerCrud(rl, "organization", "organizations", {
104
85
  name: { type: "string", required: true },
105
86
  });
106
- registerCrud(rl, "group", "groups", getConn, {
87
+ registerCrud(rl, "group", "groups", {
107
88
  name: { type: "string", required: true },
108
89
  });
109
90
  // ── Ticket (special: includes article) ──────────────
@@ -132,7 +113,7 @@ export default function zammad(rl) {
132
113
  };
133
114
  if (p.articleSubject)
134
115
  body.article.subject = p.articleSubject;
135
- return api(getConn(ctx), "POST", "/tickets", body);
116
+ return api(ctx, "POST", "tickets", body);
136
117
  },
137
118
  });
138
119
  rl.registerAction("ticket.get", {
@@ -140,10 +121,9 @@ export default function zammad(rl) {
140
121
  description: "Get a ticket with articles",
141
122
  inputSchema: { id: { type: "string", required: true } },
142
123
  async execute(input, ctx) {
143
- const c = getConn(ctx);
144
124
  const id = input.id;
145
- const ticket = (await api(c, "GET", `/tickets/${id}`));
146
- ticket.articles = await api(c, "GET", `/ticket_articles/by_ticket/${id}`);
125
+ const ticket = (await api(ctx, "GET", `tickets/${pathSegment(id)}`));
126
+ ticket.articles = await api(ctx, "GET", `ticket_articles/by_ticket/${pathSegment(id)}`);
147
127
  return ticket;
148
128
  },
149
129
  });
@@ -155,7 +135,7 @@ export default function zammad(rl) {
155
135
  const qs = {
156
136
  per_page: (input ?? {}).limit ?? 100,
157
137
  };
158
- return api(getConn(ctx), "GET", "/tickets", undefined, qs);
138
+ return api(ctx, "GET", "tickets", undefined, qs);
159
139
  },
160
140
  });
161
141
  rl.registerAction("ticket.update", {
@@ -167,7 +147,7 @@ export default function zammad(rl) {
167
147
  },
168
148
  async execute(input, ctx) {
169
149
  const p = input;
170
- return api(getConn(ctx), "PUT", `/tickets/${p.id}`, p.data);
150
+ return api(ctx, "PUT", `tickets/${pathSegment(p.id)}`, p.data);
171
151
  },
172
152
  });
173
153
  rl.registerAction("ticket.delete", {
@@ -175,7 +155,7 @@ export default function zammad(rl) {
175
155
  description: "Delete a ticket",
176
156
  inputSchema: { id: { type: "string", required: true } },
177
157
  async execute(input, ctx) {
178
- await api(getConn(ctx), "DELETE", `/tickets/${input.id}`);
158
+ await api(ctx, "DELETE", `tickets/${pathSegment(input.id)}`);
179
159
  return { success: true };
180
160
  },
181
161
  });
@@ -185,7 +165,7 @@ export default function zammad(rl) {
185
165
  description: "Get the current user",
186
166
  inputSchema: {},
187
167
  async execute(_input, ctx) {
188
- return api(getConn(ctx), "GET", "/users/me");
168
+ return api(ctx, "GET", "users/me");
189
169
  },
190
170
  });
191
171
  rl.registerAction("user.search", {
@@ -200,7 +180,7 @@ export default function zammad(rl) {
200
180
  const qs = { query: p.query };
201
181
  if (p.limit)
202
182
  qs.per_page = p.limit;
203
- return api(getConn(ctx), "GET", "/users/search", undefined, qs);
183
+ return api(ctx, "GET", "users/search", undefined, qs);
204
184
  },
205
185
  });
206
186
  }
@@ -0,0 +1,26 @@
1
+ import { hostLabel, staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * An API token as the Basic password, with the agent email joined to the
4
+ * fixed /token suffix as the username, on the account's own Zendesk
5
+ * subdomain.
6
+ */
7
+ export const zendeskCredential = staticCredential({
8
+ id: "zendesk",
9
+ auth: { kind: "basic" },
10
+ local: {
11
+ username: { concat: [{ field: "email" }, { value: "/token" }] },
12
+ password: "apiToken",
13
+ },
14
+ targets: (config) => ({
15
+ api: {
16
+ baseUrl: `https://${hostLabel(config.subdomain)}.zendesk.com/api/v2/`,
17
+ methods: ["GET", "POST", "PUT", "DELETE"],
18
+ },
19
+ }),
20
+ probe: {
21
+ target: "api",
22
+ path: "users/me.json",
23
+ method: "GET",
24
+ acceptedStatuses: [200],
25
+ },
26
+ });