runline 0.32.0 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. package/dist/auth/oauth2.d.ts +7 -1
  2. package/dist/auth/oauth2.js +10 -0
  3. package/dist/auth/token.d.ts +1 -0
  4. package/dist/auth/token.js +19 -1
  5. package/dist/auth/types.d.ts +22 -1
  6. package/dist/core/engine.d.ts +7 -0
  7. package/dist/core/engine.js +9 -0
  8. package/dist/credentials/policy.d.ts +53 -1
  9. package/dist/credentials/policy.js +146 -6
  10. package/dist/credentials/registry.d.ts +9 -0
  11. package/dist/credentials/registry.js +179 -22
  12. package/dist/credentials/transport.d.ts +48 -2
  13. package/dist/credentials/transport.js +248 -70
  14. package/dist/credentials/types.d.ts +167 -10
  15. package/dist/index.d.ts +5 -5
  16. package/dist/index.js +2 -2
  17. package/dist/plugin/api.d.ts +7 -0
  18. package/dist/plugin/api.js +7 -0
  19. package/dist/plugin/types.d.ts +12 -0
  20. package/dist/plugins/_shared/credentialAdapter.js +79 -15
  21. package/dist/plugins/_shared/credentials.js +389 -0
  22. package/dist/plugins/_shared/googleAuth.js +9 -40
  23. package/dist/plugins/_shared/googleCredentials.js +28 -7
  24. package/dist/plugins/_shared/microsoftAuth.js +13 -44
  25. package/dist/plugins/_shared/microsoftCredentials.js +30 -8
  26. package/dist/plugins/_shared/provider.js +2 -14
  27. package/dist/plugins/_shared/shiftCloud.js +22 -34
  28. package/dist/plugins/_shared/shiftCredentials.js +83 -0
  29. package/dist/plugins/_shared/shiftUpload.js +1 -1
  30. package/dist/plugins/actionNetwork/src/credentials.js +14 -0
  31. package/dist/plugins/actionNetwork/src/index.js +39 -50
  32. package/dist/plugins/activeCampaign/src/credentials.js +22 -0
  33. package/dist/plugins/activeCampaign/src/index.js +61 -132
  34. package/dist/plugins/adalo/src/credentials.js +16 -0
  35. package/dist/plugins/adalo/src/index.js +19 -43
  36. package/dist/plugins/affinity/src/credentials.js +19 -0
  37. package/dist/plugins/affinity/src/index.js +29 -54
  38. package/dist/plugins/agileCrm/src/credentials.js +16 -0
  39. package/dist/plugins/agileCrm/src/index.js +46 -112
  40. package/dist/plugins/airtable/src/credentials.js +19 -0
  41. package/dist/plugins/airtable/src/index.js +37 -50
  42. package/dist/plugins/airtop/src/credentials.js +20 -0
  43. package/dist/plugins/airtop/src/index.js +51 -75
  44. package/dist/plugins/apiTemplateIo/src/credentials.js +19 -0
  45. package/dist/plugins/apiTemplateIo/src/index.js +14 -31
  46. package/dist/plugins/asana/src/credentials.js +19 -0
  47. package/dist/plugins/asana/src/index.js +51 -72
  48. package/dist/plugins/autopilot/src/credentials.js +19 -0
  49. package/dist/plugins/autopilot/src/index.js +38 -45
  50. package/dist/plugins/bambooHr/src/credentials.js +16 -0
  51. package/dist/plugins/bambooHr/src/index.js +41 -67
  52. package/dist/plugins/bannerbear/src/credentials.js +19 -0
  53. package/dist/plugins/bannerbear/src/index.js +15 -27
  54. package/dist/plugins/baserow/src/credentials.js +17 -0
  55. package/dist/plugins/baserow/src/index.js +23 -49
  56. package/dist/plugins/beeminder/src/credentials.js +19 -0
  57. package/dist/plugins/beeminder/src/index.js +32 -54
  58. package/dist/plugins/bitly/src/credentials.js +19 -0
  59. package/dist/plugins/bitly/src/index.js +12 -26
  60. package/dist/plugins/bitwarden/src/credentials.js +62 -0
  61. package/dist/plugins/bitwarden/src/index.js +34 -80
  62. package/dist/plugins/box/src/credentials.js +19 -0
  63. package/dist/plugins/box/src/index.js +24 -49
  64. package/dist/plugins/brandfetch/src/credentials.js +13 -0
  65. package/dist/plugins/brandfetch/src/index.js +12 -17
  66. package/dist/plugins/brevo/src/credentials.js +19 -0
  67. package/dist/plugins/brevo/src/index.js +30 -51
  68. package/dist/plugins/bubble/src/credentials.js +28 -0
  69. package/dist/plugins/bubble/src/index.js +29 -65
  70. package/dist/plugins/chargebee/src/credentials.js +16 -0
  71. package/dist/plugins/chargebee/src/index.js +15 -45
  72. package/dist/plugins/circleci/src/credentials.js +19 -0
  73. package/dist/plugins/circleci/src/index.js +19 -39
  74. package/dist/plugins/ciscoWebex/src/credentials.js +19 -0
  75. package/dist/plugins/ciscoWebex/src/index.js +43 -61
  76. package/dist/plugins/clearbit/src/credentials.js +22 -0
  77. package/dist/plugins/clearbit/src/index.js +11 -21
  78. package/dist/plugins/clickup/src/credentials.js +19 -0
  79. package/dist/plugins/clickup/src/index.js +85 -117
  80. package/dist/plugins/clockify/src/credentials.js +19 -0
  81. package/dist/plugins/clockify/src/index.js +46 -61
  82. package/dist/plugins/cloudflare/src/credentials.js +19 -0
  83. package/dist/plugins/cloudflare/src/index.js +19 -34
  84. package/dist/plugins/cockpit/src/credentials.js +17 -0
  85. package/dist/plugins/cockpit/src/index.js +18 -31
  86. package/dist/plugins/coda/src/credentials.js +19 -0
  87. package/dist/plugins/coda/src/index.js +33 -50
  88. package/dist/plugins/coingecko/src/credentials.js +20 -0
  89. package/dist/plugins/coingecko/src/index.js +24 -34
  90. package/dist/plugins/contentful/src/credentials.js +26 -0
  91. package/dist/plugins/contentful/src/index.js +19 -40
  92. package/dist/plugins/convertkit/src/credentials.js +26 -0
  93. package/dist/plugins/convertkit/src/index.js +27 -45
  94. package/dist/plugins/copper/src/credentials.js +17 -0
  95. package/dist/plugins/copper/src/index.js +25 -47
  96. package/dist/plugins/cortex/src/credentials.js +28 -0
  97. package/dist/plugins/cortex/src/index.js +26 -49
  98. package/dist/plugins/currents/src/credentials.js +19 -0
  99. package/dist/plugins/currents/src/index.js +46 -59
  100. package/dist/plugins/customerIo/src/credentials.js +52 -0
  101. package/dist/plugins/customerIo/src/index.js +30 -58
  102. package/dist/plugins/databricks/src/credentials.js +13 -0
  103. package/dist/plugins/databricks/src/index.js +51 -103
  104. package/dist/plugins/deepl/src/credentials.js +19 -0
  105. package/dist/plugins/deepl/src/index.js +13 -39
  106. package/dist/plugins/demio/src/credentials.js +26 -0
  107. package/dist/plugins/demio/src/index.js +17 -41
  108. package/dist/plugins/dhl/src/credentials.js +13 -0
  109. package/dist/plugins/dhl/src/index.js +8 -19
  110. package/dist/plugins/discord/src/credentials.js +19 -0
  111. package/dist/plugins/discord/src/index.js +30 -58
  112. package/dist/plugins/discourse/src/credentials.js +18 -0
  113. package/dist/plugins/discourse/src/index.js +36 -53
  114. package/dist/plugins/disqus/src/credentials.js +13 -0
  115. package/dist/plugins/disqus/src/index.js +14 -32
  116. package/dist/plugins/drift/src/credentials.js +13 -0
  117. package/dist/plugins/drift/src/index.js +16 -26
  118. package/dist/plugins/dropbox/src/credentials.js +13 -0
  119. package/dist/plugins/dropbox/src/index.js +23 -30
  120. package/dist/plugins/dropcontact/src/credentials.js +13 -0
  121. package/dist/plugins/dropcontact/src/index.js +13 -18
  122. package/dist/plugins/egoi/src/credentials.js +19 -0
  123. package/dist/plugins/egoi/src/index.js +23 -38
  124. package/dist/plugins/elasticsearch/src/credentials.js +18 -0
  125. package/dist/plugins/elasticsearch/src/index.js +27 -48
  126. package/dist/plugins/elevenlabs/src/credentials.js +30 -0
  127. package/dist/plugins/elevenlabs/src/index.js +4 -1
  128. package/dist/plugins/elevenlabs/src/schemas.js +2 -1
  129. package/dist/plugins/elevenlabs/src/shared.js +74 -35
  130. package/dist/plugins/elevenlabs/src/workflows.js +2 -2
  131. package/dist/plugins/emelia/src/credentials.js +14 -0
  132. package/dist/plugins/emelia/src/index.js +19 -23
  133. package/dist/plugins/erpnext/src/credentials.js +27 -0
  134. package/dist/plugins/erpnext/src/index.js +21 -42
  135. package/dist/plugins/facebookGraph/src/credentials.js +20 -0
  136. package/dist/plugins/facebookGraph/src/index.js +39 -37
  137. package/dist/plugins/fal/src/credentials.js +14 -0
  138. package/dist/plugins/fal/src/index.js +4 -2
  139. package/dist/plugins/fal/src/shared.js +58 -63
  140. package/dist/plugins/freshdesk/src/credentials.js +20 -0
  141. package/dist/plugins/freshdesk/src/index.js +25 -46
  142. package/dist/plugins/freshservice/src/credentials.js +16 -0
  143. package/dist/plugins/freshservice/src/index.js +37 -58
  144. package/dist/plugins/freshworksCrm/src/credentials.js +16 -0
  145. package/dist/plugins/freshworksCrm/src/index.js +20 -39
  146. package/dist/plugins/getresponse/src/credentials.js +22 -0
  147. package/dist/plugins/getresponse/src/index.js +20 -32
  148. package/dist/plugins/gett/src/credentials.js +64 -0
  149. package/dist/plugins/gett/src/index.js +11 -6
  150. package/dist/plugins/gett/src/login.js +24 -0
  151. package/dist/plugins/gett/src/session.js +15 -38
  152. package/dist/plugins/gett/src/shared.js +41 -84
  153. package/dist/plugins/ghost/src/credentials.js +36 -0
  154. package/dist/plugins/ghost/src/index.js +18 -59
  155. package/dist/plugins/github/src/credentials.js +18 -0
  156. package/dist/plugins/github/src/index.js +55 -78
  157. package/dist/plugins/gitlab/src/credentials.js +24 -0
  158. package/dist/plugins/gitlab/src/index.js +29 -48
  159. package/dist/plugins/gmail/src/index.js +26 -24
  160. package/dist/plugins/gong/src/credentials.js +16 -0
  161. package/dist/plugins/gong/src/index.js +16 -32
  162. package/dist/plugins/googleAppsScript/src/index.js +108 -42
  163. package/dist/plugins/googleCalendar/src/index.js +15 -13
  164. package/dist/plugins/googleContacts/src/index.js +12 -9
  165. package/dist/plugins/googleDocs/src/index.js +2 -0
  166. package/dist/plugins/googleDocs/src/shared.js +2 -1
  167. package/dist/plugins/googleDrive/src/index.js +50 -53
  168. package/dist/plugins/googleImage/src/credentials.js +14 -0
  169. package/dist/plugins/googleImage/src/index.js +14 -25
  170. package/dist/plugins/googleSheets/src/index.js +26 -27
  171. package/dist/plugins/googleSlides/src/index.js +6 -4
  172. package/dist/plugins/googleTasks/src/index.js +13 -11
  173. package/dist/plugins/gotify/src/credentials.js +32 -0
  174. package/dist/plugins/gotify/src/index.js +14 -36
  175. package/dist/plugins/gotowebinar/src/credentials.js +13 -0
  176. package/dist/plugins/gotowebinar/src/index.js +52 -69
  177. package/dist/plugins/grafana/src/credentials.js +16 -0
  178. package/dist/plugins/grafana/src/index.js +34 -53
  179. package/dist/plugins/graphql/src/credentials.js +42 -0
  180. package/dist/plugins/graphql/src/index.js +21 -46
  181. package/dist/plugins/grist/src/credentials.js +30 -0
  182. package/dist/plugins/grist/src/index.js +14 -43
  183. package/dist/plugins/halopsa/src/credentials.js +56 -0
  184. package/dist/plugins/halopsa/src/index.js +20 -47
  185. package/dist/plugins/harvest/src/credentials.js +20 -0
  186. package/dist/plugins/harvest/src/index.js +24 -43
  187. package/dist/plugins/helpscout/src/credentials.js +13 -0
  188. package/dist/plugins/helpscout/src/index.js +26 -38
  189. package/dist/plugins/highlevel/src/credentials.js +19 -0
  190. package/dist/plugins/highlevel/src/index.js +34 -63
  191. package/dist/plugins/homeAssistant/src/credentials.js +27 -0
  192. package/dist/plugins/homeAssistant/src/index.js +34 -52
  193. package/dist/plugins/hubspot/src/credentials.js +16 -0
  194. package/dist/plugins/hubspot/src/index.js +29 -41
  195. package/dist/plugins/humanticAi/src/credentials.js +13 -0
  196. package/dist/plugins/humanticAi/src/index.js +15 -22
  197. package/dist/plugins/hunter/src/credentials.js +13 -0
  198. package/dist/plugins/hunter/src/index.js +18 -17
  199. package/dist/plugins/intercom/src/credentials.js +19 -0
  200. package/dist/plugins/intercom/src/index.js +25 -38
  201. package/dist/plugins/iterable/src/credentials.js +17 -0
  202. package/dist/plugins/iterable/src/index.js +26 -40
  203. package/dist/plugins/jenkins/src/credentials.js +16 -0
  204. package/dist/plugins/jenkins/src/index.js +22 -36
  205. package/dist/plugins/jira/src/credentials.js +16 -0
  206. package/dist/plugins/jira/src/index.js +35 -61
  207. package/dist/plugins/keap/src/credentials.js +19 -0
  208. package/dist/plugins/keap/src/index.js +43 -71
  209. package/dist/plugins/kobotoolbox/src/credentials.js +13 -0
  210. package/dist/plugins/kobotoolbox/src/index.js +46 -84
  211. package/dist/plugins/lemlist/src/credentials.js +19 -0
  212. package/dist/plugins/lemlist/src/index.js +35 -47
  213. package/dist/plugins/linear/src/attachments.js +7 -7
  214. package/dist/plugins/linear/src/comments.js +7 -7
  215. package/dist/plugins/linear/src/credentials.js +17 -0
  216. package/dist/plugins/linear/src/cycles.js +5 -5
  217. package/dist/plugins/linear/src/index.js +2 -0
  218. package/dist/plugins/linear/src/initiatives.js +6 -6
  219. package/dist/plugins/linear/src/issues.js +14 -14
  220. package/dist/plugins/linear/src/labels.js +6 -6
  221. package/dist/plugins/linear/src/organization.js +2 -2
  222. package/dist/plugins/linear/src/projects.js +12 -12
  223. package/dist/plugins/linear/src/shared.js +34 -32
  224. package/dist/plugins/linear/src/states.js +3 -3
  225. package/dist/plugins/linear/src/teams.js +4 -4
  226. package/dist/plugins/linear/src/users.js +3 -3
  227. package/dist/plugins/linear/src/views.js +5 -5
  228. package/dist/plugins/linear/src/webhooks.js +5 -5
  229. package/dist/plugins/lingvanex/src/credentials.js +13 -0
  230. package/dist/plugins/lingvanex/src/index.js +7 -9
  231. package/dist/plugins/linkedin/src/credentials.js +17 -0
  232. package/dist/plugins/linkedin/src/index.js +13 -17
  233. package/dist/plugins/lonescale/src/credentials.js +13 -0
  234. package/dist/plugins/lonescale/src/index.js +16 -26
  235. package/dist/plugins/magento/src/credentials.js +16 -0
  236. package/dist/plugins/magento/src/index.js +67 -84
  237. package/dist/plugins/mailcheck/src/credentials.js +17 -0
  238. package/dist/plugins/mailcheck/src/index.js +7 -9
  239. package/dist/plugins/mailchimp/src/credentials.js +32 -0
  240. package/dist/plugins/mailchimp/src/index.js +36 -44
  241. package/dist/plugins/mailerlite/src/credentials.js +13 -0
  242. package/dist/plugins/mailerlite/src/index.js +19 -32
  243. package/dist/plugins/mailgun/src/credentials.js +21 -0
  244. package/dist/plugins/mailgun/src/index.js +15 -21
  245. package/dist/plugins/mailjet/src/credentials.js +38 -0
  246. package/dist/plugins/mailjet/src/index.js +60 -115
  247. package/dist/plugins/mandrill/src/credentials.js +17 -0
  248. package/dist/plugins/mandrill/src/index.js +11 -12
  249. package/dist/plugins/marketstack/src/credentials.js +16 -0
  250. package/dist/plugins/marketstack/src/index.js +18 -28
  251. package/dist/plugins/matrix/src/credentials.js +19 -0
  252. package/dist/plugins/matrix/src/index.js +23 -52
  253. package/dist/plugins/mattermost/src/credentials.js +19 -0
  254. package/dist/plugins/mattermost/src/index.js +41 -73
  255. package/dist/plugins/mautic/src/credentials.js +16 -0
  256. package/dist/plugins/mautic/src/index.js +46 -62
  257. package/dist/plugins/medium/src/credentials.js +20 -0
  258. package/dist/plugins/medium/src/index.js +18 -23
  259. package/dist/plugins/messagebird/src/credentials.js +22 -0
  260. package/dist/plugins/messagebird/src/index.js +13 -18
  261. package/dist/plugins/metabase/src/credentials.js +19 -0
  262. package/dist/plugins/metabase/src/index.js +24 -40
  263. package/dist/plugins/microsoftCalendar/src/index.js +48 -12
  264. package/dist/plugins/microsoftFiles/src/index.js +90 -25
  265. package/dist/plugins/microsoftMail/src/index.js +62 -15
  266. package/dist/plugins/misp/src/credentials.js +16 -0
  267. package/dist/plugins/misp/src/index.js +60 -71
  268. package/dist/plugins/mocean/src/credentials.js +17 -0
  269. package/dist/plugins/mocean/src/index.js +11 -23
  270. package/dist/plugins/monday/src/credentials.js +14 -0
  271. package/dist/plugins/monday/src/index.js +31 -44
  272. package/dist/plugins/monicaCrm/src/credentials.js +19 -0
  273. package/dist/plugins/monicaCrm/src/index.js +25 -42
  274. package/dist/plugins/msg91/src/credentials.js +10 -0
  275. package/dist/plugins/msg91/src/index.js +15 -11
  276. package/dist/plugins/nasa/src/credentials.js +22 -0
  277. package/dist/plugins/nasa/src/index.js +24 -28
  278. package/dist/plugins/netlify/src/credentials.js +19 -0
  279. package/dist/plugins/netlify/src/index.js +27 -51
  280. package/dist/plugins/netscalerAdc/src/credentials.js +18 -0
  281. package/dist/plugins/netscalerAdc/src/index.js +16 -31
  282. package/dist/plugins/nextcloud/src/credentials.js +27 -0
  283. package/dist/plugins/nextcloud/src/index.js +55 -109
  284. package/dist/plugins/nocodb/src/credentials.js +16 -0
  285. package/dist/plugins/nocodb/src/index.js +19 -37
  286. package/dist/plugins/notion/src/credentials.js +21 -0
  287. package/dist/plugins/notion/src/index.js +25 -38
  288. package/dist/plugins/npm/src/credentials.js +19 -0
  289. package/dist/plugins/npm/src/index.js +22 -32
  290. package/dist/plugins/odoo/src/credentials.js +21 -0
  291. package/dist/plugins/odoo/src/index.js +53 -69
  292. package/dist/plugins/okta/src/credentials.js +23 -0
  293. package/dist/plugins/okta/src/index.js +30 -35
  294. package/dist/plugins/oneSimpleApi/src/credentials.js +16 -0
  295. package/dist/plugins/oneSimpleApi/src/index.js +19 -24
  296. package/dist/plugins/onfleet/src/credentials.js +23 -0
  297. package/dist/plugins/onfleet/src/index.js +42 -53
  298. package/dist/plugins/openai/src/credentials.js +13 -0
  299. package/dist/plugins/openai/src/index.js +15 -23
  300. package/dist/plugins/openweathermap/src/credentials.js +16 -0
  301. package/dist/plugins/openweathermap/src/index.js +22 -22
  302. package/dist/plugins/oura/src/credentials.js +19 -0
  303. package/dist/plugins/oura/src/index.js +13 -18
  304. package/dist/plugins/paddle/src/credentials.js +27 -0
  305. package/dist/plugins/paddle/src/index.js +20 -36
  306. package/dist/plugins/pagerduty/src/credentials.js +24 -0
  307. package/dist/plugins/pagerduty/src/index.js +30 -39
  308. package/dist/plugins/parallel/src/credentials.js +18 -0
  309. package/dist/plugins/parallel/src/index.js +16 -22
  310. package/dist/plugins/paypal/src/credentials.js +44 -0
  311. package/dist/plugins/paypal/src/index.js +14 -40
  312. package/dist/plugins/peekalink/src/credentials.js +16 -0
  313. package/dist/plugins/peekalink/src/index.js +10 -11
  314. package/dist/plugins/phantombuster/src/credentials.js +19 -0
  315. package/dist/plugins/phantombuster/src/index.js +19 -32
  316. package/dist/plugins/philipsHue/src/credentials.js +17 -0
  317. package/dist/plugins/philipsHue/src/index.js +15 -27
  318. package/dist/plugins/pipedrive/src/credentials.js +26 -0
  319. package/dist/plugins/pipedrive/src/index.js +43 -73
  320. package/dist/plugins/plaud/src/index.js +2 -1
  321. package/dist/plugins/plaud/src/shared.js +23 -19
  322. package/dist/plugins/plivo/src/credentials.js +20 -0
  323. package/dist/plugins/plivo/src/index.js +13 -19
  324. package/dist/plugins/posthog/src/credentials.js +18 -0
  325. package/dist/plugins/posthog/src/index.js +14 -20
  326. package/dist/plugins/profitwell/src/credentials.js +22 -0
  327. package/dist/plugins/profitwell/src/index.js +10 -17
  328. package/dist/plugins/pushbullet/src/credentials.js +19 -0
  329. package/dist/plugins/pushbullet/src/index.js +19 -27
  330. package/dist/plugins/pushcut/src/credentials.js +19 -0
  331. package/dist/plugins/pushcut/src/index.js +7 -8
  332. package/dist/plugins/pushover/src/credentials.js +14 -0
  333. package/dist/plugins/pushover/src/index.js +7 -12
  334. package/dist/plugins/quickbase/src/credentials.js +15 -0
  335. package/dist/plugins/quickbase/src/index.js +24 -34
  336. package/dist/plugins/quickbooks/src/credentials.js +22 -0
  337. package/dist/plugins/quickbooks/src/index.js +17 -46
  338. package/dist/plugins/raindrop/src/credentials.js +19 -0
  339. package/dist/plugins/raindrop/src/index.js +30 -32
  340. package/dist/plugins/recraft/src/credentials.js +13 -0
  341. package/dist/plugins/recraft/src/index.js +38 -27
  342. package/dist/plugins/reddit/src/credentials.js +26 -0
  343. package/dist/plugins/reddit/src/index.js +30 -34
  344. package/dist/plugins/replicate/src/credentials.js +23 -0
  345. package/dist/plugins/replicate/src/index.js +17 -27
  346. package/dist/plugins/rocketchat/src/credentials.js +17 -0
  347. package/dist/plugins/rocketchat/src/index.js +8 -19
  348. package/dist/plugins/rundeck/src/credentials.js +16 -0
  349. package/dist/plugins/rundeck/src/index.js +12 -28
  350. package/dist/plugins/salesforce/src/credentials.js +73 -0
  351. package/dist/plugins/salesforce/src/index.js +6 -0
  352. package/dist/plugins/salesforce/src/metadata.js +3 -16
  353. package/dist/plugins/salesforce/src/shared.js +25 -100
  354. package/dist/plugins/salesforce/src/sobjects.js +10 -9
  355. package/dist/plugins/salesmate/src/credentials.js +17 -0
  356. package/dist/plugins/salesmate/src/index.js +20 -37
  357. package/dist/plugins/securityScorecard/src/credentials.js +22 -0
  358. package/dist/plugins/securityScorecard/src/index.js +24 -37
  359. package/dist/plugins/segment/src/credentials.js +16 -0
  360. package/dist/plugins/segment/src/index.js +12 -16
  361. package/dist/plugins/sendgrid/src/credentials.js +13 -0
  362. package/dist/plugins/sendgrid/src/index.js +31 -35
  363. package/dist/plugins/sendy/src/credentials.js +18 -0
  364. package/dist/plugins/sendy/src/index.js +18 -24
  365. package/dist/plugins/sentry/src/credentials.js +16 -0
  366. package/dist/plugins/sentry/src/index.js +30 -98
  367. package/dist/plugins/servicenow/src/credentials.js +13 -0
  368. package/dist/plugins/servicenow/src/index.js +22 -41
  369. package/dist/plugins/shiftAtlas/src/graph.js +2 -2
  370. package/dist/plugins/shiftAtlas/src/index.js +2 -0
  371. package/dist/plugins/shiftAtlas/src/shared.js +3 -1
  372. package/dist/plugins/shiftBwm/src/collections.js +201 -0
  373. package/dist/plugins/shiftBwm/src/index.js +35 -0
  374. package/dist/plugins/shiftBwm/src/records.js +180 -0
  375. package/dist/plugins/shiftBwm/src/shared.js +168 -0
  376. package/dist/plugins/shiftBwm/src/vendor/client.js +227 -0
  377. package/dist/plugins/shiftBwm/src/vendor/contracts.js +59 -0
  378. package/dist/plugins/shiftBwm/src/vendor/models.js +525 -0
  379. package/dist/plugins/shiftCrm/src/access.js +2 -2
  380. package/dist/plugins/shiftCrm/src/accounts.js +3 -3
  381. package/dist/plugins/shiftCrm/src/activities.js +3 -3
  382. package/dist/plugins/shiftCrm/src/credentials.js +6 -0
  383. package/dist/plugins/shiftCrm/src/index.js +2 -0
  384. package/dist/plugins/shiftCrm/src/opportunities.js +3 -3
  385. package/dist/plugins/shiftCrm/src/people.js +3 -3
  386. package/dist/plugins/shiftCrm/src/records.js +2 -2
  387. package/dist/plugins/shiftCrm/src/shared.js +2 -1
  388. package/dist/plugins/shiftCrm/src/tasks.js +3 -3
  389. package/dist/plugins/shiftObjects/src/credentials.js +2 -0
  390. package/dist/plugins/shiftObjects/src/index.js +2 -0
  391. package/dist/plugins/shiftObjects/src/objects.js +3 -3
  392. package/dist/plugins/shiftOcr/src/credentials.js +8 -0
  393. package/dist/plugins/shiftOcr/src/index.js +5 -2
  394. package/dist/plugins/shiftPages/src/index.js +2 -0
  395. package/dist/plugins/shiftPages/src/pages.js +5 -3
  396. package/dist/plugins/shiftPages/src/shared.js +3 -1
  397. package/dist/plugins/shiftTranscription/src/index.js +2 -0
  398. package/dist/plugins/shiftTranscription/src/shared.js +11 -1
  399. package/dist/plugins/shiftTranscription/src/transcription.js +3 -2
  400. package/dist/plugins/shiftWork/src/index.js +2 -0
  401. package/dist/plugins/shiftWork/src/issue-views.js +5 -5
  402. package/dist/plugins/shiftWork/src/issues.js +11 -7
  403. package/dist/plugins/shiftWork/src/projects.js +3 -3
  404. package/dist/plugins/shiftWork/src/shared.js +3 -1
  405. package/dist/plugins/shopify/src/credentials.js +16 -0
  406. package/dist/plugins/shopify/src/index.js +32 -59
  407. package/dist/plugins/signl4/src/credentials.js +17 -0
  408. package/dist/plugins/signl4/src/index.js +28 -29
  409. package/dist/plugins/slack/src/credentials.js +19 -0
  410. package/dist/plugins/slack/src/index.js +51 -60
  411. package/dist/plugins/sms77/src/credentials.js +17 -0
  412. package/dist/plugins/sms77/src/index.js +11 -16
  413. package/dist/plugins/splunk/src/credentials.js +19 -0
  414. package/dist/plugins/splunk/src/index.js +32 -74
  415. package/dist/plugins/spotify/src/credentials.js +19 -0
  416. package/dist/plugins/spotify/src/index.js +40 -55
  417. package/dist/plugins/stackby/src/credentials.js +13 -0
  418. package/dist/plugins/stackby/src/index.js +14 -23
  419. package/dist/plugins/steel/src/auth.js +27 -0
  420. package/dist/plugins/steel/src/browser.js +4 -3
  421. package/dist/plugins/steel/src/captchas.js +4 -3
  422. package/dist/plugins/steel/src/extensions.js +3 -2
  423. package/dist/plugins/steel/src/files.js +9 -10
  424. package/dist/plugins/steel/src/index.js +2 -0
  425. package/dist/plugins/steel/src/page/tools.js +3 -3
  426. package/dist/plugins/steel/src/profiles.js +4 -3
  427. package/dist/plugins/steel/src/sessions.js +13 -13
  428. package/dist/plugins/steel/src/shared.js +21 -51
  429. package/dist/plugins/storyblok/src/credentials.js +37 -0
  430. package/dist/plugins/storyblok/src/index.js +22 -66
  431. package/dist/plugins/strapi/src/credentials.js +71 -0
  432. package/dist/plugins/strapi/src/index.js +36 -70
  433. package/dist/plugins/strava/src/credentials.js +19 -0
  434. package/dist/plugins/strava/src/index.js +16 -33
  435. package/dist/plugins/stripe/src/credentials.js +19 -0
  436. package/dist/plugins/stripe/src/index.js +44 -58
  437. package/dist/plugins/supabase/src/credentials.js +30 -0
  438. package/dist/plugins/supabase/src/index.js +18 -40
  439. package/dist/plugins/syncromsp/src/credentials.js +16 -0
  440. package/dist/plugins/syncromsp/src/index.js +37 -70
  441. package/dist/plugins/tapfiliate/src/credentials.js +13 -0
  442. package/dist/plugins/tapfiliate/src/index.js +21 -31
  443. package/dist/plugins/telegram/src/credentials.js +20 -0
  444. package/dist/plugins/telegram/src/index.js +31 -39
  445. package/dist/plugins/thehive/src/credentials.js +14 -0
  446. package/dist/plugins/thehive/src/index.js +33 -50
  447. package/dist/plugins/thehiveProject/src/credentials.js +16 -0
  448. package/dist/plugins/thehiveProject/src/index.js +53 -122
  449. package/dist/plugins/todoist/src/credentials.js +26 -0
  450. package/dist/plugins/todoist/src/index.js +49 -79
  451. package/dist/plugins/together/src/credentials.js +16 -0
  452. package/dist/plugins/together/src/index.js +30 -32
  453. package/dist/plugins/travisci/src/credentials.js +24 -0
  454. package/dist/plugins/travisci/src/index.js +16 -30
  455. package/dist/plugins/trello/src/credentials.js +29 -0
  456. package/dist/plugins/trello/src/index.js +49 -64
  457. package/dist/plugins/twake/src/credentials.js +16 -0
  458. package/dist/plugins/twake/src/index.js +8 -10
  459. package/dist/plugins/twilio/src/credentials.js +23 -0
  460. package/dist/plugins/twilio/src/index.js +12 -26
  461. package/dist/plugins/twist/src/credentials.js +13 -0
  462. package/dist/plugins/twist/src/index.js +32 -44
  463. package/dist/plugins/twitter/src/credentials.js +16 -0
  464. package/dist/plugins/twitter/src/index.js +25 -37
  465. package/dist/plugins/typesafe/src/credentials.js +28 -0
  466. package/dist/plugins/typesafe/src/index.js +3 -1
  467. package/dist/plugins/typesafe/src/shared.js +23 -35
  468. package/dist/plugins/unleashedSoftware/src/credentials.js +21 -0
  469. package/dist/plugins/unleashedSoftware/src/index.js +13 -37
  470. package/dist/plugins/uplead/src/credentials.js +16 -0
  471. package/dist/plugins/uplead/src/index.js +11 -16
  472. package/dist/plugins/uproc/src/credentials.js +14 -0
  473. package/dist/plugins/uproc/src/index.js +7 -10
  474. package/dist/plugins/uptimerobot/src/credentials.js +14 -0
  475. package/dist/plugins/uptimerobot/src/index.js +28 -39
  476. package/dist/plugins/urlscanio/src/credentials.js +13 -0
  477. package/dist/plugins/urlscanio/src/index.js +13 -22
  478. package/dist/plugins/vercel/src/credentials.js +19 -0
  479. package/dist/plugins/vercel/src/deployments.js +27 -11
  480. package/dist/plugins/vercel/src/env.js +31 -12
  481. package/dist/plugins/vercel/src/index.js +2 -0
  482. package/dist/plugins/vercel/src/projects.js +6 -3
  483. package/dist/plugins/vercel/src/shared.js +32 -37
  484. package/dist/plugins/vero/src/credentials.js +17 -0
  485. package/dist/plugins/vero/src/index.js +18 -21
  486. package/dist/plugins/vonage/src/credentials.js +17 -0
  487. package/dist/plugins/vonage/src/index.js +14 -18
  488. package/dist/plugins/wekan/src/credentials.js +16 -0
  489. package/dist/plugins/wekan/src/index.js +33 -46
  490. package/dist/plugins/wolt/src/account.js +6 -0
  491. package/dist/plugins/wolt/src/catalog.js +2 -2
  492. package/dist/plugins/wolt/src/credentials.js +64 -0
  493. package/dist/plugins/wolt/src/index.js +8 -3
  494. package/dist/plugins/wolt/src/orders.js +2 -2
  495. package/dist/plugins/wolt/src/public.js +91 -0
  496. package/dist/plugins/wolt/src/shared.js +49 -158
  497. package/dist/plugins/woocommerce/src/credentials.js +16 -0
  498. package/dist/plugins/woocommerce/src/index.js +19 -37
  499. package/dist/plugins/wordpress/src/credentials.js +16 -0
  500. package/dist/plugins/wordpress/src/index.js +23 -42
  501. package/dist/plugins/xai/src/credentials.js +13 -0
  502. package/dist/plugins/xai/src/index.js +31 -30
  503. package/dist/plugins/xero/src/credentials.js +17 -0
  504. package/dist/plugins/xero/src/index.js +19 -36
  505. package/dist/plugins/yourls/src/credentials.js +17 -0
  506. package/dist/plugins/yourls/src/index.js +13 -23
  507. package/dist/plugins/zammad/src/credentials.js +15 -0
  508. package/dist/plugins/zammad/src/index.js +27 -47
  509. package/dist/plugins/zendesk/src/credentials.js +26 -0
  510. package/dist/plugins/zendesk/src/index.js +29 -48
  511. package/dist/plugins/zoho/src/credentials.js +17 -0
  512. package/dist/plugins/zoho/src/index.js +18 -38
  513. package/dist/plugins/zoom/src/credentials.js +19 -0
  514. package/dist/plugins/zoom/src/index.js +15 -30
  515. package/dist/plugins/zulip/src/credentials.js +16 -0
  516. package/dist/plugins/zulip/src/index.js +36 -42
  517. package/dist/sdk.d.ts +8 -0
  518. package/dist/sdk.js +3 -0
  519. package/package.json +3 -2
  520. package/dist/plugins/_shared/authedFetch.js +0 -33
  521. package/dist/plugins/_shared/tokenRefresh.js +0 -41
@@ -1,50 +1,23 @@
1
- const BASE_URL = "https://api.infusionsoft.com/crm/rest/v1";
2
- async function apiRequest(token, method, endpoint, body, qs) {
3
- const url = new URL(`${BASE_URL}${endpoint}`);
4
- if (qs) {
5
- for (const [k, v] of Object.entries(qs)) {
6
- if (v !== undefined && v !== null)
7
- url.searchParams.set(k, String(v));
8
- }
9
- }
10
- const opts = {
1
+ import { credentialJson, pathSegment } from "../../_shared/credentials.js";
2
+ import { keapCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, endpoint, body, qs) {
4
+ return credentialJson(ctx, keapCredential, "keap", {
5
+ target: "api",
6
+ path: endpoint,
11
7
  method,
12
- headers: {
13
- Authorization: `Bearer ${token}`,
14
- "Content-Type": "application/json",
15
- },
16
- };
17
- if (body &&
18
- Object.keys(body).length > 0 &&
19
- method !== "GET" &&
20
- method !== "DELETE")
21
- opts.body = JSON.stringify(body);
22
- const res = await fetch(url.toString(), opts);
23
- if (!res.ok)
24
- throw new Error(`Keap API error ${res.status}: ${await res.text()}`);
25
- if (res.status === 204)
26
- return { success: true };
27
- return res.json();
28
- }
29
- async function apiRequestAllItems(token, propertyName, method, endpoint, qs = {}) {
30
- const all = [];
31
- let uri;
32
- qs.limit = 50;
33
- let data;
34
- do {
35
- data = (uri
36
- ? await apiRequest(token, method, "", undefined, { ...qs })
37
- : await apiRequest(token, method, endpoint, undefined, qs));
38
- const items = data[propertyName];
39
- if (Array.isArray(items))
40
- all.push(...items);
41
- uri = data.next;
42
- } while (all.length < (data.count ?? all.length + 1) && uri);
43
- return all;
8
+ query: qs,
9
+ ...(body &&
10
+ Object.keys(body).length > 0 &&
11
+ method !== "GET" &&
12
+ method !== "DELETE"
13
+ ? { json: body }
14
+ : {}),
15
+ });
44
16
  }
45
17
  export default function keap(rl) {
46
18
  rl.setName("keap");
47
19
  rl.setVersion("0.1.0");
20
+ rl.setCredential(keapCredential);
48
21
  rl.setConnectionSchema({
49
22
  accessToken: {
50
23
  type: "string",
@@ -53,7 +26,6 @@ export default function keap(rl) {
53
26
  env: "KEAP_ACCESS_TOKEN",
54
27
  },
55
28
  });
56
- const tok = (ctx) => ctx.connection.config.accessToken;
57
29
  // ── Company ─────────────────────────────────────────
58
30
  rl.registerAction("company.create", {
59
31
  access: "write",
@@ -96,7 +68,7 @@ export default function keap(rl) {
96
68
  body.phone_number = phone;
97
69
  if (fax)
98
70
  body.fax_number = fax;
99
- return apiRequest(tok(ctx), "POST", "/companies", body);
71
+ return apiRequest(ctx, "POST", "companies", body);
100
72
  },
101
73
  });
102
74
  rl.registerAction("company.list", {
@@ -124,7 +96,7 @@ export default function keap(rl) {
124
96
  qs.offset = offset;
125
97
  if (optionalProperties)
126
98
  qs.optional_properties = optionalProperties;
127
- const data = (await apiRequest(tok(ctx), "GET", "/companies", undefined, qs));
99
+ const data = (await apiRequest(ctx, "GET", "companies", undefined, qs));
128
100
  return data.companies;
129
101
  },
130
102
  });
@@ -192,7 +164,7 @@ export default function keap(rl) {
192
164
  body.social_accounts = socialAccounts;
193
165
  if (additionalFields)
194
166
  Object.assign(body, additionalFields);
195
- return apiRequest(tok(ctx), "PUT", "/contacts", body);
167
+ return apiRequest(ctx, "PUT", "contacts", body);
196
168
  },
197
169
  });
198
170
  rl.registerAction("contact.get", {
@@ -211,7 +183,7 @@ export default function keap(rl) {
211
183
  const qs = {};
212
184
  if (optionalProperties)
213
185
  qs.optional_properties = optionalProperties;
214
- return apiRequest(tok(ctx), "GET", `/contacts/${contactId}`, undefined, qs);
186
+ return apiRequest(ctx, "GET", `contacts/${pathSegment(contactId)}`, undefined, qs);
215
187
  },
216
188
  });
217
189
  rl.registerAction("contact.list", {
@@ -250,7 +222,7 @@ export default function keap(rl) {
250
222
  qs.since = p.since;
251
223
  if (p.until)
252
224
  qs.until = p.until;
253
- const data = (await apiRequest(tok(ctx), "GET", "/contacts", undefined, qs));
225
+ const data = (await apiRequest(ctx, "GET", "contacts", undefined, qs));
254
226
  return data.contacts;
255
227
  },
256
228
  });
@@ -259,7 +231,7 @@ export default function keap(rl) {
259
231
  description: "Delete a contact",
260
232
  inputSchema: { contactId: { type: "number", required: true } },
261
233
  async execute(input, ctx) {
262
- await apiRequest(tok(ctx), "DELETE", `/contacts/${input.contactId}`);
234
+ await apiRequest(ctx, "DELETE", `contacts/${pathSegment(input.contactId)}`);
263
235
  return { success: true };
264
236
  },
265
237
  });
@@ -294,7 +266,7 @@ export default function keap(rl) {
294
266
  b.title = title;
295
267
  if (type)
296
268
  b.type = type;
297
- return apiRequest(tok(ctx), "POST", "/notes", b);
269
+ return apiRequest(ctx, "POST", "notes", b);
298
270
  },
299
271
  });
300
272
  rl.registerAction("contactNote.get", {
@@ -302,7 +274,7 @@ export default function keap(rl) {
302
274
  description: "Get a note",
303
275
  inputSchema: { noteId: { type: "number", required: true } },
304
276
  async execute(input, ctx) {
305
- return apiRequest(tok(ctx), "GET", `/notes/${input.noteId}`);
277
+ return apiRequest(ctx, "GET", `notes/${pathSegment(input.noteId)}`);
306
278
  },
307
279
  });
308
280
  rl.registerAction("contactNote.list", {
@@ -330,7 +302,7 @@ export default function keap(rl) {
330
302
  qs.contact_id = p.contactId;
331
303
  if (p.userId)
332
304
  qs.user_id = p.userId;
333
- const data = (await apiRequest(tok(ctx), "GET", "/notes", undefined, qs));
305
+ const data = (await apiRequest(ctx, "GET", "notes", undefined, qs));
334
306
  return data.notes;
335
307
  },
336
308
  });
@@ -352,7 +324,7 @@ export default function keap(rl) {
352
324
  bd.title = title;
353
325
  if (type)
354
326
  bd.type = type;
355
- return apiRequest(tok(ctx), "PATCH", `/notes/${noteId}`, bd);
327
+ return apiRequest(ctx, "PATCH", `notes/${pathSegment(noteId)}`, bd);
356
328
  },
357
329
  });
358
330
  rl.registerAction("contactNote.delete", {
@@ -360,7 +332,7 @@ export default function keap(rl) {
360
332
  description: "Delete a note",
361
333
  inputSchema: { noteId: { type: "number", required: true } },
362
334
  async execute(input, ctx) {
363
- await apiRequest(tok(ctx), "DELETE", `/notes/${input.noteId}`);
335
+ await apiRequest(ctx, "DELETE", `notes/${pathSegment(input.noteId)}`);
364
336
  return { success: true };
365
337
  },
366
338
  });
@@ -378,7 +350,7 @@ export default function keap(rl) {
378
350
  },
379
351
  async execute(input, ctx) {
380
352
  const { contactId, tagIds } = input;
381
- return apiRequest(tok(ctx), "POST", `/contacts/${contactId}/tags`, {
353
+ return apiRequest(ctx, "POST", `contacts/${pathSegment(contactId)}/tags`, {
382
354
  tagIds,
383
355
  });
384
356
  },
@@ -396,7 +368,7 @@ export default function keap(rl) {
396
368
  },
397
369
  async execute(input, ctx) {
398
370
  const { contactId, tagIds } = input;
399
- await apiRequest(tok(ctx), "DELETE", `/contacts/${contactId}/tags`, undefined, { ids: tagIds });
371
+ await apiRequest(ctx, "DELETE", `contacts/${pathSegment(contactId)}/tags`, undefined, { ids: tagIds });
400
372
  return { success: true };
401
373
  },
402
374
  });
@@ -412,7 +384,7 @@ export default function keap(rl) {
412
384
  const qs = {};
413
385
  if (limit)
414
386
  qs.limit = limit;
415
- const data = (await apiRequest(tok(ctx), "GET", `/contacts/${contactId}/tags`, undefined, qs));
387
+ const data = (await apiRequest(ctx, "GET", `contacts/${pathSegment(contactId)}/tags`, undefined, qs));
416
388
  return data.tags;
417
389
  },
418
390
  });
@@ -454,7 +426,7 @@ export default function keap(rl) {
454
426
  body.shipping_address = shippingAddress;
455
427
  if (additionalFields)
456
428
  Object.assign(body, additionalFields);
457
- return apiRequest(tok(ctx), "POST", "/orders", body);
429
+ return apiRequest(ctx, "POST", "orders", body);
458
430
  },
459
431
  });
460
432
  rl.registerAction("order.get", {
@@ -462,7 +434,7 @@ export default function keap(rl) {
462
434
  description: "Get an order",
463
435
  inputSchema: { orderId: { type: "number", required: true } },
464
436
  async execute(input, ctx) {
465
- return apiRequest(tok(ctx), "GET", `/orders/${input.orderId}`);
437
+ return apiRequest(ctx, "GET", `orders/${pathSegment(input.orderId)}`);
466
438
  },
467
439
  });
468
440
  rl.registerAction("order.list", {
@@ -485,7 +457,7 @@ export default function keap(rl) {
485
457
  qs.since = p.since;
486
458
  if (p.until)
487
459
  qs.until = p.until;
488
- const data = (await apiRequest(tok(ctx), "GET", "/orders", undefined, qs));
460
+ const data = (await apiRequest(ctx, "GET", "orders", undefined, qs));
489
461
  return data.orders;
490
462
  },
491
463
  });
@@ -494,7 +466,7 @@ export default function keap(rl) {
494
466
  description: "Delete an order",
495
467
  inputSchema: { orderId: { type: "number", required: true } },
496
468
  async execute(input, ctx) {
497
- await apiRequest(tok(ctx), "DELETE", `/orders/${input.orderId}`);
469
+ await apiRequest(ctx, "DELETE", `orders/${pathSegment(input.orderId)}`);
498
470
  return { success: true };
499
471
  },
500
472
  });
@@ -515,7 +487,7 @@ export default function keap(rl) {
515
487
  const body = { product_name: productName };
516
488
  if (additionalFields)
517
489
  Object.assign(body, additionalFields);
518
- return apiRequest(tok(ctx), "POST", "/products", body);
490
+ return apiRequest(ctx, "POST", "products", body);
519
491
  },
520
492
  });
521
493
  rl.registerAction("product.get", {
@@ -523,7 +495,7 @@ export default function keap(rl) {
523
495
  description: "Get a product",
524
496
  inputSchema: { productId: { type: "number", required: true } },
525
497
  async execute(input, ctx) {
526
- return apiRequest(tok(ctx), "GET", `/products/${input.productId}`);
498
+ return apiRequest(ctx, "GET", `products/${pathSegment(input.productId)}`);
527
499
  },
528
500
  });
529
501
  rl.registerAction("product.list", {
@@ -534,7 +506,7 @@ export default function keap(rl) {
534
506
  const qs = {};
535
507
  if (input?.limit)
536
508
  qs.limit = input.limit;
537
- const data = (await apiRequest(tok(ctx), "GET", "/products", undefined, qs));
509
+ const data = (await apiRequest(ctx, "GET", "products", undefined, qs));
538
510
  return data.products;
539
511
  },
540
512
  });
@@ -543,7 +515,7 @@ export default function keap(rl) {
543
515
  description: "Delete a product",
544
516
  inputSchema: { productId: { type: "number", required: true } },
545
517
  async execute(input, ctx) {
546
- await apiRequest(tok(ctx), "DELETE", `/products/${input.productId}`);
518
+ await apiRequest(ctx, "DELETE", `products/${pathSegment(input.productId)}`);
547
519
  return { success: true };
548
520
  },
549
521
  });
@@ -568,7 +540,7 @@ export default function keap(rl) {
568
540
  };
569
541
  if (additionalFields)
570
542
  Object.assign(body, additionalFields);
571
- return apiRequest(tok(ctx), "POST", "/emails", body);
543
+ return apiRequest(ctx, "POST", "emails", body);
572
544
  },
573
545
  });
574
546
  rl.registerAction("email.delete", {
@@ -576,7 +548,7 @@ export default function keap(rl) {
576
548
  description: "Delete an email record",
577
549
  inputSchema: { emailRecordId: { type: "number", required: true } },
578
550
  async execute(input, ctx) {
579
- await apiRequest(tok(ctx), "DELETE", `/emails/${input.emailRecordId}`);
551
+ await apiRequest(ctx, "DELETE", `emails/${pathSegment(input.emailRecordId)}`);
580
552
  return { success: true };
581
553
  },
582
554
  });
@@ -600,7 +572,7 @@ export default function keap(rl) {
600
572
  qs.email = p.email;
601
573
  if (p.sinceDate)
602
574
  qs.since_sent_date = p.sinceDate;
603
- const data = (await apiRequest(tok(ctx), "GET", "/emails", undefined, qs));
575
+ const data = (await apiRequest(ctx, "GET", "emails", undefined, qs));
604
576
  return data.emails;
605
577
  },
606
578
  });
@@ -640,7 +612,7 @@ export default function keap(rl) {
640
612
  body.plain_content = plainContent;
641
613
  if (attachments)
642
614
  body.attachments = attachments;
643
- await apiRequest(tok(ctx), "POST", "/emails/queue", body);
615
+ await apiRequest(ctx, "POST", "emails/queue", body);
644
616
  return { success: true };
645
617
  },
646
618
  });
@@ -650,7 +622,7 @@ export default function keap(rl) {
650
622
  description: "Delete a file",
651
623
  inputSchema: { fileId: { type: "number", required: true } },
652
624
  async execute(input, ctx) {
653
- await apiRequest(tok(ctx), "DELETE", `/files/${input.fileId}`);
625
+ await apiRequest(ctx, "DELETE", `files/${pathSegment(input.fileId)}`);
654
626
  return { success: true };
655
627
  },
656
628
  });
@@ -689,7 +661,7 @@ export default function keap(rl) {
689
661
  qs.viewable = p.viewable.toUpperCase();
690
662
  if (p.contactId)
691
663
  qs.contact_id = p.contactId;
692
- const data = (await apiRequest(tok(ctx), "GET", "/files", undefined, qs));
664
+ const data = (await apiRequest(ctx, "GET", "files", undefined, qs));
693
665
  return data.files;
694
666
  },
695
667
  });
@@ -0,0 +1,13 @@
1
+ import { httpsBase, staticCredential } from "../../_shared/credentials.js";
2
+ /** An API token, sent as `Authorization: Token …` to the server in config. */
3
+ export const kobotoolboxCredential = staticCredential({
4
+ id: "kobotoolbox",
5
+ auth: { kind: "apiKey", header: "Authorization", prefix: "Token " },
6
+ local: { secret: "token" },
7
+ targets: (config) => ({
8
+ api: {
9
+ baseUrl: httpsBase(config.url, "api/v2/"),
10
+ methods: ["GET", "POST", "PATCH", "DELETE"],
11
+ },
12
+ }),
13
+ });
@@ -1,51 +1,33 @@
1
- async function apiRequest(baseUrl, token, method, endpoint, body, qs) {
2
- const url = new URL(`${baseUrl}${endpoint}`);
3
- if (qs) {
4
- for (const [k, v] of Object.entries(qs)) {
5
- if (v !== undefined && v !== null)
6
- url.searchParams.set(k, String(v));
7
- }
8
- }
9
- const opts = {
1
+ import { credentialJson, pathSegment, pathWithin, } from "../../_shared/credentials.js";
2
+ import { kobotoolboxCredential } from "./credentials.js";
3
+ function apiRequest(ctx, method, endpoint, body, qs) {
4
+ return credentialJson(ctx, kobotoolboxCredential, "kobotoolbox", {
5
+ target: "api",
6
+ path: endpoint,
10
7
  method,
11
- headers: {
12
- Authorization: `Token ${token}`,
13
- Accept: "application/json",
14
- "Content-Type": "application/json",
15
- },
16
- };
17
- if (body &&
18
- Object.keys(body).length > 0 &&
19
- method !== "GET" &&
20
- method !== "DELETE")
21
- opts.body = JSON.stringify(body);
22
- const res = await fetch(url.toString(), opts);
23
- if (!res.ok)
24
- throw new Error(`KoBoToolbox API error ${res.status}: ${await res.text()}`);
25
- if (res.status === 204)
26
- return { success: true };
27
- return res.json();
8
+ query: qs,
9
+ ...(body &&
10
+ Object.keys(body).length > 0 &&
11
+ method !== "GET" &&
12
+ method !== "DELETE"
13
+ ? { json: body }
14
+ : {}),
15
+ });
28
16
  }
29
- async function paginate(baseUrl, token, endpoint, qs = {}) {
17
+ async function paginate(ctx, endpoint, qs = {}) {
30
18
  const all = [];
31
19
  qs.limit = 3000;
32
- let nextUrl = `${baseUrl}${endpoint}`;
33
- const initialUrl = new URL(nextUrl);
34
- for (const [k, v] of Object.entries(qs)) {
35
- if (v !== undefined && v !== null)
36
- initialUrl.searchParams.set(k, String(v));
37
- }
38
- nextUrl = initialUrl.toString();
39
- while (nextUrl) {
40
- const res = await fetch(nextUrl, {
41
- headers: { Authorization: `Token ${token}`, Accept: "application/json" },
42
- });
43
- if (!res.ok)
44
- throw new Error(`KoBoToolbox API error ${res.status}: ${await res.text()}`);
45
- const data = (await res.json());
46
- if (data.results && Array.isArray(data.results)) {
20
+ let path = endpoint;
21
+ let query = qs;
22
+ while (path) {
23
+ const data = (await apiRequest(ctx, "GET", path, undefined, query));
24
+ query = undefined;
25
+ if (!Array.isArray(data) && data.results && Array.isArray(data.results)) {
47
26
  all.push(...data.results);
48
- nextUrl = data.next ?? null;
27
+ const next = data.next;
28
+ path = next
29
+ ? pathWithin(ctx, kobotoolboxCredential, "api", next)
30
+ : undefined;
49
31
  }
50
32
  else {
51
33
  // Non-paginated response
@@ -57,6 +39,7 @@ async function paginate(baseUrl, token, endpoint, qs = {}) {
57
39
  export default function kobotoolbox(rl) {
58
40
  rl.setName("kobotoolbox");
59
41
  rl.setVersion("0.1.0");
42
+ rl.setCredential(kobotoolboxCredential);
60
43
  rl.setConnectionSchema({
61
44
  url: {
62
45
  type: "string",
@@ -71,10 +54,6 @@ export default function kobotoolbox(rl) {
71
54
  env: "KOBOTOOLBOX_TOKEN",
72
55
  },
73
56
  });
74
- const conn = (ctx) => ({
75
- baseUrl: ctx.connection.config.url.replace(/\/$/, ""),
76
- token: ctx.connection.config.token,
77
- });
78
57
  // ── Form ────────────────────────────────────────────
79
58
  rl.registerAction("form.get", {
80
59
  access: "read",
@@ -83,8 +62,7 @@ export default function kobotoolbox(rl) {
83
62
  formId: { type: "string", required: true, description: "Form/asset UID" },
84
63
  },
85
64
  async execute(input, ctx) {
86
- const { baseUrl, token } = conn(ctx);
87
- return apiRequest(baseUrl, token, "GET", `/api/v2/assets/${input.formId}`);
65
+ return apiRequest(ctx, "GET", `assets/${pathSegment(input.formId)}`);
88
66
  },
89
67
  });
90
68
  rl.registerAction("form.list", {
@@ -109,7 +87,6 @@ export default function kobotoolbox(rl) {
109
87
  },
110
88
  },
111
89
  async execute(input, ctx) {
112
- const { baseUrl, token } = conn(ctx);
113
90
  const p = (input ?? {});
114
91
  const qs = {};
115
92
  if (p.filter)
@@ -118,9 +95,9 @@ export default function kobotoolbox(rl) {
118
95
  qs.ordering = (p.descending ? "-" : "") + p.ordering;
119
96
  if (p.limit) {
120
97
  qs.limit = p.limit;
121
- return apiRequest(baseUrl, token, "GET", "/api/v2/assets/", undefined, qs);
98
+ return apiRequest(ctx, "GET", "assets/", undefined, qs);
122
99
  }
123
- return paginate(baseUrl, token, "/api/v2/assets/", qs);
100
+ return paginate(ctx, "assets/", qs);
124
101
  },
125
102
  });
126
103
  rl.registerAction("form.redeploy", {
@@ -128,8 +105,7 @@ export default function kobotoolbox(rl) {
128
105
  description: "Redeploy a form",
129
106
  inputSchema: { formId: { type: "string", required: true } },
130
107
  async execute(input, ctx) {
131
- const { baseUrl, token } = conn(ctx);
132
- return apiRequest(baseUrl, token, "PATCH", `/api/v2/assets/${input.formId}/deployment/`);
108
+ return apiRequest(ctx, "PATCH", `assets/${pathSegment(input.formId)}/deployment/`);
133
109
  },
134
110
  });
135
111
  // ── Submission ──────────────────────────────────────
@@ -147,11 +123,10 @@ export default function kobotoolbox(rl) {
147
123
  },
148
124
  async execute(input, ctx) {
149
125
  const { formId, submissionId, fields } = input;
150
- const { baseUrl, token } = conn(ctx);
151
126
  const qs = {};
152
127
  if (fields && Array.isArray(fields))
153
128
  qs.fields = JSON.stringify(fields);
154
- return apiRequest(baseUrl, token, "GET", `/api/v2/assets/${formId}/data/${submissionId}`, undefined, qs);
129
+ return apiRequest(ctx, "GET", `assets/${pathSegment(formId)}/data/${pathSegment(submissionId)}`, undefined, qs);
155
130
  },
156
131
  });
157
132
  rl.registerAction("submission.list", {
@@ -174,7 +149,6 @@ export default function kobotoolbox(rl) {
174
149
  },
175
150
  async execute(input, ctx) {
176
151
  const p = input;
177
- const { baseUrl, token } = conn(ctx);
178
152
  const qs = {};
179
153
  if (p.query)
180
154
  qs.query = p.query;
@@ -184,10 +158,10 @@ export default function kobotoolbox(rl) {
184
158
  qs.fields = JSON.stringify(p.fields);
185
159
  if (p.limit) {
186
160
  qs.limit = p.limit;
187
- const data = (await apiRequest(baseUrl, token, "GET", `/api/v2/assets/${p.formId}/data/`, undefined, qs));
161
+ const data = (await apiRequest(ctx, "GET", `assets/${pathSegment(p.formId)}/data/`, undefined, qs));
188
162
  return data.results ?? data;
189
163
  }
190
- return paginate(baseUrl, token, `/api/v2/assets/${p.formId}/data/`, qs);
164
+ return paginate(ctx, `assets/${pathSegment(p.formId)}/data/`, qs);
191
165
  },
192
166
  });
193
167
  rl.registerAction("submission.delete", {
@@ -199,8 +173,7 @@ export default function kobotoolbox(rl) {
199
173
  },
200
174
  async execute(input, ctx) {
201
175
  const { formId, submissionId } = input;
202
- const { baseUrl, token } = conn(ctx);
203
- await apiRequest(baseUrl, token, "DELETE", `/api/v2/assets/${formId}/data/${submissionId}`);
176
+ await apiRequest(ctx, "DELETE", `assets/${pathSegment(formId)}/data/${pathSegment(submissionId)}`);
204
177
  return { success: true };
205
178
  },
206
179
  });
@@ -213,8 +186,7 @@ export default function kobotoolbox(rl) {
213
186
  },
214
187
  async execute(input, ctx) {
215
188
  const { formId, submissionId } = input;
216
- const { baseUrl, token } = conn(ctx);
217
- return apiRequest(baseUrl, token, "GET", `/api/v2/assets/${formId}/data/${submissionId}/validation_status/`);
189
+ return apiRequest(ctx, "GET", `assets/${pathSegment(formId)}/data/${pathSegment(submissionId)}/validation_status/`);
218
190
  },
219
191
  });
220
192
  rl.registerAction("submission.setValidation", {
@@ -231,8 +203,7 @@ export default function kobotoolbox(rl) {
231
203
  },
232
204
  async execute(input, ctx) {
233
205
  const { formId, submissionId, validationStatus } = input;
234
- const { baseUrl, token } = conn(ctx);
235
- return apiRequest(baseUrl, token, "PATCH", `/api/v2/assets/${formId}/data/${submissionId}/validation_status/`, { "validation_status.uid": validationStatus });
206
+ return apiRequest(ctx, "PATCH", `assets/${pathSegment(formId)}/data/${pathSegment(submissionId)}/validation_status/`, { "validation_status.uid": validationStatus });
236
207
  },
237
208
  });
238
209
  // ── Hook ────────────────────────────────────────────
@@ -245,8 +216,7 @@ export default function kobotoolbox(rl) {
245
216
  },
246
217
  async execute(input, ctx) {
247
218
  const { formId, hookId } = input;
248
- const { baseUrl, token } = conn(ctx);
249
- return apiRequest(baseUrl, token, "GET", `/api/v2/assets/${formId}/hooks/${hookId}`);
219
+ return apiRequest(ctx, "GET", `assets/${pathSegment(formId)}/hooks/${pathSegment(hookId)}`);
250
220
  },
251
221
  });
252
222
  rl.registerAction("hook.list", {
@@ -258,10 +228,9 @@ export default function kobotoolbox(rl) {
258
228
  },
259
229
  async execute(input, ctx) {
260
230
  const { formId, limit } = input;
261
- const { baseUrl, token } = conn(ctx);
262
231
  if (limit)
263
- return apiRequest(baseUrl, token, "GET", `/api/v2/assets/${formId}/hooks/`, undefined, { limit });
264
- return paginate(baseUrl, token, `/api/v2/assets/${formId}/hooks/`);
232
+ return apiRequest(ctx, "GET", `assets/${pathSegment(formId)}/hooks/`, undefined, { limit });
233
+ return paginate(ctx, `assets/${pathSegment(formId)}/hooks/`);
265
234
  },
266
235
  });
267
236
  rl.registerAction("hook.retryAll", {
@@ -273,8 +242,7 @@ export default function kobotoolbox(rl) {
273
242
  },
274
243
  async execute(input, ctx) {
275
244
  const { formId, hookId } = input;
276
- const { baseUrl, token } = conn(ctx);
277
- return apiRequest(baseUrl, token, "PATCH", `/api/v2/assets/${formId}/hooks/${hookId}/retry/`);
245
+ return apiRequest(ctx, "PATCH", `assets/${pathSegment(formId)}/hooks/${pathSegment(hookId)}/retry/`);
278
246
  },
279
247
  });
280
248
  rl.registerAction("hook.getLogs", {
@@ -301,7 +269,6 @@ export default function kobotoolbox(rl) {
301
269
  },
302
270
  async execute(input, ctx) {
303
271
  const { formId, hookId, startDate, endDate, status } = input;
304
- const { baseUrl, token } = conn(ctx);
305
272
  const qs = {};
306
273
  if (startDate)
307
274
  qs.start = startDate;
@@ -309,7 +276,7 @@ export default function kobotoolbox(rl) {
309
276
  qs.end = endDate;
310
277
  if (status)
311
278
  qs.status = status;
312
- return apiRequest(baseUrl, token, "GET", `/api/v2/assets/${formId}/hooks/${hookId}/logs/`, undefined, qs);
279
+ return apiRequest(ctx, "GET", `assets/${pathSegment(formId)}/hooks/${pathSegment(hookId)}/logs/`, undefined, qs);
313
280
  },
314
281
  });
315
282
  rl.registerAction("hook.retryOne", {
@@ -322,8 +289,7 @@ export default function kobotoolbox(rl) {
322
289
  },
323
290
  async execute(input, ctx) {
324
291
  const { formId, hookId, logId } = input;
325
- const { baseUrl, token } = conn(ctx);
326
- return apiRequest(baseUrl, token, "PATCH", `/api/v2/assets/${formId}/hooks/${hookId}/logs/${logId}/retry/`);
292
+ return apiRequest(ctx, "PATCH", `assets/${pathSegment(formId)}/hooks/${pathSegment(hookId)}/logs/${pathSegment(logId)}/retry/`);
327
293
  },
328
294
  });
329
295
  // ── File ────────────────────────────────────────────
@@ -332,8 +298,7 @@ export default function kobotoolbox(rl) {
332
298
  description: "List media files for a form",
333
299
  inputSchema: { formId: { type: "string", required: true } },
334
300
  async execute(input, ctx) {
335
- const { baseUrl, token } = conn(ctx);
336
- return paginate(baseUrl, token, `/api/v2/assets/${input.formId}/files`, { file_type: "form_media" });
301
+ return paginate(ctx, `assets/${pathSegment(input.formId)}/files`, { file_type: "form_media" });
337
302
  },
338
303
  });
339
304
  rl.registerAction("file.get", {
@@ -345,8 +310,7 @@ export default function kobotoolbox(rl) {
345
310
  },
346
311
  async execute(input, ctx) {
347
312
  const { formId, fileId } = input;
348
- const { baseUrl, token } = conn(ctx);
349
- return apiRequest(baseUrl, token, "GET", `/api/v2/assets/${formId}/files/${fileId}`);
313
+ return apiRequest(ctx, "GET", `assets/${pathSegment(formId)}/files/${pathSegment(fileId)}`);
350
314
  },
351
315
  });
352
316
  rl.registerAction("file.delete", {
@@ -358,8 +322,7 @@ export default function kobotoolbox(rl) {
358
322
  },
359
323
  async execute(input, ctx) {
360
324
  const { formId, fileId } = input;
361
- const { baseUrl, token } = conn(ctx);
362
- return apiRequest(baseUrl, token, "DELETE", `/api/v2/assets/${formId}/files/${fileId}`);
325
+ return apiRequest(ctx, "DELETE", `assets/${pathSegment(formId)}/files/${pathSegment(fileId)}`);
363
326
  },
364
327
  });
365
328
  rl.registerAction("file.createFromUrl", {
@@ -375,8 +338,7 @@ export default function kobotoolbox(rl) {
375
338
  },
376
339
  async execute(input, ctx) {
377
340
  const { formId, redirectUrl } = input;
378
- const { baseUrl, token } = conn(ctx);
379
- return apiRequest(baseUrl, token, "POST", `/api/v2/assets/${formId}/files/`, {
341
+ return apiRequest(ctx, "POST", `assets/${pathSegment(formId)}/files/`, {
380
342
  description: "Uploaded file",
381
343
  file_type: "form_media",
382
344
  metadata: { redirect_url: redirectUrl },
@@ -0,0 +1,19 @@
1
+ import { staticCredential } from "../../_shared/credentials.js";
2
+ /** The API key as the Basic password with an empty username. */
3
+ export const lemlistCredential = staticCredential({
4
+ id: "lemlist",
5
+ auth: { kind: "basic" },
6
+ local: { username: { value: "" }, password: "apiKey" },
7
+ targets: {
8
+ api: {
9
+ baseUrl: "https://api.lemlist.com/api/",
10
+ methods: ["GET", "POST", "DELETE"],
11
+ },
12
+ },
13
+ probe: {
14
+ target: "api",
15
+ path: "team",
16
+ method: "GET",
17
+ acceptedStatuses: [200],
18
+ },
19
+ });