@oomol-lab/open-connector 1.9.1 → 1.9.3
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.
- package/README.md +4 -2
- package/assets/open-connector/catalog/apps/aisa.json +1946 -56
- package/assets/open-connector/catalog/apps/akta.json +1181 -0
- package/assets/open-connector/catalog/apps/allratestoday.json +174 -0
- package/assets/open-connector/catalog/apps/asana.json +110 -0
- package/assets/open-connector/catalog/apps/calendly.json +103 -0
- package/assets/open-connector/catalog/apps/clickup.json +104 -0
- package/assets/open-connector/catalog/apps/cloro.json +9289 -0
- package/assets/open-connector/catalog/apps/contextdev.json +20670 -0
- package/assets/open-connector/catalog/apps/deepseek.json +177 -0
- package/assets/open-connector/catalog/apps/defillama.json +23747 -0
- package/assets/open-connector/catalog/apps/fireflies.json +103 -0
- package/assets/open-connector/catalog/apps/fundable.json +7926 -0
- package/assets/open-connector/catalog/apps/intercom.json +110 -0
- package/assets/open-connector/catalog/apps/jira.json +110 -0
- package/assets/open-connector/catalog/apps/keenable.json +235 -0
- package/assets/open-connector/catalog/apps/kolsprite_mcp.json +1227 -0
- package/assets/open-connector/catalog/apps/litescrape.json +52514 -0
- package/assets/open-connector/catalog/apps/magichour.json +5926 -0
- package/assets/open-connector/catalog/apps/minimax.json +24 -14
- package/assets/open-connector/catalog/apps/notion.json +731 -76
- package/assets/open-connector/catalog/apps/octen.json +5248 -0
- package/assets/open-connector/catalog/apps/openrouter.json +10 -0
- package/assets/open-connector/catalog/apps/orbit.json +3574 -0
- package/assets/open-connector/catalog/apps/pandadoc.json +68 -0
- package/assets/open-connector/catalog/apps/pipedrive.json +86 -0
- package/assets/open-connector/catalog/apps/ploid.json +9802 -0
- package/assets/open-connector/catalog/apps/resend.json +100 -0
- package/assets/open-connector/catalog/apps/salesforce.json +2487 -119
- package/assets/open-connector/catalog/apps/saperly.json +7056 -0
- package/assets/open-connector/catalog/apps/search1api.json +2382 -0
- package/assets/open-connector/catalog/apps/sentry.json +129 -0
- package/assets/open-connector/catalog/apps/slackbot.json +250 -2
- package/assets/open-connector/catalog/apps/surf.json +11378 -0
- package/assets/open-connector/catalog/apps/tally.json +113 -0
- package/assets/open-connector/catalog/apps/tinyfish.json +6154 -0
- package/assets/open-connector/catalog/apps/typeform.json +90 -1
- package/assets/open-connector/catalog/apps/vaquill.json +5944 -0
- package/assets/open-connector/catalog/apps/vercel.json +110 -0
- package/assets/open-connector/catalog/apps/weixin_store.json +1256 -7
- package/assets/open-connector/catalog/apps/zoom.json +112 -0
- package/assets/open-connector/catalog/apps-index.json +1 -1
- package/package.json +1 -1
- package/src/connection-error.d.ts +7 -0
- package/src/connection-error.js +10 -0
- package/src/connection-service.d.ts +2 -50
- package/src/connection-service.js +6 -130
- package/src/connection-store.d.ts +41 -0
- package/src/connection-store.js +1 -0
- package/src/core/guarded-fetch.d.ts +3 -0
- package/src/core/guarded-fetch.js +8 -1
- package/src/core/json-schema.d.ts +11 -3
- package/src/core/json-schema.js +13 -3
- package/src/core/provider-network-policy.d.ts +15 -0
- package/src/core/provider-network-policy.js +11 -0
- package/src/core/request.d.ts +18 -14
- package/src/core/request.js +11 -35
- package/src/credential-resolver.d.ts +24 -0
- package/src/credential-resolver.js +131 -0
- package/src/mcp.js +1 -1
- package/src/oauth/oauth-client-config-service.d.ts +1 -1
- package/src/oauth/oauth-client-config-service.js +14 -2
- package/src/oauth/oauth-credential-refresh-service.js +1 -1
- package/src/oauth/oauth-flow-service.d.ts +9 -1
- package/src/oauth/oauth-flow-service.js +11 -1
- package/src/providers/abuseipdb/executors.js +3 -4
- package/src/providers/action-contracts.generated.d.ts +24 -6
- package/src/providers/addressfinder/executors.js +2 -3
- package/src/providers/aeroleads/executors.js +3 -3
- package/src/providers/affinity/runtime.js +6 -7
- package/src/providers/aftership/executors.js +2 -2
- package/src/providers/agent_mail/runtime.js +2 -2
- package/src/providers/agentql/runtime.js +2 -2
- package/src/providers/agenty/runtime.js +5 -6
- package/src/providers/agiled/runtime.d.ts +0 -1
- package/src/providers/agiled/runtime.js +2 -3
- package/src/providers/agility/runtime.js +2 -3
- package/src/providers/ahrefs/runtime.js +3 -3
- package/src/providers/aifinmarket/runtime.js +6 -7
- package/src/providers/airtable/executors.js +3 -3
- package/src/providers/aisa/executors.js +238 -6
- package/src/providers/aisa/firecrawl-actions.d.ts +9 -0
- package/src/providers/aisa/firecrawl-actions.js +115 -0
- package/src/providers/akta/actions.d.ts +9 -0
- package/src/providers/akta/actions.js +420 -0
- package/src/providers/akta/executors.d.ts +4 -0
- package/src/providers/akta/executors.js +103 -0
- package/src/providers/alchemy/runtime.js +2 -2
- package/src/providers/algolia/runtime.js +3 -3
- package/src/providers/aliyun_oss/executors.js +7 -7
- package/src/providers/allratestoday/executors.d.ts +3 -0
- package/src/providers/allratestoday/executors.js +18 -0
- package/src/providers/allratestoday/runtime.d.ts +17 -0
- package/src/providers/allratestoday/runtime.js +104 -0
- package/src/providers/alpaca/runtime.js +2 -3
- package/src/providers/alpha_vantage/runtime.js +2 -2
- package/src/providers/alt_text_ai/runtime.js +2 -2
- package/src/providers/altiria/executors.js +3 -3
- package/src/providers/amap/runtime.js +3 -3
- package/src/providers/ambee/runtime.js +2 -2
- package/src/providers/ambivo/executors.js +3 -3
- package/src/providers/amilia/runtime.js +1 -1
- package/src/providers/amplemarket/runtime.js +2 -2
- package/src/providers/amplitude/runtime.js +3 -3
- package/src/providers/anysearch/runtime.js +4 -4
- package/src/providers/apaleo/runtime.js +2 -2
- package/src/providers/api_sports/executors.js +3 -4
- package/src/providers/apiverve/executors.js +2 -3
- package/src/providers/apollo/executors.js +2 -3
- package/src/providers/appcircle/runtime.js +5 -5
- package/src/providers/appdrag/executors.js +2 -3
- package/src/providers/arcgis_online/executors.js +2 -2
- package/src/providers/asana/executors.d.ts +2 -0
- package/src/providers/asana/executors.js +2 -0
- package/src/providers/asana/trigger-on-task-event.d.ts +2 -0
- package/src/providers/asana/trigger-on-task-event.definition.d.ts +4 -0
- package/src/providers/asana/trigger-on-task-event.definition.js +42 -0
- package/src/providers/asana/trigger-on-task-event.js +160 -0
- package/src/providers/auth0_management/runtime.js +2 -3
- package/src/providers/autoblogger/executors.js +3 -3
- package/src/providers/baidu_maps/runtime.js +3 -3
- package/src/providers/baidu_netdisk/runtime-mcp.js +3 -4
- package/src/providers/bark/executors.js +5 -5
- package/src/providers/bitrise/runtime.js +3 -3
- package/src/providers/bouncer/executors.js +3 -4
- package/src/providers/browse_ai/runtime.js +3 -4
- package/src/providers/browserstack/executors.js +6 -7
- package/src/providers/buildkite/runtime.js +3 -3
- package/src/providers/bunnycdn/runtime.js +3 -3
- package/src/providers/businessmap/runtime.js +6 -7
- package/src/providers/buttondown/runtime.js +2 -2
- package/src/providers/byteforms/runtime.js +2 -2
- package/src/providers/calendly/executors.d.ts +2 -0
- package/src/providers/calendly/executors.js +2 -0
- package/src/providers/calendly/runtime.js +2 -2
- package/src/providers/calendly/trigger-on-booking-event.d.ts +2 -0
- package/src/providers/calendly/trigger-on-booking-event.definition.d.ts +5 -0
- package/src/providers/calendly/trigger-on-booking-event.definition.js +42 -0
- package/src/providers/calendly/trigger-on-booking-event.js +144 -0
- package/src/providers/captainbi/runtime.js +6 -6
- package/src/providers/castingwords/runtime.js +1 -1
- package/src/providers/chatpdf/runtime.js +4 -4
- package/src/providers/check/executors.js +3 -4
- package/src/providers/checkly/executors.js +3 -4
- package/src/providers/chengxin/runtime.js +3 -3
- package/src/providers/cincopa/executors.js +3 -4
- package/src/providers/circle/executors.js +3 -4
- package/src/providers/clearout/executors.js +1 -2
- package/src/providers/clickhelp/runtime.js +5 -5
- package/src/providers/clickhouse/runtime.js +4 -4
- package/src/providers/clickup/executors.d.ts +2 -0
- package/src/providers/clickup/executors.js +2 -0
- package/src/providers/clickup/trigger-on-task-event.d.ts +2 -0
- package/src/providers/clickup/trigger-on-task-event.definition.d.ts +4 -0
- package/src/providers/clickup/trigger-on-task-event.definition.js +41 -0
- package/src/providers/clickup/trigger-on-task-event.js +94 -0
- package/src/providers/clinicalkey/runtime.js +3 -3
- package/src/providers/clinicaltrials_gov/runtime.js +4 -5
- package/src/providers/clockify/runtime.js +4 -4
- package/src/providers/cloro/actions.d.ts +12 -0
- package/src/providers/cloro/actions.js +155 -0
- package/src/providers/cloro/executors.d.ts +4 -0
- package/src/providers/cloro/executors.js +67 -0
- package/src/providers/cloro/inputs.d.ts +10 -0
- package/src/providers/cloro/inputs.js +680 -0
- package/src/providers/close/runtime.js +3 -3
- package/src/providers/cloudconvert/runtime.js +8 -9
- package/src/providers/cloudflare_dns/runtime.js +2 -2
- package/src/providers/cloudflare_email_routing/runtime.js +2 -2
- package/src/providers/cloudflare_r2/runtime.js +5 -5
- package/src/providers/cloudflare_worker/runtime.js +10 -10
- package/src/providers/cloudinary/runtime.js +4 -4
- package/src/providers/cloudlayer/runtime.js +5 -5
- package/src/providers/codacy/runtime.js +2 -2
- package/src/providers/codemagic/runtime.js +2 -2
- package/src/providers/confluence/executors.js +4 -4
- package/src/providers/confluence/runtime.d.ts +0 -1
- package/src/providers/confluence/runtime.js +6 -7
- package/src/providers/contactout/runtime.js +5 -5
- package/src/providers/contentful/runtime.js +2 -2
- package/src/providers/contentstack_content_delivery/runtime.js +1 -1
- package/src/providers/contextdev/actions.d.ts +14 -0
- package/src/providers/contextdev/actions.js +647 -0
- package/src/providers/contextdev/executors.d.ts +4 -0
- package/src/providers/contextdev/executors.js +109 -0
- package/src/providers/contextdev/files.d.ts +3 -0
- package/src/providers/contextdev/files.js +49 -0
- package/src/providers/contextdev/input-schemas.d.ts +49 -0
- package/src/providers/contextdev/input-schemas.js +3082 -0
- package/src/providers/contextdev/output-schemas.d.ts +49 -0
- package/src/providers/contextdev/output-schemas.js +1599 -0
- package/src/providers/cronly/runtime.js +2 -2
- package/src/providers/crossref/runtime.js +3 -3
- package/src/providers/cutt_ly/runtime.js +3 -3
- package/src/providers/cyberimpact/runtime.js +3 -3
- package/src/providers/dachser/executors.js +2 -2
- package/src/providers/dailybot/runtime.js +1 -1
- package/src/providers/databox/runtime.js +2 -2
- package/src/providers/databricks/runtime.js +2 -2
- package/src/providers/datacite/runtime.js +1 -1
- package/src/providers/datadog/executors.js +3 -4
- package/src/providers/datascope/runtime.js +2 -2
- package/src/providers/daytona/executors.js +3 -3
- package/src/providers/deepgram/runtime.js +2 -2
- package/src/providers/deepl/runtime.js +4 -4
- package/src/providers/deepseek/executors.d.ts +0 -5
- package/src/providers/deepseek/executors.js +38 -25
- package/src/providers/defillama/actions.d.ts +24 -0
- package/src/providers/defillama/actions.js +24 -0
- package/src/providers/defillama/dimensions-definitions.d.ts +2 -0
- package/src/providers/defillama/dimensions-definitions.js +1387 -0
- package/src/providers/defillama/ecosystem-definitions.d.ts +2 -0
- package/src/providers/defillama/ecosystem-definitions.js +758 -0
- package/src/providers/defillama/equities-definitions.d.ts +2 -0
- package/src/providers/defillama/equities-definitions.js +733 -0
- package/src/providers/defillama/executors.d.ts +4 -0
- package/src/providers/defillama/executors.js +196 -0
- package/src/providers/defillama/markets-definitions.d.ts +2 -0
- package/src/providers/defillama/markets-definitions.js +624 -0
- package/src/providers/defillama/shared-schemas.d.ts +71 -0
- package/src/providers/defillama/shared-schemas.js +157 -0
- package/src/providers/defillama/tvl-definitions.d.ts +2 -0
- package/src/providers/defillama/tvl-definitions.js +546 -0
- package/src/providers/defillama/yields-definitions.d.ts +2 -0
- package/src/providers/defillama/yields-definitions.js +766 -0
- package/src/providers/detrack/executors.js +5 -5
- package/src/providers/deutschlandgpt/runtime.js +2 -2
- package/src/providers/dialmycalls/runtime.js +4 -4
- package/src/providers/diffbot/executors.js +4 -4
- package/src/providers/digistore24/executors.js +3 -3
- package/src/providers/dingtalk_bot/executors.js +1 -1
- package/src/providers/discourse/executors.d.ts +0 -1
- package/src/providers/discourse/executors.js +6 -7
- package/src/providers/docugenerate/runtime.js +3 -3
- package/src/providers/doppler/runtime.shared.js +3 -3
- package/src/providers/doppler_marketing_automation/runtime.js +4 -4
- package/src/providers/dovetail/runtime.js +2 -2
- package/src/providers/dropcontact/runtime.js +3 -3
- package/src/providers/dub/executors.js +6 -6
- package/src/providers/dumplingai/runtime.js +2 -2
- package/src/providers/elevenlabs/executors.js +4 -4
- package/src/providers/elevenreader/runtime.js +1 -1
- package/src/providers/emailoctopus/runtime.js +4 -4
- package/src/providers/embase/runtime.js +3 -3
- package/src/providers/emelia/executors.js +2 -2
- package/src/providers/enigma/executors.js +3 -3
- package/src/providers/eodhd_apis/executors.js +2 -2
- package/src/providers/eventzilla/runtime.js +3 -4
- package/src/providers/evervault/runtime.js +1 -1
- package/src/providers/excalidraw_mcp/runtime.js +3 -4
- package/src/providers/excel/runtime.js +6 -6
- package/src/providers/expofp/runtime.js +2 -2
- package/src/providers/faktoora/runtime.js +5 -5
- package/src/providers/fast_note_sync/runtime.js +2 -2
- package/src/providers/feathery/executors.js +2 -3
- package/src/providers/feishu_app_bot/executors.js +2 -3
- package/src/providers/feishu_app_bot/trigger-on-event.js +2 -0
- package/src/providers/feishu_custom_bot/executors.js +2 -3
- package/src/providers/ffhub/executors.js +2 -3
- package/src/providers/fidel_api/executors.js +2 -3
- package/src/providers/files_com/executors.js +2 -3
- package/src/providers/fireberry/runtime.d.ts +0 -1
- package/src/providers/fireberry/runtime.js +3 -4
- package/src/providers/fireflies/executors.d.ts +2 -0
- package/src/providers/fireflies/executors.js +2 -0
- package/src/providers/fireflies/trigger-on-meeting-ready.d.ts +2 -0
- package/src/providers/fireflies/trigger-on-meeting-ready.definition.d.ts +4 -0
- package/src/providers/fireflies/trigger-on-meeting-ready.definition.js +44 -0
- package/src/providers/fireflies/trigger-on-meeting-ready.js +60 -0
- package/src/providers/firehydrant/executors.js +2 -3
- package/src/providers/float/executors.js +2 -3
- package/src/providers/flomo/executors.js +5 -6
- package/src/providers/flowiseai/executors.js +2 -3
- package/src/providers/fluxguard/executors.js +2 -3
- package/src/providers/folk/executors.js +2 -3
- package/src/providers/football_data/executors.js +2 -3
- package/src/providers/forem/executors.js +2 -3
- package/src/providers/formbricks/executors.js +2 -3
- package/src/providers/formsite/executors.js +3 -4
- package/src/providers/formspree/executors.js +2 -2
- package/src/providers/freshdesk/executors.js +3 -4
- package/src/providers/freshservice/executors.js +3 -4
- package/src/providers/freshteam/runtime.js +3 -4
- package/src/providers/full_contact/executors.js +3 -3
- package/src/providers/fundable/actions.d.ts +8 -0
- package/src/providers/fundable/actions.js +1515 -0
- package/src/providers/fundable/executors.d.ts +4 -0
- package/src/providers/fundable/executors.js +74 -0
- package/src/providers/fusion-api/runtime.js +2 -3
- package/src/providers/gagelist/executors.js +3 -3
- package/src/providers/gainsight_nxt/executors.js +2 -2
- package/src/providers/gamma/executors.js +4 -3
- package/src/providers/gangtise/runtime.js +3 -4
- package/src/providers/gatherup/runtime.js +1 -1
- package/src/providers/geckoboard/executors.js +2 -3
- package/src/providers/gemini/runtime.d.ts +0 -1
- package/src/providers/gemini/runtime.js +5 -6
- package/src/providers/genpage/runtime.js +2 -2
- package/src/providers/geokeo/executors.js +4 -4
- package/src/providers/getnote/runtime.js +2 -3
- package/src/providers/github/runtime-shared.js +2 -2
- package/src/providers/glyphic/runtime.js +3 -4
- package/src/providers/gmail/executors.js +125 -27
- package/src/providers/gmail/message.d.ts +1 -6
- package/src/providers/gmail/message.js +1 -1
- package/src/providers/gong/runtime.js +6 -7
- package/src/providers/googlecalendar/runtime-shared.js +3 -4
- package/src/providers/googledrive/runtime-request.js +2 -3
- package/src/providers/googlesheets/runtime-shared.js +3 -4
- package/src/providers/gorgias/runtime.js +4 -4
- package/src/providers/gotify/executors.js +7 -8
- package/src/providers/greenhouse/executors.js +3 -3
- package/src/providers/gumloop/executors.js +2 -3
- package/src/providers/gumroad/executors.js +2 -3
- package/src/providers/habitica/executors.js +2 -3
- package/src/providers/hackerrank_work/executors.js +2 -3
- package/src/providers/harvest/executors.js +3 -4
- package/src/providers/haveibeenpwned/executors.js +2 -3
- package/src/providers/headout/executors.js +3 -4
- package/src/providers/healthchecks_io/executors.js +2 -3
- package/src/providers/helium10/runtime.js +4 -5
- package/src/providers/helpdesk/runtime.js +4 -4
- package/src/providers/home_assistant/runtime-ws.js +9 -10
- package/src/providers/hotjar/executors.js +4 -4
- package/src/providers/httpsms/runtime.js +3 -4
- package/src/providers/hub_planner/executors.js +3 -3
- package/src/providers/hubspot/runtime.js +3 -4
- package/src/providers/humaans/runtime.js +3 -3
- package/src/providers/hunter/runtime.js +3 -3
- package/src/providers/icypeas/executors.js +3 -4
- package/src/providers/ima/runtime.js +7 -7
- package/src/providers/infolobby/runtime.js +6 -6
- package/src/providers/instabot/runtime.js +6 -6
- package/src/providers/instatus/runtime.js +4 -4
- package/src/providers/intercom/executors.d.ts +2 -0
- package/src/providers/intercom/executors.js +2 -0
- package/src/providers/intercom/trigger-on-conversation-event.d.ts +2 -0
- package/src/providers/intercom/trigger-on-conversation-event.definition.d.ts +4 -0
- package/src/providers/intercom/trigger-on-conversation-event.definition.js +42 -0
- package/src/providers/intercom/trigger-on-conversation-event.js +23 -0
- package/src/providers/intuiface/executors.js +3 -3
- package/src/providers/iplocate/runtime.js +4 -5
- package/src/providers/ipregistry/executors.js +2 -2
- package/src/providers/jiminny/runtime.js +4 -4
- package/src/providers/jin10/executors.js +4 -5
- package/src/providers/jira/executors.d.ts +2 -0
- package/src/providers/jira/executors.js +6 -4
- package/src/providers/jira/trigger-on-issue-event.d.ts +2 -0
- package/src/providers/jira/trigger-on-issue-event.definition.d.ts +4 -0
- package/src/providers/jira/trigger-on-issue-event.definition.js +44 -0
- package/src/providers/jira/trigger-on-issue-event.js +116 -0
- package/src/providers/jira/trigger-resource.d.ts +4 -0
- package/src/providers/jira/trigger-resource.js +141 -0
- package/src/providers/kaleido/runtime.js +2 -2
- package/src/providers/kandji/runtime.js +2 -2
- package/src/providers/keenable/executors.d.ts +4 -0
- package/src/providers/keenable/executors.js +20 -0
- package/src/providers/keenable/runtime.d.ts +26 -0
- package/src/providers/keenable/runtime.js +89 -0
- package/src/providers/keygen/executors.js +4 -4
- package/src/providers/keyword/runtime.js +2 -2
- package/src/providers/kie_ai/executors.js +1 -1
- package/src/providers/kintone/runtime.js +1 -1
- package/src/providers/kit/runtime.js +2 -2
- package/src/providers/klangio/runtime.js +4 -4
- package/src/providers/klaviyo/executors.js +1 -1
- package/src/providers/klazify/executors.js +3 -3
- package/src/providers/klipfolio/runtime.js +3 -3
- package/src/providers/knack/executors.js +1 -1
- package/src/providers/kolsprite_mcp/actions.d.ts +2 -0
- package/src/providers/kolsprite_mcp/actions.js +519 -0
- package/src/providers/kolsprite_mcp/executors.d.ts +4 -0
- package/src/providers/kolsprite_mcp/executors.js +89 -0
- package/src/providers/kommo/runtime.js +2 -2
- package/src/providers/kontent_ai/executors.js +3 -4
- package/src/providers/l2s/executors.js +3 -4
- package/src/providers/latchshot/executors.js +2 -2
- package/src/providers/leadboxer/runtime.js +4 -4
- package/src/providers/leadiq/runtime.js +4 -4
- package/src/providers/linguapop/runtime.js +1 -1
- package/src/providers/lingvanex_translation_api/runtime.js +5 -6
- package/src/providers/lingxing_mcp/runtime.js +3 -4
- package/src/providers/linkup/runtime.js +5 -6
- package/src/providers/litescrape/actions.d.ts +12 -0
- package/src/providers/litescrape/actions.js +124 -0
- package/src/providers/litescrape/airbnb-schemas.d.ts +2 -0
- package/src/providers/litescrape/airbnb-schemas.js +72 -0
- package/src/providers/litescrape/aliexpress-schemas.d.ts +2 -0
- package/src/providers/litescrape/aliexpress-schemas.js +52 -0
- package/src/providers/litescrape/amazon-schemas.d.ts +2 -0
- package/src/providers/litescrape/amazon-schemas.js +358 -0
- package/src/providers/litescrape/apartments-schemas.d.ts +2 -0
- package/src/providers/litescrape/apartments-schemas.js +45 -0
- package/src/providers/litescrape/apple-schemas.d.ts +2 -0
- package/src/providers/litescrape/apple-schemas.js +215 -0
- package/src/providers/litescrape/ashby-schemas.d.ts +2 -0
- package/src/providers/litescrape/ashby-schemas.js +82 -0
- package/src/providers/litescrape/baidu-schemas.d.ts +2 -0
- package/src/providers/litescrape/baidu-schemas.js +31 -0
- package/src/providers/litescrape/bestbuy-schemas.d.ts +2 -0
- package/src/providers/litescrape/bestbuy-schemas.js +56 -0
- package/src/providers/litescrape/bing-schemas.d.ts +2 -0
- package/src/providers/litescrape/bing-schemas.js +315 -0
- package/src/providers/litescrape/brave-schemas.d.ts +2 -0
- package/src/providers/litescrape/brave-schemas.js +101 -0
- package/src/providers/litescrape/copilot-schemas.d.ts +2 -0
- package/src/providers/litescrape/copilot-schemas.js +590 -0
- package/src/providers/litescrape/duckduckgo-schemas.d.ts +2 -0
- package/src/providers/litescrape/duckduckgo-schemas.js +64 -0
- package/src/providers/litescrape/ebay-schemas.d.ts +2 -0
- package/src/providers/litescrape/ebay-schemas.js +300 -0
- package/src/providers/litescrape/etsy-schemas.d.ts +2 -0
- package/src/providers/litescrape/etsy-schemas.js +52 -0
- package/src/providers/litescrape/eventbrite-schemas.d.ts +2 -0
- package/src/providers/litescrape/eventbrite-schemas.js +43 -0
- package/src/providers/litescrape/executors.d.ts +4 -0
- package/src/providers/litescrape/executors.js +138 -0
- package/src/providers/litescrape/facebook-schemas.d.ts +2 -0
- package/src/providers/litescrape/facebook-schemas.js +283 -0
- package/src/providers/litescrape/glassdoor-schemas.d.ts +2 -0
- package/src/providers/litescrape/glassdoor-schemas.js +147 -0
- package/src/providers/litescrape/google-schemas.d.ts +2 -0
- package/src/providers/litescrape/google-schemas.js +1686 -0
- package/src/providers/litescrape/homedepot-schemas.d.ts +2 -0
- package/src/providers/litescrape/homedepot-schemas.js +58 -0
- package/src/providers/litescrape/homes-schemas.d.ts +2 -0
- package/src/providers/litescrape/homes-schemas.js +45 -0
- package/src/providers/litescrape/ikea-schemas.d.ts +2 -0
- package/src/providers/litescrape/ikea-schemas.js +56 -0
- package/src/providers/litescrape/indeed-schemas.d.ts +2 -0
- package/src/providers/litescrape/indeed-schemas.js +141 -0
- package/src/providers/litescrape/instagram-schemas.d.ts +2 -0
- package/src/providers/litescrape/instagram-schemas.js +234 -0
- package/src/providers/litescrape/kroger-schemas.d.ts +2 -0
- package/src/providers/litescrape/kroger-schemas.js +62 -0
- package/src/providers/litescrape/levels-schemas.d.ts +2 -0
- package/src/providers/litescrape/levels-schemas.js +153 -0
- package/src/providers/litescrape/naver-schemas.d.ts +2 -0
- package/src/providers/litescrape/naver-schemas.js +107 -0
- package/src/providers/litescrape/realtor-schemas.d.ts +2 -0
- package/src/providers/litescrape/realtor-schemas.js +47 -0
- package/src/providers/litescrape/redfin-schemas.d.ts +2 -0
- package/src/providers/litescrape/redfin-schemas.js +112 -0
- package/src/providers/litescrape/shared.d.ts +9 -0
- package/src/providers/litescrape/shared.js +1 -0
- package/src/providers/litescrape/sprouts-schemas.d.ts +2 -0
- package/src/providers/litescrape/sprouts-schemas.js +72 -0
- package/src/providers/litescrape/target-schemas.d.ts +2 -0
- package/src/providers/litescrape/target-schemas.js +56 -0
- package/src/providers/litescrape/tiktok-schemas.d.ts +2 -0
- package/src/providers/litescrape/tiktok-schemas.js +625 -0
- package/src/providers/litescrape/tools.d.ts +2 -0
- package/src/providers/litescrape/tools.js +88 -0
- package/src/providers/litescrape/tripadvisor-schemas.d.ts +2 -0
- package/src/providers/litescrape/tripadvisor-schemas.js +119 -0
- package/src/providers/litescrape/walmart-schemas.d.ts +2 -0
- package/src/providers/litescrape/walmart-schemas.js +52 -0
- package/src/providers/litescrape/wayfair-schemas.d.ts +2 -0
- package/src/providers/litescrape/wayfair-schemas.js +52 -0
- package/src/providers/litescrape/web-schemas.d.ts +2 -0
- package/src/providers/litescrape/web-schemas.js +463 -0
- package/src/providers/litescrape/wholefoods-schemas.d.ts +2 -0
- package/src/providers/litescrape/wholefoods-schemas.js +56 -0
- package/src/providers/litescrape/x-schemas.d.ts +2 -0
- package/src/providers/litescrape/x-schemas.js +128 -0
- package/src/providers/litescrape/yahoo-schemas.d.ts +2 -0
- package/src/providers/litescrape/yahoo-schemas.js +234 -0
- package/src/providers/litescrape/yandex-schemas.d.ts +2 -0
- package/src/providers/litescrape/yandex-schemas.js +179 -0
- package/src/providers/litescrape/yelp-schemas.d.ts +2 -0
- package/src/providers/litescrape/yelp-schemas.js +130 -0
- package/src/providers/litescrape/youtube-schemas.d.ts +2 -0
- package/src/providers/litescrape/youtube-schemas.js +128 -0
- package/src/providers/litescrape/zillow-schemas.d.ts +2 -0
- package/src/providers/litescrape/zillow-schemas.js +128 -0
- package/src/providers/litescrape/ziprecruiter-schemas.d.ts +2 -0
- package/src/providers/litescrape/ziprecruiter-schemas.js +96 -0
- package/src/providers/liveagent/executors.js +6 -6
- package/src/providers/loops/executors.js +2 -2
- package/src/providers/loyjoy/runtime.js +2 -2
- package/src/providers/loyverse/executors.js +4 -4
- package/src/providers/lusha/runtime.js +3 -3
- package/src/providers/magichour/actions.d.ts +22 -0
- package/src/providers/magichour/actions.js +308 -0
- package/src/providers/magichour/audio-schemas.d.ts +2 -0
- package/src/providers/magichour/audio-schemas.js +54 -0
- package/src/providers/magichour/executors.d.ts +4 -0
- package/src/providers/magichour/executors.js +115 -0
- package/src/providers/magichour/image-schemas.d.ts +2 -0
- package/src/providers/magichour/image-schemas.js +443 -0
- package/src/providers/magichour/project-schemas.d.ts +8 -0
- package/src/providers/magichour/project-schemas.js +65 -0
- package/src/providers/magichour/shared-schemas.d.ts +8 -0
- package/src/providers/magichour/shared-schemas.js +18 -0
- package/src/providers/magichour/utility-schemas.d.ts +11 -0
- package/src/providers/magichour/utility-schemas.js +150 -0
- package/src/providers/magichour/video-schemas.d.ts +2 -0
- package/src/providers/magichour/video-schemas.js +629 -0
- package/src/providers/magichour/voices.d.ts +1 -0
- package/src/providers/magichour/voices.js +1268 -0
- package/src/providers/mailbluster/runtime.js +3 -4
- package/src/providers/mailcoach/runtime.js +4 -4
- package/src/providers/mailgenius/executors.js +3 -4
- package/src/providers/mailjet/runtime.js +3 -3
- package/src/providers/mails_so/runtime.js +1 -1
- package/src/providers/mailsoftly/runtime.js +5 -5
- package/src/providers/mailtrap/runtime.js +4 -5
- package/src/providers/manus/runtime.js +3 -3
- package/src/providers/mautic/runtime.js +3 -3
- package/src/providers/megaventory/runtime.js +3 -3
- package/src/providers/memberstack/runtime.js +2 -2
- package/src/providers/mendeley/executors.js +2 -3
- package/src/providers/mindbody/runtime.js +3 -3
- package/src/providers/minerstat/executors.js +3 -3
- package/src/providers/minimax/executors.js +19 -4
- package/src/providers/minimax/text-models.d.ts +2 -0
- package/src/providers/minimax/text-models.js +34 -0
- package/src/providers/mintlify/runtime.js +3 -3
- package/src/providers/missive/executors.js +3 -5
- package/src/providers/mixpanel/executors.js +3 -3
- package/src/providers/mobile_text_alerts/runtime.js +3 -3
- package/src/providers/mocean/executors.js +3 -3
- package/src/providers/moco/executors.js +5 -5
- package/src/providers/moesif/runtime.js +4 -4
- package/src/providers/monday/runtime-common.js +3 -3
- package/src/providers/moneyforward_mcp/manifest.d.ts +0 -2
- package/src/providers/moneyforward_mcp/manifest.js +1 -1
- package/src/providers/monica_crm/runtime.js +4 -4
- package/src/providers/moorcheh/runtime.js +3 -3
- package/src/providers/more_trees/runtime.d.ts +0 -1
- package/src/providers/more_trees/runtime.js +7 -8
- package/src/providers/moxie/runtime.js +2 -2
- package/src/providers/msg91/runtime.js +4 -4
- package/src/providers/mx/runtime.js +1 -1
- package/src/providers/needle/runtime.js +3 -4
- package/src/providers/netlify/runtime.js +2 -3
- package/src/providers/niftyimages/executors.js +2 -2
- package/src/providers/northbeam/runtime.js +1 -1
- package/src/providers/notion/executors.js +36 -3
- package/src/providers/nozbe_teams/executors.js +4 -4
- package/src/providers/npm/runtime.js +4 -4
- package/src/providers/nusii_proposals/runtime.js +2 -2
- package/src/providers/ocr_web_service/executors.js +4 -4
- package/src/providers/octen/actions.d.ts +6 -0
- package/src/providers/octen/actions.js +919 -0
- package/src/providers/octen/executors.d.ts +4 -0
- package/src/providers/octen/executors.js +125 -0
- package/src/providers/octen/inputs.d.ts +2 -0
- package/src/providers/octen/inputs.js +2434 -0
- package/src/providers/octen/research.d.ts +1 -0
- package/src/providers/octen/research.js +86 -0
- package/src/providers/octopus_deploy/executors.js +3 -3
- package/src/providers/oksign/runtime.js +3 -4
- package/src/providers/one_drive/executors.js +6 -6
- package/src/providers/one_password_events/runtime.js +1 -1
- package/src/providers/onfleet/runtime.js +3 -3
- package/src/providers/onlyoffice_docspace/runtime.js +4 -4
- package/src/providers/oomnitza/runtime.js +3 -4
- package/src/providers/openrouter/executors.js +7 -4
- package/src/providers/orbit/actions.d.ts +2 -0
- package/src/providers/orbit/actions.js +3030 -0
- package/src/providers/orbit/executors.d.ts +4 -0
- package/src/providers/orbit/executors.js +106 -0
- package/src/providers/orbit/routes.d.ts +9 -0
- package/src/providers/orbit/routes.js +170 -0
- package/src/providers/otter_ai/executors.js +2 -2
- package/src/providers/oura/runtime.js +1 -1
- package/src/providers/paddle/executors.js +3 -3
- package/src/providers/pagerduty/runtime.js +2 -2
- package/src/providers/pandadoc/executors.d.ts +2 -0
- package/src/providers/pandadoc/executors.js +2 -0
- package/src/providers/pandadoc/trigger-on-document-event.d.ts +2 -0
- package/src/providers/pandadoc/trigger-on-document-event.definition.d.ts +4 -0
- package/src/providers/pandadoc/trigger-on-document-event.definition.js +33 -0
- package/src/providers/pandadoc/trigger-on-document-event.js +96 -0
- package/src/providers/paradym/runtime.js +4 -4
- package/src/providers/parallel/runtime.js +3 -3
- package/src/providers/partner_stack_partner/runtime.js +1 -1
- package/src/providers/payrexx/runtime.js +5 -6
- package/src/providers/permit_io/runtime.js +2 -2
- package/src/providers/pinboard/executors.js +5 -6
- package/src/providers/pinpoint/runtime.js +2 -2
- package/src/providers/pipedrive/executors.d.ts +2 -0
- package/src/providers/pipedrive/executors.js +2 -0
- package/src/providers/pipedrive/trigger-on-crm-event.d.ts +2 -0
- package/src/providers/pipedrive/trigger-on-crm-event.definition.d.ts +4 -0
- package/src/providers/pipedrive/trigger-on-crm-event.definition.js +30 -0
- package/src/providers/pipedrive/trigger-on-crm-event.js +101 -0
- package/src/providers/placid/runtime.js +3 -3
- package/src/providers/plain/runtime.js +5 -5
- package/src/providers/planetscale/runtime.js +2 -2
- package/src/providers/planhat/executors.js +6 -6
- package/src/providers/plausible_analytics/runtime.js +3 -3
- package/src/providers/ploid/actions.d.ts +16 -0
- package/src/providers/ploid/actions.js +23 -0
- package/src/providers/ploid/endpoints.json +8440 -0
- package/src/providers/ploid/executors.d.ts +4 -0
- package/src/providers/ploid/executors.js +119 -0
- package/src/providers/posthog/runtime.js +3 -3
- package/src/providers/predis_ai/executors.js +3 -3
- package/src/providers/printavo/runtime.js +2 -2
- package/src/providers/prospeo/runtime.js +2 -3
- package/src/providers/provider-runtime.d.ts +26 -1
- package/src/providers/provider-runtime.js +62 -14
- package/src/providers/push_by_techulus/executors.js +3 -4
- package/src/providers/pushover/runtime.js +4 -5
- package/src/providers/pushsafer/runtime.js +4 -5
- package/src/providers/pylon/runtime.js +2 -2
- package/src/providers/qase/runtime.js +3 -3
- package/src/providers/qdrant/runtime.js +1 -1
- package/src/providers/qichacha/runtime.js +2 -2
- package/src/providers/qingflow/runtime.js +2 -2
- package/src/providers/quickchart/runtime.js +2 -2
- package/src/providers/quintadb/runtime.js +2 -2
- package/src/providers/quo/runtime.js +2 -2
- package/src/providers/rawg/runtime.js +4 -4
- package/src/providers/razorpay/runtime.js +4 -5
- package/src/providers/readme/runtime.js +6 -6
- package/src/providers/referralhero/runtime.js +3 -3
- package/src/providers/registry.generated.js +18 -0
- package/src/providers/render/executors.js +3 -3
- package/src/providers/resend/executors.d.ts +2 -0
- package/src/providers/resend/executors.js +2 -0
- package/src/providers/resend/trigger-on-email-event.d.ts +2 -0
- package/src/providers/resend/trigger-on-email-event.definition.d.ts +4 -0
- package/src/providers/resend/trigger-on-email-event.definition.js +37 -0
- package/src/providers/resend/trigger-on-email-event.js +125 -0
- package/src/providers/respond_io/executors.js +3 -3
- package/src/providers/reversecontact/runtime.js +3 -3
- package/src/providers/ritekit/executors.js +2 -2
- package/src/providers/riveter/executors.js +2 -3
- package/src/providers/rocket_chat/executors.js +3 -4
- package/src/providers/rocket_reach/executors.js +3 -4
- package/src/providers/salesforce/chatter-routes.d.ts +107 -0
- package/src/providers/salesforce/chatter-routes.js +140 -0
- package/src/providers/salesforce/context.d.ts +2 -2
- package/src/providers/salesforce/context.js +7 -4
- package/src/providers/salesforce/executors.js +10 -0
- package/src/providers/salesforce/runtime-approvals.d.ts +2 -0
- package/src/providers/salesforce/runtime-approvals.js +52 -0
- package/src/providers/salesforce/runtime-base.js +14 -3
- package/src/providers/salesforce/runtime-chatter.d.ts +2 -0
- package/src/providers/salesforce/runtime-chatter.js +78 -0
- package/src/providers/salesforce/runtime-knowledge.d.ts +2 -0
- package/src/providers/salesforce/runtime-knowledge.js +34 -0
- package/src/providers/salesforce/runtime-leads.d.ts +2 -0
- package/src/providers/salesforce/runtime-leads.js +117 -0
- package/src/providers/salesforce/runtime-platform.d.ts +2 -0
- package/src/providers/salesforce/runtime-platform.js +67 -0
- package/src/providers/saperly/actions.d.ts +17 -0
- package/src/providers/saperly/actions.js +869 -0
- package/src/providers/saperly/executors.d.ts +4 -0
- package/src/providers/saperly/executors.js +113 -0
- package/src/providers/saperly/schemas.d.ts +33 -0
- package/src/providers/saperly/schemas.js +601 -0
- package/src/providers/saucelabs/runtime.js +4 -4
- package/src/providers/scopus/runtime.js +3 -3
- package/src/providers/scrape_do/executors.js +2 -2
- package/src/providers/scraperapi/runtime.js +4 -4
- package/src/providers/scrapfly/executors.js +2 -2
- package/src/providers/scrapingant/executors.js +6 -7
- package/src/providers/scrapingbee/executors.js +3 -3
- package/src/providers/scrapingdog/executors.js +1 -1
- package/src/providers/screenshot_fyi/executors.js +3 -4
- package/src/providers/screenshotbase/runtime.js +3 -3
- package/src/providers/search1api/actions.d.ts +2 -0
- package/src/providers/search1api/actions.js +39 -0
- package/src/providers/search1api/executors.d.ts +4 -0
- package/src/providers/search1api/executors.js +72 -0
- package/src/providers/search1api/runtime.d.ts +3 -0
- package/src/providers/search1api/runtime.js +44 -0
- package/src/providers/search1api/schemas.d.ts +3 -0
- package/src/providers/search1api/schemas.js +1834 -0
- package/src/providers/search_api/runtime.js +2 -2
- package/src/providers/securitytrails/executors.js +2 -2
- package/src/providers/semantic_scholar/executors.js +2 -2
- package/src/providers/sendbird/executors.js +2 -2
- package/src/providers/sendfox/executors.js +3 -3
- package/src/providers/sendgrid/executors.js +5 -5
- package/src/providers/sendmator/runtime.js +3 -4
- package/src/providers/sentry/executors.d.ts +2 -0
- package/src/providers/sentry/executors.js +2 -0
- package/src/providers/sentry/trigger-on-issue-alert.d.ts +2 -0
- package/src/providers/sentry/trigger-on-issue-alert.definition.d.ts +4 -0
- package/src/providers/sentry/trigger-on-issue-alert.definition.js +64 -0
- package/src/providers/sentry/trigger-on-issue-alert.js +80 -0
- package/src/providers/seqera/runtime.js +3 -4
- package/src/providers/serveravatar/executors.js +3 -3
- package/src/providers/sf_express/runtime.d.ts +0 -16
- package/src/providers/sf_express/runtime.js +2 -2
- package/src/providers/sheetdb/runtime.js +2 -2
- package/src/providers/short_menu/runtime.js +3 -3
- package/src/providers/shortcut/runtime.js +3 -3
- package/src/providers/shortpixel/runtime.js +2 -2
- package/src/providers/shotstack/runtime.js +4 -4
- package/src/providers/signpath/runtime.js +2 -2
- package/src/providers/signwell/runtime.js +5 -6
- package/src/providers/similarweb_digitalrank_api/runtime.js +3 -3
- package/src/providers/simla/runtime.js +5 -5
- package/src/providers/simplybook_me/executors.js +6 -6
- package/src/providers/sitespeakai/runtime.js +3 -3
- package/src/providers/slack/runtime.d.ts +6 -1
- package/src/providers/slack/runtime.js +21 -0
- package/src/providers/slackbot/actions.js +17 -1
- package/src/providers/slackbot/executors.d.ts +2 -0
- package/src/providers/slackbot/executors.js +5 -1
- package/src/providers/slackbot/trigger-on-event.d.ts +2 -0
- package/src/providers/slackbot/trigger-on-event.definition.d.ts +4 -0
- package/src/providers/slackbot/trigger-on-event.definition.js +57 -0
- package/src/providers/slackbot/trigger-on-event.js +23 -0
- package/src/providers/slickdeals/runtime.js +2 -3
- package/src/providers/smartsuite/runtime.js +3 -3
- package/src/providers/sonarcloud/runtime.js +5 -5
- package/src/providers/sorftime/runtime.js +8 -8
- package/src/providers/spider/runtime.js +2 -2
- package/src/providers/splunk_http_event_collector/runtime.js +7 -8
- package/src/providers/sportsdata/runtime.js +4 -4
- package/src/providers/spyfu/runtime.js +4 -5
- package/src/providers/square/runtime.js +4 -4
- package/src/providers/stannp/runtime.js +2 -2
- package/src/providers/stripe/executors.js +2 -2
- package/src/providers/supermemory/runtime.js +3 -3
- package/src/providers/surf/actions.d.ts +21 -0
- package/src/providers/surf/actions.js +26 -0
- package/src/providers/surf/discovery-definitions.d.ts +2 -0
- package/src/providers/surf/discovery-definitions.js +871 -0
- package/src/providers/surf/equity-definitions.d.ts +2 -0
- package/src/providers/surf/equity-definitions.js +322 -0
- package/src/providers/surf/executors.d.ts +4 -0
- package/src/providers/surf/executors.js +131 -0
- package/src/providers/surf/market-definitions.d.ts +2 -0
- package/src/providers/surf/market-definitions.js +885 -0
- package/src/providers/surf/onchain-definitions.d.ts +2 -0
- package/src/providers/surf/onchain-definitions.js +901 -0
- package/src/providers/surf/prediction-definitions.d.ts +2 -0
- package/src/providers/surf/prediction-definitions.js +683 -0
- package/src/providers/surf/shared-schemas.d.ts +18 -0
- package/src/providers/surf/shared-schemas.js +37 -0
- package/src/providers/survey_monkey/runtime.js +3 -3
- package/src/providers/taiga/runtime.js +4 -4
- package/src/providers/talenox/executors.js +4 -4
- package/src/providers/tally/executors.d.ts +2 -0
- package/src/providers/tally/executors.js +2 -0
- package/src/providers/tally/runtime.js +3 -3
- package/src/providers/tally/trigger-on-form-response.d.ts +2 -0
- package/src/providers/tally/trigger-on-form-response.definition.d.ts +4 -0
- package/src/providers/tally/trigger-on-form-response.definition.js +54 -0
- package/src/providers/tally/trigger-on-form-response.js +166 -0
- package/src/providers/tavily/runtime.js +3 -4
- package/src/providers/teamcamp/executors.js +2 -2
- package/src/providers/teamtailor/executors.js +2 -2
- package/src/providers/telegram/executors.js +6 -7
- package/src/providers/teltel/executors.js +2 -2
- package/src/providers/templated/executors.js +3 -3
- package/src/providers/tencent_docs/runtime.js +4 -4
- package/src/providers/tencent_maps/runtime.js +3 -3
- package/src/providers/textcortex/runtime.js +3 -3
- package/src/providers/the_cat_api/runtime.js +3 -3
- package/src/providers/the_colony/runtime.js +3 -3
- package/src/providers/the_odds_api/runtime.js +3 -4
- package/src/providers/the_official_board/runtime.js +4 -4
- package/src/providers/thehive/runtime.js +1 -1
- package/src/providers/tikhub/endpoint-catalog.js +2 -3
- package/src/providers/tiktok_business/runtime.js +2 -2
- package/src/providers/timecamp/runtime.js +2 -2
- package/src/providers/timelink/runtime.js +2 -2
- package/src/providers/tinyfish/actions.d.ts +6 -0
- package/src/providers/tinyfish/actions.js +19 -0
- package/src/providers/tinyfish/agent-actions.d.ts +2 -0
- package/src/providers/tinyfish/agent-actions.js +268 -0
- package/src/providers/tinyfish/data-actions.d.ts +2 -0
- package/src/providers/tinyfish/data-actions.js +186 -0
- package/src/providers/tinyfish/data-schemas.d.ts +7 -0
- package/src/providers/tinyfish/data-schemas.js +103 -0
- package/src/providers/tinyfish/endpoints.d.ts +14 -0
- package/src/providers/tinyfish/endpoints.js +1 -0
- package/src/providers/tinyfish/executors.d.ts +4 -0
- package/src/providers/tinyfish/executors.js +133 -0
- package/src/providers/tinyfish/management-actions.d.ts +2 -0
- package/src/providers/tinyfish/management-actions.js +524 -0
- package/src/providers/tinyfish/monitor-schemas.d.ts +5 -0
- package/src/providers/tinyfish/monitor-schemas.js +65 -0
- package/src/providers/tinyfish/research-schemas.d.ts +6 -0
- package/src/providers/tinyfish/research-schemas.js +71 -0
- package/src/providers/totp/runtime.js +4 -5
- package/src/providers/trawlingweb/runtime.js +2 -2
- package/src/providers/trello/executors.js +5 -2
- package/src/providers/trilium/runtime.js +2 -2
- package/src/providers/triple_whale/runtime.js +3 -3
- package/src/providers/truvera/runtime.js +2 -2
- package/src/providers/tuskr/runtime.js +2 -2
- package/src/providers/typebot/runtime.js +2 -2
- package/src/providers/typeform/executors.d.ts +2 -0
- package/src/providers/typeform/executors.js +2 -0
- package/src/providers/typeform/runtime.js +2 -2
- package/src/providers/typeform/trigger-on-form-response.d.ts +2 -0
- package/src/providers/typeform/trigger-on-form-response.definition.d.ts +4 -0
- package/src/providers/typeform/trigger-on-form-response.definition.js +40 -0
- package/src/providers/typeform/trigger-on-form-response.js +68 -0
- package/src/providers/uptimerobot/executors.js +3 -4
- package/src/providers/v2ex/runtime.js +8 -9
- package/src/providers/valyu/runtime.js +3 -3
- package/src/providers/vapi/runtime.js +4 -4
- package/src/providers/vaquill/actions.d.ts +13 -0
- package/src/providers/vaquill/actions.js +529 -0
- package/src/providers/vaquill/executors.d.ts +4 -0
- package/src/providers/vaquill/executors.js +141 -0
- package/src/providers/vaquill/schemas.d.ts +67 -0
- package/src/providers/vaquill/schemas.js +4953 -0
- package/src/providers/vectorshift/runtime.js +3 -3
- package/src/providers/venafitlsprotectcloud/runtime.js +2 -3
- package/src/providers/venafitlsprotectdatacenter/runtime.js +2 -3
- package/src/providers/vercel/executors.d.ts +2 -0
- package/src/providers/vercel/executors.js +2 -0
- package/src/providers/vercel/trigger-on-deployment-event.d.ts +2 -0
- package/src/providers/vercel/trigger-on-deployment-event.definition.d.ts +5 -0
- package/src/providers/vercel/trigger-on-deployment-event.definition.js +41 -0
- package/src/providers/vercel/trigger-on-deployment-event.js +102 -0
- package/src/providers/vida/runtime.js +4 -4
- package/src/providers/vonage/runtime.js +3 -3
- package/src/providers/walmart_marketplace/runtime.js +5 -5
- package/src/providers/weatherapi/executors.js +3 -4
- package/src/providers/web_of_science/runtime.js +4 -4
- package/src/providers/web_of_science_expanded/runtime.js +9 -9
- package/src/providers/webex/runtime.js +3 -3
- package/src/providers/webinarjam/runtime.js +4 -4
- package/src/providers/webscraping_ai/runtime.js +3 -3
- package/src/providers/webvizio/runtime.js +3 -4
- package/src/providers/wecom_bot/smart-runtime.js +4 -5
- package/src/providers/wecom_mcp/runtime.js +3 -4
- package/src/providers/weixin_bot/runtime.d.ts +0 -1
- package/src/providers/weixin_bot/runtime.js +1 -1
- package/src/providers/weixin_store/access-token.d.ts +3 -3
- package/src/providers/weixin_store/access-token.js +15 -7
- package/src/providers/weixin_store/executors.js +214 -1
- package/src/providers/wejam_ai/runtime.js +3 -3
- package/src/providers/wolfram_alpha_api/runtime.js +3 -3
- package/src/providers/woocommerce/runtime.js +1 -1
- package/src/providers/woodpecker_co/executors.js +3 -4
- package/src/providers/woot/runtime.js +6 -6
- package/src/providers/workable/runtime.js +3 -3
- package/src/providers/workday/runtime.js +4 -4
- package/src/providers/workiom/runtime.js +2 -2
- package/src/providers/workiz/runtime.js +2 -2
- package/src/providers/workpath/executors.js +3 -4
- package/src/providers/worksnaps/executors.js +2 -2
- package/src/providers/y_gy/runtime.js +2 -2
- package/src/providers/zenscrape/runtime.js +3 -3
- package/src/providers/zep/runtime.js +4 -4
- package/src/providers/zeplin/runtime.js +2 -2
- package/src/providers/zhihu/executors.js +6 -6
- package/src/providers/zoom/executors.d.ts +2 -0
- package/src/providers/zoom/executors.js +2 -0
- package/src/providers/zoom/trigger-on-recording-ready.d.ts +2 -0
- package/src/providers/zoom/trigger-on-recording-ready.definition.d.ts +4 -0
- package/src/providers/zoom/trigger-on-recording-ready.definition.js +44 -0
- package/src/providers/zoom/trigger-on-recording-ready.js +39 -0
- package/src/providers/zylvie/runtime.js +4 -4
- package/src/saas/saas-cleanup-service.d.ts +2 -0
- package/src/saas/saas-cleanup-service.js +2 -1
- package/src/saas/saas-execution-service.d.ts +1 -1
- package/src/server/actions/action-runner.js +1 -1
- package/src/server/api/action-example.js +12 -1
- package/src/server/api/auth.js +3 -0
- package/src/server/api/connection-routes.js +1 -1
- package/src/server/api/console-catalog-routes.js +1 -1
- package/src/server/api/console-oauth-routes.d.ts +3 -1
- package/src/server/api/console-oauth-routes.js +22 -9
- package/src/server/api/oauth-completion-page.d.ts +57 -0
- package/src/server/api/oauth-completion-page.js +135 -10
- package/src/server/api/openapi.d.ts +5 -0
- package/src/server/api/openapi.js +62 -2
- package/src/server/api/pattern-example.js +35 -1
- package/src/server/api/runtime-api.d.ts +2 -1
- package/src/server/api/runtime-app-routes.js +1 -1
- package/src/server/api/runtime-execution-routes.js +2 -1
- package/src/server/api/trigger-routes.js +1 -1
- package/src/server/connect-app.d.ts +4 -0
- package/src/server/connect-app.js +15 -1
- package/src/server/connect-server.d.ts +6 -0
- package/src/server/connect-server.js +114 -4
- package/src/server/connector-runtime.d.ts +6 -8
- package/src/server/connector-runtime.js +8 -28
- package/src/server/proxy/proxy-runner.js +1 -1
- package/src/server/slack-event-verification.d.ts +37 -0
- package/src/server/slack-event-verification.js +91 -0
- package/src/server/storage/connection-request-store.d.ts +1 -1
- package/src/server/storage/connection-store.d.ts +1 -1
- package/src/server/storage/postgres/runtime-store.d.ts +1 -1
- package/src/server/storage/runtime-database.d.ts +1 -1
- package/src/server/storage/saas-project-store.d.ts +1 -1
- package/src/triggers/common/integration.d.ts +15 -3
- package/src/triggers/common/integration.js +5 -0
- package/src/triggers/common/proxy.d.ts +7 -0
- package/src/triggers/maintenance.d.ts +2 -0
- package/src/triggers/maintenance.js +2 -1
- package/src/triggers/managed-webhook.d.ts +13 -0
- package/src/triggers/managed-webhook.js +48 -0
- package/src/triggers/request.d.ts +5 -1
- package/src/triggers/request.js +2 -0
- package/src/triggers/resources.d.ts +8 -2
- package/src/triggers/resources.js +31 -0
- package/src/triggers/signature.d.ts +3 -3
- package/src/triggers/signature.js +4 -6
- package/src/triggers/sources/configuration-schema.d.ts +5 -0
- package/src/triggers/sources/configuration-schema.js +118 -0
- package/src/triggers/sources/configuration.d.ts +115 -0
- package/src/triggers/sources/configuration.js +1 -0
- package/src/triggers/sources/definition.d.ts +61 -0
- package/src/triggers/sources/definition.js +3 -0
- package/src/triggers/sources/feishu-demands.d.ts +6 -0
- package/src/triggers/sources/feishu-demands.js +24 -0
- package/src/triggers/sources/feishu-events.d.ts +19 -0
- package/src/triggers/sources/feishu-events.js +108 -0
- package/src/triggers/sources/feishu.d.ts +3 -0
- package/src/triggers/sources/feishu.js +85 -0
- package/src/triggers/sources/fireflies.d.ts +3 -0
- package/src/triggers/sources/fireflies.js +100 -0
- package/src/triggers/sources/intercom.d.ts +3 -0
- package/src/triggers/sources/intercom.js +86 -0
- package/src/triggers/sources/jira.d.ts +3 -0
- package/src/triggers/sources/jira.js +120 -0
- package/src/triggers/sources/operation.d.ts +42 -0
- package/src/triggers/sources/operation.js +146 -0
- package/src/triggers/sources/sentry.d.ts +3 -0
- package/src/triggers/sources/sentry.js +125 -0
- package/src/triggers/sources/signature.d.ts +1 -0
- package/src/triggers/sources/signature.js +10 -0
- package/src/triggers/sources/slack-signature.d.ts +10 -0
- package/src/triggers/sources/slack-signature.js +13 -0
- package/src/triggers/sources/slack.d.ts +3 -0
- package/src/triggers/sources/slack.js +125 -0
- package/src/triggers/sources/zoom.d.ts +3 -0
- package/src/triggers/sources/zoom.js +113 -0
- package/src/triggers/trigger-runner.d.ts +2 -0
- package/src/triggers/trigger-runner.js +53 -17
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { isJsonObject } from "../common/json.js";
|
|
2
|
+
import { SourceIdentityError } from "./definition.js";
|
|
3
|
+
import { verifySourceHmac } from "./signature.js";
|
|
4
|
+
export const sentryApplication = {
|
|
5
|
+
kind: "sentry",
|
|
6
|
+
provider: "sentry",
|
|
7
|
+
applicationIngress: true,
|
|
8
|
+
maximumBodyBytes: 64 * 1024,
|
|
9
|
+
initialize(input, accountId) {
|
|
10
|
+
if (input.kind !== "sentry" || !accountId)
|
|
11
|
+
throw new SourceIdentityError("Connector must provide the verified Sentry organization identity.");
|
|
12
|
+
if (input.eventTypes.length !== 1 || input.eventTypes[0] !== "issue.alert")
|
|
13
|
+
throw new SourceIdentityError("Only Sentry Issue Alert Rule notifications are supported.");
|
|
14
|
+
return {
|
|
15
|
+
identity: JSON.stringify([input.teamId, input.connectionId, input.appId, input.installationId, accountId]),
|
|
16
|
+
eventTypes: input.eventTypes,
|
|
17
|
+
config: {
|
|
18
|
+
appId: input.appId,
|
|
19
|
+
installationId: input.installationId,
|
|
20
|
+
organizationId: input.organizationId,
|
|
21
|
+
accountId,
|
|
22
|
+
},
|
|
23
|
+
secrets: { signingSecret: input.signingSecret },
|
|
24
|
+
state: {},
|
|
25
|
+
};
|
|
26
|
+
},
|
|
27
|
+
async verifyIdentity(source, read) {
|
|
28
|
+
const identity = await read(source.config);
|
|
29
|
+
if (!isJsonObject(identity) ||
|
|
30
|
+
identity.accountId !== source.config.accountId ||
|
|
31
|
+
identity.appId !== source.config.appId ||
|
|
32
|
+
identity.installationId !== source.config.installationId ||
|
|
33
|
+
typeof identity.organizationSlug !== "string" ||
|
|
34
|
+
typeof identity.organizationId !== "string")
|
|
35
|
+
throw new SourceIdentityError("The Sentry installation does not belong to the connected organization and application.");
|
|
36
|
+
return {
|
|
37
|
+
...source,
|
|
38
|
+
config: {
|
|
39
|
+
...source.config,
|
|
40
|
+
organizationSlug: identity.organizationSlug,
|
|
41
|
+
organizationId: identity.organizationId,
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
},
|
|
45
|
+
update(source, input) {
|
|
46
|
+
if (input.verificationToken != null || input.encryptKey != null)
|
|
47
|
+
throw new SourceIdentityError("Sentry uses the integration Client Secret.");
|
|
48
|
+
if (input.eventTypes.length !== 1 || input.eventTypes[0] !== "issue.alert")
|
|
49
|
+
throw new SourceIdentityError("Only Sentry Issue Alert Rule notifications are supported.");
|
|
50
|
+
const signingSecret = input.signingSecret ?? source.secrets.signingSecret;
|
|
51
|
+
return {
|
|
52
|
+
...source,
|
|
53
|
+
eventTypes: input.eventTypes,
|
|
54
|
+
secrets: { signingSecret },
|
|
55
|
+
state: signingSecret === source.secrets.signingSecret ? source.state : {},
|
|
56
|
+
};
|
|
57
|
+
},
|
|
58
|
+
view(source) {
|
|
59
|
+
return {
|
|
60
|
+
appId: String(source.config.appId),
|
|
61
|
+
installationId: String(source.config.installationId),
|
|
62
|
+
organizationId: String(source.config.organizationId),
|
|
63
|
+
manageSubscriptions: false,
|
|
64
|
+
verificationTokenConfigured: false,
|
|
65
|
+
encryptKeyConfigured: false,
|
|
66
|
+
signingSecretConfigured: true,
|
|
67
|
+
verifiedAt: typeof source.state.verifiedAt === "number" ? new Date(source.state.verifiedAt).toISOString() : null,
|
|
68
|
+
};
|
|
69
|
+
},
|
|
70
|
+
ready: (source) => typeof source.state.verifiedAt === "number",
|
|
71
|
+
async receive(source, bytes, headers, now) {
|
|
72
|
+
const signature = headers.get("sentry-hook-signature") ?? "";
|
|
73
|
+
if (!/^[0-9a-f]{64}$/.test(signature))
|
|
74
|
+
throw new TypeError("Invalid Sentry signature.");
|
|
75
|
+
if (!(await verifySourceHmac(bytes, signature, String(source.secrets.signingSecret))))
|
|
76
|
+
throw new TypeError("Invalid Sentry signature.");
|
|
77
|
+
const payload = JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(bytes));
|
|
78
|
+
if (!isJsonObject(payload) || !isJsonObject(payload.installation))
|
|
79
|
+
throw new TypeError("Invalid Sentry envelope.");
|
|
80
|
+
if (payload.installation.uuid !== source.config.installationId ||
|
|
81
|
+
headers.get("sentry-hook-resource") !== "event_alert" ||
|
|
82
|
+
payload.action !== "triggered")
|
|
83
|
+
return { response: Response.json({}), state: source.state };
|
|
84
|
+
if (!isJsonObject(payload.data) || !isJsonObject(payload.data.event))
|
|
85
|
+
throw new TypeError("Invalid Sentry issue alert.");
|
|
86
|
+
const event = payload.data.event;
|
|
87
|
+
if (typeof event.event_id !== "string" ||
|
|
88
|
+
!event.event_id ||
|
|
89
|
+
typeof event.issue_id !== "string" ||
|
|
90
|
+
!event.issue_id ||
|
|
91
|
+
typeof payload.data.triggered_rule !== "string" ||
|
|
92
|
+
!payload.data.triggered_rule)
|
|
93
|
+
throw new TypeError("Incomplete Sentry issue alert.");
|
|
94
|
+
const deliveryId = JSON.stringify([source.config.installationId, event.event_id, payload.data.triggered_rule]);
|
|
95
|
+
return {
|
|
96
|
+
state: { ...source.state, verifiedAt: now },
|
|
97
|
+
event: {
|
|
98
|
+
id: deliveryId,
|
|
99
|
+
type: "issue.alert",
|
|
100
|
+
payload: {
|
|
101
|
+
event: "issue.alert",
|
|
102
|
+
deliveryId,
|
|
103
|
+
organizationId: source.config.organizationId,
|
|
104
|
+
issueId: event.issue_id,
|
|
105
|
+
body: payload.data,
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
},
|
|
110
|
+
matches(config, event) {
|
|
111
|
+
if (!Array.isArray(config.eventTypes) || !config.eventTypes.includes(event.type))
|
|
112
|
+
return false;
|
|
113
|
+
const body = event.payload.body;
|
|
114
|
+
if (!isJsonObject(body) || !isJsonObject(body.event))
|
|
115
|
+
return false;
|
|
116
|
+
if (Array.isArray(config.projectIds) &&
|
|
117
|
+
config.projectIds.length > 0 &&
|
|
118
|
+
!config.projectIds.includes(String(body.event.project)))
|
|
119
|
+
return false;
|
|
120
|
+
return (!Array.isArray(config.ruleNames) ||
|
|
121
|
+
config.ruleNames.length === 0 ||
|
|
122
|
+
config.ruleNames.includes(body.triggered_rule));
|
|
123
|
+
},
|
|
124
|
+
resources: { triggerId: "sentry.on_issue_alert", requests: () => [] },
|
|
125
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function verifySourceHmac(bytes: Uint8Array, signature: string, secret: string, hash?: "SHA-1" | "SHA-256"): Promise<boolean>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export async function verifySourceHmac(bytes, signature, secret, hash = "SHA-256") {
|
|
2
|
+
const length = hash === "SHA-1" ? 40 : 64;
|
|
3
|
+
if (signature.length !== length || !/^[0-9a-f]+$/.test(signature))
|
|
4
|
+
return false;
|
|
5
|
+
const key = await crypto.subtle.importKey("raw", new TextEncoder().encode(secret), { name: "HMAC", hash }, false, [
|
|
6
|
+
"verify",
|
|
7
|
+
]);
|
|
8
|
+
const supplied = Uint8Array.from(signature.match(/../g), (value) => Number.parseInt(value, 16));
|
|
9
|
+
return crypto.subtle.verify("HMAC", key, supplied, bytes.slice());
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface SlackSignatureInput {
|
|
2
|
+
timestamp: string;
|
|
3
|
+
signature: string;
|
|
4
|
+
rawBody: Uint8Array;
|
|
5
|
+
signingSecret: string;
|
|
6
|
+
now: number;
|
|
7
|
+
}
|
|
8
|
+
/** Verify Slack's timestamp and signature over the original request bytes. */
|
|
9
|
+
export declare function verifySlackSignature(input: SlackSignatureInput): Promise<"timestamp" | "signature" | undefined>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { verifySourceHmac } from "./signature.js";
|
|
2
|
+
/** Verify Slack's timestamp and signature over the original request bytes. */
|
|
3
|
+
export async function verifySlackSignature(input) {
|
|
4
|
+
if (!/^\d{10}$/.test(input.timestamp) || Math.abs(input.now - Number(input.timestamp) * 1000) > 300_000)
|
|
5
|
+
return "timestamp";
|
|
6
|
+
if (!/^v0=[0-9a-f]{64}$/.test(input.signature) || !input.signingSecret)
|
|
7
|
+
return "signature";
|
|
8
|
+
const prefix = new TextEncoder().encode(`v0:${input.timestamp}:`);
|
|
9
|
+
const signed = new Uint8Array(prefix.length + input.rawBody.byteLength);
|
|
10
|
+
signed.set(prefix);
|
|
11
|
+
signed.set(input.rawBody, prefix.length);
|
|
12
|
+
return (await verifySourceHmac(signed, input.signature.slice(3), input.signingSecret)) ? undefined : "signature";
|
|
13
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { CreateEventSource, EventSource, UpdateEventSource } from "./configuration.ts";
|
|
2
|
+
import type { EventSourceDefinition } from "./definition.ts";
|
|
3
|
+
export declare const slackApplication: EventSourceDefinition<CreateEventSource, UpdateEventSource, Pick<EventSource, "appId" | "workspaceId" | "manageSubscriptions" | "verificationTokenConfigured" | "encryptKeyConfigured" | "signingSecretConfigured" | "verifiedAt">>;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { isJsonObject } from "../common/json.js";
|
|
2
|
+
import { SourceIdentityError } from "./definition.js";
|
|
3
|
+
import { verifySlackSignature } from "./slack-signature.js";
|
|
4
|
+
const events = new Set(["app_mention", "message.im"]);
|
|
5
|
+
export const slackApplication = {
|
|
6
|
+
kind: "slack",
|
|
7
|
+
applicationIngress: true,
|
|
8
|
+
provider: "slackbot",
|
|
9
|
+
maximumBodyBytes: 64 * 1024,
|
|
10
|
+
initialize(input, accountId) {
|
|
11
|
+
if (input.kind !== "slack" || accountId == null || !/^U[A-Z0-9]+$/.test(accountId))
|
|
12
|
+
throw new SourceIdentityError("Connector must provide the verified Slack bot user identity.");
|
|
13
|
+
if (input.eventTypes.some((event) => !events.has(event)))
|
|
14
|
+
throw new SourceIdentityError("Unsupported Slack event type.");
|
|
15
|
+
return {
|
|
16
|
+
identity: JSON.stringify([input.teamId, input.connectionId, input.appId, input.workspaceId, accountId]),
|
|
17
|
+
eventTypes: input.eventTypes,
|
|
18
|
+
config: { appId: input.appId, workspaceId: input.workspaceId, accountId },
|
|
19
|
+
secrets: { signingSecret: input.signingSecret },
|
|
20
|
+
state: {},
|
|
21
|
+
};
|
|
22
|
+
},
|
|
23
|
+
update(source, input) {
|
|
24
|
+
if (input.eventTypes.some((event) => !events.has(event)))
|
|
25
|
+
throw new SourceIdentityError("Unsupported Slack event type.");
|
|
26
|
+
const signingSecret = input.signingSecret ?? source.secrets.signingSecret;
|
|
27
|
+
return {
|
|
28
|
+
...source,
|
|
29
|
+
eventTypes: input.eventTypes,
|
|
30
|
+
secrets: { signingSecret },
|
|
31
|
+
state: signingSecret === source.secrets.signingSecret ? source.state : {},
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
view(source) {
|
|
35
|
+
return {
|
|
36
|
+
appId: String(source.config.appId),
|
|
37
|
+
workspaceId: String(source.config.workspaceId),
|
|
38
|
+
manageSubscriptions: false,
|
|
39
|
+
verificationTokenConfigured: false,
|
|
40
|
+
encryptKeyConfigured: false,
|
|
41
|
+
signingSecretConfigured: true,
|
|
42
|
+
verifiedAt: typeof source.state.verifiedAt === "number" ? new Date(source.state.verifiedAt).toISOString() : null,
|
|
43
|
+
};
|
|
44
|
+
},
|
|
45
|
+
ready: (source) => typeof source.state.verifiedAt === "number",
|
|
46
|
+
async receive(source, bytes, headers, now) {
|
|
47
|
+
const timestamp = headers.get("x-slack-request-timestamp") ?? "";
|
|
48
|
+
const signature = headers.get("x-slack-signature") ?? "";
|
|
49
|
+
const failure = await verifySlackSignature({
|
|
50
|
+
timestamp,
|
|
51
|
+
signature,
|
|
52
|
+
rawBody: bytes,
|
|
53
|
+
signingSecret: String(source.secrets.signingSecret),
|
|
54
|
+
now,
|
|
55
|
+
});
|
|
56
|
+
if (failure)
|
|
57
|
+
throw new TypeError("Invalid Slack signature or timestamp.");
|
|
58
|
+
const payload = JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(bytes));
|
|
59
|
+
if (!isJsonObject(payload))
|
|
60
|
+
throw new TypeError("Invalid Slack envelope.");
|
|
61
|
+
if (payload.type === "url_verification") {
|
|
62
|
+
if (typeof payload.challenge !== "string" || !payload.challenge || payload.challenge.length > 1024)
|
|
63
|
+
throw new TypeError("Invalid Slack challenge.");
|
|
64
|
+
return { response: Response.json({ challenge: payload.challenge }), state: { ...source.state, verifiedAt: now } };
|
|
65
|
+
}
|
|
66
|
+
const ignored = () => ({ response: Response.json({}), state: source.state });
|
|
67
|
+
if (payload.type !== "event_callback" ||
|
|
68
|
+
payload.api_app_id !== source.config.appId ||
|
|
69
|
+
payload.team_id !== source.config.workspaceId)
|
|
70
|
+
return ignored();
|
|
71
|
+
if (!Array.isArray(payload.authorizations) ||
|
|
72
|
+
!payload.authorizations.some((authorization) => isJsonObject(authorization) &&
|
|
73
|
+
authorization.is_bot === true &&
|
|
74
|
+
authorization.user_id === source.config.accountId &&
|
|
75
|
+
authorization.team_id === source.config.workspaceId))
|
|
76
|
+
return ignored();
|
|
77
|
+
const event = payload.event;
|
|
78
|
+
if (!isJsonObject(event) ||
|
|
79
|
+
event.bot_id != null ||
|
|
80
|
+
event.subtype != null ||
|
|
81
|
+
event.user === source.config.accountId ||
|
|
82
|
+
payload.is_ext_shared_channel === true)
|
|
83
|
+
return ignored();
|
|
84
|
+
const type = event.type === "app_mention"
|
|
85
|
+
? "app_mention"
|
|
86
|
+
: event.type === "message" && event.channel_type === "im"
|
|
87
|
+
? "message.im"
|
|
88
|
+
: undefined;
|
|
89
|
+
if (type == null)
|
|
90
|
+
return ignored();
|
|
91
|
+
if (typeof payload.event_id !== "string" ||
|
|
92
|
+
!payload.event_id ||
|
|
93
|
+
typeof event.channel !== "string" ||
|
|
94
|
+
typeof event.user !== "string" ||
|
|
95
|
+
typeof event.text !== "string" ||
|
|
96
|
+
typeof event.ts !== "string")
|
|
97
|
+
throw new TypeError("Incomplete Slack event.");
|
|
98
|
+
return {
|
|
99
|
+
event: {
|
|
100
|
+
id: payload.event_id,
|
|
101
|
+
type,
|
|
102
|
+
payload: {
|
|
103
|
+
event: type,
|
|
104
|
+
deliveryId: payload.event_id,
|
|
105
|
+
appId: payload.api_app_id,
|
|
106
|
+
teamId: payload.team_id,
|
|
107
|
+
channel: event.channel,
|
|
108
|
+
user: event.user,
|
|
109
|
+
text: event.text,
|
|
110
|
+
ts: event.ts,
|
|
111
|
+
threadTs: typeof event.thread_ts === "string" ? event.thread_ts : null,
|
|
112
|
+
body: event,
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
},
|
|
117
|
+
matches(config, event) {
|
|
118
|
+
return (Array.isArray(config.eventTypes) &&
|
|
119
|
+
config.eventTypes.includes(event.type) &&
|
|
120
|
+
(!Array.isArray(config.channelIds) ||
|
|
121
|
+
config.channelIds.length === 0 ||
|
|
122
|
+
config.channelIds.includes(event.payload.channel)));
|
|
123
|
+
},
|
|
124
|
+
resources: { triggerId: "slackbot.on_event", requests: () => [] },
|
|
125
|
+
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { CreateEventSource, EventSource, UpdateEventSource } from "./configuration.ts";
|
|
2
|
+
import type { EventSourceDefinition } from "./definition.ts";
|
|
3
|
+
export declare const zoomApplication: EventSourceDefinition<CreateEventSource, UpdateEventSource, Pick<EventSource, "appId" | "manageSubscriptions" | "verificationTokenConfigured" | "encryptKeyConfigured" | "signingSecretConfigured" | "verifiedAt">>;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { isJsonObject } from "../common/json.js";
|
|
2
|
+
import { SourceIdentityError } from "./definition.js";
|
|
3
|
+
import { verifySourceHmac } from "./signature.js";
|
|
4
|
+
const encoder = new TextEncoder();
|
|
5
|
+
export const zoomApplication = {
|
|
6
|
+
kind: "zoom",
|
|
7
|
+
provider: "zoom",
|
|
8
|
+
applicationIngress: true,
|
|
9
|
+
maximumBodyBytes: 64 * 1024,
|
|
10
|
+
initialize(input, accountId) {
|
|
11
|
+
if (input.kind !== "zoom" || !accountId)
|
|
12
|
+
throw new SourceIdentityError("Connector must provide the verified Zoom connection identity.");
|
|
13
|
+
if (input.eventTypes.length !== 1 || input.eventTypes[0] !== "recording.completed")
|
|
14
|
+
throw new SourceIdentityError("Only completed Zoom cloud recordings are supported.");
|
|
15
|
+
return {
|
|
16
|
+
identity: JSON.stringify([input.teamId, input.connectionId, input.appId, accountId]),
|
|
17
|
+
eventTypes: input.eventTypes,
|
|
18
|
+
config: { appId: input.appId, accountId },
|
|
19
|
+
secrets: { signingSecret: input.signingSecret },
|
|
20
|
+
state: {},
|
|
21
|
+
};
|
|
22
|
+
},
|
|
23
|
+
async verifyIdentity(source, read) {
|
|
24
|
+
const identity = await read(source.config);
|
|
25
|
+
if (!isJsonObject(identity) ||
|
|
26
|
+
identity.accountId !== source.config.accountId ||
|
|
27
|
+
typeof identity.userId !== "string" ||
|
|
28
|
+
!identity.userId ||
|
|
29
|
+
typeof identity.zoomAccountId !== "string" ||
|
|
30
|
+
!identity.zoomAccountId)
|
|
31
|
+
throw new SourceIdentityError("Zoom did not return the connected user and account identity.");
|
|
32
|
+
if (source.config.userId != null &&
|
|
33
|
+
(source.config.userId !== identity.userId || source.config.zoomAccountId !== identity.zoomAccountId))
|
|
34
|
+
throw new SourceIdentityError("The Zoom user or account changed. Recreate the event source.");
|
|
35
|
+
return { ...source, config: { ...source.config, userId: identity.userId, zoomAccountId: identity.zoomAccountId } };
|
|
36
|
+
},
|
|
37
|
+
update(source, input) {
|
|
38
|
+
if (input.verificationToken != null || input.encryptKey != null)
|
|
39
|
+
throw new SourceIdentityError("Zoom uses the Webhook Secret Token.");
|
|
40
|
+
if (input.eventTypes.length !== 1 || input.eventTypes[0] !== "recording.completed")
|
|
41
|
+
throw new SourceIdentityError("Only completed Zoom cloud recordings are supported.");
|
|
42
|
+
const signingSecret = input.signingSecret ?? source.secrets.signingSecret;
|
|
43
|
+
return {
|
|
44
|
+
...source,
|
|
45
|
+
eventTypes: input.eventTypes,
|
|
46
|
+
secrets: { signingSecret },
|
|
47
|
+
state: signingSecret === source.secrets.signingSecret ? source.state : {},
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
view(source) {
|
|
51
|
+
return {
|
|
52
|
+
appId: String(source.config.appId),
|
|
53
|
+
manageSubscriptions: false,
|
|
54
|
+
verificationTokenConfigured: false,
|
|
55
|
+
encryptKeyConfigured: false,
|
|
56
|
+
signingSecretConfigured: true,
|
|
57
|
+
verifiedAt: typeof source.state.verifiedAt === "number" ? new Date(source.state.verifiedAt).toISOString() : null,
|
|
58
|
+
};
|
|
59
|
+
},
|
|
60
|
+
ready: (source) => typeof source.state.verifiedAt === "number",
|
|
61
|
+
async receive(source, bytes, headers, now) {
|
|
62
|
+
const timestamp = headers.get("x-zm-request-timestamp") ?? "";
|
|
63
|
+
const signature = headers.get("x-zm-signature") ?? "";
|
|
64
|
+
if (!/^\d{10}$/.test(timestamp) ||
|
|
65
|
+
Math.abs(now - Number(timestamp) * 1000) > 300000 ||
|
|
66
|
+
!signature.startsWith("v0="))
|
|
67
|
+
throw new TypeError("Invalid Zoom signature or timestamp.");
|
|
68
|
+
const prefix = encoder.encode(`v0:${timestamp}:`);
|
|
69
|
+
const signed = new Uint8Array(prefix.length + bytes.length);
|
|
70
|
+
signed.set(prefix);
|
|
71
|
+
signed.set(bytes, prefix.length);
|
|
72
|
+
if (!(await verifySourceHmac(signed, signature.slice(3), String(source.secrets.signingSecret))))
|
|
73
|
+
throw new TypeError("Invalid Zoom signature.");
|
|
74
|
+
const payload = JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(bytes));
|
|
75
|
+
if (!isJsonObject(payload) || !isJsonObject(payload.payload))
|
|
76
|
+
throw new TypeError("Invalid Zoom envelope.");
|
|
77
|
+
if (payload.event === "endpoint.url_validation") {
|
|
78
|
+
const plainToken = payload.payload.plainToken;
|
|
79
|
+
if (typeof plainToken !== "string" || !plainToken || plainToken.length > 1024)
|
|
80
|
+
throw new TypeError("Invalid Zoom challenge.");
|
|
81
|
+
const key = await crypto.subtle.importKey("raw", encoder.encode(String(source.secrets.signingSecret)), { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
|
|
82
|
+
const digest = await crypto.subtle.sign("HMAC", key, encoder.encode(plainToken));
|
|
83
|
+
const encryptedToken = Array.from(new Uint8Array(digest), (value) => value.toString(16).padStart(2, "0")).join("");
|
|
84
|
+
return { response: Response.json({ plainToken, encryptedToken }), state: { ...source.state, verifiedAt: now } };
|
|
85
|
+
}
|
|
86
|
+
const object = payload.payload.object;
|
|
87
|
+
if (payload.event !== "recording.completed" ||
|
|
88
|
+
payload.payload.account_id !== source.config.zoomAccountId ||
|
|
89
|
+
!isJsonObject(object) ||
|
|
90
|
+
object.host_id !== source.config.userId)
|
|
91
|
+
return { response: Response.json({}), state: source.state };
|
|
92
|
+
if (typeof object.uuid !== "string" || !object.uuid || !Array.isArray(object.recording_files))
|
|
93
|
+
throw new TypeError("Incomplete Zoom recording.");
|
|
94
|
+
const files = object.recording_files.filter((file) => isJsonObject(file) && file.status === "completed");
|
|
95
|
+
if (!files.length)
|
|
96
|
+
return { response: Response.json({}), state: source.state };
|
|
97
|
+
return {
|
|
98
|
+
event: {
|
|
99
|
+
id: object.uuid,
|
|
100
|
+
type: "recording.completed",
|
|
101
|
+
payload: {
|
|
102
|
+
event: "recording.completed",
|
|
103
|
+
deliveryId: object.uuid,
|
|
104
|
+
accountId: payload.payload.account_id,
|
|
105
|
+
meetingUuid: object.uuid,
|
|
106
|
+
body: { ...object, recording_files: files },
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
},
|
|
111
|
+
matches: (config, event) => Array.isArray(config.eventTypes) && config.eventTypes.includes(event.type),
|
|
112
|
+
resources: { triggerId: "zoom.on_recording_ready", requests: () => [] },
|
|
113
|
+
};
|
|
@@ -2,11 +2,13 @@ import type { CatalogStore } from "../catalog-store.ts";
|
|
|
2
2
|
import type { ConnectionService } from "../connection-service.ts";
|
|
3
3
|
import type { ActionPolicySnapshot } from "../core/action-policy.ts";
|
|
4
4
|
import type { ProviderHttpDispatchOptions } from "../core/provider-http-dispatch.ts";
|
|
5
|
+
import type { OAuthClientConfigService } from "../oauth/oauth-client-config-service.ts";
|
|
5
6
|
import type { IProviderLoader } from "../providers/provider-loader.ts";
|
|
6
7
|
import type { RuntimeGrant } from "../server/storage/runtime-token-service.ts";
|
|
7
8
|
import type { TriggerRequest } from "./request.ts";
|
|
8
9
|
import type { TriggerSubscription, TriggerStore } from "./store.ts";
|
|
9
10
|
interface TriggerRunnerOptions {
|
|
11
|
+
oauthClientConfigs?: Pick<OAuthClientConfigService, "getConfig">;
|
|
10
12
|
providerHttpDispatch?: ProviderHttpDispatchOptions;
|
|
11
13
|
catalog: CatalogStore;
|
|
12
14
|
providerLoader: IProviderLoader;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { ConnectionError } from "../connection-
|
|
1
|
+
import { ConnectionError } from "../connection-error.js";
|
|
2
2
|
import { optionalInteger, optionalRecord } from "../core/cast.js";
|
|
3
3
|
import { withProviderHttpDispatch } from "../core/provider-http-dispatch.js";
|
|
4
|
+
import { readOAuthClientConfigMetadata } from "../oauth/oauth-client-config-service.js";
|
|
4
5
|
import { withProviderHttpDispatchResult } from "../providers/provider-runtime.js";
|
|
5
6
|
import { HttpRequestError } from "../server/api/http-utils.js";
|
|
6
7
|
import { mapConnectionErrorStatus } from "../server/api/runtime-api.js";
|
|
7
8
|
import { resolveTriggerConfig } from "./common/config.js";
|
|
9
|
+
import { PermanentIntegrationError } from "./common/integration.js";
|
|
8
10
|
import { validateListenerPage } from "./common/integration.js";
|
|
9
11
|
import { executeResourceSubscription, executeResourceSubscriptionOperation, abandonResourceSubscription, } from "./resources.js";
|
|
10
12
|
import { executeSubscription, executeSubscriptionOperation } from "./subscriptions.js";
|
|
@@ -21,17 +23,40 @@ export class TriggerRunner {
|
|
|
21
23
|
const decision = input.policy.evaluateTrigger(input.triggerId);
|
|
22
24
|
if (!decision.allowed)
|
|
23
25
|
throw new HttpRequestError(decision.code, decision.message, 403);
|
|
24
|
-
const stateful =
|
|
25
|
-
if (stateful &&
|
|
26
|
+
const stateful = !["read", "options", "source"].includes(input.request.operation);
|
|
27
|
+
if ((stateful || (input.request.operation === "source" && input.request.request.action === "receive")) &&
|
|
28
|
+
!input.grant)
|
|
26
29
|
throw new HttpRequestError("trigger_owner_required", "Stateful Trigger operations require a persistent runtime token.", 403);
|
|
27
30
|
const definition = await this.definition(input.service, input.triggerId);
|
|
28
31
|
const target = await this.target(input.service, input.connectionName, input.connectionId, input.signal, input.policy);
|
|
32
|
+
const permission = this.options.catalog.providers
|
|
33
|
+
.find((provider) => provider.service === input.service)
|
|
34
|
+
?.triggerPermissions?.find((permission) => permission.id === input.triggerId);
|
|
35
|
+
const alternatives = permission?.providerScopeAlternatives;
|
|
36
|
+
const cleanup = (input.request.operation === "reconcile" || input.request.operation === "resource") && !input.request.active;
|
|
37
|
+
if (!cleanup && alternatives && !alternatives.some((scope) => target.scopes.includes(scope)))
|
|
38
|
+
throw new HttpRequestError("scope_missing", "The Trigger requires additional provider permissions.", 403);
|
|
29
39
|
const request = input.request;
|
|
40
|
+
if (request.operation === "source") {
|
|
41
|
+
const { executeSourceOperation } = await import("./sources/operation.js");
|
|
42
|
+
if (!("source" in definition) || !definition.source)
|
|
43
|
+
throw new HttpRequestError("invalid_input", "This Trigger has no shared source protocol.");
|
|
44
|
+
return this.providerOperation(input.service, () => executeSourceOperation(definition, request.request, target.proxy, input.signal));
|
|
45
|
+
}
|
|
30
46
|
if (request.operation === "receive") {
|
|
31
|
-
if (
|
|
47
|
+
if (!("receive" in definition) || definition.eventSource)
|
|
32
48
|
throw new HttpRequestError("invalid_input", "This Trigger has no remote webhook.");
|
|
33
49
|
return this.providerOperation(input.service, () => executeSubscription(this.options.store, definition, { ...target.owner, tokenId: input.grant.tokenId, triggerId: input.triggerId }, request, target.proxy, input.signal));
|
|
34
50
|
}
|
|
51
|
+
if (request.operation === "resource") {
|
|
52
|
+
if (!("resources" in definition) || !definition.resources)
|
|
53
|
+
throw new HttpRequestError("invalid_input", "This Trigger has no shared resource.");
|
|
54
|
+
const resources = definition.resources;
|
|
55
|
+
const config = "reconcile" in resources
|
|
56
|
+
? request.config
|
|
57
|
+
: resolveTriggerConfig(definition.snapshot.configInputs, request.config);
|
|
58
|
+
return this.providerOperation(input.service, () => executeResourceSubscription(this.options.store, resources, { ...target.owner, tokenId: input.grant.tokenId, triggerId: input.triggerId }, { ...request, config }, target.proxy, input.signal));
|
|
59
|
+
}
|
|
35
60
|
const config = resolveTriggerConfig(definition.snapshot.configInputs, request.config, request.operation === "options");
|
|
36
61
|
const context = { config, connector: target.proxy, now: new Date(), signal: input.signal };
|
|
37
62
|
return this.providerOperation(input.service, async () => {
|
|
@@ -43,7 +68,7 @@ export class TriggerRunner {
|
|
|
43
68
|
return definition.configOptions({ ...context, field: request.field });
|
|
44
69
|
}
|
|
45
70
|
case "read": {
|
|
46
|
-
if (
|
|
71
|
+
if ("poll" in definition)
|
|
47
72
|
return definition.poll({ ...context, checkpoint: request.checkpoint });
|
|
48
73
|
const listener = definition.listener;
|
|
49
74
|
if (!listener)
|
|
@@ -53,13 +78,9 @@ export class TriggerRunner {
|
|
|
53
78
|
return page;
|
|
54
79
|
}
|
|
55
80
|
case "reconcile":
|
|
56
|
-
if (
|
|
81
|
+
if (!("reconcile" in definition) || definition.eventSource)
|
|
57
82
|
throw new HttpRequestError("invalid_input", "This Trigger has no remote webhook.");
|
|
58
83
|
return executeSubscription(this.options.store, definition, { ...target.owner, tokenId: input.grant.tokenId, triggerId: input.triggerId }, { ...request, config }, target.proxy, input.signal);
|
|
59
|
-
case "resource":
|
|
60
|
-
if (!definition.resources)
|
|
61
|
-
throw new HttpRequestError("invalid_input", "This Trigger has no shared resource.");
|
|
62
|
-
return executeResourceSubscription(this.options.store, definition.resources, { ...target.owner, tokenId: input.grant.tokenId, triggerId: input.triggerId }, { ...request, config }, target.proxy, input.signal);
|
|
63
84
|
}
|
|
64
85
|
});
|
|
65
86
|
}
|
|
@@ -70,12 +91,13 @@ export class TriggerRunner {
|
|
|
70
91
|
record.connectionRevision = target.owner.connectionRevision;
|
|
71
92
|
const definition = await this.definition(record.service, record.triggerId);
|
|
72
93
|
if (record.mode === "resource") {
|
|
73
|
-
if (!definition.resources)
|
|
94
|
+
if (!("resources" in definition) || !definition.resources)
|
|
74
95
|
throw new HttpRequestError("trigger_not_supported", "Resource subscriptions are unavailable.", 501);
|
|
75
|
-
|
|
96
|
+
const resources = definition.resources;
|
|
97
|
+
await this.providerOperation(record.service, () => executeResourceSubscriptionOperation(this.options.store, resources, record, save, { operation: "resource", config: record.config, active: false, requestKey: record.requestKey }, target.proxy, signal));
|
|
76
98
|
}
|
|
77
99
|
else {
|
|
78
|
-
if (
|
|
100
|
+
if (!("reconcile" in definition))
|
|
79
101
|
throw new HttpRequestError("trigger_not_found", "The remote Trigger definition is unavailable.", 404);
|
|
80
102
|
await this.providerOperation(record.service, () => executeSubscriptionOperation(record, save, definition, {
|
|
81
103
|
operation: "reconcile",
|
|
@@ -89,10 +111,9 @@ export class TriggerRunner {
|
|
|
89
111
|
}
|
|
90
112
|
async abandonResource(record, signal) {
|
|
91
113
|
const definition = await this.definition(record.service, record.triggerId);
|
|
92
|
-
|
|
93
|
-
if (!resources)
|
|
114
|
+
if (!("resources" in definition) || !definition.resources)
|
|
94
115
|
throw new HttpRequestError("trigger_not_supported", "Resource subscriptions are unavailable.", 501);
|
|
95
|
-
await abandonResourceSubscription(this.options.store, resources, record, signal);
|
|
116
|
+
await abandonResourceSubscription(this.options.store, definition.resources, record, signal);
|
|
96
117
|
}
|
|
97
118
|
async definition(service, triggerId) {
|
|
98
119
|
if (!this.options.catalog.providers.some((provider) => provider.service === service))
|
|
@@ -127,7 +148,21 @@ export class TriggerRunner {
|
|
|
127
148
|
const executor = await this.options.providerLoader.loadProxyExecutor(service);
|
|
128
149
|
if (!executor)
|
|
129
150
|
throw new HttpRequestError("trigger_not_supported", "The provider has no Trigger transport.", 501);
|
|
151
|
+
let oauthClientConfig;
|
|
152
|
+
if (service === "jira" && credential.authType === "oauth2") {
|
|
153
|
+
oauthClientConfig = readOAuthClientConfigMetadata(service, credential.metadata);
|
|
154
|
+
if (!oauthClientConfig?.clientSecret) {
|
|
155
|
+
const configured = await this.options.oauthClientConfigs?.getConfig(service);
|
|
156
|
+
if (oauthClientConfig == null)
|
|
157
|
+
oauthClientConfig = configured;
|
|
158
|
+
else if (configured?.clientId === oauthClientConfig.clientId)
|
|
159
|
+
oauthClientConfig = { ...oauthClientConfig, clientSecret: configured.clientSecret };
|
|
160
|
+
}
|
|
161
|
+
}
|
|
130
162
|
const proxy = {
|
|
163
|
+
authType: credential.authType,
|
|
164
|
+
oauthClientConfig,
|
|
165
|
+
providerAccountId: credential.profile.accountId,
|
|
131
166
|
execute: async (request, requestSignal) => {
|
|
132
167
|
signal.throwIfAborted();
|
|
133
168
|
const result = await withProviderHttpDispatch({
|
|
@@ -147,6 +182,7 @@ export class TriggerRunner {
|
|
|
147
182
|
};
|
|
148
183
|
return {
|
|
149
184
|
proxy,
|
|
185
|
+
scopes: credential.profile.grantedScopes,
|
|
150
186
|
owner: {
|
|
151
187
|
service,
|
|
152
188
|
connectionId: stored.id,
|
|
@@ -175,7 +211,7 @@ export class TriggerRunner {
|
|
|
175
211
|
if (error.name === "TransientIntegrationError" || error.name === "TransientPollError")
|
|
176
212
|
throw new HttpRequestError("proxy_upstream_error", "The Trigger provider is temporarily unavailable.", 503);
|
|
177
213
|
if (error.name === "PermanentIntegrationError" || error.name === "PermanentPollError")
|
|
178
|
-
throw new HttpRequestError("invalid_input", error.message);
|
|
214
|
+
throw new HttpRequestError(error instanceof PermanentIntegrationError ? (error.reason ?? "invalid_input") : "invalid_input", error.message);
|
|
179
215
|
}
|
|
180
216
|
throw error;
|
|
181
217
|
}
|