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
@@ -22,7 +22,8 @@
22
22
  */
23
23
  import * as t from "typebox";
24
24
  import { renderEmailJsx } from "../../_shared/emailJsx.js";
25
- import { googleJsonRequest } from "../../_shared/googleAuth.js";
25
+ import { pathSegment } from "../../_shared/credentials.js";
26
+ import { googleCredential, googleJsonRequest } from "../../_shared/googleAuth.js";
26
27
  import { GoogleTimestamp, Id, NonEmptyString, stringEnum, } from "../../_shared/googleSchemas.js";
27
28
  // ─── Request ─────────────────────────────────────────────────────
28
29
  const API_BASE = "https://gmail.googleapis.com/gmail/v1/users/me";
@@ -437,7 +438,7 @@ async function replyToMessage(ctx, messageId, p) {
437
438
  // Render before any network round-trip so malformed jsx fails
438
439
  // without spending Gmail API calls.
439
440
  const { text, html } = await resolveBody(p);
440
- const original = (await gmailRequest(ctx, "GET", `/messages/${messageId}`, undefined, { format: "metadata", metadataHeaders: REPLY_METADATA_HEADERS }));
441
+ const original = (await gmailRequest(ctx, "GET", `/messages/${pathSegment(messageId)}`, undefined, { format: "metadata", metadataHeaders: REPLY_METADATA_HEADERS }));
441
442
  const subject = findHeader(original.payload, "Subject") ?? "";
442
443
  const messageIdHeader = findHeader(original.payload, "Message-ID") ?? "";
443
444
  const threadId = original.threadId;
@@ -580,6 +581,7 @@ const ListInput = t.Object(ListFields, strict);
580
581
  export default function gmail(rl) {
581
582
  rl.setName("gmail");
582
583
  rl.setVersion("0.1.0");
584
+ rl.setCredential(googleCredential("gmail", SCOPES));
583
585
  rl.setOAuth({
584
586
  authUrl: "https://accounts.google.com/o/oauth2/v2/auth",
585
587
  tokenUrl: "https://oauth2.googleapis.com/token",
@@ -750,7 +752,7 @@ export default function gmail(rl) {
750
752
  const qs = { format: p.format ?? "full" };
751
753
  if (p.metadataHeaders)
752
754
  qs.metadataHeaders = p.metadataHeaders;
753
- const raw = (await gmailRequest(ctx, "GET", `/messages/${p.id}`, undefined, qs));
755
+ const raw = (await gmailRequest(ctx, "GET", `/messages/${pathSegment(p.id)}`, undefined, qs));
754
756
  if (!p.simple)
755
757
  return raw;
756
758
  const labels = await loadLabelMap(ctx);
@@ -778,7 +780,7 @@ export default function gmail(rl) {
778
780
  inputSchema: IdInput,
779
781
  async execute(input, ctx) {
780
782
  const { id } = input;
781
- return gmailRequest(ctx, "DELETE", `/messages/${id}`);
783
+ return gmailRequest(ctx, "DELETE", `/messages/${pathSegment(id)}`);
782
784
  },
783
785
  });
784
786
  rl.registerAction("message.trash", {
@@ -787,7 +789,7 @@ export default function gmail(rl) {
787
789
  inputSchema: IdInput,
788
790
  async execute(input, ctx) {
789
791
  const { id } = input;
790
- return gmailRequest(ctx, "POST", `/messages/${id}/trash`);
792
+ return gmailRequest(ctx, "POST", `/messages/${pathSegment(id)}/trash`);
791
793
  },
792
794
  });
793
795
  rl.registerAction("message.untrash", {
@@ -796,7 +798,7 @@ export default function gmail(rl) {
796
798
  inputSchema: IdInput,
797
799
  async execute(input, ctx) {
798
800
  const { id } = input;
799
- return gmailRequest(ctx, "POST", `/messages/${id}/untrash`);
801
+ return gmailRequest(ctx, "POST", `/messages/${pathSegment(id)}/untrash`);
800
802
  },
801
803
  });
802
804
  rl.registerAction("message.markAsRead", {
@@ -805,7 +807,7 @@ export default function gmail(rl) {
805
807
  inputSchema: IdInput,
806
808
  async execute(input, ctx) {
807
809
  const { id } = input;
808
- return gmailRequest(ctx, "POST", `/messages/${id}/modify`, {
810
+ return gmailRequest(ctx, "POST", `/messages/${pathSegment(id)}/modify`, {
809
811
  removeLabelIds: ["UNREAD"],
810
812
  });
811
813
  },
@@ -816,7 +818,7 @@ export default function gmail(rl) {
816
818
  inputSchema: IdInput,
817
819
  async execute(input, ctx) {
818
820
  const { id } = input;
819
- return gmailRequest(ctx, "POST", `/messages/${id}/modify`, {
821
+ return gmailRequest(ctx, "POST", `/messages/${pathSegment(id)}/modify`, {
820
822
  addLabelIds: ["UNREAD"],
821
823
  });
822
824
  },
@@ -827,7 +829,7 @@ export default function gmail(rl) {
827
829
  inputSchema: t.Object({ id: Id, labelIds: LabelIds }, strict),
828
830
  async execute(input, ctx) {
829
831
  const { id, labelIds } = input;
830
- return gmailRequest(ctx, "POST", `/messages/${id}/modify`, {
832
+ return gmailRequest(ctx, "POST", `/messages/${pathSegment(id)}/modify`, {
831
833
  addLabelIds: labelIds,
832
834
  });
833
835
  },
@@ -838,7 +840,7 @@ export default function gmail(rl) {
838
840
  inputSchema: t.Object({ id: Id, labelIds: LabelIds }, strict),
839
841
  async execute(input, ctx) {
840
842
  const { id, labelIds } = input;
841
- return gmailRequest(ctx, "POST", `/messages/${id}/modify`, {
843
+ return gmailRequest(ctx, "POST", `/messages/${pathSegment(id)}/modify`, {
842
844
  removeLabelIds: labelIds,
843
845
  });
844
846
  },
@@ -849,7 +851,7 @@ export default function gmail(rl) {
849
851
  inputSchema: t.Object({ messageId: Id, attachmentId: Id }, strict),
850
852
  async execute(input, ctx) {
851
853
  const { messageId, attachmentId } = input;
852
- return gmailRequest(ctx, "GET", `/messages/${messageId}/attachments/${attachmentId}`);
854
+ return gmailRequest(ctx, "GET", `/messages/${pathSegment(messageId)}/attachments/${pathSegment(attachmentId)}`);
853
855
  },
854
856
  });
855
857
  // ── Thread ────────────────────────────────────────────
@@ -869,7 +871,7 @@ export default function gmail(rl) {
869
871
  const qs = { format: p.format ?? "full" };
870
872
  if (p.metadataHeaders)
871
873
  qs.metadataHeaders = p.metadataHeaders;
872
- const raw = (await gmailRequest(ctx, "GET", `/threads/${p.id}`, undefined, qs));
874
+ const raw = (await gmailRequest(ctx, "GET", `/threads/${pathSegment(p.id)}`, undefined, qs));
873
875
  if (!p.simple)
874
876
  return raw;
875
877
  const labels = await loadLabelMap(ctx);
@@ -896,7 +898,7 @@ export default function gmail(rl) {
896
898
  inputSchema: IdInput,
897
899
  async execute(input, ctx) {
898
900
  const { id } = input;
899
- return gmailRequest(ctx, "DELETE", `/threads/${id}`);
901
+ return gmailRequest(ctx, "DELETE", `/threads/${pathSegment(id)}`);
900
902
  },
901
903
  });
902
904
  rl.registerAction("thread.trash", {
@@ -905,7 +907,7 @@ export default function gmail(rl) {
905
907
  inputSchema: IdInput,
906
908
  async execute(input, ctx) {
907
909
  const { id } = input;
908
- return gmailRequest(ctx, "POST", `/threads/${id}/trash`);
910
+ return gmailRequest(ctx, "POST", `/threads/${pathSegment(id)}/trash`);
909
911
  },
910
912
  });
911
913
  rl.registerAction("thread.untrash", {
@@ -914,7 +916,7 @@ export default function gmail(rl) {
914
916
  inputSchema: IdInput,
915
917
  async execute(input, ctx) {
916
918
  const { id } = input;
917
- return gmailRequest(ctx, "POST", `/threads/${id}/untrash`);
919
+ return gmailRequest(ctx, "POST", `/threads/${pathSegment(id)}/untrash`);
918
920
  },
919
921
  });
920
922
  rl.registerAction("thread.addLabels", {
@@ -923,7 +925,7 @@ export default function gmail(rl) {
923
925
  inputSchema: t.Object({ id: Id, labelIds: LabelIds }, strict),
924
926
  async execute(input, ctx) {
925
927
  const { id, labelIds } = input;
926
- return gmailRequest(ctx, "POST", `/threads/${id}/modify`, {
928
+ return gmailRequest(ctx, "POST", `/threads/${pathSegment(id)}/modify`, {
927
929
  addLabelIds: labelIds,
928
930
  });
929
931
  },
@@ -934,7 +936,7 @@ export default function gmail(rl) {
934
936
  inputSchema: t.Object({ id: Id, labelIds: LabelIds }, strict),
935
937
  async execute(input, ctx) {
936
938
  const { id, labelIds } = input;
937
- return gmailRequest(ctx, "POST", `/threads/${id}/modify`, {
939
+ return gmailRequest(ctx, "POST", `/threads/${pathSegment(id)}/modify`, {
938
940
  removeLabelIds: labelIds,
939
941
  });
940
942
  },
@@ -945,7 +947,7 @@ export default function gmail(rl) {
945
947
  inputSchema: t.Object({ id: Id, ...ReplyFields }, ReplyOptions),
946
948
  async execute(input, ctx) {
947
949
  const p = (input ?? {});
948
- const thread = (await gmailRequest(ctx, "GET", `/threads/${p.id}`, undefined, { format: "minimal" }));
950
+ const thread = (await gmailRequest(ctx, "GET", `/threads/${pathSegment(p.id)}`, undefined, { format: "minimal" }));
949
951
  const last = thread.messages?.[thread.messages.length - 1];
950
952
  if (!last?.id) {
951
953
  throw new Error(`gmail: thread ${p.id} has no messages to reply to`);
@@ -991,7 +993,7 @@ export default function gmail(rl) {
991
993
  // thread and set In-Reply-To/References so Gmail places the
992
994
  // draft into the conversation correctly.
993
995
  if (p.threadId) {
994
- const thread = (await gmailRequest(ctx, "GET", `/threads/${p.threadId}`, undefined, { format: "metadata", metadataHeaders: ["Message-ID"] }));
996
+ const thread = (await gmailRequest(ctx, "GET", `/threads/${pathSegment(p.threadId)}`, undefined, { format: "metadata", metadataHeaders: ["Message-ID"] }));
995
997
  const last = thread.messages?.[thread.messages.length - 1];
996
998
  const mid = findHeader(last?.payload, "Message-ID");
997
999
  if (mid) {
@@ -1012,7 +1014,7 @@ export default function gmail(rl) {
1012
1014
  async execute(input, ctx) {
1013
1015
  const p = (input ?? {});
1014
1016
  const qs = { format: p.format ?? "full" };
1015
- return gmailRequest(ctx, "GET", `/drafts/${p.id}`, undefined, qs);
1017
+ return gmailRequest(ctx, "GET", `/drafts/${pathSegment(p.id)}`, undefined, qs);
1016
1018
  },
1017
1019
  });
1018
1020
  rl.registerAction("draft.list", {
@@ -1047,7 +1049,7 @@ export default function gmail(rl) {
1047
1049
  inputSchema: IdInput,
1048
1050
  async execute(input, ctx) {
1049
1051
  const { id } = input;
1050
- return gmailRequest(ctx, "DELETE", `/drafts/${id}`);
1052
+ return gmailRequest(ctx, "DELETE", `/drafts/${pathSegment(id)}`);
1051
1053
  },
1052
1054
  });
1053
1055
  rl.registerAction("draft.send", {
@@ -1086,7 +1088,7 @@ export default function gmail(rl) {
1086
1088
  inputSchema: IdInput,
1087
1089
  async execute(input, ctx) {
1088
1090
  const { id } = input;
1089
- return gmailRequest(ctx, "GET", `/labels/${id}`);
1091
+ return gmailRequest(ctx, "GET", `/labels/${pathSegment(id)}`);
1090
1092
  },
1091
1093
  });
1092
1094
  rl.registerAction("label.list", {
@@ -1104,7 +1106,7 @@ export default function gmail(rl) {
1104
1106
  inputSchema: IdInput,
1105
1107
  async execute(input, ctx) {
1106
1108
  const { id } = input;
1107
- return gmailRequest(ctx, "DELETE", `/labels/${id}`);
1109
+ return gmailRequest(ctx, "DELETE", `/labels/${pathSegment(id)}`);
1108
1110
  },
1109
1111
  });
1110
1112
  rl.registerAction("label.update", {
@@ -1134,7 +1136,7 @@ export default function gmail(rl) {
1134
1136
  if (p.messageListVisibility) {
1135
1137
  body.messageListVisibility = p.messageListVisibility;
1136
1138
  }
1137
- return gmailRequest(ctx, "PATCH", `/labels/${p.id}`, body);
1139
+ return gmailRequest(ctx, "PATCH", `/labels/${pathSegment(p.id)}`, body);
1138
1140
  },
1139
1141
  });
1140
1142
  // ── Profile / aliases ─────────────────────────────────
@@ -0,0 +1,16 @@
1
+ import { httpsBase, staticCredential } from "../../_shared/credentials.js";
2
+ /**
3
+ * An access key and secret as the Basic pair, on the connection's Gong
4
+ * API base (api.gong.io, or the account's regional base) beneath /v2/.
5
+ */
6
+ export const gongCredential = staticCredential({
7
+ id: "gong",
8
+ auth: { kind: "basic" },
9
+ local: { username: "accessKey", password: "accessKeySecret" },
10
+ targets: (config) => ({
11
+ api: {
12
+ baseUrl: httpsBase(config.baseUrl ?? "https://api.gong.io", "v2/"),
13
+ methods: ["POST"],
14
+ },
15
+ }),
16
+ });
@@ -1,27 +1,21 @@
1
- async function apiRequest(baseUrl, accessKey, accessKeySecret, method, endpoint, body) {
2
- const opts = {
3
- method,
4
- headers: {
5
- Authorization: `Basic ${btoa(`${accessKey}:${accessKeySecret}`)}`,
6
- "Content-Type": "application/json",
7
- },
8
- };
9
- if (body && Object.keys(body).length > 0) {
10
- opts.body = JSON.stringify(body);
11
- }
12
- const res = await fetch(`${baseUrl}${endpoint}`, opts);
13
- if (!res.ok)
14
- throw new Error(`Gong API error ${res.status}: ${await res.text()}`);
15
- return res.json();
1
+ import { credentialJson } from "../../_shared/credentials.js";
2
+ import { gongCredential } from "./credentials.js";
3
+ function api(ctx, path, body) {
4
+ return credentialJson(ctx, gongCredential, "gong", {
5
+ target: "api",
6
+ path,
7
+ method: "POST",
8
+ json: body,
9
+ });
16
10
  }
17
- async function paginate(baseUrl, accessKey, accessKeySecret, endpoint, body, resultKey, limit) {
11
+ async function paginate(ctx, path, body, resultKey, limit) {
18
12
  const results = [];
19
13
  let cursor;
20
14
  do {
21
15
  const reqBody = { ...body };
22
16
  if (cursor)
23
17
  reqBody.cursor = cursor;
24
- const data = (await apiRequest(baseUrl, accessKey, accessKeySecret, "POST", endpoint, reqBody));
18
+ const data = (await api(ctx, path, reqBody));
25
19
  const items = data[resultKey] ?? [];
26
20
  results.push(...items);
27
21
  cursor = data.records?.cursor;
@@ -30,16 +24,10 @@ async function paginate(baseUrl, accessKey, accessKeySecret, endpoint, body, res
30
24
  } while (cursor);
31
25
  return limit ? results.slice(0, limit) : results;
32
26
  }
33
- function getConn(ctx) {
34
- return {
35
- baseUrl: (ctx.connection.config.baseUrl ?? "https://api.gong.io").replace(/\/$/, ""),
36
- accessKey: ctx.connection.config.accessKey,
37
- accessKeySecret: ctx.connection.config.accessKeySecret,
38
- };
39
- }
40
27
  export default function gong(rl) {
41
28
  rl.setName("gong");
42
29
  rl.setVersion("0.1.0");
30
+ rl.setCredential(gongCredential);
43
31
  rl.setConnectionSchema({
44
32
  baseUrl: {
45
33
  type: "string",
@@ -74,11 +62,10 @@ export default function gong(rl) {
74
62
  },
75
63
  async execute(input, ctx) {
76
64
  const { callId, contentSelector } = input;
77
- const { baseUrl, accessKey, accessKeySecret } = getConn(ctx);
78
65
  const body = { filter: { callIds: [callId] } };
79
66
  if (contentSelector)
80
67
  body.contentSelector = contentSelector;
81
- const data = (await apiRequest(baseUrl, accessKey, accessKeySecret, "POST", "/v2/calls/extensive", body));
68
+ const data = (await api(ctx, "calls/extensive", body));
82
69
  const calls = data.calls;
83
70
  return calls?.[0];
84
71
  },
@@ -116,7 +103,6 @@ export default function gong(rl) {
116
103
  },
117
104
  async execute(input, ctx) {
118
105
  const { limit, fromDateTime, toDateTime, workspaceId, callIds, primaryUserIds, } = (input ?? {});
119
- const { baseUrl, accessKey, accessKeySecret } = getConn(ctx);
120
106
  const filter = {};
121
107
  if (fromDateTime)
122
108
  filter.fromDateTime = fromDateTime;
@@ -128,7 +114,7 @@ export default function gong(rl) {
128
114
  filter.callIds = callIds;
129
115
  if (primaryUserIds)
130
116
  filter.primaryUserIds = primaryUserIds;
131
- return paginate(baseUrl, accessKey, accessKeySecret, "/v2/calls/extensive", { filter }, "calls", limit);
117
+ return paginate(ctx, "calls/extensive", { filter }, "calls", limit);
132
118
  },
133
119
  });
134
120
  rl.registerAction("user.get", {
@@ -139,8 +125,7 @@ export default function gong(rl) {
139
125
  },
140
126
  async execute(input, ctx) {
141
127
  const { userId } = input;
142
- const { baseUrl, accessKey, accessKeySecret } = getConn(ctx);
143
- const data = (await apiRequest(baseUrl, accessKey, accessKeySecret, "POST", "/v2/users/extensive", {
128
+ const data = (await api(ctx, "users/extensive", {
144
129
  filter: { userIds: [userId] },
145
130
  }));
146
131
  const users = data.users;
@@ -170,7 +155,6 @@ export default function gong(rl) {
170
155
  },
171
156
  async execute(input, ctx) {
172
157
  const { limit, createdFromDateTime, createdToDateTime, userIds } = (input ?? {});
173
- const { baseUrl, accessKey, accessKeySecret } = getConn(ctx);
174
158
  const filter = {};
175
159
  if (createdFromDateTime)
176
160
  filter.createdFromDateTime = createdFromDateTime;
@@ -178,7 +162,7 @@ export default function gong(rl) {
178
162
  filter.createdToDateTime = createdToDateTime;
179
163
  if (userIds)
180
164
  filter.userIds = userIds;
181
- return paginate(baseUrl, accessKey, accessKeySecret, "/v2/users/extensive", { filter }, "users", limit);
165
+ return paginate(ctx, "users/extensive", { filter }, "users", limit);
182
166
  },
183
167
  });
184
168
  }
@@ -1,5 +1,6 @@
1
1
  import * as t from "typebox";
2
- import { googleJsonRequest } from "../../_shared/googleAuth.js";
2
+ import { pathSegment } from "../../_shared/credentials.js";
3
+ import { googleCredential, googleJsonRequest, } from "../../_shared/googleAuth.js";
3
4
  import { Id, NonEmptyString, PositiveInteger, stringEnum, } from "../../_shared/googleSchemas.js";
4
5
  const SCRIPT_API = "https://script.googleapis.com/v1";
5
6
  const DRIVE_API = "https://www.googleapis.com/drive/v3";
@@ -33,21 +34,62 @@ const scriptFileSchema = t.Object({
33
34
  type: scriptFileTypeSchema,
34
35
  source: t.String(),
35
36
  }, { additionalProperties: false });
37
+ /** `T` is the caller's statement of the answer's shape, unchecked, as for any parsed JSON. */
36
38
  async function call(ctx, method, url, payload) {
37
39
  return googleJsonRequest(ctx, "googleAppsScript", SCOPES, method, url, payload);
38
40
  }
39
41
  export default function googleAppsScript(rl) {
40
42
  rl.setName("googleAppsScript");
41
43
  rl.setVersion("1.0.0");
44
+ rl.setCredential(googleCredential("googleAppsScript", SCOPES));
42
45
  rl.setConnectionSchema({
43
- authMethod: { type: "string", required: false, description: "delegated or serviceAccount (legacy configs infer the method)" },
44
- clientId: { type: "string", required: false, description: "OAuth client ID", env: "GOOGLE_APPS_SCRIPT_CLIENT_ID" },
45
- clientSecret: { type: "string", required: false, description: "OAuth client secret", env: "GOOGLE_APPS_SCRIPT_CLIENT_SECRET" },
46
- refreshToken: { type: "string", required: false, description: "OAuth refresh token", env: "GOOGLE_APPS_SCRIPT_REFRESH_TOKEN" },
47
- serviceAccountJson: { type: "string", required: false, description: "Service-account key JSON", env: "GOOGLE_APPS_SCRIPT_SERVICE_ACCOUNT_JSON" },
48
- serviceAccountEmail: { type: "string", required: false, description: "Service-account email", env: "GOOGLE_APPS_SCRIPT_SERVICE_ACCOUNT_EMAIL" },
49
- serviceAccountPrivateKey: { type: "string", required: false, description: "Service-account private key", env: "GOOGLE_APPS_SCRIPT_SERVICE_ACCOUNT_PRIVATE_KEY" },
50
- serviceAccountSubject: { type: "string", required: false, description: "User to impersonate (domain-wide delegation)", env: "GOOGLE_APPS_SCRIPT_SERVICE_ACCOUNT_SUBJECT" },
46
+ authMethod: {
47
+ type: "string",
48
+ required: false,
49
+ description: "delegated or serviceAccount (legacy configs infer the method)",
50
+ },
51
+ clientId: {
52
+ type: "string",
53
+ required: false,
54
+ description: "OAuth client ID",
55
+ env: "GOOGLE_APPS_SCRIPT_CLIENT_ID",
56
+ },
57
+ clientSecret: {
58
+ type: "string",
59
+ required: false,
60
+ description: "OAuth client secret",
61
+ env: "GOOGLE_APPS_SCRIPT_CLIENT_SECRET",
62
+ },
63
+ refreshToken: {
64
+ type: "string",
65
+ required: false,
66
+ description: "OAuth refresh token",
67
+ env: "GOOGLE_APPS_SCRIPT_REFRESH_TOKEN",
68
+ },
69
+ serviceAccountJson: {
70
+ type: "string",
71
+ required: false,
72
+ description: "Service-account key JSON",
73
+ env: "GOOGLE_APPS_SCRIPT_SERVICE_ACCOUNT_JSON",
74
+ },
75
+ serviceAccountEmail: {
76
+ type: "string",
77
+ required: false,
78
+ description: "Service-account email",
79
+ env: "GOOGLE_APPS_SCRIPT_SERVICE_ACCOUNT_EMAIL",
80
+ },
81
+ serviceAccountPrivateKey: {
82
+ type: "string",
83
+ required: false,
84
+ description: "Service-account private key",
85
+ env: "GOOGLE_APPS_SCRIPT_SERVICE_ACCOUNT_PRIVATE_KEY",
86
+ },
87
+ serviceAccountSubject: {
88
+ type: "string",
89
+ required: false,
90
+ description: "User to impersonate (domain-wide delegation)",
91
+ env: "GOOGLE_APPS_SCRIPT_SERVICE_ACCOUNT_SUBJECT",
92
+ },
51
93
  });
52
94
  rl.registerAction("script.list", {
53
95
  access: "read",
@@ -61,16 +103,17 @@ export default function googleAppsScript(rl) {
61
103
  })),
62
104
  }, { additionalProperties: false }),
63
105
  async execute(input, ctx) {
106
+ const p = input;
64
107
  const params = new URLSearchParams({
65
108
  q: "mimeType='application/vnd.google-apps.script' and trashed=false",
66
109
  fields: "files(id,name,modifiedTime)",
67
- pageSize: String(input.pageSize ?? 50),
110
+ pageSize: String(p.pageSize ?? 50),
68
111
  orderBy: "modifiedTime desc",
69
112
  });
70
113
  const res = await call(ctx, "GET", `${DRIVE_API}/files?${params}`);
71
114
  let files = res.files ?? [];
72
- if (input.query) {
73
- const q = String(input.query).toLowerCase();
115
+ if (p.query) {
116
+ const q = String(p.query).toLowerCase();
74
117
  files = files.filter((f) => (f.name || "").toLowerCase().includes(q));
75
118
  }
76
119
  return { count: files.length, scripts: files };
@@ -81,8 +124,9 @@ export default function googleAppsScript(rl) {
81
124
  description: "Get all files of an Apps Script project (name, type, source).",
82
125
  inputSchema: t.Object({ scriptId: Id }, { additionalProperties: false }),
83
126
  async execute(input, ctx) {
84
- const res = await call(ctx, "GET", `${SCRIPT_API}/projects/${input.scriptId}/content`);
85
- return { scriptId: input.scriptId, files: res.files ?? [] };
127
+ const p = input;
128
+ const res = await call(ctx, "GET", `${SCRIPT_API}/projects/${pathSegment(p.scriptId)}/content`);
129
+ return { scriptId: p.scriptId, files: res.files ?? [] };
86
130
  },
87
131
  });
88
132
  rl.registerAction("project.readFile", {
@@ -96,10 +140,11 @@ export default function googleAppsScript(rl) {
96
140
  }),
97
141
  }, { additionalProperties: false }),
98
142
  async execute(input, ctx) {
99
- const res = await call(ctx, "GET", `${SCRIPT_API}/projects/${input.scriptId}/content`);
100
- const file = (res.files ?? []).find((f) => f.name === input.name);
143
+ const p = input;
144
+ const res = await call(ctx, "GET", `${SCRIPT_API}/projects/${pathSegment(p.scriptId)}/content`);
145
+ const file = (res.files ?? []).find((f) => f.name === p.name);
101
146
  if (!file)
102
- throw new Error(`No file "${input.name}". Available: ${(res.files ?? []).map((f) => f.name).join(", ")}`);
147
+ throw new Error(`No file "${p.name}". Available: ${(res.files ?? []).map((f) => f.name).join(", ")}`);
103
148
  return { name: file.name, type: file.type, source: file.source };
104
149
  },
105
150
  });
@@ -113,17 +158,21 @@ export default function googleAppsScript(rl) {
113
158
  type: t.Optional(stringEnum(["SERVER_JS", "HTML", "JSON"])),
114
159
  }, { additionalProperties: false }),
115
160
  async execute(input, ctx) {
116
- const cur = await call(ctx, "GET", `${SCRIPT_API}/projects/${input.scriptId}/content`);
161
+ const p = input;
162
+ const cur = await call(ctx, "GET", `${SCRIPT_API}/projects/${pathSegment(p.scriptId)}/content`);
117
163
  const files = cur.files ?? [];
118
- const idx = files.findIndex((f) => f.name === input.name);
119
- const type = input.type || (input.name === "appsscript" ? "JSON" : files[idx]?.type || "SERVER_JS");
120
- const entry = { name: input.name, type, source: input.source };
164
+ const idx = files.findIndex((f) => f.name === p.name);
165
+ const type = p.type ||
166
+ (p.name === "appsscript" ? "JSON" : files[idx]?.type || "SERVER_JS");
167
+ const entry = { name: p.name, type, source: p.source };
121
168
  if (idx >= 0)
122
169
  files[idx] = entry;
123
170
  else
124
171
  files.push(entry);
125
- await call(ctx, "PUT", `${SCRIPT_API}/projects/${input.scriptId}/content`, { files });
126
- return { scriptId: input.scriptId, updated: input.name, fileCount: files.length };
172
+ await call(ctx, "PUT", `${SCRIPT_API}/projects/${pathSegment(p.scriptId)}/content`, {
173
+ files,
174
+ });
175
+ return { scriptId: p.scriptId, updated: p.name, fileCount: files.length };
127
176
  },
128
177
  });
129
178
  rl.registerAction("project.updateContent", {
@@ -141,8 +190,9 @@ export default function googleAppsScript(rl) {
141
190
  }),
142
191
  }, { additionalProperties: false }),
143
192
  async execute(input, ctx) {
144
- const res = await call(ctx, "PUT", `${SCRIPT_API}/projects/${input.scriptId}/content`, { files: input.files });
145
- return { scriptId: input.scriptId, fileCount: (res.files ?? []).length };
193
+ const p = input;
194
+ const res = await call(ctx, "PUT", `${SCRIPT_API}/projects/${pathSegment(p.scriptId)}/content`, { files: p.files });
195
+ return { scriptId: p.scriptId, fileCount: (res.files ?? []).length };
146
196
  },
147
197
  });
148
198
  rl.registerAction("project.create", {
@@ -156,11 +206,16 @@ export default function googleAppsScript(rl) {
156
206
  })),
157
207
  }, { additionalProperties: false }),
158
208
  async execute(input, ctx) {
159
- const payload = { title: input.title };
160
- if (input.parentId)
161
- payload.parentId = input.parentId;
209
+ const p = input;
210
+ const payload = { title: p.title };
211
+ if (p.parentId)
212
+ payload.parentId = p.parentId;
162
213
  const res = await call(ctx, "POST", `${SCRIPT_API}/projects`, payload);
163
- return { scriptId: res.scriptId, title: res.title, parentId: res.parentId };
214
+ return {
215
+ scriptId: res.scriptId,
216
+ title: res.title,
217
+ parentId: res.parentId,
218
+ };
164
219
  },
165
220
  });
166
221
  rl.registerAction("version.create", {
@@ -171,8 +226,13 @@ export default function googleAppsScript(rl) {
171
226
  description: t.Optional(t.String()),
172
227
  }, { additionalProperties: false }),
173
228
  async execute(input, ctx) {
174
- const res = await call(ctx, "POST", `${SCRIPT_API}/projects/${input.scriptId}/versions`, { description: input.description || "" });
175
- return { scriptId: input.scriptId, versionNumber: res.versionNumber, description: res.description };
229
+ const p = input;
230
+ const res = await call(ctx, "POST", `${SCRIPT_API}/projects/${pathSegment(p.scriptId)}/versions`, { description: p.description || "" });
231
+ return {
232
+ scriptId: p.scriptId,
233
+ versionNumber: res.versionNumber,
234
+ description: res.description,
235
+ };
176
236
  },
177
237
  });
178
238
  rl.registerAction("deployment.create", {
@@ -185,10 +245,11 @@ export default function googleAppsScript(rl) {
185
245
  manifestFileName: t.Optional(t.String({ minLength: 1, description: "Defaults to 'appsscript'." })),
186
246
  }, { additionalProperties: false }),
187
247
  async execute(input, ctx) {
188
- const res = await call(ctx, "POST", `${SCRIPT_API}/projects/${input.scriptId}/deployments`, {
189
- versionNumber: input.versionNumber,
190
- manifestFileName: input.manifestFileName || "appsscript",
191
- description: input.description || "",
248
+ const p = input;
249
+ const res = await call(ctx, "POST", `${SCRIPT_API}/projects/${pathSegment(p.scriptId)}/deployments`, {
250
+ versionNumber: p.versionNumber,
251
+ manifestFileName: p.manifestFileName || "appsscript",
252
+ description: p.description || "",
192
253
  });
193
254
  return { deploymentId: res.deploymentId, entryPoints: res.entryPoints };
194
255
  },
@@ -205,10 +266,11 @@ export default function googleAppsScript(rl) {
205
266
  })),
206
267
  }, { additionalProperties: false }),
207
268
  async execute(input, ctx) {
208
- const res = await call(ctx, "POST", `${SCRIPT_API}/scripts/${input.scriptId}:run`, {
209
- function: input.functionName,
210
- parameters: input.parameters ?? [],
211
- devMode: input.devMode === undefined ? true : input.devMode,
269
+ const p = input;
270
+ const res = await call(ctx, "POST", `${SCRIPT_API}/scripts/${pathSegment(p.scriptId)}:run`, {
271
+ function: p.functionName,
272
+ parameters: p.parameters ?? [],
273
+ devMode: p.devMode === undefined ? true : p.devMode,
212
274
  });
213
275
  if (res.error) {
214
276
  const d = res.error.details?.[0];
@@ -225,12 +287,16 @@ export default function googleAppsScript(rl) {
225
287
  pageSize: t.Optional(t.Integer({ minimum: 1, maximum: 50, description: "Default 20." })),
226
288
  }, { additionalProperties: false }),
227
289
  async execute(input, ctx) {
290
+ const p = input;
228
291
  const params = new URLSearchParams({
229
- "userProcessFilter.scriptId": input.scriptId,
230
- pageSize: String(input.pageSize ?? 20),
292
+ "userProcessFilter.scriptId": p.scriptId,
293
+ pageSize: String(p.pageSize ?? 20),
231
294
  });
232
295
  const res = await call(ctx, "GET", `${SCRIPT_API}/processes?${params}`);
233
- return { count: (res.processes ?? []).length, processes: res.processes ?? [] };
296
+ return {
297
+ count: (res.processes ?? []).length,
298
+ processes: res.processes ?? [],
299
+ };
234
300
  },
235
301
  });
236
302
  }