@oomol-lab/open-connector 1.9.1 → 1.9.2

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 (461) hide show
  1. package/assets/open-connector/catalog/apps/aisa.json +1946 -56
  2. package/assets/open-connector/catalog/apps/akta.json +1181 -0
  3. package/assets/open-connector/catalog/apps/asana.json +110 -0
  4. package/assets/open-connector/catalog/apps/calendly.json +103 -0
  5. package/assets/open-connector/catalog/apps/clickup.json +104 -0
  6. package/assets/open-connector/catalog/apps/cloro.json +9289 -0
  7. package/assets/open-connector/catalog/apps/contextdev.json +20670 -0
  8. package/assets/open-connector/catalog/apps/deepseek.json +177 -0
  9. package/assets/open-connector/catalog/apps/defillama.json +23747 -0
  10. package/assets/open-connector/catalog/apps/fireflies.json +103 -0
  11. package/assets/open-connector/catalog/apps/fundable.json +7926 -0
  12. package/assets/open-connector/catalog/apps/intercom.json +110 -0
  13. package/assets/open-connector/catalog/apps/jira.json +110 -0
  14. package/assets/open-connector/catalog/apps/keenable.json +235 -0
  15. package/assets/open-connector/catalog/apps/kolsprite_mcp.json +1227 -0
  16. package/assets/open-connector/catalog/apps/litescrape.json +52514 -0
  17. package/assets/open-connector/catalog/apps/magichour.json +5926 -0
  18. package/assets/open-connector/catalog/apps/minimax.json +24 -14
  19. package/assets/open-connector/catalog/apps/notion.json +731 -76
  20. package/assets/open-connector/catalog/apps/octen.json +5248 -0
  21. package/assets/open-connector/catalog/apps/openrouter.json +10 -0
  22. package/assets/open-connector/catalog/apps/orbit.json +3574 -0
  23. package/assets/open-connector/catalog/apps/pandadoc.json +68 -0
  24. package/assets/open-connector/catalog/apps/pipedrive.json +86 -0
  25. package/assets/open-connector/catalog/apps/ploid.json +9802 -0
  26. package/assets/open-connector/catalog/apps/resend.json +100 -0
  27. package/assets/open-connector/catalog/apps/salesforce.json +2487 -119
  28. package/assets/open-connector/catalog/apps/saperly.json +7056 -0
  29. package/assets/open-connector/catalog/apps/search1api.json +2382 -0
  30. package/assets/open-connector/catalog/apps/sentry.json +129 -0
  31. package/assets/open-connector/catalog/apps/slackbot.json +230 -1
  32. package/assets/open-connector/catalog/apps/surf.json +11378 -0
  33. package/assets/open-connector/catalog/apps/tally.json +113 -0
  34. package/assets/open-connector/catalog/apps/tinyfish.json +6154 -0
  35. package/assets/open-connector/catalog/apps/typeform.json +90 -1
  36. package/assets/open-connector/catalog/apps/vaquill.json +5944 -0
  37. package/assets/open-connector/catalog/apps/vercel.json +110 -0
  38. package/assets/open-connector/catalog/apps/weixin_store.json +1256 -7
  39. package/assets/open-connector/catalog/apps/zoom.json +112 -0
  40. package/assets/open-connector/catalog/apps-index.json +1 -1
  41. package/package.json +1 -1
  42. package/src/core/json-schema.d.ts +11 -3
  43. package/src/core/json-schema.js +13 -3
  44. package/src/providers/action-contracts.generated.d.ts +23 -6
  45. package/src/providers/aisa/executors.js +238 -6
  46. package/src/providers/aisa/firecrawl-actions.d.ts +9 -0
  47. package/src/providers/aisa/firecrawl-actions.js +115 -0
  48. package/src/providers/akta/actions.d.ts +9 -0
  49. package/src/providers/akta/actions.js +420 -0
  50. package/src/providers/akta/executors.d.ts +4 -0
  51. package/src/providers/akta/executors.js +103 -0
  52. package/src/providers/asana/executors.d.ts +2 -0
  53. package/src/providers/asana/executors.js +2 -0
  54. package/src/providers/asana/trigger-on-task-event.d.ts +2 -0
  55. package/src/providers/asana/trigger-on-task-event.definition.d.ts +4 -0
  56. package/src/providers/asana/trigger-on-task-event.definition.js +42 -0
  57. package/src/providers/asana/trigger-on-task-event.js +160 -0
  58. package/src/providers/calendly/executors.d.ts +2 -0
  59. package/src/providers/calendly/executors.js +2 -0
  60. package/src/providers/calendly/trigger-on-booking-event.d.ts +2 -0
  61. package/src/providers/calendly/trigger-on-booking-event.definition.d.ts +5 -0
  62. package/src/providers/calendly/trigger-on-booking-event.definition.js +42 -0
  63. package/src/providers/calendly/trigger-on-booking-event.js +144 -0
  64. package/src/providers/clickup/executors.d.ts +2 -0
  65. package/src/providers/clickup/executors.js +2 -0
  66. package/src/providers/clickup/trigger-on-task-event.d.ts +2 -0
  67. package/src/providers/clickup/trigger-on-task-event.definition.d.ts +4 -0
  68. package/src/providers/clickup/trigger-on-task-event.definition.js +41 -0
  69. package/src/providers/clickup/trigger-on-task-event.js +94 -0
  70. package/src/providers/cloro/actions.d.ts +12 -0
  71. package/src/providers/cloro/actions.js +155 -0
  72. package/src/providers/cloro/executors.d.ts +4 -0
  73. package/src/providers/cloro/executors.js +67 -0
  74. package/src/providers/cloro/inputs.d.ts +10 -0
  75. package/src/providers/cloro/inputs.js +680 -0
  76. package/src/providers/contextdev/actions.d.ts +14 -0
  77. package/src/providers/contextdev/actions.js +647 -0
  78. package/src/providers/contextdev/executors.d.ts +4 -0
  79. package/src/providers/contextdev/executors.js +109 -0
  80. package/src/providers/contextdev/files.d.ts +3 -0
  81. package/src/providers/contextdev/files.js +49 -0
  82. package/src/providers/contextdev/input-schemas.d.ts +49 -0
  83. package/src/providers/contextdev/input-schemas.js +3082 -0
  84. package/src/providers/contextdev/output-schemas.d.ts +49 -0
  85. package/src/providers/contextdev/output-schemas.js +1599 -0
  86. package/src/providers/deepseek/executors.d.ts +0 -5
  87. package/src/providers/deepseek/executors.js +38 -25
  88. package/src/providers/defillama/actions.d.ts +24 -0
  89. package/src/providers/defillama/actions.js +24 -0
  90. package/src/providers/defillama/dimensions-definitions.d.ts +2 -0
  91. package/src/providers/defillama/dimensions-definitions.js +1387 -0
  92. package/src/providers/defillama/ecosystem-definitions.d.ts +2 -0
  93. package/src/providers/defillama/ecosystem-definitions.js +758 -0
  94. package/src/providers/defillama/equities-definitions.d.ts +2 -0
  95. package/src/providers/defillama/equities-definitions.js +733 -0
  96. package/src/providers/defillama/executors.d.ts +4 -0
  97. package/src/providers/defillama/executors.js +196 -0
  98. package/src/providers/defillama/markets-definitions.d.ts +2 -0
  99. package/src/providers/defillama/markets-definitions.js +624 -0
  100. package/src/providers/defillama/shared-schemas.d.ts +71 -0
  101. package/src/providers/defillama/shared-schemas.js +157 -0
  102. package/src/providers/defillama/tvl-definitions.d.ts +2 -0
  103. package/src/providers/defillama/tvl-definitions.js +546 -0
  104. package/src/providers/defillama/yields-definitions.d.ts +2 -0
  105. package/src/providers/defillama/yields-definitions.js +766 -0
  106. package/src/providers/feishu_app_bot/trigger-on-event.js +2 -0
  107. package/src/providers/fireflies/executors.d.ts +2 -0
  108. package/src/providers/fireflies/executors.js +2 -0
  109. package/src/providers/fireflies/trigger-on-meeting-ready.d.ts +2 -0
  110. package/src/providers/fireflies/trigger-on-meeting-ready.definition.d.ts +4 -0
  111. package/src/providers/fireflies/trigger-on-meeting-ready.definition.js +44 -0
  112. package/src/providers/fireflies/trigger-on-meeting-ready.js +60 -0
  113. package/src/providers/fundable/actions.d.ts +8 -0
  114. package/src/providers/fundable/actions.js +1515 -0
  115. package/src/providers/fundable/executors.d.ts +4 -0
  116. package/src/providers/fundable/executors.js +74 -0
  117. package/src/providers/gmail/message.d.ts +1 -6
  118. package/src/providers/gmail/message.js +1 -1
  119. package/src/providers/intercom/executors.d.ts +2 -0
  120. package/src/providers/intercom/executors.js +2 -0
  121. package/src/providers/intercom/trigger-on-conversation-event.d.ts +2 -0
  122. package/src/providers/intercom/trigger-on-conversation-event.definition.d.ts +4 -0
  123. package/src/providers/intercom/trigger-on-conversation-event.definition.js +42 -0
  124. package/src/providers/intercom/trigger-on-conversation-event.js +23 -0
  125. package/src/providers/jira/executors.d.ts +2 -0
  126. package/src/providers/jira/executors.js +2 -0
  127. package/src/providers/jira/trigger-on-issue-event.d.ts +2 -0
  128. package/src/providers/jira/trigger-on-issue-event.definition.d.ts +4 -0
  129. package/src/providers/jira/trigger-on-issue-event.definition.js +44 -0
  130. package/src/providers/jira/trigger-on-issue-event.js +116 -0
  131. package/src/providers/jira/trigger-resource.d.ts +4 -0
  132. package/src/providers/jira/trigger-resource.js +141 -0
  133. package/src/providers/keenable/executors.d.ts +4 -0
  134. package/src/providers/keenable/executors.js +20 -0
  135. package/src/providers/keenable/runtime.d.ts +26 -0
  136. package/src/providers/keenable/runtime.js +89 -0
  137. package/src/providers/kolsprite_mcp/actions.d.ts +2 -0
  138. package/src/providers/kolsprite_mcp/actions.js +519 -0
  139. package/src/providers/kolsprite_mcp/executors.d.ts +4 -0
  140. package/src/providers/kolsprite_mcp/executors.js +89 -0
  141. package/src/providers/litescrape/actions.d.ts +12 -0
  142. package/src/providers/litescrape/actions.js +124 -0
  143. package/src/providers/litescrape/airbnb-schemas.d.ts +2 -0
  144. package/src/providers/litescrape/airbnb-schemas.js +72 -0
  145. package/src/providers/litescrape/aliexpress-schemas.d.ts +2 -0
  146. package/src/providers/litescrape/aliexpress-schemas.js +52 -0
  147. package/src/providers/litescrape/amazon-schemas.d.ts +2 -0
  148. package/src/providers/litescrape/amazon-schemas.js +358 -0
  149. package/src/providers/litescrape/apartments-schemas.d.ts +2 -0
  150. package/src/providers/litescrape/apartments-schemas.js +45 -0
  151. package/src/providers/litescrape/apple-schemas.d.ts +2 -0
  152. package/src/providers/litescrape/apple-schemas.js +215 -0
  153. package/src/providers/litescrape/ashby-schemas.d.ts +2 -0
  154. package/src/providers/litescrape/ashby-schemas.js +82 -0
  155. package/src/providers/litescrape/baidu-schemas.d.ts +2 -0
  156. package/src/providers/litescrape/baidu-schemas.js +31 -0
  157. package/src/providers/litescrape/bestbuy-schemas.d.ts +2 -0
  158. package/src/providers/litescrape/bestbuy-schemas.js +56 -0
  159. package/src/providers/litescrape/bing-schemas.d.ts +2 -0
  160. package/src/providers/litescrape/bing-schemas.js +315 -0
  161. package/src/providers/litescrape/brave-schemas.d.ts +2 -0
  162. package/src/providers/litescrape/brave-schemas.js +101 -0
  163. package/src/providers/litescrape/copilot-schemas.d.ts +2 -0
  164. package/src/providers/litescrape/copilot-schemas.js +590 -0
  165. package/src/providers/litescrape/duckduckgo-schemas.d.ts +2 -0
  166. package/src/providers/litescrape/duckduckgo-schemas.js +64 -0
  167. package/src/providers/litescrape/ebay-schemas.d.ts +2 -0
  168. package/src/providers/litescrape/ebay-schemas.js +300 -0
  169. package/src/providers/litescrape/etsy-schemas.d.ts +2 -0
  170. package/src/providers/litescrape/etsy-schemas.js +52 -0
  171. package/src/providers/litescrape/eventbrite-schemas.d.ts +2 -0
  172. package/src/providers/litescrape/eventbrite-schemas.js +43 -0
  173. package/src/providers/litescrape/executors.d.ts +4 -0
  174. package/src/providers/litescrape/executors.js +138 -0
  175. package/src/providers/litescrape/facebook-schemas.d.ts +2 -0
  176. package/src/providers/litescrape/facebook-schemas.js +283 -0
  177. package/src/providers/litescrape/glassdoor-schemas.d.ts +2 -0
  178. package/src/providers/litescrape/glassdoor-schemas.js +147 -0
  179. package/src/providers/litescrape/google-schemas.d.ts +2 -0
  180. package/src/providers/litescrape/google-schemas.js +1686 -0
  181. package/src/providers/litescrape/homedepot-schemas.d.ts +2 -0
  182. package/src/providers/litescrape/homedepot-schemas.js +58 -0
  183. package/src/providers/litescrape/homes-schemas.d.ts +2 -0
  184. package/src/providers/litescrape/homes-schemas.js +45 -0
  185. package/src/providers/litescrape/ikea-schemas.d.ts +2 -0
  186. package/src/providers/litescrape/ikea-schemas.js +56 -0
  187. package/src/providers/litescrape/indeed-schemas.d.ts +2 -0
  188. package/src/providers/litescrape/indeed-schemas.js +141 -0
  189. package/src/providers/litescrape/instagram-schemas.d.ts +2 -0
  190. package/src/providers/litescrape/instagram-schemas.js +234 -0
  191. package/src/providers/litescrape/kroger-schemas.d.ts +2 -0
  192. package/src/providers/litescrape/kroger-schemas.js +62 -0
  193. package/src/providers/litescrape/levels-schemas.d.ts +2 -0
  194. package/src/providers/litescrape/levels-schemas.js +153 -0
  195. package/src/providers/litescrape/naver-schemas.d.ts +2 -0
  196. package/src/providers/litescrape/naver-schemas.js +107 -0
  197. package/src/providers/litescrape/realtor-schemas.d.ts +2 -0
  198. package/src/providers/litescrape/realtor-schemas.js +47 -0
  199. package/src/providers/litescrape/redfin-schemas.d.ts +2 -0
  200. package/src/providers/litescrape/redfin-schemas.js +112 -0
  201. package/src/providers/litescrape/shared.d.ts +9 -0
  202. package/src/providers/litescrape/shared.js +1 -0
  203. package/src/providers/litescrape/sprouts-schemas.d.ts +2 -0
  204. package/src/providers/litescrape/sprouts-schemas.js +72 -0
  205. package/src/providers/litescrape/target-schemas.d.ts +2 -0
  206. package/src/providers/litescrape/target-schemas.js +56 -0
  207. package/src/providers/litescrape/tiktok-schemas.d.ts +2 -0
  208. package/src/providers/litescrape/tiktok-schemas.js +625 -0
  209. package/src/providers/litescrape/tools.d.ts +2 -0
  210. package/src/providers/litescrape/tools.js +88 -0
  211. package/src/providers/litescrape/tripadvisor-schemas.d.ts +2 -0
  212. package/src/providers/litescrape/tripadvisor-schemas.js +119 -0
  213. package/src/providers/litescrape/walmart-schemas.d.ts +2 -0
  214. package/src/providers/litescrape/walmart-schemas.js +52 -0
  215. package/src/providers/litescrape/wayfair-schemas.d.ts +2 -0
  216. package/src/providers/litescrape/wayfair-schemas.js +52 -0
  217. package/src/providers/litescrape/web-schemas.d.ts +2 -0
  218. package/src/providers/litescrape/web-schemas.js +463 -0
  219. package/src/providers/litescrape/wholefoods-schemas.d.ts +2 -0
  220. package/src/providers/litescrape/wholefoods-schemas.js +56 -0
  221. package/src/providers/litescrape/x-schemas.d.ts +2 -0
  222. package/src/providers/litescrape/x-schemas.js +128 -0
  223. package/src/providers/litescrape/yahoo-schemas.d.ts +2 -0
  224. package/src/providers/litescrape/yahoo-schemas.js +234 -0
  225. package/src/providers/litescrape/yandex-schemas.d.ts +2 -0
  226. package/src/providers/litescrape/yandex-schemas.js +179 -0
  227. package/src/providers/litescrape/yelp-schemas.d.ts +2 -0
  228. package/src/providers/litescrape/yelp-schemas.js +130 -0
  229. package/src/providers/litescrape/youtube-schemas.d.ts +2 -0
  230. package/src/providers/litescrape/youtube-schemas.js +128 -0
  231. package/src/providers/litescrape/zillow-schemas.d.ts +2 -0
  232. package/src/providers/litescrape/zillow-schemas.js +128 -0
  233. package/src/providers/litescrape/ziprecruiter-schemas.d.ts +2 -0
  234. package/src/providers/litescrape/ziprecruiter-schemas.js +96 -0
  235. package/src/providers/magichour/actions.d.ts +22 -0
  236. package/src/providers/magichour/actions.js +308 -0
  237. package/src/providers/magichour/audio-schemas.d.ts +2 -0
  238. package/src/providers/magichour/audio-schemas.js +54 -0
  239. package/src/providers/magichour/executors.d.ts +4 -0
  240. package/src/providers/magichour/executors.js +115 -0
  241. package/src/providers/magichour/image-schemas.d.ts +2 -0
  242. package/src/providers/magichour/image-schemas.js +443 -0
  243. package/src/providers/magichour/project-schemas.d.ts +8 -0
  244. package/src/providers/magichour/project-schemas.js +65 -0
  245. package/src/providers/magichour/shared-schemas.d.ts +8 -0
  246. package/src/providers/magichour/shared-schemas.js +18 -0
  247. package/src/providers/magichour/utility-schemas.d.ts +11 -0
  248. package/src/providers/magichour/utility-schemas.js +150 -0
  249. package/src/providers/magichour/video-schemas.d.ts +2 -0
  250. package/src/providers/magichour/video-schemas.js +629 -0
  251. package/src/providers/magichour/voices.d.ts +1 -0
  252. package/src/providers/magichour/voices.js +1268 -0
  253. package/src/providers/minimax/executors.js +19 -4
  254. package/src/providers/minimax/text-models.d.ts +2 -0
  255. package/src/providers/minimax/text-models.js +34 -0
  256. package/src/providers/moneyforward_mcp/manifest.d.ts +0 -2
  257. package/src/providers/moneyforward_mcp/manifest.js +1 -1
  258. package/src/providers/notion/executors.js +36 -3
  259. package/src/providers/octen/actions.d.ts +6 -0
  260. package/src/providers/octen/actions.js +919 -0
  261. package/src/providers/octen/executors.d.ts +4 -0
  262. package/src/providers/octen/executors.js +125 -0
  263. package/src/providers/octen/inputs.d.ts +2 -0
  264. package/src/providers/octen/inputs.js +2434 -0
  265. package/src/providers/octen/research.d.ts +1 -0
  266. package/src/providers/octen/research.js +86 -0
  267. package/src/providers/openrouter/executors.js +7 -4
  268. package/src/providers/orbit/actions.d.ts +2 -0
  269. package/src/providers/orbit/actions.js +3030 -0
  270. package/src/providers/orbit/executors.d.ts +4 -0
  271. package/src/providers/orbit/executors.js +106 -0
  272. package/src/providers/orbit/routes.d.ts +9 -0
  273. package/src/providers/orbit/routes.js +170 -0
  274. package/src/providers/pandadoc/executors.d.ts +2 -0
  275. package/src/providers/pandadoc/executors.js +2 -0
  276. package/src/providers/pandadoc/trigger-on-document-event.d.ts +2 -0
  277. package/src/providers/pandadoc/trigger-on-document-event.definition.d.ts +4 -0
  278. package/src/providers/pandadoc/trigger-on-document-event.definition.js +33 -0
  279. package/src/providers/pandadoc/trigger-on-document-event.js +96 -0
  280. package/src/providers/pipedrive/executors.d.ts +2 -0
  281. package/src/providers/pipedrive/executors.js +2 -0
  282. package/src/providers/pipedrive/trigger-on-crm-event.d.ts +2 -0
  283. package/src/providers/pipedrive/trigger-on-crm-event.definition.d.ts +4 -0
  284. package/src/providers/pipedrive/trigger-on-crm-event.definition.js +30 -0
  285. package/src/providers/pipedrive/trigger-on-crm-event.js +101 -0
  286. package/src/providers/ploid/actions.d.ts +16 -0
  287. package/src/providers/ploid/actions.js +23 -0
  288. package/src/providers/ploid/endpoints.json +8440 -0
  289. package/src/providers/ploid/executors.d.ts +4 -0
  290. package/src/providers/ploid/executors.js +119 -0
  291. package/src/providers/provider-runtime.d.ts +13 -0
  292. package/src/providers/provider-runtime.js +37 -4
  293. package/src/providers/registry.generated.js +17 -0
  294. package/src/providers/resend/executors.d.ts +2 -0
  295. package/src/providers/resend/executors.js +2 -0
  296. package/src/providers/resend/trigger-on-email-event.d.ts +2 -0
  297. package/src/providers/resend/trigger-on-email-event.definition.d.ts +4 -0
  298. package/src/providers/resend/trigger-on-email-event.definition.js +37 -0
  299. package/src/providers/resend/trigger-on-email-event.js +125 -0
  300. package/src/providers/salesforce/chatter-routes.d.ts +107 -0
  301. package/src/providers/salesforce/chatter-routes.js +140 -0
  302. package/src/providers/salesforce/context.d.ts +2 -2
  303. package/src/providers/salesforce/context.js +7 -4
  304. package/src/providers/salesforce/executors.js +10 -0
  305. package/src/providers/salesforce/runtime-approvals.d.ts +2 -0
  306. package/src/providers/salesforce/runtime-approvals.js +52 -0
  307. package/src/providers/salesforce/runtime-base.js +14 -3
  308. package/src/providers/salesforce/runtime-chatter.d.ts +2 -0
  309. package/src/providers/salesforce/runtime-chatter.js +78 -0
  310. package/src/providers/salesforce/runtime-knowledge.d.ts +2 -0
  311. package/src/providers/salesforce/runtime-knowledge.js +34 -0
  312. package/src/providers/salesforce/runtime-leads.d.ts +2 -0
  313. package/src/providers/salesforce/runtime-leads.js +117 -0
  314. package/src/providers/salesforce/runtime-platform.d.ts +2 -0
  315. package/src/providers/salesforce/runtime-platform.js +67 -0
  316. package/src/providers/saperly/actions.d.ts +17 -0
  317. package/src/providers/saperly/actions.js +869 -0
  318. package/src/providers/saperly/executors.d.ts +4 -0
  319. package/src/providers/saperly/executors.js +113 -0
  320. package/src/providers/saperly/schemas.d.ts +33 -0
  321. package/src/providers/saperly/schemas.js +601 -0
  322. package/src/providers/search1api/actions.d.ts +2 -0
  323. package/src/providers/search1api/actions.js +39 -0
  324. package/src/providers/search1api/executors.d.ts +4 -0
  325. package/src/providers/search1api/executors.js +72 -0
  326. package/src/providers/search1api/runtime.d.ts +3 -0
  327. package/src/providers/search1api/runtime.js +44 -0
  328. package/src/providers/search1api/schemas.d.ts +3 -0
  329. package/src/providers/search1api/schemas.js +1834 -0
  330. package/src/providers/sentry/executors.d.ts +2 -0
  331. package/src/providers/sentry/executors.js +2 -0
  332. package/src/providers/sentry/trigger-on-issue-alert.d.ts +2 -0
  333. package/src/providers/sentry/trigger-on-issue-alert.definition.d.ts +4 -0
  334. package/src/providers/sentry/trigger-on-issue-alert.definition.js +64 -0
  335. package/src/providers/sentry/trigger-on-issue-alert.js +80 -0
  336. package/src/providers/sf_express/runtime.d.ts +0 -16
  337. package/src/providers/sf_express/runtime.js +2 -2
  338. package/src/providers/slack/runtime.d.ts +6 -1
  339. package/src/providers/slack/runtime.js +21 -0
  340. package/src/providers/slackbot/actions.js +17 -1
  341. package/src/providers/slackbot/executors.d.ts +2 -0
  342. package/src/providers/slackbot/executors.js +5 -1
  343. package/src/providers/slackbot/trigger-on-event.d.ts +2 -0
  344. package/src/providers/slackbot/trigger-on-event.definition.d.ts +4 -0
  345. package/src/providers/slackbot/trigger-on-event.definition.js +57 -0
  346. package/src/providers/slackbot/trigger-on-event.js +23 -0
  347. package/src/providers/surf/actions.d.ts +21 -0
  348. package/src/providers/surf/actions.js +26 -0
  349. package/src/providers/surf/discovery-definitions.d.ts +2 -0
  350. package/src/providers/surf/discovery-definitions.js +871 -0
  351. package/src/providers/surf/equity-definitions.d.ts +2 -0
  352. package/src/providers/surf/equity-definitions.js +322 -0
  353. package/src/providers/surf/executors.d.ts +4 -0
  354. package/src/providers/surf/executors.js +131 -0
  355. package/src/providers/surf/market-definitions.d.ts +2 -0
  356. package/src/providers/surf/market-definitions.js +885 -0
  357. package/src/providers/surf/onchain-definitions.d.ts +2 -0
  358. package/src/providers/surf/onchain-definitions.js +901 -0
  359. package/src/providers/surf/prediction-definitions.d.ts +2 -0
  360. package/src/providers/surf/prediction-definitions.js +683 -0
  361. package/src/providers/surf/shared-schemas.d.ts +18 -0
  362. package/src/providers/surf/shared-schemas.js +37 -0
  363. package/src/providers/tally/executors.d.ts +2 -0
  364. package/src/providers/tally/executors.js +2 -0
  365. package/src/providers/tally/trigger-on-form-response.d.ts +2 -0
  366. package/src/providers/tally/trigger-on-form-response.definition.d.ts +4 -0
  367. package/src/providers/tally/trigger-on-form-response.definition.js +54 -0
  368. package/src/providers/tally/trigger-on-form-response.js +166 -0
  369. package/src/providers/tinyfish/actions.d.ts +6 -0
  370. package/src/providers/tinyfish/actions.js +19 -0
  371. package/src/providers/tinyfish/agent-actions.d.ts +2 -0
  372. package/src/providers/tinyfish/agent-actions.js +268 -0
  373. package/src/providers/tinyfish/data-actions.d.ts +2 -0
  374. package/src/providers/tinyfish/data-actions.js +186 -0
  375. package/src/providers/tinyfish/data-schemas.d.ts +7 -0
  376. package/src/providers/tinyfish/data-schemas.js +103 -0
  377. package/src/providers/tinyfish/endpoints.d.ts +14 -0
  378. package/src/providers/tinyfish/endpoints.js +1 -0
  379. package/src/providers/tinyfish/executors.d.ts +4 -0
  380. package/src/providers/tinyfish/executors.js +133 -0
  381. package/src/providers/tinyfish/management-actions.d.ts +2 -0
  382. package/src/providers/tinyfish/management-actions.js +524 -0
  383. package/src/providers/tinyfish/monitor-schemas.d.ts +5 -0
  384. package/src/providers/tinyfish/monitor-schemas.js +65 -0
  385. package/src/providers/tinyfish/research-schemas.d.ts +6 -0
  386. package/src/providers/tinyfish/research-schemas.js +71 -0
  387. package/src/providers/trello/executors.js +5 -2
  388. package/src/providers/typeform/executors.d.ts +2 -0
  389. package/src/providers/typeform/executors.js +2 -0
  390. package/src/providers/typeform/trigger-on-form-response.d.ts +2 -0
  391. package/src/providers/typeform/trigger-on-form-response.definition.d.ts +4 -0
  392. package/src/providers/typeform/trigger-on-form-response.definition.js +40 -0
  393. package/src/providers/typeform/trigger-on-form-response.js +68 -0
  394. package/src/providers/vaquill/actions.d.ts +13 -0
  395. package/src/providers/vaquill/actions.js +529 -0
  396. package/src/providers/vaquill/executors.d.ts +4 -0
  397. package/src/providers/vaquill/executors.js +141 -0
  398. package/src/providers/vaquill/schemas.d.ts +67 -0
  399. package/src/providers/vaquill/schemas.js +4953 -0
  400. package/src/providers/vercel/executors.d.ts +2 -0
  401. package/src/providers/vercel/executors.js +2 -0
  402. package/src/providers/vercel/trigger-on-deployment-event.d.ts +2 -0
  403. package/src/providers/vercel/trigger-on-deployment-event.definition.d.ts +5 -0
  404. package/src/providers/vercel/trigger-on-deployment-event.definition.js +41 -0
  405. package/src/providers/vercel/trigger-on-deployment-event.js +102 -0
  406. package/src/providers/weixin_bot/runtime.d.ts +0 -1
  407. package/src/providers/weixin_bot/runtime.js +1 -1
  408. package/src/providers/weixin_store/access-token.d.ts +3 -3
  409. package/src/providers/weixin_store/access-token.js +15 -7
  410. package/src/providers/weixin_store/executors.js +214 -1
  411. package/src/providers/zoom/executors.d.ts +2 -0
  412. package/src/providers/zoom/executors.js +2 -0
  413. package/src/providers/zoom/trigger-on-recording-ready.d.ts +2 -0
  414. package/src/providers/zoom/trigger-on-recording-ready.definition.d.ts +4 -0
  415. package/src/providers/zoom/trigger-on-recording-ready.definition.js +44 -0
  416. package/src/providers/zoom/trigger-on-recording-ready.js +39 -0
  417. package/src/server/api/action-example.js +12 -1
  418. package/src/server/api/pattern-example.js +35 -1
  419. package/src/server/api/trigger-routes.js +1 -1
  420. package/src/server/connect-app.js +1 -0
  421. package/src/triggers/common/integration.d.ts +15 -3
  422. package/src/triggers/common/integration.js +5 -0
  423. package/src/triggers/common/proxy.d.ts +7 -0
  424. package/src/triggers/managed-webhook.d.ts +13 -0
  425. package/src/triggers/managed-webhook.js +48 -0
  426. package/src/triggers/request.d.ts +5 -1
  427. package/src/triggers/request.js +2 -0
  428. package/src/triggers/resources.d.ts +8 -2
  429. package/src/triggers/resources.js +31 -0
  430. package/src/triggers/signature.d.ts +3 -3
  431. package/src/triggers/signature.js +4 -6
  432. package/src/triggers/sources/configuration-schema.d.ts +5 -0
  433. package/src/triggers/sources/configuration-schema.js +118 -0
  434. package/src/triggers/sources/configuration.d.ts +115 -0
  435. package/src/triggers/sources/configuration.js +1 -0
  436. package/src/triggers/sources/definition.d.ts +61 -0
  437. package/src/triggers/sources/definition.js +3 -0
  438. package/src/triggers/sources/feishu-demands.d.ts +6 -0
  439. package/src/triggers/sources/feishu-demands.js +24 -0
  440. package/src/triggers/sources/feishu-events.d.ts +19 -0
  441. package/src/triggers/sources/feishu-events.js +108 -0
  442. package/src/triggers/sources/feishu.d.ts +3 -0
  443. package/src/triggers/sources/feishu.js +85 -0
  444. package/src/triggers/sources/fireflies.d.ts +3 -0
  445. package/src/triggers/sources/fireflies.js +100 -0
  446. package/src/triggers/sources/intercom.d.ts +3 -0
  447. package/src/triggers/sources/intercom.js +86 -0
  448. package/src/triggers/sources/jira.d.ts +3 -0
  449. package/src/triggers/sources/jira.js +120 -0
  450. package/src/triggers/sources/operation.d.ts +42 -0
  451. package/src/triggers/sources/operation.js +146 -0
  452. package/src/triggers/sources/sentry.d.ts +3 -0
  453. package/src/triggers/sources/sentry.js +125 -0
  454. package/src/triggers/sources/signature.d.ts +1 -0
  455. package/src/triggers/sources/signature.js +10 -0
  456. package/src/triggers/sources/slack.d.ts +3 -0
  457. package/src/triggers/sources/slack.js +127 -0
  458. package/src/triggers/sources/zoom.d.ts +3 -0
  459. package/src/triggers/sources/zoom.js +113 -0
  460. package/src/triggers/trigger-runner.d.ts +2 -0
  461. package/src/triggers/trigger-runner.js +52 -16
@@ -0,0 +1,4 @@
1
+ import type { CredentialValidators, ProviderExecutors, ProviderProxyExecutor } from "../../core/types.ts";
2
+ export declare const credentialValidators: CredentialValidators;
3
+ export declare const executors: ProviderExecutors;
4
+ export declare const proxy: ProviderProxyExecutor;
@@ -0,0 +1,106 @@
1
+ import { optionalRecord, optionalString, looseArray } from "../../core/cast.js";
2
+ import { downloadUploadSource, requiredResponseRecord, isAbortLikeError, runProviderRequest, ProviderRequestError, providerInputError, providerResponseError, defineApiKeyProviderExecutors, defineProviderProxy, } from "../provider-runtime.js";
3
+ import { orbitActions } from "./actions.js";
4
+ import { orbitRoutes } from "./routes.js";
5
+ const baseUrl = "https://api.orbitsearch.com";
6
+ async function request(apiKey, name, input, fetcher, parentSignal) {
7
+ const route = orbitRoutes[name];
8
+ let path = route.path;
9
+ const data = { ...input };
10
+ for (const field of route.pathFields) {
11
+ path = path.replace(`{${field}}`, encodeURIComponent(String(data[field])));
12
+ delete data[field];
13
+ }
14
+ const url = new URL(path, baseUrl);
15
+ for (const field of route.queryFields) {
16
+ if (data[field] !== undefined)
17
+ url.searchParams.set(field, String(data[field]));
18
+ delete data[field];
19
+ }
20
+ const idempotencyKey = optionalString(data.idempotencyKey);
21
+ delete data.idempotencyKey;
22
+ let body = route.body ? JSON.stringify(data) : undefined;
23
+ if (name === "detect_faces") {
24
+ const file = await downloadUploadSource({
25
+ url: String(data.imageUrl),
26
+ fieldName: "imageUrl",
27
+ fetcher,
28
+ maximumBytes: 25 * 1024 * 1024,
29
+ signal: parentSignal,
30
+ });
31
+ const mime = file.contentType?.split(";")[0]?.trim().toLowerCase();
32
+ if (!mime || !["image/jpeg", "image/png", "image/webp"].includes(mime))
33
+ throw providerInputError("imageUrl must return a JPG, PNG or WebP image");
34
+ const form = new FormData();
35
+ form.append("image", new Blob([new Uint8Array(file.bytes)], { type: mime }), `image.${mime === "image/jpeg" ? "jpg" : mime.split("/")[1]}`);
36
+ body = form;
37
+ }
38
+ return runProviderRequest({ label: "Orbit", signal: parentSignal }, async (signal) => {
39
+ const headers = new Headers({ authorization: `Bearer ${apiKey}`, accept: "application/json" });
40
+ if (body !== undefined && !(body instanceof FormData))
41
+ headers.set("content-type", "application/json");
42
+ if (idempotencyKey !== undefined)
43
+ headers.set("Idempotency-Key", idempotencyKey);
44
+ const response = await fetcher(url, { method: route.method, headers, body, signal });
45
+ const payload = await response.json().catch((error) => {
46
+ if (isAbortLikeError(error))
47
+ throw error;
48
+ return undefined;
49
+ });
50
+ if (!response.ok) {
51
+ const error = optionalRecord(optionalRecord(payload)?.error);
52
+ const code = optionalString(error?.code);
53
+ const message = optionalString(error?.message);
54
+ const detail = [code, message].filter(Boolean).join(": ");
55
+ throw new ProviderRequestError(response.status, `Orbit request failed (${response.status})${detail ? `: ${detail}` : ""}`, undefined, code === "invalid_api_key"
56
+ ? "authorization_failed"
57
+ : code === "missing_api_key_scope"
58
+ ? "authorization_failed"
59
+ : "provider_error");
60
+ }
61
+ return requiredResponseRecord(payload, "Orbit response");
62
+ });
63
+ }
64
+ async function execute(actionName, values, context) {
65
+ const { apiKey, fetcher } = context;
66
+ const data = values;
67
+ if (actionName === "get_batch_enrichment") {
68
+ const results = [];
69
+ for (const requestId of data.request_ids) {
70
+ results.push(await request(apiKey, "get_enrichment", { request_id: requestId }, fetcher, context.signal));
71
+ }
72
+ const status = results.some((result) => result.status !== "completed" && result.status !== "failed")
73
+ ? "running"
74
+ : results.some((result) => result.status === "failed")
75
+ ? "completed_with_errors"
76
+ : "completed";
77
+ return { status, results };
78
+ }
79
+ const result = await request(apiKey, actionName, data, fetcher, context.signal);
80
+ if (actionName === "batch_enrich") {
81
+ const children = looseArray(result.results);
82
+ const requestIds = children.map((child) => optionalString(optionalRecord(child)?.request_id));
83
+ if (!children.length || requestIds.some((id) => !id))
84
+ throw providerResponseError("Orbit batch response is missing child request IDs");
85
+ return { ...result, request_ids: requestIds };
86
+ }
87
+ return result;
88
+ }
89
+ export const credentialValidators = {
90
+ async apiKey(input, { fetcher, signal }) {
91
+ await request(input.apiKey, "quote_population", {
92
+ population: { kind: "company", id: "1441", name: "Google" },
93
+ profile_depth: "partial",
94
+ }, fetcher, signal);
95
+ return { profile: { displayName: "Orbit API Key" }, grantedScopes: [], metadata: { apiBaseUrl: baseUrl } };
96
+ },
97
+ };
98
+ export const executors = defineApiKeyProviderExecutors("orbit", Object.fromEntries(orbitActions.map((action) => [action.name, (values, context) => execute(action.name, values, context)])));
99
+ export const proxy = defineProviderProxy({
100
+ service: "orbit",
101
+ baseUrl: baseUrl,
102
+ auth: { type: "api_key_authorization", prefix: "Bearer " },
103
+ customizeRequest({ headers }) {
104
+ headers.set("accept", "application/json");
105
+ },
106
+ });
@@ -0,0 +1,9 @@
1
+ interface OrbitRoute {
2
+ path: string;
3
+ method: string;
4
+ pathFields: string[];
5
+ queryFields: string[];
6
+ body: boolean;
7
+ }
8
+ export declare const orbitRoutes: Record<string, OrbitRoute>;
9
+ export {};
@@ -0,0 +1,170 @@
1
+ export const orbitRoutes = {
2
+ search: {
3
+ path: "/v3/search",
4
+ method: "POST",
5
+ pathFields: [],
6
+ queryFields: [],
7
+ body: true,
8
+ },
9
+ get_search: {
10
+ path: "/v3/search/{search_id}",
11
+ method: "GET",
12
+ pathFields: ["search_id"],
13
+ queryFields: [],
14
+ body: false,
15
+ },
16
+ quote_population: {
17
+ path: "/v3/search/populations/quote",
18
+ method: "POST",
19
+ pathFields: [],
20
+ queryFields: [],
21
+ body: true,
22
+ },
23
+ search_population: {
24
+ path: "/v3/search/populations",
25
+ method: "POST",
26
+ pathFields: [],
27
+ queryFields: [],
28
+ body: true,
29
+ },
30
+ batch_enrich: {
31
+ path: "/v3/enrich",
32
+ method: "POST",
33
+ pathFields: [],
34
+ queryFields: [],
35
+ body: true,
36
+ },
37
+ read_profile: {
38
+ path: "/v3/enrich/{profile_id}",
39
+ method: "GET",
40
+ pathFields: ["profile_id"],
41
+ queryFields: ["format"],
42
+ body: false,
43
+ },
44
+ enrich_profile: {
45
+ path: "/v3/enrich/{profile_id}",
46
+ method: "POST",
47
+ pathFields: ["profile_id"],
48
+ queryFields: [],
49
+ body: true,
50
+ },
51
+ get_enrichment: {
52
+ path: "/v3/enrich/requests/{request_id}",
53
+ method: "GET",
54
+ pathFields: ["request_id"],
55
+ queryFields: [],
56
+ body: false,
57
+ },
58
+ create_watcher: {
59
+ path: "/v3/watchers",
60
+ method: "POST",
61
+ pathFields: [],
62
+ queryFields: [],
63
+ body: true,
64
+ },
65
+ list_watchers: {
66
+ path: "/v3/watchers",
67
+ method: "GET",
68
+ pathFields: [],
69
+ queryFields: [],
70
+ body: false,
71
+ },
72
+ get_watcher: {
73
+ path: "/v3/watchers/{watcher_id}",
74
+ method: "GET",
75
+ pathFields: ["watcher_id"],
76
+ queryFields: [],
77
+ body: false,
78
+ },
79
+ update_watcher: {
80
+ path: "/v3/watchers/{watcher_id}",
81
+ method: "PATCH",
82
+ pathFields: ["watcher_id"],
83
+ queryFields: [],
84
+ body: true,
85
+ },
86
+ delete_watcher: {
87
+ path: "/v3/watchers/{watcher_id}",
88
+ method: "DELETE",
89
+ pathFields: ["watcher_id"],
90
+ queryFields: [],
91
+ body: false,
92
+ },
93
+ list_watcher_runs: {
94
+ path: "/v3/watchers/{watcher_id}/runs",
95
+ method: "GET",
96
+ pathFields: ["watcher_id"],
97
+ queryFields: ["limit"],
98
+ body: false,
99
+ },
100
+ create_webhook: {
101
+ path: "/v3/webhooks",
102
+ method: "POST",
103
+ pathFields: [],
104
+ queryFields: [],
105
+ body: true,
106
+ },
107
+ list_webhooks: {
108
+ path: "/v3/webhooks",
109
+ method: "GET",
110
+ pathFields: [],
111
+ queryFields: [],
112
+ body: false,
113
+ },
114
+ delete_webhook: {
115
+ path: "/v3/webhooks/{webhook_id}",
116
+ method: "DELETE",
117
+ pathFields: ["webhook_id"],
118
+ queryFields: [],
119
+ body: false,
120
+ },
121
+ test_webhook: {
122
+ path: "/v3/webhooks/{webhook_id}/test",
123
+ method: "POST",
124
+ pathFields: ["webhook_id"],
125
+ queryFields: [],
126
+ body: true,
127
+ },
128
+ detect_faces: {
129
+ path: "/v3/faces/detect",
130
+ method: "POST",
131
+ pathFields: [],
132
+ queryFields: [],
133
+ body: true,
134
+ },
135
+ search_face_index: {
136
+ path: "/v3/faces/index-search",
137
+ method: "POST",
138
+ pathFields: [],
139
+ queryFields: [],
140
+ body: true,
141
+ },
142
+ bulk_search: {
143
+ path: "/v3/search/bulk",
144
+ method: "POST",
145
+ pathFields: [],
146
+ queryFields: [],
147
+ body: true,
148
+ },
149
+ get_bulk_search: {
150
+ path: "/v3/search/bulk/{job_id}",
151
+ method: "GET",
152
+ pathFields: ["job_id"],
153
+ queryFields: [],
154
+ body: false,
155
+ },
156
+ get_bulk_results: {
157
+ path: "/v3/search/bulk/{job_id}/results",
158
+ method: "GET",
159
+ pathFields: ["job_id"],
160
+ queryFields: ["offset"],
161
+ body: false,
162
+ },
163
+ cancel_bulk_search: {
164
+ path: "/v3/search/bulk/{job_id}/cancel",
165
+ method: "POST",
166
+ pathFields: ["job_id"],
167
+ queryFields: [],
168
+ body: false,
169
+ },
170
+ };
@@ -1,5 +1,7 @@
1
1
  import type { CredentialValidators, ProviderProxyExecutor } from "../../core/types.ts";
2
+ import type { IntegrationDefinition } from "../../triggers/common/integration.ts";
2
3
  import { executors } from "./runtime.ts";
3
4
  export { executors };
4
5
  export declare const proxy: ProviderProxyExecutor;
5
6
  export declare const credentialValidators: CredentialValidators;
7
+ export declare const triggers: readonly IntegrationDefinition[];
@@ -1,5 +1,6 @@
1
1
  import { defineProviderProxy } from "../provider-runtime.js";
2
2
  import { executors, pandadocApiBaseUrl, validatePandadocCredential } from "./runtime.js";
3
+ import { pandadocDocumentEvent } from "./trigger-on-document-event.js";
3
4
  export { executors };
4
5
  const service = "pandadoc";
5
6
  export const proxy = defineProviderProxy({
@@ -15,3 +16,4 @@ export const credentialValidators = {
15
16
  return validatePandadocCredential({ apiKey: input.apiKey, ...input.values }, fetcher);
16
17
  },
17
18
  };
19
+ export const triggers = [pandadocDocumentEvent];
@@ -0,0 +1,2 @@
1
+ import type { IntegrationDefinition } from "../../triggers/common/integration.ts";
2
+ export declare const pandadocDocumentEvent: IntegrationDefinition;
@@ -0,0 +1,4 @@
1
+ import type { TriggerKeySnapshot } from "../../triggers/common/types.ts";
2
+ export declare const snapshot: TriggerKeySnapshot & {
3
+ readonly type: "integration";
4
+ };
@@ -0,0 +1,33 @@
1
+ import { jsonSchema as s } from "../../core/json-schema.js";
2
+ export const snapshot = {
3
+ key: "pandadoc.on_document_event",
4
+ provider: "pandadoc",
5
+ name: "on_document_event",
6
+ displayName: "Document Status Changed",
7
+ description: "Receives document status changes in the connected workspace, optionally only when the entire document is completed.",
8
+ definitionVersion: 2,
9
+ type: "integration",
10
+ endpoint: { methods: ["POST"], body: { formats: ["json"], allowArray: true, allowEmpty: false }, successStatus: 200 },
11
+ configInputs: [
12
+ {
13
+ handle: "completedOnly",
14
+ jsonSchema: { type: "boolean", title: "Completed documents only" },
15
+ nullable: false,
16
+ value: true,
17
+ },
18
+ ],
19
+ outputs: [
20
+ {
21
+ handle: "events",
22
+ nullable: false,
23
+ jsonSchema: {
24
+ type: "array",
25
+ items: {
26
+ type: "object",
27
+ properties: { event: s.string(), data: { type: "object" } },
28
+ required: ["event", "data"],
29
+ },
30
+ },
31
+ },
32
+ ],
33
+ };
@@ -0,0 +1,96 @@
1
+ import { TransientIntegrationError } from "../../triggers/common/integration.js";
2
+ import { isJsonObject } from "../../triggers/common/json.js";
3
+ import { reconcileManagedWebhook, webhookRequest } from "../../triggers/managed-webhook.js";
4
+ import { bytes, verifyHexHmac } from "../../triggers/signature.js";
5
+ import { snapshot } from "./trigger-on-document-event.definition.js";
6
+ function webhook(value) {
7
+ if (!isJsonObject(value) ||
8
+ typeof value.uuid != "string" ||
9
+ !value.uuid ||
10
+ typeof value.shared_key != "string" ||
11
+ !value.shared_key)
12
+ throw new TransientIntegrationError("PandaDoc returned an invalid webhook identity or shared key.");
13
+ return { id: value.uuid, secret: value.shared_key };
14
+ }
15
+ export const pandadocDocumentEvent = {
16
+ snapshot,
17
+ initialState: { checkpoint: null, subscription: {} },
18
+ async reconcile(context) {
19
+ const endpoint = "/public/v1/webhook-subscriptions";
20
+ return reconcileManagedWebhook(context, {
21
+ async find() {
22
+ const found = [];
23
+ const result = await webhookRequest(context, { endpoint, method: "GET" });
24
+ if (!isJsonObject(result.data) || !Array.isArray(result.data.items))
25
+ throw new TransientIntegrationError("PandaDoc returned an invalid webhook list.");
26
+ for (const item of result.data.items) {
27
+ if (!isJsonObject(item) || typeof item.url != "string")
28
+ throw new TransientIntegrationError("PandaDoc returned an invalid webhook.");
29
+ if (item.url == context.endpointUrl)
30
+ found.push(webhook(item));
31
+ }
32
+ return found;
33
+ },
34
+ async create() {
35
+ const result = await webhookRequest(context, {
36
+ endpoint,
37
+ method: "POST",
38
+ body: {
39
+ name: "OOMOL document status",
40
+ url: context.endpointUrl,
41
+ active: true,
42
+ triggers: ["document_state_changed"],
43
+ payload: ["metadata"],
44
+ },
45
+ });
46
+ return webhook(result.data);
47
+ },
48
+ async align(id) {
49
+ await webhookRequest(context, {
50
+ endpoint: `${endpoint}/${encodeURIComponent(id)}`,
51
+ method: "PATCH",
52
+ body: { url: context.endpointUrl, active: true, triggers: ["document_state_changed"], payload: ["metadata"] },
53
+ });
54
+ },
55
+ async remove(id) {
56
+ await webhookRequest(context, { endpoint: `${endpoint}/${encodeURIComponent(id)}`, method: "DELETE" });
57
+ },
58
+ });
59
+ },
60
+ async receive(context) {
61
+ const secret = context.state?.subscription.secret;
62
+ if (typeof secret != "string")
63
+ return { outcome: "respond", status: 503, body: "", contentType: "text/plain" };
64
+ if (!(await verifyHexHmac(secret, [context.rawBody], context.query("signature"))))
65
+ return { outcome: "respond", status: 401, body: "", contentType: "text/plain" };
66
+ if (!Array.isArray(context.payload))
67
+ return { outcome: "respond", status: 400, body: "", contentType: "text/plain" };
68
+ const events = [];
69
+ const identities = [];
70
+ for (const item of context.payload) {
71
+ if (!isJsonObject(item) || item.event != "document_state_changed")
72
+ continue;
73
+ const data = item.data;
74
+ if (!isJsonObject(data) ||
75
+ typeof data.id != "string" ||
76
+ !data.id ||
77
+ typeof data.status != "string" ||
78
+ typeof data.date_modified != "string" ||
79
+ !data.date_modified)
80
+ return { outcome: "respond", status: 400, body: "", contentType: "text/plain" };
81
+ if (context.config.completedOnly === true && data.status != "document.completed")
82
+ continue;
83
+ events.push(item);
84
+ identities.push(JSON.stringify([data.id, data.status, data.date_modified]));
85
+ }
86
+ if (!events.length)
87
+ return { outcome: "ignored", reason: "No matching document status changes." };
88
+ // Derive deduplication identity from the signed body, not an unsigned delivery header.
89
+ const digest = await crypto.subtle.digest("SHA-256", bytes(JSON.stringify(identities.sort())));
90
+ return {
91
+ outcome: "event",
92
+ dedupeKey: Array.from(new Uint8Array(digest), (value) => value.toString(16).padStart(2, "0")).join(""),
93
+ outputs: { events },
94
+ };
95
+ },
96
+ };
@@ -1,5 +1,7 @@
1
1
  import type { CredentialValidators, ProviderProxyExecutor } from "../../core/types.ts";
2
+ import type { IntegrationDefinition } from "../../triggers/common/integration.ts";
2
3
  import { executors } from "./runtime.ts";
3
4
  export { executors };
4
5
  export declare const credentialValidators: CredentialValidators;
5
6
  export declare const proxy: ProviderProxyExecutor;
7
+ export declare const triggers: readonly IntegrationDefinition[];
@@ -1,5 +1,6 @@
1
1
  import { defineProviderProxy } from "../provider-runtime.js";
2
2
  import { executors, validatePipedriveCredential } from "./runtime.js";
3
+ import { pipedriveCrmEvent } from "./trigger-on-crm-event.js";
3
4
  export { executors };
4
5
  const service = "pipedrive";
5
6
  const apiOrigin = "https://api.pipedrive.com";
@@ -13,3 +14,4 @@ export const proxy = defineProviderProxy({
13
14
  baseUrl: apiOrigin,
14
15
  auth: { type: "api_key_header", name: "x-api-token" },
15
16
  });
17
+ export const triggers = [pipedriveCrmEvent];
@@ -0,0 +1,2 @@
1
+ import type { IntegrationDefinition } from "../../triggers/common/integration.ts";
2
+ export declare const pipedriveCrmEvent: IntegrationDefinition;
@@ -0,0 +1,4 @@
1
+ import type { TriggerKeySnapshot } from "../../triggers/common/types.ts";
2
+ export declare const snapshot: TriggerKeySnapshot & {
3
+ readonly type: "integration";
4
+ };
@@ -0,0 +1,30 @@
1
+ import { jsonSchema as s } from "../../core/json-schema.js";
2
+ const events = ["deal.created", "deal.stage_changed", "deal.status_changed", "person.created"];
3
+ export const snapshot = {
4
+ key: "pipedrive.on_crm_event",
5
+ provider: "pipedrive",
6
+ name: "on_crm_event",
7
+ displayName: "Deal or Contact Event",
8
+ description: "Receives new deals or contacts, or actual changes to a deal stage or status using Pipedrive Webhooks v2.",
9
+ definitionVersion: 2,
10
+ type: "integration",
11
+ endpoint: {
12
+ methods: ["POST"],
13
+ body: { formats: ["json"], allowArray: false, allowEmpty: false },
14
+ successStatus: 200,
15
+ },
16
+ configInputs: [
17
+ {
18
+ handle: "eventType",
19
+ jsonSchema: { type: "string", enum: events, title: "Event" },
20
+ nullable: false,
21
+ value: "deal.created",
22
+ },
23
+ ],
24
+ outputs: [
25
+ { handle: "event", jsonSchema: { type: "string", enum: events }, nullable: false },
26
+ { handle: "deliveryId", jsonSchema: s.string(), nullable: false },
27
+ { handle: "objectId", jsonSchema: s.string(), nullable: false },
28
+ { handle: "body", jsonSchema: { type: "object" }, nullable: false },
29
+ ],
30
+ };
@@ -0,0 +1,101 @@
1
+ import { PermanentIntegrationError, TransientIntegrationError } from "../../triggers/common/integration.js";
2
+ import { isJsonObject } from "../../triggers/common/json.js";
3
+ import { reconcileManagedWebhook, webhookRequest } from "../../triggers/managed-webhook.js";
4
+ import { sameSecret } from "../../triggers/signature.js";
5
+ import { basicAuthorizationHeader } from "../provider-runtime.js";
6
+ import { snapshot } from "./trigger-on-crm-event.definition.js";
7
+ export const pipedriveCrmEvent = {
8
+ snapshot,
9
+ initialState: { checkpoint: null, subscription: {} },
10
+ async reconcile(context) {
11
+ const current = await webhookRequest(context, { endpoint: "/v1/users/me", method: "GET" });
12
+ if (!isJsonObject(current.data) ||
13
+ current.data.success !== true ||
14
+ !isJsonObject(current.data.data) ||
15
+ !["string", "number"].includes(typeof current.data.data.company_id))
16
+ throw new TransientIntegrationError("Pipedrive returned no account identity.");
17
+ const companyId = String(current.data.data.company_id);
18
+ const event = String(context.config.eventType);
19
+ const entity = event == "person.created" ? "person" : "deal";
20
+ const action = event.endsWith(".created") ? "create" : "change";
21
+ const result = await reconcileManagedWebhook(context, {
22
+ async find() {
23
+ const response = await webhookRequest(context, { endpoint: "/v1/webhooks", method: "GET" });
24
+ if (!isJsonObject(response.data) || response.data.success !== true || !Array.isArray(response.data.data))
25
+ throw new TransientIntegrationError("Pipedrive returned an invalid webhook list.");
26
+ const found = [];
27
+ for (const item of response.data.data) {
28
+ if (!isJsonObject(item) || typeof item.subscription_url != "string")
29
+ throw new TransientIntegrationError("Pipedrive returned an invalid webhook.");
30
+ if (item.subscription_url != context.endpointUrl)
31
+ continue;
32
+ if (!["number", "string"].includes(typeof item.id) ||
33
+ item.event_object != entity ||
34
+ item.event_action != action ||
35
+ item.version != "2.0")
36
+ throw new PermanentIntegrationError("Pipedrive webhook event settings differ from this subscription.");
37
+ found.push({ id: String(item.id), secret: context.callbackSecret });
38
+ }
39
+ return found;
40
+ },
41
+ async create() {
42
+ const response = await webhookRequest(context, {
43
+ endpoint: "/v1/webhooks",
44
+ method: "POST",
45
+ body: {
46
+ subscription_url: context.endpointUrl,
47
+ event_action: action,
48
+ event_object: entity,
49
+ version: "2.0",
50
+ http_auth_user: "oomol",
51
+ http_auth_password: context.callbackSecret,
52
+ },
53
+ });
54
+ if (!isJsonObject(response.data) ||
55
+ response.data.success !== true ||
56
+ !isJsonObject(response.data.data) ||
57
+ !["number", "string"].includes(typeof response.data.data.id))
58
+ throw new TransientIntegrationError("Pipedrive webhook creation returned no identity.");
59
+ return { id: String(response.data.data.id), secret: context.callbackSecret };
60
+ },
61
+ async remove(id) {
62
+ await webhookRequest(context, { endpoint: `/v1/webhooks/${encodeURIComponent(id)}`, method: "DELETE" });
63
+ },
64
+ });
65
+ if (context.active)
66
+ await context.state.saveSubscription({ ...context.state.subscription, companyId }, new Date(context.now.getTime() + 86_400_000));
67
+ return result;
68
+ },
69
+ receive(context) {
70
+ const expected = basicAuthorizationHeader(`oomol:${context.callbackSecret}`);
71
+ if (!sameSecret(context.header("authorization"), expected))
72
+ return { outcome: "respond", status: 401, body: "", contentType: "text/plain" };
73
+ const companyId = context.state?.subscription.companyId;
74
+ if (typeof companyId != "string")
75
+ return { outcome: "respond", status: 503, body: "", contentType: "text/plain" };
76
+ const body = context.payload;
77
+ if (!isJsonObject(body) || !isJsonObject(body.meta) || !isJsonObject(body.data))
78
+ return { outcome: "respond", status: 400, body: "", contentType: "text/plain" };
79
+ const meta = body.meta;
80
+ if (meta.version != "2.0" ||
81
+ String(meta.company_id) != companyId ||
82
+ String(meta.webhook_id) != context.state?.subscription.hookId)
83
+ return { outcome: "ignored", reason: "Pipedrive subscription or company does not match." };
84
+ const event = String(context.config.eventType);
85
+ if (meta.entity != (event == "person.created" ? "person" : "deal") ||
86
+ meta.action != (event.endsWith(".created") ? "create" : "change"))
87
+ return { outcome: "ignored", reason: "Pipedrive event does not match." };
88
+ if (!event.endsWith(".created")) {
89
+ const field = event == "deal.stage_changed" ? "stage_id" : "status";
90
+ if (!isJsonObject(body.previous) || !(field in body.previous) || body.previous[field] === body.data[field])
91
+ return { outcome: "ignored", reason: "The selected deal field did not change." };
92
+ }
93
+ if (typeof meta.id != "string" || !meta.id || !["number", "string"].includes(typeof meta.entity_id))
94
+ return { outcome: "respond", status: 400, body: "", contentType: "text/plain" };
95
+ return {
96
+ outcome: "event",
97
+ dedupeKey: meta.id,
98
+ outputs: { event, deliveryId: meta.id, objectId: String(meta.entity_id), body },
99
+ };
100
+ },
101
+ };
@@ -0,0 +1,16 @@
1
+ import type { ActionDefinition, JsonSchema } from "../../core/types.ts";
2
+ export interface PloidEndpoint {
3
+ name: string;
4
+ method: string;
5
+ path: string;
6
+ pathKeys: string[];
7
+ queryKeys: string[];
8
+ operationType: ActionDefinition["operationType"];
9
+ description: string;
10
+ inputSchema: JsonSchema;
11
+ outputSchema: JsonSchema;
12
+ }
13
+ declare const ploidEndpoints: PloidEndpoint[];
14
+ export declare const ploidEndpointByName: Map<string, (typeof ploidEndpoints)[number]>;
15
+ export declare const ploidActions: ActionDefinition[];
16
+ export {};
@@ -0,0 +1,23 @@
1
+ import { defineProviderAction } from "../../core/provider-definition.js";
2
+ import definitions from "./endpoints.json" with { type: "json" };
3
+ const actionLifecycles = {
4
+ start_dataset: { startActionId: "ploid.start_dataset", statusActionId: "ploid.get_dataset" },
5
+ };
6
+ const actionFollowUps = {
7
+ sync_people_search: ["ploid.get_set"],
8
+ get_person: ["ploid.get_person_run"],
9
+ create_dataset: ["ploid.get_dataset"],
10
+ start_dataset: ["ploid.get_dataset"],
11
+ };
12
+ const ploidEndpoints = definitions;
13
+ export const ploidEndpointByName = new Map(ploidEndpoints.map((endpoint) => [endpoint.name, endpoint]));
14
+ export const ploidActions = ploidEndpoints.map((endpoint) => defineProviderAction("ploid", {
15
+ name: endpoint.name,
16
+ description: endpoint.description,
17
+ operationType: endpoint.operationType,
18
+ requiredScopes: [],
19
+ inputSchema: endpoint.inputSchema,
20
+ outputSchema: endpoint.outputSchema,
21
+ asyncLifecycle: actionLifecycles[endpoint.name],
22
+ followUpActions: actionFollowUps[endpoint.name],
23
+ }));