@oomol-lab/open-connector 1.8.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -14
- package/assets/open-connector/catalog/apps/7_shifts.json +62 -31
- package/assets/open-connector/catalog/apps/a_leads.json +26 -13
- package/assets/open-connector/catalog/apps/ably_control.json +124 -62
- package/assets/open-connector/catalog/apps/abstract.json +16 -8
- package/assets/open-connector/catalog/apps/abuseipdb.json +28 -14
- package/assets/open-connector/catalog/apps/abyssale.json +76 -38
- package/assets/open-connector/catalog/apps/accredible_certificates.json +228 -114
- package/assets/open-connector/catalog/apps/accuweather.json +2 -1
- package/assets/open-connector/catalog/apps/active_trail.json +106 -53
- package/assets/open-connector/catalog/apps/activecampaign.json +110 -55
- package/assets/open-connector/catalog/apps/acuity_scheduling.json +210 -105
- package/assets/open-connector/catalog/apps/adafruit_io.json +108 -54
- package/assets/open-connector/catalog/apps/addressfinder.json +8 -4
- package/assets/open-connector/catalog/apps/addresszen.json +2 -1
- package/assets/open-connector/catalog/apps/adobe_commerce.json +74 -37
- package/assets/open-connector/catalog/apps/adyen.json +78 -39
- package/assets/open-connector/catalog/apps/adyntel.json +68 -34
- package/assets/open-connector/catalog/apps/aerisweather.json +6 -3
- package/assets/open-connector/catalog/apps/affinda.json +4 -2
- package/assets/open-connector/catalog/apps/affinity.json +124 -62
- package/assets/open-connector/catalog/apps/aftership.json +12 -6
- package/assets/open-connector/catalog/apps/agent_mail.json +8 -4
- package/assets/open-connector/catalog/apps/agentql.json +56 -28
- package/assets/open-connector/catalog/apps/agiled.json +340 -170
- package/assets/open-connector/catalog/apps/agora.json +64 -32
- package/assets/open-connector/catalog/apps/aimfox.json +22 -11
- package/assets/open-connector/catalog/apps/airbrake.json +76 -38
- package/assets/open-connector/catalog/apps/aircall.json +30 -15
- package/assets/open-connector/catalog/apps/airtable.json +4 -2
- package/assets/open-connector/catalog/apps/aisa.json +205 -0
- package/assets/open-connector/catalog/apps/alchemy.json +22 -11
- package/assets/open-connector/catalog/apps/algo_docs.json +6 -3
- package/assets/open-connector/catalog/apps/aliyun_oss.json +34 -17
- package/assets/open-connector/catalog/apps/aliyun_sls.json +26 -13
- package/assets/open-connector/catalog/apps/aliyun_sts.json +8 -4
- package/assets/open-connector/catalog/apps/alt_text_ai.json +114 -57
- package/assets/open-connector/catalog/apps/altiria.json +112 -56
- package/assets/open-connector/catalog/apps/altoviz.json +76 -38
- package/assets/open-connector/catalog/apps/amara.json +68 -34
- package/assets/open-connector/catalog/apps/amazing_marvin.json +615 -0
- package/assets/open-connector/catalog/apps/ambivo.json +188 -94
- package/assets/open-connector/catalog/apps/amilia.json +8 -4
- package/assets/open-connector/catalog/apps/amplemarket.json +230 -115
- package/assets/open-connector/catalog/apps/anchor_browser.json +8 -4
- package/assets/open-connector/catalog/apps/anrok.json +10 -5
- package/assets/open-connector/catalog/apps/anthropic.json +8 -4
- package/assets/open-connector/catalog/apps/anthropic_admin.json +32 -16
- package/assets/open-connector/catalog/apps/anymail_finder.json +40 -20
- package/assets/open-connector/catalog/apps/api2pdf.json +14 -7
- package/assets/open-connector/catalog/apps/api_route.json +203 -0
- package/assets/open-connector/catalog/apps/api_sports.json +220 -110
- package/assets/open-connector/catalog/apps/api_void.json +10 -5
- package/assets/open-connector/catalog/apps/apiframe.json +26 -13
- package/assets/open-connector/catalog/apps/apipie_ai.json +4 -2
- package/assets/open-connector/catalog/apps/apiverve.json +82 -41
- package/assets/open-connector/catalog/apps/app_store_connect.json +7516 -3758
- package/assets/open-connector/catalog/apps/app_store_server.json +126 -63
- package/assets/open-connector/catalog/apps/appcircle.json +24 -12
- package/assets/open-connector/catalog/apps/appcues.json +4 -2
- package/assets/open-connector/catalog/apps/apple_ads.json +6626 -3313
- package/assets/open-connector/catalog/apps/apple_notary.json +12 -6
- package/assets/open-connector/catalog/apps/appledb.json +4 -2
- package/assets/open-connector/catalog/apps/appstle_subscriptions.json +2 -1
- package/assets/open-connector/catalog/apps/aroflo.json +24 -12
- package/assets/open-connector/catalog/apps/arxiv.json +98 -49
- package/assets/open-connector/catalog/apps/asana.json +1016 -508
- package/assets/open-connector/catalog/apps/ashby.json +12 -6
- package/assets/open-connector/catalog/apps/assemblyai.json +142 -71
- package/assets/open-connector/catalog/apps/assured_platform.json +4 -2
- package/assets/open-connector/catalog/apps/atlas_so.json +250 -125
- package/assets/open-connector/catalog/apps/attio.json +22 -11
- package/assets/open-connector/catalog/apps/autobound.json +30 -15
- package/assets/open-connector/catalog/apps/autom.json +14 -7
- package/assets/open-connector/catalog/apps/autotask.json +10 -5
- package/assets/open-connector/catalog/apps/aviationstack.json +60 -30
- package/assets/open-connector/catalog/apps/avochato.json +36 -18
- package/assets/open-connector/catalog/apps/avoma.json +8 -4
- package/assets/open-connector/catalog/apps/aws_s3.json +40 -20
- package/assets/open-connector/catalog/apps/aws_sts.json +12 -6
- package/assets/open-connector/catalog/apps/ayrshare.json +18 -9
- package/assets/open-connector/catalog/apps/baidu_netdisk.json +84 -42
- package/assets/open-connector/catalog/apps/balldontlie_worldcup.json +38 -19
- package/assets/open-connector/catalog/apps/bamboohr.json +8 -4
- package/assets/open-connector/catalog/apps/bannerbear.json +28 -14
- package/assets/open-connector/catalog/apps/baremetrics.json +20 -10
- package/assets/open-connector/catalog/apps/baserow.json +4 -2
- package/assets/open-connector/catalog/apps/bazhuayu.json +14 -7
- package/assets/open-connector/catalog/apps/beaconchain.json +12 -6
- package/assets/open-connector/catalog/apps/beehiiv.json +62 -31
- package/assets/open-connector/catalog/apps/beeminder.json +126 -63
- package/assets/open-connector/catalog/apps/better_proposals.json +96 -48
- package/assets/open-connector/catalog/apps/better_stack.json +220 -110
- package/assets/open-connector/catalog/apps/bettercontact.json +36 -18
- package/assets/open-connector/catalog/apps/bidsketch.json +6 -3
- package/assets/open-connector/catalog/apps/big_commerce.json +58 -29
- package/assets/open-connector/catalog/apps/bigmailer.json +124 -62
- package/assets/open-connector/catalog/apps/bigml.json +106 -53
- package/assets/open-connector/catalog/apps/bigpicture_io.json +84 -42
- package/assets/open-connector/catalog/apps/biorxiv_medrxiv.json +6 -3
- package/assets/open-connector/catalog/apps/bird.json +6 -3
- package/assets/open-connector/catalog/apps/bitbucket.json +164 -82
- package/assets/open-connector/catalog/apps/bitwarden.json +88 -44
- package/assets/open-connector/catalog/apps/bland_ai.json +122 -61
- package/assets/open-connector/catalog/apps/blaze_meter_functional.json +54 -27
- package/assets/open-connector/catalog/apps/blaze_meter_performance.json +108 -54
- package/assets/open-connector/catalog/apps/blaze_meter_service_virtualization.json +54 -27
- package/assets/open-connector/catalog/apps/bluesky.json +10 -5
- package/assets/open-connector/catalog/apps/boldsign.json +54 -27
- package/assets/open-connector/catalog/apps/bolna.json +8 -4
- package/assets/open-connector/catalog/apps/bot_star.json +4 -2
- package/assets/open-connector/catalog/apps/botpress.json +2 -1
- package/assets/open-connector/catalog/apps/box.json +192 -96
- package/assets/open-connector/catalog/apps/boxhero.json +10 -5
- package/assets/open-connector/catalog/apps/brandfetch.json +12 -6
- package/assets/open-connector/catalog/apps/brave_search.json +32 -16
- package/assets/open-connector/catalog/apps/braze.json +12 -6
- package/assets/open-connector/catalog/apps/breezy_hr.json +20 -10
- package/assets/open-connector/catalog/apps/brex.json +160 -80
- package/assets/open-connector/catalog/apps/bright_data.json +4 -2
- package/assets/open-connector/catalog/apps/browse_ai.json +108 -54
- package/assets/open-connector/catalog/apps/browser_use.json +102 -51
- package/assets/open-connector/catalog/apps/browserstack.json +14 -7
- package/assets/open-connector/catalog/apps/bug_herd.json +4 -2
- package/assets/open-connector/catalog/apps/bugbug.json +42 -21
- package/assets/open-connector/catalog/apps/bugsnag.json +20 -10
- package/assets/open-connector/catalog/apps/builder_io.json +24 -12
- package/assets/open-connector/catalog/apps/buildkite.json +32 -16
- package/assets/open-connector/catalog/apps/businessmap.json +40 -20
- package/assets/open-connector/catalog/apps/buttondown.json +154 -77
- package/assets/open-connector/catalog/apps/buzzsprout.json +222 -111
- package/assets/open-connector/catalog/apps/byteforms.json +14 -7
- package/assets/open-connector/catalog/apps/cal.json +38 -19
- package/assets/open-connector/catalog/apps/calendarific.json +24 -12
- package/assets/open-connector/catalog/apps/calendly.json +88 -44
- package/assets/open-connector/catalog/apps/callingly.json +594 -297
- package/assets/open-connector/catalog/apps/callpage.json +30 -15
- package/assets/open-connector/catalog/apps/callrail.json +156 -78
- package/assets/open-connector/catalog/apps/canny.json +2 -1
- package/assets/open-connector/catalog/apps/canva.json +222 -111
- package/assets/open-connector/catalog/apps/canva_cn.json +222 -111
- package/assets/open-connector/catalog/apps/captainbi.json +54 -27
- package/assets/open-connector/catalog/apps/carbone.json +38 -19
- package/assets/open-connector/catalog/apps/cardly.json +42 -21
- package/assets/open-connector/catalog/apps/castingwords.json +2 -1
- package/assets/open-connector/catalog/apps/census_bureau.json +54 -27
- package/assets/open-connector/catalog/apps/central_station_crm.json +418 -209
- package/assets/open-connector/catalog/apps/certifier.json +20 -10
- package/assets/open-connector/catalog/apps/certn.json +62 -31
- package/assets/open-connector/catalog/apps/chargebee.json +8 -4
- package/assets/open-connector/catalog/apps/chargeblast.json +66 -33
- package/assets/open-connector/catalog/apps/chargify.json +80 -40
- package/assets/open-connector/catalog/apps/chartmogul.json +114 -57
- package/assets/open-connector/catalog/apps/chaserhq.json +18 -9
- package/assets/open-connector/catalog/apps/chat_api_for_whatsapp.json +10 -5
- package/assets/open-connector/catalog/apps/chatarmin.json +10 -5
- package/assets/open-connector/catalog/apps/cheaperinference.json +346 -0
- package/assets/open-connector/catalog/apps/check.json +4 -2
- package/assets/open-connector/catalog/apps/chengxin.json +880 -440
- package/assets/open-connector/catalog/apps/chorus.json +2 -1
- package/assets/open-connector/catalog/apps/cin7_core.json +8 -4
- package/assets/open-connector/catalog/apps/circle.json +176 -88
- package/assets/open-connector/catalog/apps/circleci.json +14 -7
- package/assets/open-connector/catalog/apps/cisco_meraki.json +10 -5
- package/assets/open-connector/catalog/apps/claid_ai.json +88 -44
- package/assets/open-connector/catalog/apps/clari_copilot.json +4 -2
- package/assets/open-connector/catalog/apps/classmarker.json +320 -160
- package/assets/open-connector/catalog/apps/clay.json +1204 -0
- package/assets/open-connector/catalog/apps/clearout.json +18 -9
- package/assets/open-connector/catalog/apps/clerk.json +540 -270
- package/assets/open-connector/catalog/apps/clickhelp.json +88 -44
- package/assets/open-connector/catalog/apps/clickhouse.json +58 -29
- package/assets/open-connector/catalog/apps/clickmeeting.json +254 -127
- package/assets/open-connector/catalog/apps/clickup.json +738 -369
- package/assets/open-connector/catalog/apps/clinicaltrials_gov.json +134 -67
- package/assets/open-connector/catalog/apps/clockify.json +12 -6
- package/assets/open-connector/catalog/apps/cloudconvert.json +8 -4
- package/assets/open-connector/catalog/apps/cloudflare_dns.json +16 -8
- package/assets/open-connector/catalog/apps/cloudflare_email_routing.json +2 -1
- package/assets/open-connector/catalog/apps/cloudflare_r2.json +18 -9
- package/assets/open-connector/catalog/apps/cloudflare_worker.json +46 -23
- package/assets/open-connector/catalog/apps/cloudinary.json +2 -1
- package/assets/open-connector/catalog/apps/cockroach_labs.json +10 -5
- package/assets/open-connector/catalog/apps/coda.json +22 -11
- package/assets/open-connector/catalog/apps/codacy.json +8 -4
- package/assets/open-connector/catalog/apps/codegen.json +76 -38
- package/assets/open-connector/catalog/apps/codemagic.json +50 -25
- package/assets/open-connector/catalog/apps/coderabbit.json +50 -25
- package/assets/open-connector/catalog/apps/coderpad.json +26 -13
- package/assets/open-connector/catalog/apps/coingecko.json +132 -66
- package/assets/open-connector/catalog/apps/coinmarketcal.json +10 -5
- package/assets/open-connector/catalog/apps/coinmarketcap.json +118 -59
- package/assets/open-connector/catalog/apps/college_football_data.json +6 -3
- package/assets/open-connector/catalog/apps/commonninja.json +1060 -0
- package/assets/open-connector/catalog/apps/commpeak.json +142 -71
- package/assets/open-connector/catalog/apps/companycam.json +464 -232
- package/assets/open-connector/catalog/apps/companyenrich.json +2 -1
- package/assets/open-connector/catalog/apps/conductor.json +34 -17
- package/assets/open-connector/catalog/apps/configcat.json +36 -18
- package/assets/open-connector/catalog/apps/confluence.json +24 -12
- package/assets/open-connector/catalog/apps/confluent.json +36 -18
- package/assets/open-connector/catalog/apps/consensus.json +16 -8
- package/assets/open-connector/catalog/apps/contentful_graphql.json +2 -1
- package/assets/open-connector/catalog/apps/contentstack_content_delivery.json +6 -3
- package/assets/open-connector/catalog/apps/contentstack_content_management.json +4 -2
- package/assets/open-connector/catalog/apps/convertapi.json +2 -1
- package/assets/open-connector/catalog/apps/convex.json +44 -22
- package/assets/open-connector/catalog/apps/coolify.json +8 -4
- package/assets/open-connector/catalog/apps/coupang.json +8 -4
- package/assets/open-connector/catalog/apps/courier.json +20 -10
- package/assets/open-connector/catalog/apps/craftmypdf.json +6 -3
- package/assets/open-connector/catalog/apps/cratedb_cloud.json +98 -49
- package/assets/open-connector/catalog/apps/credit_repair_cloud.json +48 -24
- package/assets/open-connector/catalog/apps/crisp.json +14 -7
- package/assets/open-connector/catalog/apps/cronlytic.json +804 -0
- package/assets/open-connector/catalog/apps/crossref.json +214 -107
- package/assets/open-connector/catalog/apps/crowdin.json +48 -24
- package/assets/open-connector/catalog/apps/crustdata.json +4 -2
- package/assets/open-connector/catalog/apps/cursor.json +10 -5
- package/assets/open-connector/catalog/apps/customgpt.json +56 -28
- package/assets/open-connector/catalog/apps/daffy.json +24 -12
- package/assets/open-connector/catalog/apps/dart.json +230 -115
- package/assets/open-connector/catalog/apps/databar_ai.json +4 -2
- package/assets/open-connector/catalog/apps/datadog.json +70 -35
- package/assets/open-connector/catalog/apps/dataforseo.json +160 -80
- package/assets/open-connector/catalog/apps/datalust.json +98 -49
- package/assets/open-connector/catalog/apps/daytona.json +2 -1
- package/assets/open-connector/catalog/apps/dealmachine.json +2 -1
- package/assets/open-connector/catalog/apps/deck_co.json +18 -9
- package/assets/open-connector/catalog/apps/deepgram.json +208 -104
- package/assets/open-connector/catalog/apps/deepseek.json +2 -1
- package/assets/open-connector/catalog/apps/delighted.json +26 -13
- package/assets/open-connector/catalog/apps/demio.json +10 -5
- package/assets/open-connector/catalog/apps/demodesk.json +74 -37
- package/assets/open-connector/catalog/apps/descript.json +4 -2
- package/assets/open-connector/catalog/apps/desktime.json +20 -10
- package/assets/open-connector/catalog/apps/detect_language.json +2 -1
- package/assets/open-connector/catalog/apps/detrack.json +130 -65
- package/assets/open-connector/catalog/apps/deutschlandgpt.json +2 -1
- package/assets/open-connector/catalog/apps/devin.json +48 -24
- package/assets/open-connector/catalog/apps/devto.json +16 -8
- package/assets/open-connector/catalog/apps/dialpad_wfm.json +6 -3
- package/assets/open-connector/catalog/apps/diffbot.json +4 -2
- package/assets/open-connector/catalog/apps/diffy.json +2 -1
- package/assets/open-connector/catalog/apps/digistore24.json +208 -104
- package/assets/open-connector/catalog/apps/discolike.json +12 -6
- package/assets/open-connector/catalog/apps/discord.json +8 -4
- package/assets/open-connector/catalog/apps/discordbot.json +98 -49
- package/assets/open-connector/catalog/apps/discourse.json +266 -133
- package/assets/open-connector/catalog/apps/dns_filter.json +60 -30
- package/assets/open-connector/catalog/apps/docker_hub.json +314 -157
- package/assets/open-connector/catalog/apps/docmosis.json +120 -60
- package/assets/open-connector/catalog/apps/docparser.json +54 -27
- package/assets/open-connector/catalog/apps/docraptor.json +4 -2
- package/assets/open-connector/catalog/apps/docsautomator.json +118 -59
- package/assets/open-connector/catalog/apps/docsbot_ai.json +86 -43
- package/assets/open-connector/catalog/apps/docsumo.json +124 -62
- package/assets/open-connector/catalog/apps/documenso.json +32 -16
- package/assets/open-connector/catalog/apps/document360.json +282 -141
- package/assets/open-connector/catalog/apps/docuseal.json +48 -24
- package/assets/open-connector/catalog/apps/doppler_marketing_automation.json +110 -55
- package/assets/open-connector/catalog/apps/dovetail.json +4 -2
- package/assets/open-connector/catalog/apps/drata.json +22 -11
- package/assets/open-connector/catalog/apps/drimify.json +160 -80
- package/assets/open-connector/catalog/apps/dropbox.json +540 -270
- package/assets/open-connector/catalog/apps/dropbox_sign.json +96 -48
- package/assets/open-connector/catalog/apps/dropcontact.json +8 -4
- package/assets/open-connector/catalog/apps/dub.json +202 -101
- package/assets/open-connector/catalog/apps/dynalist.json +880 -0
- package/assets/open-connector/catalog/apps/dynapictures.json +12 -6
- package/assets/open-connector/catalog/apps/dynatrace.json +34 -17
- package/assets/open-connector/catalog/apps/e2b.json +20 -10
- package/assets/open-connector/catalog/apps/eagle_doc.json +64 -32
- package/assets/open-connector/catalog/apps/easy_peasy_ai.json +361 -0
- package/assets/open-connector/catalog/apps/echotik.json +32 -16
- package/assets/open-connector/catalog/apps/edenai.json +8 -4
- package/assets/open-connector/catalog/apps/edgeone_makers.json +935 -0
- package/assets/open-connector/catalog/apps/elasticemail.json +40 -20
- package/assets/open-connector/catalog/apps/elasticsearch.json +164 -82
- package/assets/open-connector/catalog/apps/elevenlabs.json +24 -12
- package/assets/open-connector/catalog/apps/elevio.json +12 -6
- package/assets/open-connector/catalog/apps/elorus.json +12 -6
- package/assets/open-connector/catalog/apps/emaillistverify.json +12 -6
- package/assets/open-connector/catalog/apps/emailoctopus.json +12 -6
- package/assets/open-connector/catalog/apps/embase.json +14 -7
- package/assets/open-connector/catalog/apps/encodian.json +30 -15
- package/assets/open-connector/catalog/apps/energy_performance_certificates.json +6 -3
- package/assets/open-connector/catalog/apps/enigma.json +2 -1
- package/assets/open-connector/catalog/apps/envoy.json +44 -22
- package/assets/open-connector/catalog/apps/eodhd_apis.json +142 -71
- package/assets/open-connector/catalog/apps/eraser.json +10 -5
- package/assets/open-connector/catalog/apps/esa.json +44 -22
- package/assets/open-connector/catalog/apps/esignatures_io.json +86 -43
- package/assets/open-connector/catalog/apps/espocrm.json +12 -6
- package/assets/open-connector/catalog/apps/europe_pmc.json +344 -172
- package/assets/open-connector/catalog/apps/eventzilla.json +154 -77
- package/assets/open-connector/catalog/apps/eversign.json +126 -63
- package/assets/open-connector/catalog/apps/exa.json +18 -9
- package/assets/open-connector/catalog/apps/excel.json +12 -6
- package/assets/open-connector/catalog/apps/exhibitday.json +6 -3
- package/assets/open-connector/catalog/apps/explorium.json +498 -0
- package/assets/open-connector/catalog/apps/expofp.json +2 -1
- package/assets/open-connector/catalog/apps/fairing.json +22 -11
- package/assets/open-connector/catalog/apps/faktoora.json +100 -50
- package/assets/open-connector/catalog/apps/fal_ai.json +14 -7
- package/assets/open-connector/catalog/apps/favro.json +12 -6
- package/assets/open-connector/catalog/apps/featurebase.json +10 -5
- package/assets/open-connector/catalog/apps/feedier.json +40 -20
- package/assets/open-connector/catalog/apps/feishu.json +398 -226
- package/assets/open-connector/catalog/apps/feishu_app_bot.json +298 -73
- package/assets/open-connector/catalog/apps/fellow.json +48 -24
- package/assets/open-connector/catalog/apps/felt.json +2 -1
- package/assets/open-connector/catalog/apps/fengshui.json +2424 -0
- package/assets/open-connector/catalog/apps/fern.json +4 -2
- package/assets/open-connector/catalog/apps/ffhub.json +36 -18
- package/assets/open-connector/catalog/apps/fiber_ai.json +6 -3
- package/assets/open-connector/catalog/apps/fidel_api.json +258 -129
- package/assets/open-connector/catalog/apps/figma.json +4 -2
- package/assets/open-connector/catalog/apps/fillout.json +2 -1
- package/assets/open-connector/catalog/apps/findymail.json +2 -1
- package/assets/open-connector/catalog/apps/finlight.json +551 -0
- package/assets/open-connector/catalog/apps/firecrawl.json +18 -4
- package/assets/open-connector/catalog/apps/fireflies.json +2 -1
- package/assets/open-connector/catalog/apps/firehydrant.json +276 -138
- package/assets/open-connector/catalog/apps/firstbase.json +8 -4
- package/assets/open-connector/catalog/apps/fivetran.json +6 -3
- package/assets/open-connector/catalog/apps/float.json +108 -54
- package/assets/open-connector/catalog/apps/flomo.json +58 -29
- package/assets/open-connector/catalog/apps/flotiq.json +379 -0
- package/assets/open-connector/catalog/apps/flowiseai.json +20 -10
- package/assets/open-connector/catalog/apps/fluxguard.json +42 -21
- package/assets/open-connector/catalog/apps/folk.json +144 -72
- package/assets/open-connector/catalog/apps/fomo.json +138 -69
- package/assets/open-connector/catalog/apps/forem.json +190 -95
- package/assets/open-connector/catalog/apps/formaloo.json +8 -4
- package/assets/open-connector/catalog/apps/formbricks.json +44 -22
- package/assets/open-connector/catalog/apps/formcarry.json +4 -2
- package/assets/open-connector/catalog/apps/formspree.json +16 -8
- package/assets/open-connector/catalog/apps/formstack.json +52 -26
- package/assets/open-connector/catalog/apps/framejet.json +2 -1
- package/assets/open-connector/catalog/apps/fraudlabspro.json +16 -8
- package/assets/open-connector/catalog/apps/freeastroapi.json +2986 -0
- package/assets/open-connector/catalog/apps/freepik.json +4 -2
- package/assets/open-connector/catalog/apps/freshdesk.json +2 -1
- package/assets/open-connector/catalog/apps/freshsales.json +2 -1
- package/assets/open-connector/catalog/apps/freshservice.json +6 -3
- package/assets/open-connector/catalog/apps/freshstatus.json +14 -7
- package/assets/open-connector/catalog/apps/freshteam.json +56 -28
- package/assets/open-connector/catalog/apps/front.json +22 -11
- package/assets/open-connector/catalog/apps/full_contact.json +100 -50
- package/assets/open-connector/catalog/apps/fullenrich.json +4 -2
- package/assets/open-connector/catalog/apps/fundzwatch.json +2 -1
- package/assets/open-connector/catalog/apps/fusion-api.json +8 -8
- package/assets/open-connector/catalog/apps/futunn.json +36 -18
- package/assets/open-connector/catalog/apps/fuxin.json +76 -38
- package/assets/open-connector/catalog/apps/fxmacrodata.json +672 -0
- package/assets/open-connector/catalog/apps/gagelist.json +114 -57
- package/assets/open-connector/catalog/apps/gainsight_nxt.json +14 -7
- package/assets/open-connector/catalog/apps/gamma.json +52 -26
- package/assets/open-connector/catalog/apps/gangtise.json +120 -60
- package/assets/open-connector/catalog/apps/gatherup.json +6 -3
- package/assets/open-connector/catalog/apps/geckoboard.json +2 -1
- package/assets/open-connector/catalog/apps/gem.json +24 -12
- package/assets/open-connector/catalog/apps/gender_api.json +8 -4
- package/assets/open-connector/catalog/apps/genderize.json +4 -2
- package/assets/open-connector/catalog/apps/generic_imap.json +74 -37
- package/assets/open-connector/catalog/apps/geoapify.json +2 -1
- package/assets/open-connector/catalog/apps/getnote.json +112 -56
- package/assets/open-connector/catalog/apps/getprospect.json +40 -20
- package/assets/open-connector/catalog/apps/getresponse.json +176 -88
- package/assets/open-connector/catalog/apps/getyoutubetranscript.json +415 -0
- package/assets/open-connector/catalog/apps/ghost.json +18 -9
- package/assets/open-connector/catalog/apps/gift_up.json +438 -219
- package/assets/open-connector/catalog/apps/giphy.json +96 -48
- package/assets/open-connector/catalog/apps/gist.json +52 -26
- package/assets/open-connector/catalog/apps/gitea.json +364 -182
- package/assets/open-connector/catalog/apps/gitee.json +30 -15
- package/assets/open-connector/catalog/apps/github.json +2 -1
- package/assets/open-connector/catalog/apps/gitlab.json +158 -79
- package/assets/open-connector/catalog/apps/gladia.json +4 -2
- package/assets/open-connector/catalog/apps/gleap.json +4 -2
- package/assets/open-connector/catalog/apps/glyphic.json +88 -44
- package/assets/open-connector/catalog/apps/gmail.json +1856 -214
- package/assets/open-connector/catalog/apps/goody.json +4 -2
- package/assets/open-connector/catalog/apps/google_analytics.json +552 -276
- package/assets/open-connector/catalog/apps/google_bigquery.json +10 -5
- package/assets/open-connector/catalog/apps/google_search_console.json +46 -23
- package/assets/open-connector/catalog/apps/googleads.json +20 -18
- package/assets/open-connector/catalog/apps/googlecalendar.json +6 -0
- package/assets/open-connector/catalog/apps/googlechat.json +36 -18
- package/assets/open-connector/catalog/apps/googledocs.json +45 -22
- package/assets/open-connector/catalog/apps/googledrive.json +1 -0
- package/assets/open-connector/catalog/apps/googleforms.json +2 -1
- package/assets/open-connector/catalog/apps/googlemeet.json +14 -7
- package/assets/open-connector/catalog/apps/googlephotos.json +120 -60
- package/assets/open-connector/catalog/apps/googlesheets.json +51 -25
- package/assets/open-connector/catalog/apps/googleslides.json +1 -0
- package/assets/open-connector/catalog/apps/googletasks.json +240 -120
- package/assets/open-connector/catalog/apps/govee.json +2 -1
- package/assets/open-connector/catalog/apps/gptzero.json +42 -21
- package/assets/open-connector/catalog/apps/grafana.json +154 -77
- package/assets/open-connector/catalog/apps/grafana_cloud.json +50 -25
- package/assets/open-connector/catalog/apps/granola.json +42 -21
- package/assets/open-connector/catalog/apps/graphhopper.json +6 -3
- package/assets/open-connector/catalog/apps/greenhouse.json +54 -27
- package/assets/open-connector/catalog/apps/greip.json +405 -0
- package/assets/open-connector/catalog/apps/greynoise.json +118 -0
- package/assets/open-connector/catalog/apps/griptape.json +8 -4
- package/assets/open-connector/catalog/apps/grist.json +24 -12
- package/assets/open-connector/catalog/apps/groqcloud.json +4 -2
- package/assets/open-connector/catalog/apps/growsurf.json +943 -0
- package/assets/open-connector/catalog/apps/gtmetrix.json +12 -6
- package/assets/open-connector/catalog/apps/gumloop.json +2 -1
- package/assets/open-connector/catalog/apps/gumroad.json +8 -4
- package/assets/open-connector/catalog/apps/habitica.json +156 -78
- package/assets/open-connector/catalog/apps/hackernews.json +6 -3
- package/assets/open-connector/catalog/apps/hackerrank_work.json +12 -6
- package/assets/open-connector/catalog/apps/hamsa.json +4 -2
- package/assets/open-connector/catalog/apps/handelsregister_ai.json +4 -2
- package/assets/open-connector/catalog/apps/happy_scribe.json +58 -29
- package/assets/open-connector/catalog/apps/harmonic_ai.json +4 -2
- package/assets/open-connector/catalog/apps/harvest.json +178 -89
- package/assets/open-connector/catalog/apps/hashnode.json +160 -80
- package/assets/open-connector/catalog/apps/haveibeenpwned.json +14 -7
- package/assets/open-connector/catalog/apps/headout.json +190 -95
- package/assets/open-connector/catalog/apps/healthchecks_io.json +2 -1
- package/assets/open-connector/catalog/apps/heartbeat.json +12 -6
- package/assets/open-connector/catalog/apps/helloleads.json +20 -10
- package/assets/open-connector/catalog/apps/helpdesk.json +18 -9
- package/assets/open-connector/catalog/apps/helpscout.json +36 -18
- package/assets/open-connector/catalog/apps/helpscout_docs.json +30 -15
- package/assets/open-connector/catalog/apps/hex.json +18 -9
- package/assets/open-connector/catalog/apps/heygen.json +30 -15
- package/assets/open-connector/catalog/apps/heyreach.json +8 -4
- package/assets/open-connector/catalog/apps/heyy.json +30 -15
- package/assets/open-connector/catalog/apps/heyzine.json +42 -21
- package/assets/open-connector/catalog/apps/higgsfield_ai.json +24 -12
- package/assets/open-connector/catalog/apps/highergov.json +32 -16
- package/assets/open-connector/catalog/apps/hithink_finance.json +86 -43
- package/assets/open-connector/catalog/apps/holded.json +70 -35
- package/assets/open-connector/catalog/apps/home_assistant.json +44 -22
- package/assets/open-connector/catalog/apps/homebox.json +4 -2
- package/assets/open-connector/catalog/apps/honeycomb.json +76 -38
- package/assets/open-connector/catalog/apps/honeyhive.json +4 -2
- package/assets/open-connector/catalog/apps/hookdeck.json +208 -104
- package/assets/open-connector/catalog/apps/hotjar.json +22 -11
- package/assets/open-connector/catalog/apps/hotspotsystem.json +222 -111
- package/assets/open-connector/catalog/apps/httpsms.json +6 -3
- package/assets/open-connector/catalog/apps/hub_planner.json +18 -9
- package/assets/open-connector/catalog/apps/hubspot.json +8 -4
- package/assets/open-connector/catalog/apps/huggingface.json +4 -2
- package/assets/open-connector/catalog/apps/humanitix.json +2 -1
- package/assets/open-connector/catalog/apps/huodingdong_mcp.json +140 -0
- package/assets/open-connector/catalog/apps/hybrid_analysis.json +4 -2
- package/assets/open-connector/catalog/apps/hyperbrowser.json +6 -3
- package/assets/open-connector/catalog/apps/icypeas.json +30 -15
- package/assets/open-connector/catalog/apps/ima.json +144 -72
- package/assets/open-connector/catalog/apps/imgbb.json +4 -2
- package/assets/open-connector/catalog/apps/imgix.json +18 -9
- package/assets/open-connector/catalog/apps/incident_io.json +78 -39
- package/assets/open-connector/catalog/apps/indeed.json +4 -2
- package/assets/open-connector/catalog/apps/indexed.json +74 -37
- package/assets/open-connector/catalog/apps/indiegogo.json +4 -2
- package/assets/open-connector/catalog/apps/influxdb_cloud.json +2 -1
- package/assets/open-connector/catalog/apps/insites.json +4 -2
- package/assets/open-connector/catalog/apps/instabot.json +28 -14
- package/assets/open-connector/catalog/apps/instantly_ai.json +96 -48
- package/assets/open-connector/catalog/apps/instatus.json +92 -46
- package/assets/open-connector/catalog/apps/intercom.json +92 -46
- package/assets/open-connector/catalog/apps/interzoid.json +70 -35
- package/assets/open-connector/catalog/apps/intrinio.json +4 -2
- package/assets/open-connector/catalog/apps/invoice_ninja.json +134 -67
- package/assets/open-connector/catalog/apps/ipgeolocation_io.json +108 -54
- package/assets/open-connector/catalog/apps/ipqualityscore.json +78 -39
- package/assets/open-connector/catalog/apps/issue_badge.json +468 -0
- package/assets/open-connector/catalog/apps/ixspy.json +116 -58
- package/assets/open-connector/catalog/apps/jamie.json +38 -19
- package/assets/open-connector/catalog/apps/jibble.json +12 -6
- package/assets/open-connector/catalog/apps/jigsawstack.json +40 -20
- package/assets/open-connector/catalog/apps/jiminny.json +6 -3
- package/assets/open-connector/catalog/apps/jin10.json +22 -11
- package/assets/open-connector/catalog/apps/jira.json +6 -3
- package/assets/open-connector/catalog/apps/jumpcloud.json +4 -2
- package/assets/open-connector/catalog/apps/jumpserver.json +24 -12
- package/assets/open-connector/catalog/apps/junglescout.json +124 -62
- package/assets/open-connector/catalog/apps/juniper_mist.json +54 -27
- package/assets/open-connector/catalog/apps/justoneapi.json +22966 -0
- package/assets/open-connector/catalog/apps/kadoa.json +4 -2
- package/assets/open-connector/catalog/apps/kagi.json +120 -0
- package/assets/open-connector/catalog/apps/kandji.json +42 -21
- package/assets/open-connector/catalog/apps/karakeep.json +626 -313
- package/assets/open-connector/catalog/apps/keepa.json +354 -177
- package/assets/open-connector/catalog/apps/kenjo.json +669 -0
- package/assets/open-connector/catalog/apps/kernel.json +42 -21
- package/assets/open-connector/catalog/apps/keyword.json +10 -5
- package/assets/open-connector/catalog/apps/keyzy.json +352 -0
- package/assets/open-connector/catalog/apps/kickofflabs.json +171 -0
- package/assets/open-connector/catalog/apps/kintone.json +54 -27
- package/assets/open-connector/catalog/apps/kit.json +392 -196
- package/assets/open-connector/catalog/apps/klangio.json +2 -1
- package/assets/open-connector/catalog/apps/klaviyo.json +18 -9
- package/assets/open-connector/catalog/apps/klazify.json +300 -150
- package/assets/open-connector/catalog/apps/knack.json +8 -4
- package/assets/open-connector/catalog/apps/knock.json +30 -15
- package/assets/open-connector/catalog/apps/knowbe4.json +78 -39
- package/assets/open-connector/catalog/apps/kobotoolbox.json +30 -15
- package/assets/open-connector/catalog/apps/komari.json +6 -3
- package/assets/open-connector/catalog/apps/kommo.json +304 -152
- package/assets/open-connector/catalog/apps/kontent_ai.json +62 -31
- package/assets/open-connector/catalog/apps/krispcall.json +138 -69
- package/assets/open-connector/catalog/apps/kuaidi100.json +10 -5
- package/assets/open-connector/catalog/apps/kuaimai.json +24 -12
- package/assets/open-connector/catalog/apps/kustomer.json +112 -56
- package/assets/open-connector/catalog/apps/la_growth_machine.json +2 -1
- package/assets/open-connector/catalog/apps/label_studio.json +30 -15
- package/assets/open-connector/catalog/apps/landbot.json +2 -1
- package/assets/open-connector/catalog/apps/langsmith.json +126 -63
- package/assets/open-connector/catalog/apps/laravel_cloud.json +172 -86
- package/assets/open-connector/catalog/apps/latchshot.json +6 -3
- package/assets/open-connector/catalog/apps/lattice.json +8 -4
- package/assets/open-connector/catalog/apps/launch_darkly.json +124 -62
- package/assets/open-connector/catalog/apps/leadiq.json +26 -13
- package/assets/open-connector/catalog/apps/leadmagic.json +104 -52
- package/assets/open-connector/catalog/apps/leexi.json +216 -108
- package/assets/open-connector/catalog/apps/leiga.json +58 -29
- package/assets/open-connector/catalog/apps/leonardo_ai.json +12 -6
- package/assets/open-connector/catalog/apps/lessonspace.json +24 -12
- package/assets/open-connector/catalog/apps/lever.json +6 -3
- package/assets/open-connector/catalog/apps/lexoffice.json +8 -4
- package/assets/open-connector/catalog/apps/lifx.json +8 -4
- package/assets/open-connector/catalog/apps/lightfield.json +48 -24
- package/assets/open-connector/catalog/apps/linear.json +38 -19
- package/assets/open-connector/catalog/apps/linear_mcp.json +6 -3
- package/assets/open-connector/catalog/apps/linguapop.json +4 -2
- package/assets/open-connector/catalog/apps/lingvanex_translation_api.json +10 -5
- package/assets/open-connector/catalog/apps/linkfox.json +458 -229
- package/assets/open-connector/catalog/apps/linkly.json +260 -130
- package/assets/open-connector/catalog/apps/linux_do.json +332 -166
- package/assets/open-connector/catalog/apps/listennotes.json +24 -12
- package/assets/open-connector/catalog/apps/litellm.json +824 -0
- package/assets/open-connector/catalog/apps/liveagent.json +196 -98
- package/assets/open-connector/catalog/apps/livesession.json +12 -6
- package/assets/open-connector/catalog/apps/lodgify.json +36 -18
- package/assets/open-connector/catalog/apps/lokalise.json +6 -3
- package/assets/open-connector/catalog/apps/loomio.json +58 -29
- package/assets/open-connector/catalog/apps/loop_returns.json +112 -56
- package/assets/open-connector/catalog/apps/loops.json +8 -4
- package/assets/open-connector/catalog/apps/loyverse.json +10 -5
- package/assets/open-connector/catalog/apps/luckin_coffee.json +40 -20
- package/assets/open-connector/catalog/apps/luma.json +40 -20
- package/assets/open-connector/catalog/apps/lumos.json +32 -16
- package/assets/open-connector/catalog/apps/magileads.json +10 -5
- package/assets/open-connector/catalog/apps/mailbluster.json +6 -3
- package/assets/open-connector/catalog/apps/mailbox_validator.json +22 -11
- package/assets/open-connector/catalog/apps/mailboxlayer.json +2 -1
- package/assets/open-connector/catalog/apps/mailcheck.json +20 -10
- package/assets/open-connector/catalog/apps/mailcoach.json +140 -70
- package/assets/open-connector/catalog/apps/mailgun.json +20 -10
- package/assets/open-connector/catalog/apps/mailjet.json +40 -20
- package/assets/open-connector/catalog/apps/mailosaur.json +62 -31
- package/assets/open-connector/catalog/apps/mails_so.json +28 -14
- package/assets/open-connector/catalog/apps/mailsoftly.json +116 -58
- package/assets/open-connector/catalog/apps/maintainx.json +116 -58
- package/assets/open-connector/catalog/apps/manatal.json +16 -8
- package/assets/open-connector/catalog/apps/manus.json +4 -2
- package/assets/open-connector/catalog/apps/mapbox.json +4 -2
- package/assets/open-connector/catalog/apps/maple_billing.json +108 -54
- package/assets/open-connector/catalog/apps/marketstack.json +146 -73
- package/assets/open-connector/catalog/apps/mautic.json +12 -6
- package/assets/open-connector/catalog/apps/mcdonalds_cn.json +2 -1
- package/assets/open-connector/catalog/apps/mediastack.json +34 -17
- package/assets/open-connector/catalog/apps/meet_geek.json +6 -3
- package/assets/open-connector/catalog/apps/mem.json +66 -33
- package/assets/open-connector/catalog/apps/mem0.json +68 -18
- package/assets/open-connector/catalog/apps/memberstack.json +42 -21
- package/assets/open-connector/catalog/apps/membervault.json +8 -4
- package/assets/open-connector/catalog/apps/memento_database.json +810 -0
- package/assets/open-connector/catalog/apps/memos.json +10 -5
- package/assets/open-connector/catalog/apps/mendeley.json +16 -8
- package/assets/open-connector/catalog/apps/meta.json +74 -37
- package/assets/open-connector/catalog/apps/metabase.json +44 -22
- package/assets/open-connector/catalog/apps/metaso.json +44 -22
- package/assets/open-connector/catalog/apps/metatraderapi.json +16 -8
- package/assets/open-connector/catalog/apps/metronome.json +56 -28
- package/assets/open-connector/catalog/apps/microsoft_teams.json +96 -48
- package/assets/open-connector/catalog/apps/mindbody.json +22 -11
- package/assets/open-connector/catalog/apps/minerstat.json +28 -14
- package/assets/open-connector/catalog/apps/mingdao.json +18 -9
- package/assets/open-connector/catalog/apps/minimax.json +8 -4
- package/assets/open-connector/catalog/apps/miro.json +14 -7
- package/assets/open-connector/catalog/apps/missive.json +28 -14
- package/assets/open-connector/catalog/apps/mixmax.json +4 -2
- package/assets/open-connector/catalog/apps/mixpanel.json +8 -4
- package/assets/open-connector/catalog/apps/mktindex.json +34 -17
- package/assets/open-connector/catalog/apps/mobile_text_alerts.json +8 -4
- package/assets/open-connector/catalog/apps/moco.json +120 -60
- package/assets/open-connector/catalog/apps/moesif.json +68 -34
- package/assets/open-connector/catalog/apps/momentum_io.json +68 -34
- package/assets/open-connector/catalog/apps/monday.json +8 -4
- package/assets/open-connector/catalog/apps/mongo_db_atlas_administration.json +60 -30
- package/assets/open-connector/catalog/apps/moonclerk.json +312 -156
- package/assets/open-connector/catalog/apps/moorcheh.json +6 -3
- package/assets/open-connector/catalog/apps/moosend.json +42 -21
- package/assets/open-connector/catalog/apps/mopinion.json +24 -12
- package/assets/open-connector/catalog/apps/more_trees.json +8 -4
- package/assets/open-connector/catalog/apps/motion.json +4 -2
- package/assets/open-connector/catalog/apps/msg91.json +14 -7
- package/assets/open-connector/catalog/apps/mumble.json +18 -9
- package/assets/open-connector/catalog/apps/mux.json +26 -13
- package/assets/open-connector/catalog/apps/mx.json +50 -25
- package/assets/open-connector/catalog/apps/mx_toolbox.json +200 -100
- package/assets/open-connector/catalog/apps/n8n.json +60 -30
- package/assets/open-connector/catalog/apps/namely.json +16 -8
- package/assets/open-connector/catalog/apps/nango.json +10 -5
- package/assets/open-connector/catalog/apps/nasdaq.json +62 -31
- package/assets/open-connector/catalog/apps/nationalize.json +190 -0
- package/assets/open-connector/catalog/apps/navigatr.json +803 -0
- package/assets/open-connector/catalog/apps/needle.json +12 -6
- package/assets/open-connector/catalog/apps/neetocal.json +4 -2
- package/assets/open-connector/catalog/apps/neetodesk.json +12 -6
- package/assets/open-connector/catalog/apps/neon.json +14 -7
- package/assets/open-connector/catalog/apps/netease_enterprise_mail.json +74 -37
- package/assets/open-connector/catalog/apps/netease_mail.json +74 -37
- package/assets/open-connector/catalog/apps/netlify.json +18 -9
- package/assets/open-connector/catalog/apps/new_relic.json +28 -14
- package/assets/open-connector/catalog/apps/news_api.json +30 -15
- package/assets/open-connector/catalog/apps/newsdata_io.json +24 -12
- package/assets/open-connector/catalog/apps/next_dns.json +12 -6
- package/assets/open-connector/catalog/apps/ngrok.json +8 -4
- package/assets/open-connector/catalog/apps/nightfall_ai.json +322 -0
- package/assets/open-connector/catalog/apps/nimble.json +2 -1
- package/assets/open-connector/catalog/apps/ninjapear.json +72 -36
- package/assets/open-connector/catalog/apps/ninox.json +58 -29
- package/assets/open-connector/catalog/apps/nocodb.json +12 -6
- package/assets/open-connector/catalog/apps/nocrm_io.json +98 -49
- package/assets/open-connector/catalog/apps/northbeam.json +4 -2
- package/assets/open-connector/catalog/apps/notion.json +36 -18
- package/assets/open-connector/catalog/apps/novu.json +90 -45
- package/assets/open-connector/catalog/apps/nozbe_teams.json +276 -138
- package/assets/open-connector/catalog/apps/npm.json +2 -1
- package/assets/open-connector/catalog/apps/nutrient_document_web_services_api.json +18 -9
- package/assets/open-connector/catalog/apps/nylas.json +58 -29
- package/assets/open-connector/catalog/apps/nyne_ai.json +46 -23
- package/assets/open-connector/catalog/apps/ocr_web_service.json +10 -5
- package/assets/open-connector/catalog/apps/ocrspace.json +10 -5
- package/assets/open-connector/catalog/apps/octave.json +18 -9
- package/assets/open-connector/catalog/apps/oksign.json +2 -1
- package/assets/open-connector/catalog/apps/okta.json +112 -56
- package/assets/open-connector/catalog/apps/omnisend.json +8 -4
- package/assets/open-connector/catalog/apps/oncehub.json +18 -9
- package/assets/open-connector/catalog/apps/one_drive.json +6 -3
- package/assets/open-connector/catalog/apps/onedesk.json +14 -7
- package/assets/open-connector/catalog/apps/onfleet.json +2 -1
- package/assets/open-connector/catalog/apps/onlyoffice_docspace.json +20 -10
- package/assets/open-connector/catalog/apps/oomol_console.json +954 -31
- package/assets/open-connector/catalog/apps/open_hands.json +50 -25
- package/assets/open-connector/catalog/apps/openai.json +16 -8
- package/assets/open-connector/catalog/apps/openalex.json +128 -64
- package/assets/open-connector/catalog/apps/openfda.json +28 -14
- package/assets/open-connector/catalog/apps/opengraph_io.json +4 -2
- package/assets/open-connector/catalog/apps/openpagerank.json +2 -1
- package/assets/open-connector/catalog/apps/opensea.json +84 -42
- package/assets/open-connector/catalog/apps/openstatus.json +16 -8
- package/assets/open-connector/catalog/apps/opper.json +352 -0
- package/assets/open-connector/catalog/apps/optimoroute.json +32 -16
- package/assets/open-connector/catalog/apps/oracle_cloud.json +98 -49
- package/assets/open-connector/catalog/apps/orcid.json +2 -1
- package/assets/open-connector/catalog/apps/ordinal.json +4 -2
- package/assets/open-connector/catalog/apps/ortto.json +20 -10
- package/assets/open-connector/catalog/apps/ossinsight.json +60 -30
- package/assets/open-connector/catalog/apps/otter_ai.json +26 -13
- package/assets/open-connector/catalog/apps/oura.json +46 -23
- package/assets/open-connector/catalog/apps/outline.json +50 -25
- package/assets/open-connector/catalog/apps/outlook.json +8 -4
- package/assets/open-connector/catalog/apps/outlook_calendar.json +32 -16
- package/assets/open-connector/catalog/apps/paddle.json +42 -21
- package/assets/open-connector/catalog/apps/pandadoc.json +8 -4
- package/assets/open-connector/catalog/apps/paperform.json +234 -117
- package/assets/open-connector/catalog/apps/paperless_ngx.json +1358 -679
- package/assets/open-connector/catalog/apps/papertrail.json +8 -4
- package/assets/open-connector/catalog/apps/paradym.json +34 -17
- package/assets/open-connector/catalog/apps/parallel.json +62 -31
- package/assets/open-connector/catalog/apps/parsehub.json +30 -15
- package/assets/open-connector/catalog/apps/parsera.json +2 -1
- package/assets/open-connector/catalog/apps/parseur.json +48 -24
- package/assets/open-connector/catalog/apps/partner_stack_partner.json +42 -21
- package/assets/open-connector/catalog/apps/partnerstack.json +100 -50
- package/assets/open-connector/catalog/apps/passcreator.json +10 -5
- package/assets/open-connector/catalog/apps/payhip.json +110 -55
- package/assets/open-connector/catalog/apps/paystack.json +14 -7
- package/assets/open-connector/catalog/apps/pdf_api_io.json +6 -3
- package/assets/open-connector/catalog/apps/pdf_co.json +136 -68
- package/assets/open-connector/catalog/apps/pdfless.json +16 -8
- package/assets/open-connector/catalog/apps/pdfmonkey.json +94 -47
- package/assets/open-connector/catalog/apps/pendo.json +2 -1
- package/assets/open-connector/catalog/apps/peopledatalabs.json +88 -44
- package/assets/open-connector/catalog/apps/perdoo.json +80 -40
- package/assets/open-connector/catalog/apps/perigon.json +40 -20
- package/assets/open-connector/catalog/apps/persona.json +52 -26
- package/assets/open-connector/catalog/apps/personal_ai.json +38 -19
- package/assets/open-connector/catalog/apps/phantombuster.json +30 -15
- package/assets/open-connector/catalog/apps/phonely.json +8 -4
- package/assets/open-connector/catalog/apps/pi_hole.json +56 -28
- package/assets/open-connector/catalog/apps/picky_assist.json +189 -0
- package/assets/open-connector/catalog/apps/pilvio.json +80 -40
- package/assets/open-connector/catalog/apps/pinata.json +84 -42
- package/assets/open-connector/catalog/apps/pinecone.json +20 -10
- package/assets/open-connector/catalog/apps/pingdom.json +2 -1
- package/assets/open-connector/catalog/apps/pipedream.json +66 -33
- package/assets/open-connector/catalog/apps/pixellab.json +8 -4
- package/assets/open-connector/catalog/apps/placid.json +24 -12
- package/assets/open-connector/catalog/apps/plain.json +28 -14
- package/assets/open-connector/catalog/apps/planetscale.json +12 -6
- package/assets/open-connector/catalog/apps/planhat.json +104 -52
- package/assets/open-connector/catalog/apps/planly.json +738 -0
- package/assets/open-connector/catalog/apps/plasmic.json +6 -3
- package/assets/open-connector/catalog/apps/platerecognizer.json +6 -3
- package/assets/open-connector/catalog/apps/plisio.json +156 -78
- package/assets/open-connector/catalog/apps/plunk.json +12 -6
- package/assets/open-connector/catalog/apps/pointagram.json +848 -0
- package/assets/open-connector/catalog/apps/polygon_io.json +548 -274
- package/assets/open-connector/catalog/apps/positionstack.json +44 -22
- package/assets/open-connector/catalog/apps/postalytics.json +114 -57
- package/assets/open-connector/catalog/apps/posthog.json +1286 -643
- package/assets/open-connector/catalog/apps/practitest.json +8 -4
- package/assets/open-connector/catalog/apps/predis_ai.json +16 -8
- package/assets/open-connector/catalog/apps/prerender.json +8 -4
- package/assets/open-connector/catalog/apps/pretix.json +20 -10
- package/assets/open-connector/catalog/apps/printavo.json +150 -75
- package/assets/open-connector/catalog/apps/product_fruits.json +28 -14
- package/assets/open-connector/catalog/apps/productboard.json +28 -14
- package/assets/open-connector/catalog/apps/productive.json +6 -3
- package/assets/open-connector/catalog/apps/productlane.json +134 -67
- package/assets/open-connector/catalog/apps/promptlayer.json +112 -56
- package/assets/open-connector/catalog/apps/prospeo.json +22 -11
- package/assets/open-connector/catalog/apps/pubmed.json +168 -84
- package/assets/open-connector/catalog/apps/pushinator.json +120 -0
- package/assets/open-connector/catalog/apps/pylon.json +36 -18
- package/assets/open-connector/catalog/apps/qdrant.json +20 -10
- package/assets/open-connector/catalog/apps/qichacha.json +72 -36
- package/assets/open-connector/catalog/apps/qq_mail.json +74 -37
- package/assets/open-connector/catalog/apps/quaderno.json +178 -89
- package/assets/open-connector/catalog/apps/quentn.json +118 -59
- package/assets/open-connector/catalog/apps/quickbooks.json +10351 -0
- package/assets/open-connector/catalog/apps/quickchart.json +2 -1
- package/assets/open-connector/catalog/apps/quintadb.json +4 -2
- package/assets/open-connector/catalog/apps/quipteams.json +4 -2
- package/assets/open-connector/catalog/apps/quo.json +38 -19
- package/assets/open-connector/catalog/apps/ragie.json +10 -5
- package/assets/open-connector/catalog/apps/railway.json +44 -22
- package/assets/open-connector/catalog/apps/raisely.json +8 -4
- package/assets/open-connector/catalog/apps/rawg.json +48 -24
- package/assets/open-connector/catalog/apps/razorpay.json +146 -73
- package/assets/open-connector/catalog/apps/readwise.json +152 -76
- package/assets/open-connector/catalog/apps/realphonevalidation.json +14 -7
- package/assets/open-connector/catalog/apps/recallai.json +10 -5
- package/assets/open-connector/catalog/apps/recharge.json +20 -10
- package/assets/open-connector/catalog/apps/recruitee.json +48 -24
- package/assets/open-connector/catalog/apps/recruiterflow.json +10 -5
- package/assets/open-connector/catalog/apps/recurly.json +194 -97
- package/assets/open-connector/catalog/apps/reddit.json +10 -5
- package/assets/open-connector/catalog/apps/reducto.json +26 -13
- package/assets/open-connector/catalog/apps/referralhero.json +44 -22
- package/assets/open-connector/catalog/apps/refiner.json +16 -8
- package/assets/open-connector/catalog/apps/render.json +6 -3
- package/assets/open-connector/catalog/apps/renderform.json +72 -36
- package/assets/open-connector/catalog/apps/rentman.json +8 -4
- package/assets/open-connector/catalog/apps/replicate.json +16 -8
- package/assets/open-connector/catalog/apps/resend.json +98 -49
- package/assets/open-connector/catalog/apps/respond_io.json +84 -42
- package/assets/open-connector/catalog/apps/retell_ai.json +134 -105
- package/assets/open-connector/catalog/apps/retently.json +44 -22
- package/assets/open-connector/catalog/apps/revenuecat.json +16 -8
- package/assets/open-connector/catalog/apps/reversecontact.json +4 -2
- package/assets/open-connector/catalog/apps/rewiser.json +6 -3
- package/assets/open-connector/catalog/apps/riddle_quiz_maker.json +6 -3
- package/assets/open-connector/catalog/apps/ringover.json +14 -7
- package/assets/open-connector/catalog/apps/ritekit.json +104 -52
- package/assets/open-connector/catalog/apps/riveter.json +2 -1
- package/assets/open-connector/catalog/apps/roam.json +4 -2
- package/assets/open-connector/catalog/apps/roboflow.json +66 -33
- package/assets/open-connector/catalog/apps/rocket_reach.json +166 -83
- package/assets/open-connector/catalog/apps/rollbar.json +62 -31
- package/assets/open-connector/catalog/apps/rosette_text_analytics.json +46 -23
- package/assets/open-connector/catalog/apps/route4me.json +4 -2
- package/assets/open-connector/catalog/apps/roxyapi.json +5135 -0
- package/assets/open-connector/catalog/apps/runscope.json +2 -1
- package/assets/open-connector/catalog/apps/saas_custom_domains.json +72 -36
- package/assets/open-connector/catalog/apps/salesflare.json +32 -16
- package/assets/open-connector/catalog/apps/salesloft.json +14 -7
- package/assets/open-connector/catalog/apps/samcart.json +24 -12
- package/assets/open-connector/catalog/apps/satismeter.json +64 -32
- package/assets/open-connector/catalog/apps/saucelabs.json +64 -32
- package/assets/open-connector/catalog/apps/scanmalware.json +689 -0
- package/assets/open-connector/catalog/apps/scopus.json +66 -33
- package/assets/open-connector/catalog/apps/scrape_creators.json +4 -2
- package/assets/open-connector/catalog/apps/scrape_do.json +24 -12
- package/assets/open-connector/catalog/apps/scraperapi.json +4 -2
- package/assets/open-connector/catalog/apps/scrapfly.json +20 -10
- package/assets/open-connector/catalog/apps/screendesk.json +56 -28
- package/assets/open-connector/catalog/apps/screenshotbase.json +4 -2
- package/assets/open-connector/catalog/apps/sellersprite.json +414 -207
- package/assets/open-connector/catalog/apps/semantic_scholar.json +76 -38
- package/assets/open-connector/catalog/apps/sendbird.json +10 -5
- package/assets/open-connector/catalog/apps/sendblue.json +649 -0
- package/assets/open-connector/catalog/apps/sender.json +132 -66
- package/assets/open-connector/catalog/apps/sendfox.json +68 -34
- package/assets/open-connector/catalog/apps/sendgrid.json +8 -4
- package/assets/open-connector/catalog/apps/sendmator.json +26 -13
- package/assets/open-connector/catalog/apps/sendspark.json +10 -5
- package/assets/open-connector/catalog/apps/sentry.json +20 -10
- package/assets/open-connector/catalog/apps/serply.json +6 -3
- package/assets/open-connector/catalog/apps/serveravatar.json +32 -16
- package/assets/open-connector/catalog/apps/serwersms_pl.json +577 -0
- package/assets/open-connector/catalog/apps/sevdesk.json +312 -156
- package/assets/open-connector/catalog/apps/sf_express.json +76 -38
- package/assets/open-connector/catalog/apps/ship_bob.json +72 -36
- package/assets/open-connector/catalog/apps/ship_station.json +6 -3
- package/assets/open-connector/catalog/apps/shippo.json +8 -4
- package/assets/open-connector/catalog/apps/shopify.json +18396 -1096
- package/assets/open-connector/catalog/apps/shopify_partner.json +24 -12
- package/assets/open-connector/catalog/apps/shopify_storefront.json +116 -58
- package/assets/open-connector/catalog/apps/shortcut.json +398 -199
- package/assets/open-connector/catalog/apps/shorten_rest.json +2 -1
- package/assets/open-connector/catalog/apps/shortpixel.json +46 -23
- package/assets/open-connector/catalog/apps/shotstack.json +6 -3
- package/assets/open-connector/catalog/apps/signaturely.json +8 -4
- package/assets/open-connector/catalog/apps/simla.json +4 -2
- package/assets/open-connector/catalog/apps/simplelocalize.json +4 -2
- package/assets/open-connector/catalog/apps/simplesat.json +22 -11
- package/assets/open-connector/catalog/apps/simpletexting.json +1015 -0
- package/assets/open-connector/catalog/apps/skio.json +16 -8
- package/assets/open-connector/catalog/apps/skyfire.json +36 -18
- package/assets/open-connector/catalog/apps/skyvern.json +30 -15
- package/assets/open-connector/catalog/apps/slab.json +98 -49
- package/assets/open-connector/catalog/apps/slack.json +362 -37
- package/assets/open-connector/catalog/apps/slackbot.json +356 -34
- package/assets/open-connector/catalog/apps/slickdeals.json +26 -13
- package/assets/open-connector/catalog/apps/slicktext.json +72 -36
- package/assets/open-connector/catalog/apps/slite.json +96 -48
- package/assets/open-connector/catalog/apps/smartlead_ai.json +94 -47
- package/assets/open-connector/catalog/apps/smartrecruiters.json +8 -4
- package/assets/open-connector/catalog/apps/smartsheet.json +126 -63
- package/assets/open-connector/catalog/apps/sms_alert.json +1 -1
- package/assets/open-connector/catalog/apps/smtp2go.json +8 -4
- package/assets/open-connector/catalog/apps/snappy.json +1574 -0
- package/assets/open-connector/catalog/apps/snyk.json +6 -3
- package/assets/open-connector/catalog/apps/social_fetch.json +12 -6
- package/assets/open-connector/catalog/apps/softr.json +28 -14
- package/assets/open-connector/catalog/apps/solarwinds_service_desk.json +2561 -0
- package/assets/open-connector/catalog/apps/sonarcloud.json +46 -23
- package/assets/open-connector/catalog/apps/sorftime.json +66 -33
- package/assets/open-connector/catalog/apps/speedtest_tracker.json +80 -40
- package/assets/open-connector/catalog/apps/spyfu.json +4 -2
- package/assets/open-connector/catalog/apps/square.json +8 -4
- package/assets/open-connector/catalog/apps/sslmate_cert_spotter_api.json +10 -5
- package/assets/open-connector/catalog/apps/stack_ai.json +20 -10
- package/assets/open-connector/catalog/apps/stannp.json +8 -4
- package/assets/open-connector/catalog/apps/starton.json +80 -40
- package/assets/open-connector/catalog/apps/statamic.json +6 -3
- package/assets/open-connector/catalog/apps/statista.json +24 -12
- package/assets/open-connector/catalog/apps/statsig.json +12 -6
- package/assets/open-connector/catalog/apps/statuscake.json +8 -4
- package/assets/open-connector/catalog/apps/statuspage.json +36 -18
- package/assets/open-connector/catalog/apps/statuspal.json +22 -11
- package/assets/open-connector/catalog/apps/stealthgpt.json +4 -2
- package/assets/open-connector/catalog/apps/store_leads.json +2 -1
- package/assets/open-connector/catalog/apps/storecensus.json +4 -2
- package/assets/open-connector/catalog/apps/storyblok.json +76 -38
- package/assets/open-connector/catalog/apps/stream_estate.json +10 -5
- package/assets/open-connector/catalog/apps/stripe.json +26 -13
- package/assets/open-connector/catalog/apps/subvisory.json +28 -14
- package/assets/open-connector/catalog/apps/sumup.json +2 -1
- package/assets/open-connector/catalog/apps/sunoapi.json +2 -1
- package/assets/open-connector/catalog/apps/supabase.json +36 -18
- package/assets/open-connector/catalog/apps/supermemory.json +16 -8
- package/assets/open-connector/catalog/apps/supportbee.json +218 -109
- package/assets/open-connector/catalog/apps/surecontact.json +96 -48
- package/assets/open-connector/catalog/apps/survey_monkey.json +12 -6
- package/assets/open-connector/catalog/apps/surveymethods.json +6 -3
- package/assets/open-connector/catalog/apps/tabapi.json +2 -1
- package/assets/open-connector/catalog/apps/taggun.json +36 -18
- package/assets/open-connector/catalog/apps/taiga.json +56 -28
- package/assets/open-connector/catalog/apps/tailscale.json +54 -27
- package/assets/open-connector/catalog/apps/tanium.json +2 -1
- package/assets/open-connector/catalog/apps/tapfiliate.json +224 -112
- package/assets/open-connector/catalog/apps/tave.json +212 -106
- package/assets/open-connector/catalog/apps/tavily.json +4 -2
- package/assets/open-connector/catalog/apps/teable.json +4 -2
- package/assets/open-connector/catalog/apps/teamtailor.json +16 -8
- package/assets/open-connector/catalog/apps/teamup.json +4 -2
- package/assets/open-connector/catalog/apps/telegram.json +4 -2
- package/assets/open-connector/catalog/apps/telnyx.json +2 -1
- package/assets/open-connector/catalog/apps/teltel.json +52 -26
- package/assets/open-connector/catalog/apps/templated.json +94 -47
- package/assets/open-connector/catalog/apps/templatefox.json +14 -7
- package/assets/open-connector/catalog/apps/tencent_docs.json +202 -101
- package/assets/open-connector/catalog/apps/terraform.json +72 -36
- package/assets/open-connector/catalog/apps/textcortex.json +38 -19
- package/assets/open-connector/catalog/apps/textit.json +54 -27
- package/assets/open-connector/catalog/apps/textmagic.json +38 -19
- package/assets/open-connector/catalog/apps/the_cat_api.json +8 -4
- package/assets/open-connector/catalog/apps/the_dog_api.json +8 -4
- package/assets/open-connector/catalog/apps/the_swarm.json +4 -2
- package/assets/open-connector/catalog/apps/thehive.json +4 -2
- package/assets/open-connector/catalog/apps/thehive5.json +4 -2
- package/assets/open-connector/catalog/apps/theirstack.json +26 -13
- package/assets/open-connector/catalog/apps/thesportsdb.json +433 -0
- package/assets/open-connector/catalog/apps/tianapi.json +1654 -0
- package/assets/open-connector/catalog/apps/tianyancha.json +16 -8
- package/assets/open-connector/catalog/apps/tick.json +4 -2
- package/assets/open-connector/catalog/apps/ticket_tailor.json +12 -6
- package/assets/open-connector/catalog/apps/ticketmaster.json +156 -78
- package/assets/open-connector/catalog/apps/tidb.json +62 -31
- package/assets/open-connector/catalog/apps/tikhub.json +62 -31
- package/assets/open-connector/catalog/apps/timebuzzer.json +20 -10
- package/assets/open-connector/catalog/apps/timecamp.json +186 -93
- package/assets/open-connector/catalog/apps/timelinesai.json +60 -30
- package/assets/open-connector/catalog/apps/timelink.json +192 -96
- package/assets/open-connector/catalog/apps/timem_space.json +415 -0
- package/assets/open-connector/catalog/apps/tisane.json +18 -9
- package/assets/open-connector/catalog/apps/tmdb.json +50 -25
- package/assets/open-connector/catalog/apps/todoist.json +38 -19
- package/assets/open-connector/catalog/apps/together_ai.json +4 -2
- package/assets/open-connector/catalog/apps/toggl.json +2 -1
- package/assets/open-connector/catalog/apps/tomba.json +6 -3
- package/assets/open-connector/catalog/apps/tongdaxin.json +34 -17
- package/assets/open-connector/catalog/apps/torii.json +24 -12
- package/assets/open-connector/catalog/apps/trello.json +20 -10
- package/assets/open-connector/catalog/apps/trendshift.json +48 -24
- package/assets/open-connector/catalog/apps/trent.json +4 -2
- package/assets/open-connector/catalog/apps/trilium.json +2 -1
- package/assets/open-connector/catalog/apps/triple_whale.json +18 -9
- package/assets/open-connector/catalog/apps/truvera.json +42 -21
- package/assets/open-connector/catalog/apps/turbot_pipes.json +6 -3
- package/assets/open-connector/catalog/apps/tushare.json +134 -67
- package/assets/open-connector/catalog/apps/twenty_crm.json +2 -1
- package/assets/open-connector/catalog/apps/twilio.json +168 -84
- package/assets/open-connector/catalog/apps/twitterapi_io.json +52 -26
- package/assets/open-connector/catalog/apps/twochat.json +24 -12
- package/assets/open-connector/catalog/apps/typebot.json +24 -12
- package/assets/open-connector/catalog/apps/typesafe_ai.json +2 -1
- package/assets/open-connector/catalog/apps/u301.json +4 -2
- package/assets/open-connector/catalog/apps/umami.json +6 -3
- package/assets/open-connector/catalog/apps/unipile.json +72 -36
- package/assets/open-connector/catalog/apps/unirateapi.json +442 -0
- package/assets/open-connector/catalog/apps/uniswap_api.json +46 -23
- package/assets/open-connector/catalog/apps/unsplash.json +22 -11
- package/assets/open-connector/catalog/apps/unthread.json +24 -12
- package/assets/open-connector/catalog/apps/updown_io.json +96 -48
- package/assets/open-connector/catalog/apps/uploadcare.json +44 -22
- package/assets/open-connector/catalog/apps/upstash_redis.json +2 -1
- package/assets/open-connector/catalog/apps/uptimerobot.json +4 -2
- package/assets/open-connector/catalog/apps/userflow.json +26 -13
- package/assets/open-connector/catalog/apps/uspto.json +6 -3
- package/assets/open-connector/catalog/apps/v0.json +20 -10
- package/assets/open-connector/catalog/apps/v2ex.json +38 -19
- package/assets/open-connector/catalog/apps/validemail.json +164 -0
- package/assets/open-connector/catalog/apps/valyu.json +8 -4
- package/assets/open-connector/catalog/apps/vatlayer.json +6 -3
- package/assets/open-connector/catalog/apps/vectera.json +10 -5
- package/assets/open-connector/catalog/apps/venafitlsprotectcloud.json +2 -1
- package/assets/open-connector/catalog/apps/venafitlsprotectdatacenter.json +2 -1
- package/assets/open-connector/catalog/apps/vercel.json +3422 -1469
- package/assets/open-connector/catalog/apps/veremark.json +26 -13
- package/assets/open-connector/catalog/apps/verifiedemail.json +44 -22
- package/assets/open-connector/catalog/apps/viggle.json +68 -34
- package/assets/open-connector/catalog/apps/vimeo.json +74 -37
- package/assets/open-connector/catalog/apps/viral_loops.json +549 -0
- package/assets/open-connector/catalog/apps/vitally.json +4 -2
- package/assets/open-connector/catalog/apps/voiceflow.json +2 -1
- package/assets/open-connector/catalog/apps/vonage.json +112 -56
- package/assets/open-connector/catalog/apps/vtex.json +2 -1
- package/assets/open-connector/catalog/apps/waboxapp.json +12 -6
- package/assets/open-connector/catalog/apps/wachete.json +128 -64
- package/assets/open-connector/catalog/apps/waffo.json +14 -7
- package/assets/open-connector/catalog/apps/waitwhile.json +74 -37
- package/assets/open-connector/catalog/apps/waiverforever.json +24 -12
- package/assets/open-connector/catalog/apps/wakatime.json +2 -1
- package/assets/open-connector/catalog/apps/walmart_marketplace.json +4 -2
- package/assets/open-connector/catalog/apps/wandb.json +6 -3
- package/assets/open-connector/catalog/apps/wangdian.json +14 -7
- package/assets/open-connector/catalog/apps/wappalyzer.json +18 -9
- package/assets/open-connector/catalog/apps/waterfall.json +2 -1
- package/assets/open-connector/catalog/apps/wbiztool.json +510 -0
- package/assets/open-connector/catalog/apps/web_of_science.json +60 -30
- package/assets/open-connector/catalog/apps/web_of_science_expanded.json +166 -83
- package/assets/open-connector/catalog/apps/webex.json +26 -13
- package/assets/open-connector/catalog/apps/webflow.json +102 -51
- package/assets/open-connector/catalog/apps/webscraper_io.json +78 -39
- package/assets/open-connector/catalog/apps/webscraping_ai.json +8 -4
- package/assets/open-connector/catalog/apps/webshare.json +20 -10
- package/assets/open-connector/catalog/apps/weixin_bot.json +8 -4
- package/assets/open-connector/catalog/apps/whatsapp.json +515 -0
- package/assets/open-connector/catalog/apps/who_gho.json +2 -1
- package/assets/open-connector/catalog/apps/whop.json +124 -62
- package/assets/open-connector/catalog/apps/winston_ai.json +2 -1
- package/assets/open-connector/catalog/apps/wit_ai.json +2 -1
- package/assets/open-connector/catalog/apps/wolfram_alpha_api.json +10 -5
- package/assets/open-connector/catalog/apps/woocommerce.json +918 -459
- package/assets/open-connector/catalog/apps/woodpecker_co.json +58 -29
- package/assets/open-connector/catalog/apps/woot.json +196 -98
- package/assets/open-connector/catalog/apps/wordpress.json +2425 -525
- package/assets/open-connector/catalog/apps/workable.json +4 -2
- package/assets/open-connector/catalog/apps/workday.json +374 -187
- package/assets/open-connector/catalog/apps/workiom.json +6 -3
- package/assets/open-connector/catalog/apps/workos.json +52 -26
- package/assets/open-connector/catalog/apps/workpath.json +36 -18
- package/assets/open-connector/catalog/apps/world_news_api.json +32 -16
- package/assets/open-connector/catalog/apps/wp_maps.json +150 -75
- package/assets/open-connector/catalog/apps/wrike.json +104 -52
- package/assets/open-connector/catalog/apps/writer.json +4 -2
- package/assets/open-connector/catalog/apps/wttr_in.json +80 -40
- package/assets/open-connector/catalog/apps/wufoo.json +8 -4
- package/assets/open-connector/catalog/apps/x_ai.json +8 -4
- package/assets/open-connector/catalog/apps/xata.json +16 -8
- package/assets/open-connector/catalog/apps/xero.json +104 -52
- package/assets/open-connector/catalog/apps/xingpan.json +1200 -0
- package/assets/open-connector/catalog/apps/y_gy.json +88 -44
- package/assets/open-connector/catalog/apps/yoplanning.json +12 -6
- package/assets/open-connector/catalog/apps/youtube.json +28 -14
- package/assets/open-connector/catalog/apps/yuandian.json +92 -46
- package/assets/open-connector/catalog/apps/yuanfenju.json +2244 -0
- package/assets/open-connector/catalog/apps/zendesk.json +106 -53
- package/assets/open-connector/catalog/apps/zenrows.json +36 -18
- package/assets/open-connector/catalog/apps/zenscrape.json +2 -1
- package/assets/open-connector/catalog/apps/zenserp.json +12 -6
- package/assets/open-connector/catalog/apps/zenventory.json +8 -4
- package/assets/open-connector/catalog/apps/zep.json +22 -11
- package/assets/open-connector/catalog/apps/zerobounce.json +20 -10
- package/assets/open-connector/catalog/apps/zhihu.json +8 -4
- package/assets/open-connector/catalog/apps/zipcodebase.json +16 -8
- package/assets/open-connector/catalog/apps/zoom.json +88 -44
- package/assets/open-connector/catalog/apps/zorus.json +54 -27
- package/assets/open-connector/catalog/apps/zotero.json +22 -11
- package/assets/open-connector/catalog/apps-index.json +1 -1
- package/assets/open-connector/migrations/0018_connection_retirement.sql +17 -0
- package/assets/open-connector/migrations/postgresql/0018_connection_retirement.sql +17 -0
- package/package.json +22 -21
- package/src/connection-service.d.ts +33 -3
- package/src/connection-service.js +96 -12
- package/src/core/aws-sigv4.d.ts +3 -0
- package/src/core/aws-sigv4.js +2 -1
- package/src/core/cast.d.ts +5 -0
- package/src/core/cast.js +7 -2
- package/src/core/guarded-fetch.d.ts +3 -0
- package/src/core/guarded-fetch.js +31 -7
- package/src/core/json-schema.js +7 -1
- package/src/core/provider-http-dispatch.d.ts +82 -0
- package/src/core/provider-http-dispatch.js +177 -0
- package/src/core/provider-scenarios.js +0 -1
- package/src/core/provider-setup.d.ts +2 -0
- package/src/core/provider-setup.js +1 -0
- package/src/core/request.d.ts +20 -0
- package/src/core/request.js +47 -0
- package/src/core/types.d.ts +15 -1
- package/src/marketplace/marketplace-service.d.ts +6 -0
- package/src/marketplace/marketplace-service.js +6 -2
- package/src/oauth/oauth-client-config-service.js +11 -3
- package/src/oauth/oauth-credential-refresh-service.d.ts +20 -0
- package/src/oauth/oauth-credential-refresh-service.js +58 -3
- package/src/oauth/oauth-flow-service.d.ts +2 -0
- package/src/oauth/oauth-flow-service.js +52 -35
- package/src/oauth/oauth-token.d.ts +33 -3
- package/src/oauth/oauth-token.js +98 -4
- package/src/providers/action-contracts.generated.d.ts +62 -10
- package/src/providers/agenty/runtime.js +5 -4
- package/src/providers/aisa/executors.js +10 -0
- package/src/providers/aliyun_oss/executors.js +5 -4
- package/src/providers/amazing_marvin/actions.d.ts +2 -0
- package/src/providers/amazing_marvin/actions.js +145 -0
- package/src/providers/amazing_marvin/executors.d.ts +4 -0
- package/src/providers/amazing_marvin/executors.js +98 -0
- package/src/providers/api_route/executors.js +77 -0
- package/src/providers/aws_s3/executors.js +5 -4
- package/src/providers/baidu_netdisk/runtime.js +5 -4
- package/src/providers/box/executors.js +5 -4
- package/src/providers/campaign_cleaner/executors.js +5 -4
- package/src/providers/cheaperinference/executors.d.ts +4 -0
- package/src/providers/cheaperinference/executors.js +130 -0
- package/src/providers/clay/actions.d.ts +2 -0
- package/src/providers/clay/actions.js +222 -0
- package/src/providers/clay/batch-actions.d.ts +2 -0
- package/src/providers/clay/batch-actions.js +71 -0
- package/src/providers/clay/batch-runtime.d.ts +2 -0
- package/src/providers/clay/batch-runtime.js +79 -0
- package/src/providers/clay/executors.d.ts +4 -0
- package/src/providers/clay/executors.js +78 -0
- package/src/providers/clay/request.d.ts +4 -0
- package/src/providers/clay/request.js +34 -0
- package/src/providers/clay/table-schema.d.ts +2 -0
- package/src/providers/clay/table-schema.js +102 -0
- package/src/providers/cloudflare_r2/runtime.js +5 -4
- package/src/providers/commonninja/executors.d.ts +4 -0
- package/src/providers/commonninja/executors.js +118 -0
- package/src/providers/cronlytic/actions.d.ts +2 -0
- package/src/providers/cronlytic/actions.js +116 -0
- package/src/providers/cronlytic/executors.d.ts +4 -0
- package/src/providers/cronlytic/executors.js +146 -0
- package/src/providers/dataforseo/runtime.js +2 -2
- package/src/providers/dropbox/executors.js +4 -4
- package/src/providers/dynalist/actions.d.ts +2 -0
- package/src/providers/dynalist/actions.js +191 -0
- package/src/providers/dynalist/executors.d.ts +4 -0
- package/src/providers/dynalist/executors.js +58 -0
- package/src/providers/easy_peasy_ai/actions.d.ts +2 -0
- package/src/providers/easy_peasy_ai/actions.js +107 -0
- package/src/providers/easy_peasy_ai/executors.d.ts +4 -0
- package/src/providers/easy_peasy_ai/executors.js +90 -0
- package/src/providers/edgeone_makers/executors.d.ts +4 -0
- package/src/providers/edgeone_makers/executors.js +441 -0
- package/src/providers/elevenlabs/executors.js +23 -19
- package/src/providers/elevenreader/runtime.js +7 -6
- package/src/providers/explorium/actions.d.ts +2 -0
- package/src/providers/explorium/actions.js +124 -0
- package/src/providers/explorium/executors.d.ts +4 -0
- package/src/providers/explorium/executors.js +100 -0
- package/src/providers/feishu/executors.d.ts +3 -0
- package/src/providers/feishu/executors.js +47 -2
- package/src/providers/feishu/runtime.js +4 -2
- package/src/providers/feishu/shared/client.js +4 -4
- package/src/providers/feishu/shared/docs-actions.js +27 -1
- package/src/providers/feishu/shared/docs-runtime.js +54 -3
- package/src/providers/feishu/shared/domain-media-runtime.js +1 -1
- package/src/providers/feishu/shared/drive-runtime.js +1 -1
- package/src/providers/feishu/shared/slides-runtime.js +1 -1
- package/src/providers/feishu/shared/vc-actions.js +9 -2
- package/src/providers/feishu/shared/vc-runtime.js +1 -0
- package/src/providers/feishu/shared/wiki-actions.js +2 -3
- package/src/providers/feishu/shared/wiki-runtime.js +1 -2
- package/src/providers/feishu_app_bot/executors.js +9 -8
- package/src/providers/fengshui/executors.d.ts +4 -0
- package/src/providers/fengshui/executors.js +23 -0
- package/src/providers/fengshui/runtime.d.ts +4 -0
- package/src/providers/fengshui/runtime.js +95 -0
- package/src/providers/files_com/executors.js +17 -18
- package/src/providers/finlight/actions.d.ts +2 -0
- package/src/providers/finlight/actions.js +130 -0
- package/src/providers/finlight/executors.d.ts +4 -0
- package/src/providers/finlight/executors.js +120 -0
- package/src/providers/firecrawl/executors.d.ts +6 -2
- package/src/providers/firecrawl/executors.js +60 -9
- package/src/providers/flotiq/actions.d.ts +2 -0
- package/src/providers/flotiq/actions.js +114 -0
- package/src/providers/flotiq/executors.d.ts +4 -0
- package/src/providers/flotiq/executors.js +135 -0
- package/src/providers/framejet/runtime.js +7 -6
- package/src/providers/freeastroapi/constants.d.ts +8 -0
- package/src/providers/freeastroapi/constants.js +24 -0
- package/src/providers/freeastroapi/executors.d.ts +4 -0
- package/src/providers/freeastroapi/executors.js +18 -0
- package/src/providers/freeastroapi/input-validation.d.ts +2 -0
- package/src/providers/freeastroapi/input-validation.js +186 -0
- package/src/providers/freeastroapi/runtime.d.ts +5 -0
- package/src/providers/freeastroapi/runtime.js +294 -0
- package/src/providers/fusion-api/operations.js +8 -8
- package/src/providers/fuxin/executors.js +9 -8
- package/src/providers/fxmacrodata/executors.d.ts +4 -0
- package/src/providers/fxmacrodata/executors.js +32 -0
- package/src/providers/fxmacrodata/runtime.d.ts +34 -0
- package/src/providers/fxmacrodata/runtime.js +154 -0
- package/src/providers/gemini/runtime.d.ts +1 -1
- package/src/providers/gemini/runtime.js +1 -1
- package/src/providers/getyoutubetranscript/executors.d.ts +4 -0
- package/src/providers/getyoutubetranscript/executors.js +14 -0
- package/src/providers/getyoutubetranscript/runtime.d.ts +8 -0
- package/src/providers/getyoutubetranscript/runtime.js +101 -0
- package/src/providers/github/runtime-pull-request.js +5 -4
- package/src/providers/gmail/executors.js +166 -73
- package/src/providers/gmail/limits.d.ts +3 -0
- package/src/providers/gmail/limits.js +5 -0
- package/src/providers/gmail/message.d.ts +13 -18
- package/src/providers/gmail/message.js +159 -54
- package/src/providers/gmail/mime-attachments.d.ts +8 -0
- package/src/providers/gmail/mime-attachments.js +76 -0
- package/src/providers/gmail/mime.d.ts +49 -0
- package/src/providers/gmail/mime.js +481 -0
- package/src/providers/gmail/scopes.d.ts +8 -5
- package/src/providers/gmail/scopes.js +8 -5
- package/src/providers/googleads/executors.d.ts +1 -1
- package/src/providers/googleads/executors.js +9 -9
- package/src/providers/googlecalendar/scopes.d.ts +11 -0
- package/src/providers/googlecalendar/scopes.js +18 -0
- package/src/providers/googledrive/executors.js +9 -7
- package/src/providers/googledrive/runtime-request.js +43 -3
- package/src/providers/googledrive/trigger-changes.js +9 -3
- package/src/providers/googleforms/executors.d.ts +1 -2
- package/src/providers/googleforms/executors.js +8 -8
- package/src/providers/googlephotos/executors.js +8 -1
- package/src/providers/greip/actions.d.ts +2 -0
- package/src/providers/greip/actions.js +107 -0
- package/src/providers/greip/executors.d.ts +4 -0
- package/src/providers/greip/executors.js +84 -0
- package/src/providers/greynoise/executors.d.ts +3 -0
- package/src/providers/greynoise/executors.js +17 -0
- package/src/providers/greynoise/runtime.d.ts +9 -0
- package/src/providers/greynoise/runtime.js +71 -0
- package/src/providers/growsurf/actions.d.ts +2 -0
- package/src/providers/growsurf/actions.js +182 -0
- package/src/providers/growsurf/executors.d.ts +4 -0
- package/src/providers/growsurf/executors.js +140 -0
- package/src/providers/hithink_finance/market-dumps.js +58 -12
- package/src/providers/http-json-runtime.js +4 -1
- package/src/providers/huodingdong_mcp/executors.d.ts +4 -0
- package/src/providers/huodingdong_mcp/executors.js +58 -0
- package/src/providers/indexed/runtime.js +2 -3
- package/src/providers/issue_badge/actions.d.ts +2 -0
- package/src/providers/issue_badge/actions.js +95 -0
- package/src/providers/issue_badge/executors.d.ts +4 -0
- package/src/providers/issue_badge/executors.js +98 -0
- package/src/providers/iyunbiao/runtime.js +5 -4
- package/src/providers/justoneapi/actions-commerce.d.ts +2 -0
- package/src/providers/justoneapi/actions-commerce.js +585 -0
- package/src/providers/justoneapi/actions-creators.d.ts +2 -0
- package/src/providers/justoneapi/actions-creators.js +986 -0
- package/src/providers/justoneapi/actions-media.d.ts +2 -0
- package/src/providers/justoneapi/actions-media.js +345 -0
- package/src/providers/justoneapi/actions-social-cn.d.ts +2 -0
- package/src/providers/justoneapi/actions-social-cn.js +1231 -0
- package/src/providers/justoneapi/actions-social-global.d.ts +2 -0
- package/src/providers/justoneapi/actions-social-global.js +455 -0
- package/src/providers/justoneapi/actions.d.ts +4 -0
- package/src/providers/justoneapi/actions.js +32 -0
- package/src/providers/justoneapi/endpoint-definition.d.ts +9 -0
- package/src/providers/justoneapi/endpoint-definition.js +1 -0
- package/src/providers/justoneapi/executors.d.ts +4 -0
- package/src/providers/justoneapi/executors.js +143 -0
- package/src/providers/kagi/actions.d.ts +2 -0
- package/src/providers/kagi/actions.js +36 -0
- package/src/providers/kagi/executors.d.ts +4 -0
- package/src/providers/kagi/executors.js +120 -0
- package/src/providers/karakeep/runtime-assets.js +7 -5
- package/src/providers/kenjo/actions.d.ts +2 -0
- package/src/providers/kenjo/actions.js +112 -0
- package/src/providers/kenjo/executors.d.ts +4 -0
- package/src/providers/kenjo/executors.js +138 -0
- package/src/providers/keyzy/actions.d.ts +2 -0
- package/src/providers/keyzy/actions.js +102 -0
- package/src/providers/keyzy/executors.d.ts +4 -0
- package/src/providers/keyzy/executors.js +114 -0
- package/src/providers/kickofflabs/actions.d.ts +2 -0
- package/src/providers/kickofflabs/actions.js +48 -0
- package/src/providers/kickofflabs/executors.d.ts +4 -0
- package/src/providers/kickofflabs/executors.js +71 -0
- package/src/providers/klangio/runtime.js +10 -8
- package/src/providers/latchshot/executors.js +8 -6
- package/src/providers/lingxing_mcp/runtime.js +39 -24
- package/src/providers/litellm/executors.d.ts +4 -0
- package/src/providers/litellm/executors.js +34 -0
- package/src/providers/litellm/runtime.d.ts +29 -0
- package/src/providers/litellm/runtime.js +227 -0
- package/src/providers/mcp-tools.d.ts +2 -0
- package/src/providers/mcp-tools.js +2 -1
- package/src/providers/mem0/runtime.d.ts +1 -2
- package/src/providers/mem0/runtime.js +3 -4
- package/src/providers/memento_database/actions.d.ts +2 -0
- package/src/providers/memento_database/actions.js +170 -0
- package/src/providers/memento_database/executors.d.ts +4 -0
- package/src/providers/memento_database/executors.js +113 -0
- package/src/providers/mistral_ai/executors.js +5 -4
- package/src/providers/nationalize/executors.d.ts +4 -0
- package/src/providers/nationalize/executors.js +62 -0
- package/src/providers/navigatr/actions.d.ts +2 -0
- package/src/providers/navigatr/actions.js +179 -0
- package/src/providers/navigatr/executors.d.ts +4 -0
- package/src/providers/navigatr/executors.js +118 -0
- package/src/providers/nightfall_ai/actions.d.ts +2 -0
- package/src/providers/nightfall_ai/actions.js +74 -0
- package/src/providers/nightfall_ai/executors.d.ts +4 -0
- package/src/providers/nightfall_ai/executors.js +62 -0
- package/src/providers/one_drive/executors.js +5 -4
- package/src/providers/oomol_console/permission-groups.d.ts +12 -0
- package/src/providers/oomol_console/permission-groups.js +28 -3
- package/src/providers/oomol_console/runtime.js +29 -3
- package/src/providers/opper/executors.d.ts +4 -0
- package/src/providers/opper/executors.js +89 -0
- package/src/providers/outlook/executors.js +3 -3
- package/src/providers/picky_assist/actions.d.ts +2 -0
- package/src/providers/picky_assist/actions.js +61 -0
- package/src/providers/picky_assist/executors.d.ts +4 -0
- package/src/providers/picky_assist/executors.js +68 -0
- package/src/providers/pixellab/runtime.js +6 -5
- package/src/providers/planly/actions.d.ts +2 -0
- package/src/providers/planly/actions.js +155 -0
- package/src/providers/planly/executors.d.ts +4 -0
- package/src/providers/planly/executors.js +83 -0
- package/src/providers/pointagram/actions.d.ts +2 -0
- package/src/providers/pointagram/actions.js +167 -0
- package/src/providers/pointagram/executors.d.ts +4 -0
- package/src/providers/pointagram/executors.js +107 -0
- package/src/providers/provider-runtime.d.ts +9 -2
- package/src/providers/provider-runtime.js +69 -15
- package/src/providers/pushinator/actions.d.ts +2 -0
- package/src/providers/pushinator/actions.js +34 -0
- package/src/providers/pushinator/executors.d.ts +4 -0
- package/src/providers/pushinator/executors.js +61 -0
- package/src/providers/quickbooks/constants.d.ts +18 -0
- package/src/providers/quickbooks/constants.js +15 -0
- package/src/providers/quickbooks/executors.d.ts +9 -0
- package/src/providers/quickbooks/executors.js +407 -0
- package/src/providers/quickbooks/oauth.d.ts +11 -0
- package/src/providers/quickbooks/oauth.js +103 -0
- package/src/providers/quickbooks/payloads.d.ts +7 -0
- package/src/providers/quickbooks/payloads.js +104 -0
- package/src/providers/quickbooks/resources.d.ts +37 -0
- package/src/providers/quickbooks/resources.js +256 -0
- package/src/providers/quickbooks/runtime.d.ts +93 -0
- package/src/providers/quickbooks/runtime.js +278 -0
- package/src/providers/registry.generated.js +53 -1
- package/src/providers/retell_ai/executors.d.ts +0 -5
- package/src/providers/retell_ai/executors.js +60 -93
- package/src/providers/roxyapi/executors.d.ts +4 -0
- package/src/providers/roxyapi/executors.js +25 -0
- package/src/providers/roxyapi/runtime.d.ts +10 -0
- package/src/providers/roxyapi/runtime.js +279 -0
- package/src/providers/scanmalware/executors.d.ts +3 -0
- package/src/providers/scanmalware/executors.js +17 -0
- package/src/providers/scanmalware/runtime.d.ts +9 -0
- package/src/providers/scanmalware/runtime.js +120 -0
- package/src/providers/screenshotone/runtime.js +7 -6
- package/src/providers/sendblue/actions.d.ts +2 -0
- package/src/providers/sendblue/actions.js +163 -0
- package/src/providers/sendblue/executors.d.ts +4 -0
- package/src/providers/sendblue/executors.js +156 -0
- package/src/providers/serwersms_pl/actions.d.ts +2 -0
- package/src/providers/serwersms_pl/actions.js +166 -0
- package/src/providers/serwersms_pl/executors.d.ts +4 -0
- package/src/providers/serwersms_pl/executors.js +85 -0
- package/src/providers/shopify/bulk.d.ts +2 -0
- package/src/providers/shopify/bulk.js +139 -0
- package/src/providers/shopify/catalog.d.ts +2 -0
- package/src/providers/shopify/catalog.js +301 -0
- package/src/providers/shopify/client.d.ts +13 -0
- package/src/providers/shopify/client.js +67 -0
- package/src/providers/shopify/content-runtime.d.ts +2 -0
- package/src/providers/shopify/{runtime.js → content-runtime.js} +14 -206
- package/src/providers/shopify/context.d.ts +10 -0
- package/src/providers/shopify/context.js +1 -0
- package/src/providers/shopify/customers.d.ts +2 -0
- package/src/providers/shopify/customers.js +118 -0
- package/src/providers/shopify/executors.d.ts +2 -0
- package/src/providers/shopify/executors.js +48 -7
- package/src/providers/shopify/graphql.d.ts +2 -0
- package/src/providers/shopify/graphql.js +17 -0
- package/src/providers/shopify/inventory.d.ts +2 -0
- package/src/providers/shopify/inventory.js +362 -0
- package/src/providers/shopify/oauth.d.ts +2 -0
- package/src/providers/shopify/oauth.js +94 -0
- package/src/providers/shopify/operation-definitions.d.ts +13 -0
- package/src/providers/shopify/operation-definitions.js +414 -0
- package/src/providers/shopify/operation-queries.d.ts +1 -0
- package/src/providers/shopify/operation-queries.js +62 -0
- package/src/providers/shopify/operations.d.ts +2 -0
- package/src/providers/shopify/operations.js +48 -0
- package/src/providers/shopify/orders.d.ts +2 -0
- package/src/providers/shopify/orders.js +357 -0
- package/src/providers/shopify/runtime-common.d.ts +16 -0
- package/src/providers/shopify/runtime-common.js +85 -0
- package/src/providers/shopify/shop-domain.d.ts +1 -0
- package/src/providers/shopify/shop-domain.js +49 -0
- package/src/providers/shopify/shop.d.ts +2 -0
- package/src/providers/shopify/shop.js +14 -0
- package/src/providers/simpletexting/actions.d.ts +2 -0
- package/src/providers/simpletexting/actions.js +195 -0
- package/src/providers/simpletexting/executors.d.ts +4 -0
- package/src/providers/simpletexting/executors.js +157 -0
- package/src/providers/slack/actions.js +44 -0
- package/src/providers/slack/runtime.js +65 -6
- package/src/providers/snappy/actions.d.ts +2 -0
- package/src/providers/snappy/actions.js +318 -0
- package/src/providers/snappy/executors.d.ts +4 -0
- package/src/providers/snappy/executors.js +89 -0
- package/src/providers/solarwinds_service_desk/actions.d.ts +2 -0
- package/src/providers/solarwinds_service_desk/actions.js +207 -0
- package/src/providers/solarwinds_service_desk/executors.d.ts +4 -0
- package/src/providers/solarwinds_service_desk/executors.js +160 -0
- package/src/providers/supabase/runtime.js +5 -4
- package/src/providers/templatedocs/runtime.js +8 -5
- package/src/providers/thesportsdb/actions.d.ts +2 -0
- package/src/providers/thesportsdb/actions.js +116 -0
- package/src/providers/thesportsdb/executors.d.ts +4 -0
- package/src/providers/thesportsdb/executors.js +114 -0
- package/src/providers/tianapi/executors.d.ts +4 -0
- package/src/providers/tianapi/executors.js +18 -0
- package/src/providers/tianapi/runtime.d.ts +5 -0
- package/src/providers/tianapi/runtime.js +315 -0
- package/src/providers/timem_space/actions.d.ts +2 -0
- package/src/providers/timem_space/actions.js +112 -0
- package/src/providers/timem_space/executors.d.ts +3 -0
- package/src/providers/timem_space/executors.js +52 -0
- package/src/providers/tinypng/runtime.js +8 -7
- package/src/providers/unirateapi/actions.d.ts +2 -0
- package/src/providers/unirateapi/actions.js +122 -0
- package/src/providers/unirateapi/executors.d.ts +4 -0
- package/src/providers/unirateapi/executors.js +89 -0
- package/src/providers/validemail/executors.d.ts +4 -0
- package/src/providers/validemail/executors.js +65 -0
- package/src/providers/vercel/executors.js +1 -0
- package/src/providers/vercel/runtime.d.ts +1 -0
- package/src/providers/vercel/runtime.js +737 -27
- package/src/providers/vimeo/runtime.js +5 -4
- package/src/providers/viral_loops/actions.d.ts +2 -0
- package/src/providers/viral_loops/actions.js +90 -0
- package/src/providers/viral_loops/executors.d.ts +4 -0
- package/src/providers/viral_loops/executors.js +81 -0
- package/src/providers/wbiztool/actions.d.ts +2 -0
- package/src/providers/wbiztool/actions.js +127 -0
- package/src/providers/wbiztool/executors.d.ts +4 -0
- package/src/providers/wbiztool/executors.js +140 -0
- package/src/providers/whatsapp/runtime.js +223 -3
- package/src/providers/wordpress/runtime.d.ts +0 -9
- package/src/providers/wordpress/runtime.js +354 -91
- package/src/providers/xingpan/constants.d.ts +1 -0
- package/src/providers/xingpan/constants.js +14 -0
- package/src/providers/xingpan/executors.d.ts +4 -0
- package/src/providers/xingpan/executors.js +18 -0
- package/src/providers/xingpan/runtime.d.ts +5 -0
- package/src/providers/xingpan/runtime.js +229 -0
- package/src/providers/youtube/runtime.js +5 -4
- package/src/providers/yuanfenju/executors.d.ts +4 -0
- package/src/providers/yuanfenju/executors.js +28 -0
- package/src/providers/yuanfenju/runtime.d.ts +10 -0
- package/src/providers/yuanfenju/runtime.js +281 -0
- package/src/server/actions/action-runner.d.ts +3 -0
- package/src/server/actions/action-runner.js +20 -3
- package/src/server/actions/run-log-summary.js +1 -0
- package/src/server/api/action-example.d.ts +3 -0
- package/src/server/api/action-example.js +402 -0
- package/src/server/api/action-markdown.js +1 -35
- package/src/server/api/auth.js +7 -0
- package/src/server/api/cache-policy.js +3 -4
- package/src/server/api/oauth-completion-page.d.ts +3 -1
- package/src/server/api/oauth-completion-page.js +5 -3
- package/src/server/api/openapi.js +22 -5
- package/src/server/api/pattern-example.d.ts +22 -0
- package/src/server/api/pattern-example.js +413 -0
- package/src/server/api/runtime-api.js +8 -2
- package/src/server/connect-app.d.ts +3 -0
- package/src/server/connect-app.js +5 -0
- package/src/server/connect-server.d.ts +6 -0
- package/src/server/connect-server.js +43 -9
- package/src/server/connector-runtime.d.ts +5 -0
- package/src/server/connector-runtime.js +6 -0
- package/src/server/files/node-transit-file-upload.js +7 -3
- package/src/server/files/transit-file-store.js +10 -4
- package/src/server/files/transit-files.d.ts +18 -0
- package/src/server/files/transit-files.js +74 -13
- package/src/server/proxy/proxy-runner.d.ts +3 -0
- package/src/server/proxy/proxy-runner.js +23 -2
- package/src/server/storage/connection-request-store.js +27 -14
- package/src/server/storage/connection-retirement.d.ts +7 -0
- package/src/server/storage/connection-retirement.js +21 -0
- package/src/server/storage/connection-store.d.ts +3 -0
- package/src/server/storage/connection-store.js +58 -5
- package/src/server/storage/oauth-state-store.d.ts +12 -0
- package/src/server/storage/oauth-state-store.js +36 -0
- package/src/server/storage/postgres/runtime-store.d.ts +2 -2
- package/src/server/storage/postgres/runtime-store.js +3 -28
- package/src/server/storage/sqlite/runtime-store.d.ts +2 -10
- package/src/server/storage/sqlite/runtime-store.js +7 -30
- package/src/triggers/trigger-runner.d.ts +4 -0
- package/src/triggers/trigger-runner.js +21 -7
- package/assets/open-connector/catalog/apps/shopify_admin.json +0 -5423
- package/src/providers/shopify/runtime.d.ts +0 -14
- package/src/providers/shopify/scopes.d.ts +0 -3
- package/src/providers/shopify/scopes.js +0 -3
- package/src/providers/shopify_admin/executors.js +0 -37
- package/src/providers/shopify_admin/runtime.d.ts +0 -23
- package/src/providers/shopify_admin/runtime.js +0 -1486
- /package/src/providers/{shopify_admin → api_route}/executors.d.ts +0 -0
|
@@ -3,11 +3,13 @@ import { compress } from "hono/compress";
|
|
|
3
3
|
import { ConnectionError, defaultConnectionName } from "../connection-service.js";
|
|
4
4
|
import { ActionPolicyService, emptyPolicyRules } from "../core/action-policy.js";
|
|
5
5
|
import { DEFAULT_ACTION_SEARCH_LIMIT, createActionSearchIndexProvider, searchActions } from "../core/action-search.js";
|
|
6
|
-
import { optionalRecord, optionalString, requiredRawString, requiredString, requiredStringArray, } from "../core/cast.js";
|
|
6
|
+
import { optionalBoolean, optionalRecord, optionalString, requiredRawString, requiredString, requiredStringArray, } from "../core/cast.js";
|
|
7
7
|
import { PromiseCache } from "../core/promise-cache.js";
|
|
8
|
+
import { withProviderHttpDispatch } from "../core/provider-http-dispatch.js";
|
|
8
9
|
import { MarketplaceError } from "../marketplace/marketplace-service.js";
|
|
9
10
|
import { OAuthClientConfigError, OAuthClientConfigService } from "../oauth/oauth-client-config-service.js";
|
|
10
11
|
import { OAuthCallbackError, OAuthFlowError, OAuthFlowService } from "../oauth/oauth-flow-service.js";
|
|
12
|
+
import { ProviderDispatchRequestError, toProviderExecutionError } from "../providers/provider-runtime.js";
|
|
11
13
|
import { SaasError } from "../saas/saas-client.js";
|
|
12
14
|
import { ActionInputDepthError, createIdempotencyExpiry, hashActionRequest, hashIdempotencyKey, readIdempotencyKey, } from "./actions/action-idempotency.js";
|
|
13
15
|
import { ActionRunner } from "./actions/action-runner.js";
|
|
@@ -77,6 +79,7 @@ export class ConnectServer {
|
|
|
77
79
|
this.actionSearch = options.actionSearch ?? createActionSearchIndexProvider(options.catalog.actions);
|
|
78
80
|
this.actionPolicy = options.actionPolicy ?? new ActionPolicyService();
|
|
79
81
|
this.proxyRunner = new ProxyRunner({
|
|
82
|
+
providerHttpDispatch: options.providerHttpDispatch,
|
|
80
83
|
catalog: options.catalog,
|
|
81
84
|
providerLoader: options.providerLoader,
|
|
82
85
|
connections: options.connections,
|
|
@@ -87,6 +90,9 @@ export class ConnectServer {
|
|
|
87
90
|
createApp() {
|
|
88
91
|
const app = new Hono();
|
|
89
92
|
const auth = this.options.auth ?? {};
|
|
93
|
+
app.use("*", async (_context, next) => {
|
|
94
|
+
await withProviderHttpDispatch({ operation: "runtime" }, next, this.options.providerHttpDispatch);
|
|
95
|
+
});
|
|
90
96
|
app.use("*", async (context, next) => {
|
|
91
97
|
await next();
|
|
92
98
|
const cachePolicy = getResponseCachePolicy(context.req.method, context.req.path, context.res.status);
|
|
@@ -111,6 +117,7 @@ export class ConnectServer {
|
|
|
111
117
|
app.use("*", createLocalAuthMiddleware(auth));
|
|
112
118
|
if (this.options.marketplace) {
|
|
113
119
|
app.get("/api/marketplace", (context) => context.json(this.options.marketplace.getState()));
|
|
120
|
+
app.get("/api/marketplace/discovery", (context) => this.getMarketplaceDiscovery(context));
|
|
114
121
|
app.put("/api/marketplace", (context) => this.configureMarketplace(context));
|
|
115
122
|
app.patch("/api/marketplace", (context) => this.configureMarketplace(context));
|
|
116
123
|
app.delete("/api/marketplace", (context) => this.deleteMarketplace(context));
|
|
@@ -257,6 +264,19 @@ export class ConnectServer {
|
|
|
257
264
|
else
|
|
258
265
|
app.notFound(notFound);
|
|
259
266
|
app.onError((error, context) => {
|
|
267
|
+
if (error instanceof ProviderDispatchRequestError) {
|
|
268
|
+
if (context.req.path.startsWith("/v1/"))
|
|
269
|
+
return writeRuntimeFailure(context, {
|
|
270
|
+
status: 429,
|
|
271
|
+
errorCode: "rate_limited",
|
|
272
|
+
message: error.message,
|
|
273
|
+
data: toProviderExecutionError(error, error.message).error?.details,
|
|
274
|
+
});
|
|
275
|
+
const seconds = optionalRecord(error.details)?.retryAfterSeconds;
|
|
276
|
+
if (typeof seconds === "number")
|
|
277
|
+
context.header("Retry-After", String(seconds));
|
|
278
|
+
return jsonError(context, 429, "rate_limited", error.message);
|
|
279
|
+
}
|
|
260
280
|
if (error instanceof SaasError) {
|
|
261
281
|
this.options.logger?.warn({
|
|
262
282
|
method: context.req.method,
|
|
@@ -286,7 +306,7 @@ export class ConnectServer {
|
|
|
286
306
|
method: context.req.method,
|
|
287
307
|
path: context.req.path,
|
|
288
308
|
}, "request failed");
|
|
289
|
-
if (context.req.path.startsWith("/v1/
|
|
309
|
+
if (context.req.path.startsWith("/v1/")) {
|
|
290
310
|
return writeRuntimeFailure(context, {
|
|
291
311
|
status: 500,
|
|
292
312
|
errorCode: "internal_error",
|
|
@@ -316,13 +336,25 @@ export class ConnectServer {
|
|
|
316
336
|
return context.json(await this.options.marketplace.configure(input));
|
|
317
337
|
}
|
|
318
338
|
catch (error) {
|
|
319
|
-
if (error instanceof MarketplaceError)
|
|
320
|
-
|
|
321
|
-
return jsonError(context, status === 401 || status === 403 || status === 404 || status === 502 || status === 504 ? status : 400, error.code, error.message);
|
|
322
|
-
}
|
|
339
|
+
if (error instanceof MarketplaceError)
|
|
340
|
+
return this.writeMarketplaceError(context, error);
|
|
323
341
|
throw error;
|
|
324
342
|
}
|
|
325
343
|
}
|
|
344
|
+
async getMarketplaceDiscovery(context) {
|
|
345
|
+
try {
|
|
346
|
+
return context.json(await this.options.marketplace.getDefaultDiscovery(context.req.raw.signal));
|
|
347
|
+
}
|
|
348
|
+
catch (error) {
|
|
349
|
+
if (error instanceof MarketplaceError)
|
|
350
|
+
return this.writeMarketplaceError(context, error);
|
|
351
|
+
throw error;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
writeMarketplaceError(context, error) {
|
|
355
|
+
const status = error.status;
|
|
356
|
+
return jsonError(context, status === 401 || status === 403 || status === 404 || status === 502 || status === 504 ? status : 400, error.code, error.message);
|
|
357
|
+
}
|
|
326
358
|
async deleteMarketplace(context) {
|
|
327
359
|
await this.options.marketplace.remove();
|
|
328
360
|
return context.json(this.options.marketplace.getState());
|
|
@@ -877,7 +909,7 @@ export class ConnectServer {
|
|
|
877
909
|
connectionName,
|
|
878
910
|
};
|
|
879
911
|
this.options.logger?.info(logContext, "connection disconnect started");
|
|
880
|
-
return this.writeConnectionResult(context, this.options.connections.disconnect(service, connectionName), logContext);
|
|
912
|
+
return this.writeConnectionResult(context, this.options.connections.disconnect(service, connectionName, { revoke: optionalBoolean(body.revoke) }), logContext);
|
|
881
913
|
}
|
|
882
914
|
async createOAuthAuthorization(context) {
|
|
883
915
|
const body = await readJsonBody(context);
|
|
@@ -1023,10 +1055,12 @@ export class ConnectServer {
|
|
|
1023
1055
|
}
|
|
1024
1056
|
let service;
|
|
1025
1057
|
try {
|
|
1058
|
+
const callbackUrl = new URL(context.req.url);
|
|
1026
1059
|
const completed = await this.options.oauthFlow.completeAuthorization({
|
|
1027
1060
|
state,
|
|
1028
1061
|
code,
|
|
1029
|
-
callbackParameters: Object.fromEntries(
|
|
1062
|
+
callbackParameters: Object.fromEntries(callbackUrl.searchParams),
|
|
1063
|
+
callbackQuery: callbackUrl.search,
|
|
1030
1064
|
signal: context.req.raw.signal,
|
|
1031
1065
|
});
|
|
1032
1066
|
service = completed.service;
|
|
@@ -1050,7 +1084,7 @@ export class ConnectServer {
|
|
|
1050
1084
|
}
|
|
1051
1085
|
throw error;
|
|
1052
1086
|
}
|
|
1053
|
-
return context.html(renderOAuthCompletionPage(service));
|
|
1087
|
+
return context.html(renderOAuthCompletionPage(service, this.options.oauthCloseDelaySeconds));
|
|
1054
1088
|
}
|
|
1055
1089
|
async writeConnectionResult(context, operation, logContext) {
|
|
1056
1090
|
try {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ActionPolicyConfig } from "../core/action-policy.ts";
|
|
2
|
+
import type { ProviderHttpDispatchOptions } from "../core/provider-http-dispatch.ts";
|
|
2
3
|
import type { RuntimeLogger } from "../core/types.ts";
|
|
3
4
|
import type { RuntimeJwtConfig } from "./api/runtime-jwt.ts";
|
|
4
5
|
import type { S3TransitClientOptions } from "./files/s3-transit-files.ts";
|
|
@@ -56,6 +57,8 @@ export interface ConnectorRuntimeOptions {
|
|
|
56
57
|
jwt?: RuntimeJwtConfig;
|
|
57
58
|
postgres?: ConnectorPostgresOptions;
|
|
58
59
|
network?: ConnectorNetworkOptions;
|
|
60
|
+
/** Opt-in admission and result feedback for every provider HTTP transport attempt. */
|
|
61
|
+
providerHttpDispatch?: ProviderHttpDispatchOptions;
|
|
59
62
|
/** Allow or block actions, proxies and Triggers by name. */
|
|
60
63
|
actionPolicy?: ActionPolicyConfig;
|
|
61
64
|
/** Services, or `*`, whose connections may carry their own OAuth client instead of the configured one. */
|
|
@@ -73,6 +76,8 @@ export interface ConnectorRuntimeOptions {
|
|
|
73
76
|
logger?: RuntimeLogger;
|
|
74
77
|
/** The standalone host opts into API-reference HTML. Authorization completion pages are always available. */
|
|
75
78
|
apiReference?: boolean;
|
|
79
|
+
/** Seconds the OAuth completion page waits before closing its window. Defaults to 5; `0` closes it as soon as it loads. */
|
|
80
|
+
oauthCloseDelaySeconds?: number;
|
|
76
81
|
}
|
|
77
82
|
/** Standard web requests are the host boundary; credentials, databases and framework objects stay private. */
|
|
78
83
|
export interface ConnectorRuntime {
|
|
@@ -5,6 +5,7 @@ import { ActionPolicyService } from "../core/action-policy.js";
|
|
|
5
5
|
import { setEgressTrustedHosts, setPrivateNetworkAccessAllowed } from "../core/request.js";
|
|
6
6
|
import { ProviderLoader } from "../providers/provider-loader.js";
|
|
7
7
|
import { executorModules } from "../providers/registry.generated.js";
|
|
8
|
+
import { DEFAULT_OAUTH_CLOSE_DELAY_SECONDS } from "./api/oauth-completion-page.js";
|
|
8
9
|
import { createRuntimeJwtVerifier } from "./api/runtime-jwt.js";
|
|
9
10
|
import { createConnectApp } from "./connect-app.js";
|
|
10
11
|
import { getConnectorAssetDirectory } from "./connector-assets.js";
|
|
@@ -48,6 +49,9 @@ async function openRuntime(options) {
|
|
|
48
49
|
throw new Error("transitFiles.ttlSeconds must be a positive number of seconds.");
|
|
49
50
|
if (!Number.isFinite(maxBytes) || maxBytes <= 0)
|
|
50
51
|
throw new Error("transitFiles.maxBytes must be a positive number.");
|
|
52
|
+
const oauthCloseDelaySeconds = options.oauthCloseDelaySeconds ?? DEFAULT_OAUTH_CLOSE_DELAY_SECONDS;
|
|
53
|
+
if (!Number.isInteger(oauthCloseDelaySeconds) || oauthCloseDelaySeconds < 0)
|
|
54
|
+
throw new Error("oauthCloseDelaySeconds must be a non-negative integer of seconds.");
|
|
51
55
|
const assetDirectory = getConnectorAssetDirectory();
|
|
52
56
|
const assets = options.assets ?? {
|
|
53
57
|
catalogDir: join(assetDirectory, "catalog/apps"),
|
|
@@ -107,6 +111,7 @@ async function openRuntime(options) {
|
|
|
107
111
|
const { app, runtimeAuthConfigured, saasCleanup, triggerMaintenance } = await createConnectApp({
|
|
108
112
|
catalog,
|
|
109
113
|
providerLoader: new ProviderLoader(executorModules),
|
|
114
|
+
providerHttpDispatch: options.providerHttpDispatch,
|
|
110
115
|
runtimeDatabase: database,
|
|
111
116
|
transitFiles,
|
|
112
117
|
uploadTransitFile: createNodeTransitFileUpload({ transitFiles, tempDir }),
|
|
@@ -120,6 +125,7 @@ async function openRuntime(options) {
|
|
|
120
125
|
allowedCustomOAuth: options.allowedCustomOAuth,
|
|
121
126
|
logger: options.logger,
|
|
122
127
|
serveDocumentation: options.apiReference ?? false,
|
|
128
|
+
oauthCloseDelaySeconds,
|
|
123
129
|
});
|
|
124
130
|
saasCleanup.start();
|
|
125
131
|
triggerMaintenance.start();
|
|
@@ -41,7 +41,11 @@ async function stageMultipartFile(request, path, maxBytes) {
|
|
|
41
41
|
parser = Busboy({
|
|
42
42
|
headers: { "content-type": contentType },
|
|
43
43
|
defParamCharset: "utf8",
|
|
44
|
-
|
|
44
|
+
// Busboy flags truncation when its counter *reaches* its limit, so give it
|
|
45
|
+
// one byte of headroom and judge the bytes actually written below. This
|
|
46
|
+
// also rejects an over-limit file under a fractional limit, where the
|
|
47
|
+
// counter never equals the limit and `truncated` would stay false.
|
|
48
|
+
limits: { fields: 0, files: 1, parts: 2, fileSize: maxBytes + 1 },
|
|
45
49
|
});
|
|
46
50
|
}
|
|
47
51
|
catch {
|
|
@@ -62,13 +66,13 @@ async function stageMultipartFile(request, path, maxBytes) {
|
|
|
62
66
|
}
|
|
63
67
|
const writer = createWriteStream(path, { flags: "wx" });
|
|
64
68
|
staged = pipeline(stream, writer).then(() => {
|
|
65
|
-
if (
|
|
69
|
+
if (writer.bytesWritten > maxBytes) {
|
|
66
70
|
throw new TransitFileError(413, "file_too_large", `Transit file must be ${maxBytes} bytes or smaller.`);
|
|
67
71
|
}
|
|
68
72
|
return {
|
|
69
73
|
path,
|
|
70
74
|
sizeBytes: writer.bytesWritten,
|
|
71
|
-
name: info.filename,
|
|
75
|
+
name: info.filename ?? "",
|
|
72
76
|
mimeType: info.mimeType,
|
|
73
77
|
};
|
|
74
78
|
});
|
|
@@ -52,11 +52,15 @@ export function uploadResult(publicOrigin, fileId, info) {
|
|
|
52
52
|
* ASCII-only form for clients that do not read `filename*`.
|
|
53
53
|
*/
|
|
54
54
|
export function contentDispositionForFileName(name) {
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
// Metadata written before the write-time repair (or supplied by a caller)
|
|
56
|
+
// can still hold an unpaired surrogate. `encodeURIComponent` throws on it,
|
|
57
|
+
// which would fail every download for the whole lifetime of the file.
|
|
58
|
+
const repaired = name.toWellFormed();
|
|
59
|
+
const asciiName = repaired.replace(/[^\u0020-\u007e]/gu, "_").replace(/["\\]/g, "_");
|
|
60
|
+
if (!/[\u0080-\u{10ffff}]/u.test(repaired)) {
|
|
57
61
|
return `attachment; filename="${asciiName}"`;
|
|
58
62
|
}
|
|
59
|
-
return `attachment; filename="${asciiName}"; filename*=UTF-8''${encodeExtendedValue(
|
|
63
|
+
return `attachment; filename="${asciiName}"; filename*=UTF-8''${encodeExtendedValue(repaired)}`;
|
|
60
64
|
}
|
|
61
65
|
/** Percent-encode a file name as an RFC 8187 `ext-value`, which allows fewer literals than a URI component. */
|
|
62
66
|
function encodeExtendedValue(name) {
|
|
@@ -144,7 +148,9 @@ export function metadataKey(fileId) {
|
|
|
144
148
|
/** Trim a stored name and MIME type, substituting the matching fallback for a missing or blank value. */
|
|
145
149
|
export function normalizeDescriptor(input, fallback = { name: "file", mimeType: "application/octet-stream" }) {
|
|
146
150
|
return {
|
|
147
|
-
|
|
151
|
+
// Repair unpaired UTF-16 surrogates at the storage boundary so every
|
|
152
|
+
// backend and every later reader sees a well-formed name.
|
|
153
|
+
name: typeof input.name === "string" && input.name.trim() ? input.name.trim().toWellFormed() : fallback.name,
|
|
148
154
|
mimeType: typeof input.mimeType === "string" && input.mimeType.trim() ? input.mimeType.trim() : fallback.mimeType,
|
|
149
155
|
};
|
|
150
156
|
}
|
|
@@ -11,6 +11,9 @@ export declare class TransitFileService implements IStagedTransitFileService {
|
|
|
11
11
|
private readonly publicOrigin;
|
|
12
12
|
private readonly ttlMs;
|
|
13
13
|
readonly maxBytes: number;
|
|
14
|
+
private sweeping;
|
|
15
|
+
private followUp;
|
|
16
|
+
private lastSweepAt;
|
|
14
17
|
constructor(options: TransitFileOptions);
|
|
15
18
|
create(file: File): Promise<TransitFileUpload>;
|
|
16
19
|
createFromStream(file: TransitFileStream): Promise<TransitFileUpload>;
|
|
@@ -18,7 +21,22 @@ export declare class TransitFileService implements IStagedTransitFileService {
|
|
|
18
21
|
read(fileId: string): Promise<TransitFileRead>;
|
|
19
22
|
response(fileId: string): Promise<Response>;
|
|
20
23
|
delete(fileId: string): Promise<boolean>;
|
|
24
|
+
/**
|
|
25
|
+
* Remove expired files and their side-cars. One sweep runs at a time (a
|
|
26
|
+
* caller arriving mid-sweep shares it), and the directory is walked in
|
|
27
|
+
* bounded batches, so its size never turns into that many concurrent
|
|
28
|
+
* filesystem requests on the heap.
|
|
29
|
+
*/
|
|
21
30
|
cleanupExpired(): Promise<void>;
|
|
31
|
+
private startSweep;
|
|
32
|
+
/**
|
|
33
|
+
* The write path's sweep: at most one every {@link sweepIntervalMs}, never
|
|
34
|
+
* awaited. Sweeping on every write made each upload walk the whole
|
|
35
|
+
* directory, so concurrent downloads into a store holding a day of files
|
|
36
|
+
* queued hundreds of thousands of `stat` calls and exhausted the heap.
|
|
37
|
+
*/
|
|
38
|
+
private sweepIfDue;
|
|
39
|
+
private sweep;
|
|
22
40
|
/** Resolve a live, unexpired file on disk together with its side-car metadata, or report it as missing. */
|
|
23
41
|
private locate;
|
|
24
42
|
private readMetadata;
|
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
import { createReadStream, createWriteStream } from "node:fs";
|
|
2
|
-
import { mkdir,
|
|
2
|
+
import { mkdir, opendir, readFile, rename, stat, unlink, writeFile } from "node:fs/promises";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { Readable } from "node:stream";
|
|
5
5
|
import { pipeline } from "node:stream/promises";
|
|
6
6
|
import { assertFileSize, assertSafeFileId, contentTypeFromFileId, isSafeFileId, normalizeDescriptor, randomHex, safeExtension, TransitFileError, transitFileRead, transitFileResponse, uploadResult, } from "./transit-file-store.js";
|
|
7
|
+
/** How often the write path may start a sweep of expired transit files. */
|
|
8
|
+
const sweepIntervalMs = 60_000;
|
|
9
|
+
/** How many directory entries a sweep stats at once. */
|
|
10
|
+
const sweepConcurrency = 64;
|
|
7
11
|
export class TransitFileService {
|
|
8
12
|
rootDir;
|
|
9
13
|
publicOrigin;
|
|
10
14
|
ttlMs;
|
|
11
15
|
maxBytes;
|
|
16
|
+
sweeping;
|
|
17
|
+
followUp;
|
|
18
|
+
lastSweepAt = Number.NEGATIVE_INFINITY;
|
|
12
19
|
constructor(options) {
|
|
13
20
|
this.rootDir = options.rootDir;
|
|
14
21
|
this.publicOrigin = options.publicOrigin;
|
|
@@ -29,7 +36,8 @@ export class TransitFileService {
|
|
|
29
36
|
});
|
|
30
37
|
try {
|
|
31
38
|
file.signal?.throwIfAborted();
|
|
32
|
-
|
|
39
|
+
this.sweepIfDue();
|
|
40
|
+
await mkdir(this.rootDir, { recursive: true });
|
|
33
41
|
const sizeBytes = await this.writeStream(file, tempPath);
|
|
34
42
|
file.signal?.throwIfAborted();
|
|
35
43
|
await writeFile(metadataPath(path), JSON.stringify(metadata), { flag: "wx", signal: file.signal });
|
|
@@ -47,7 +55,7 @@ export class TransitFileService {
|
|
|
47
55
|
}
|
|
48
56
|
async createFromPath(file) {
|
|
49
57
|
assertFileSize(file.sizeBytes, this.maxBytes);
|
|
50
|
-
|
|
58
|
+
this.sweepIfDue();
|
|
51
59
|
await mkdir(this.rootDir, { recursive: true });
|
|
52
60
|
const fileId = `${randomHex(16)}${safeExtension(file.name)}`;
|
|
53
61
|
const path = join(this.rootDir, fileId);
|
|
@@ -82,21 +90,74 @@ export class TransitFileService {
|
|
|
82
90
|
return false;
|
|
83
91
|
}
|
|
84
92
|
}
|
|
85
|
-
|
|
93
|
+
/**
|
|
94
|
+
* Remove expired files and their side-cars. One sweep runs at a time (a
|
|
95
|
+
* caller arriving mid-sweep shares it), and the directory is walked in
|
|
96
|
+
* bounded batches, so its size never turns into that many concurrent
|
|
97
|
+
* filesystem requests on the heap.
|
|
98
|
+
*/
|
|
99
|
+
cleanupExpired() {
|
|
100
|
+
if (this.sweeping) {
|
|
101
|
+
// The running sweep may have read the directory before this call:
|
|
102
|
+
// run one more after it, shared by every caller that arrives meanwhile.
|
|
103
|
+
if (!this.followUp) {
|
|
104
|
+
const next = () => {
|
|
105
|
+
this.followUp = undefined;
|
|
106
|
+
return this.startSweep();
|
|
107
|
+
};
|
|
108
|
+
this.followUp = this.sweeping.then(next, next);
|
|
109
|
+
}
|
|
110
|
+
return this.followUp;
|
|
111
|
+
}
|
|
112
|
+
return this.startSweep();
|
|
113
|
+
}
|
|
114
|
+
startSweep() {
|
|
115
|
+
if (this.sweeping) {
|
|
116
|
+
return this.sweeping;
|
|
117
|
+
}
|
|
118
|
+
this.lastSweepAt = Date.now();
|
|
119
|
+
this.sweeping = this.sweep().finally(() => {
|
|
120
|
+
this.sweeping = undefined;
|
|
121
|
+
});
|
|
122
|
+
return this.sweeping;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* The write path's sweep: at most one every {@link sweepIntervalMs}, never
|
|
126
|
+
* awaited. Sweeping on every write made each upload walk the whole
|
|
127
|
+
* directory, so concurrent downloads into a store holding a day of files
|
|
128
|
+
* queued hundreds of thousands of `stat` calls and exhausted the heap.
|
|
129
|
+
*/
|
|
130
|
+
sweepIfDue() {
|
|
131
|
+
if (this.sweeping || Date.now() - this.lastSweepAt < sweepIntervalMs) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
void this.cleanupExpired().catch(() => undefined);
|
|
135
|
+
}
|
|
136
|
+
async sweep() {
|
|
86
137
|
await mkdir(this.rootDir, { recursive: true });
|
|
87
138
|
const cutoff = Date.now() - this.ttlMs;
|
|
88
|
-
|
|
89
|
-
|
|
139
|
+
let batch = [];
|
|
140
|
+
const flush = async () => {
|
|
141
|
+
await Promise.all(batch.map(async (name) => {
|
|
142
|
+
const path = join(this.rootDir, name);
|
|
143
|
+
const stats = await stat(path).catch(() => undefined);
|
|
144
|
+
if (stats && stats.mtimeMs < cutoff) {
|
|
145
|
+
await unlink(path).catch(() => undefined);
|
|
146
|
+
await unlink(metadataPath(path)).catch(() => undefined);
|
|
147
|
+
}
|
|
148
|
+
}));
|
|
149
|
+
batch = [];
|
|
150
|
+
};
|
|
151
|
+
for await (const entry of await opendir(this.rootDir)) {
|
|
90
152
|
if (!entry.isFile() || !isManagedFileName(entry.name)) {
|
|
91
|
-
|
|
153
|
+
continue;
|
|
92
154
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
await unlink(path).catch(() => undefined);
|
|
97
|
-
await unlink(metadataPath(path)).catch(() => undefined);
|
|
155
|
+
batch.push(entry.name);
|
|
156
|
+
if (batch.length >= sweepConcurrency) {
|
|
157
|
+
await flush();
|
|
98
158
|
}
|
|
99
|
-
}
|
|
159
|
+
}
|
|
160
|
+
await flush();
|
|
100
161
|
}
|
|
101
162
|
/** Resolve a live, unexpired file on disk together with its side-car metadata, or report it as missing. */
|
|
102
163
|
async locate(fileId) {
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
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
|
+
import type { ProviderHttpDispatchOptions } from "../../core/provider-http-dispatch.ts";
|
|
4
5
|
import type { RuntimeLogger, ProxyResponse } from "../../core/types.ts";
|
|
5
6
|
import type { IProviderLoader } from "../../providers/provider-loader.ts";
|
|
6
7
|
import type { SaasExecutionService } from "../../saas/saas-execution-service.ts";
|
|
7
8
|
export type ProxyFailureStatus = 400 | 402 | 403 | 404 | 409 | 413 | 429 | 500 | 501 | 502 | 503 | 504;
|
|
8
9
|
export interface ProxyRunnerOptions {
|
|
10
|
+
providerHttpDispatch?: ProviderHttpDispatchOptions;
|
|
9
11
|
catalog: CatalogStore;
|
|
10
12
|
providerLoader: IProviderLoader;
|
|
11
13
|
connections: ConnectionService;
|
|
@@ -38,6 +40,7 @@ export declare class ProxyRunner {
|
|
|
38
40
|
private readonly options;
|
|
39
41
|
constructor(options: ProxyRunnerOptions);
|
|
40
42
|
run(input: RunProxyInput): Promise<ProxyRunResult>;
|
|
43
|
+
private runProxy;
|
|
41
44
|
private readProxyRequestInput;
|
|
42
45
|
private assertRelativeEndpoint;
|
|
43
46
|
private hasPathTraversalSegment;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { ConnectionError } from "../../connection-service.js";
|
|
2
2
|
import { optionalInteger, optionalRecord, requiredRecord, requiredString } from "../../core/cast.js";
|
|
3
|
+
import { withProviderHttpDispatch } from "../../core/provider-http-dispatch.js";
|
|
4
|
+
import { ProviderDispatchRequestError, toProviderExecutionError, withProviderHttpDispatchResult, } from "../../providers/provider-runtime.js";
|
|
3
5
|
import { SaasError } from "../../saas/saas-client.js";
|
|
4
6
|
import { mapConnectionErrorStatus } from "../api/runtime-api.js";
|
|
5
7
|
class ProxyInputError extends Error {
|
|
@@ -11,6 +13,10 @@ export class ProxyRunner {
|
|
|
11
13
|
this.options = options;
|
|
12
14
|
}
|
|
13
15
|
async run(input) {
|
|
16
|
+
const provider = this.options.catalog.providers.find((candidate) => candidate.service === input.service);
|
|
17
|
+
return withProviderHttpDispatch({ operation: "proxy", service: provider?.service }, () => this.runProxy(input), this.options.providerHttpDispatch);
|
|
18
|
+
}
|
|
19
|
+
async runProxy(input) {
|
|
14
20
|
const provider = this.options.catalog.providers.find((candidate) => candidate.service === input.service);
|
|
15
21
|
if (!provider) {
|
|
16
22
|
return {
|
|
@@ -105,10 +111,15 @@ export class ProxyRunner {
|
|
|
105
111
|
message: `Proxy execution is not supported for ${provider.service}.`,
|
|
106
112
|
meta: { service: provider.service },
|
|
107
113
|
};
|
|
108
|
-
const result = await
|
|
114
|
+
const result = await withProviderHttpDispatchResult({
|
|
115
|
+
operation: "proxy",
|
|
116
|
+
service: provider.service,
|
|
117
|
+
connectionId: target.summary?.id,
|
|
118
|
+
connectionName: target.summary?.connectionName,
|
|
119
|
+
}, () => executor(request.input, {
|
|
109
120
|
getCredential: target.getCredential,
|
|
110
121
|
signal: input.signal,
|
|
111
|
-
});
|
|
122
|
+
}), this.options.providerHttpDispatch);
|
|
112
123
|
const durationMs = Date.now() - startedAtMs;
|
|
113
124
|
if (result.ok) {
|
|
114
125
|
this.options.logger?.info({ ...logContext, durationMs, status: result.response.status }, "proxy request completed");
|
|
@@ -149,6 +160,16 @@ export class ProxyRunner {
|
|
|
149
160
|
meta: { service: provider.service, executionId, remoteExecutionId: error.remoteExecutionId },
|
|
150
161
|
};
|
|
151
162
|
}
|
|
163
|
+
if (error instanceof ProviderDispatchRequestError) {
|
|
164
|
+
return {
|
|
165
|
+
ok: false,
|
|
166
|
+
status: 429,
|
|
167
|
+
errorCode: "rate_limited",
|
|
168
|
+
message: error.message,
|
|
169
|
+
data: toProviderExecutionError(error, error.message).error?.details,
|
|
170
|
+
meta: { service: provider.service },
|
|
171
|
+
};
|
|
172
|
+
}
|
|
152
173
|
if (error instanceof ConnectionError) {
|
|
153
174
|
const missingConnectionDecision = error.code === "connection_not_found" ? input.policy.evaluateConnection() : undefined;
|
|
154
175
|
if (missingConnectionDecision && !missingConnectionDecision.allowed) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { initializeRetirement, lockRetirement, retirementMatches } from "./connection-retirement.js";
|
|
1
2
|
import { queueSaasConnections, queueSaasRequests } from "./saas-project-store.js";
|
|
2
3
|
/** Shared SQL lifecycle for SQLite, PostgreSQL and D1. Secrets use the runtime's codec. */
|
|
3
4
|
export class ConnectionRequestStore {
|
|
@@ -10,11 +11,14 @@ export class ConnectionRequestStore {
|
|
|
10
11
|
async create(pending) {
|
|
11
12
|
const now = Date.parse(pending.createdAt);
|
|
12
13
|
const value = await this.secretCodec.encode(JSON.stringify(pending));
|
|
14
|
+
const fence = retirementMatches(pending.service, pending.connectionName, pending.retirementGeneration);
|
|
13
15
|
await this.transaction([
|
|
14
|
-
|
|
16
|
+
initializeRetirement(pending.service, pending.connectionName, pending.retirementGeneration),
|
|
17
|
+
lockRetirement(pending.service, pending.connectionName, pending.retirementGeneration),
|
|
18
|
+
...this.retireRequests(pending.owner, pending.service, now, fence),
|
|
15
19
|
{
|
|
16
|
-
sql: `insert into connection_requests (id, owner, service, state, phase, status, value, expires_at, created_at, updated_at)
|
|
17
|
-
|
|
20
|
+
sql: `insert into connection_requests (id, owner, service, state, phase, status, value, expires_at, created_at, updated_at, connection_name)
|
|
21
|
+
select ?, ?, ?, ?, 'pending', 'initiated', ?, ?, ?, ?, ? where ${fence.sql}`,
|
|
18
22
|
values: [
|
|
19
23
|
pending.connectionRequestId,
|
|
20
24
|
pending.owner,
|
|
@@ -24,6 +28,8 @@ export class ConnectionRequestStore {
|
|
|
24
28
|
pending.expiresAt,
|
|
25
29
|
now,
|
|
26
30
|
now,
|
|
31
|
+
pending.connectionName,
|
|
32
|
+
...fence.values,
|
|
27
33
|
],
|
|
28
34
|
},
|
|
29
35
|
]);
|
|
@@ -81,7 +87,8 @@ export class ConnectionRequestStore {
|
|
|
81
87
|
: null;
|
|
82
88
|
signal?.throwIfAborted();
|
|
83
89
|
const now = new Date();
|
|
84
|
-
const
|
|
90
|
+
const fence = retirementMatches(pending.service, pending.connectionName, pending.retirementGeneration);
|
|
91
|
+
const active = `exists (select 1 from connection_requests where kind = 'local' and id = ? and phase = 'processing') and ${fence.sql}`;
|
|
85
92
|
const write = pending.target
|
|
86
93
|
? {
|
|
87
94
|
sql: `update connections set value = ?, revision = ?, updated_at = ?, source = 'local',
|
|
@@ -96,6 +103,7 @@ export class ConnectionRequestStore {
|
|
|
96
103
|
id,
|
|
97
104
|
pending.target.revision,
|
|
98
105
|
pending.connectionRequestId,
|
|
106
|
+
...fence.values,
|
|
99
107
|
accountId,
|
|
100
108
|
],
|
|
101
109
|
}
|
|
@@ -111,14 +119,17 @@ export class ConnectionRequestStore {
|
|
|
111
119
|
now.toISOString(),
|
|
112
120
|
accountId,
|
|
113
121
|
pending.connectionRequestId,
|
|
122
|
+
...fence.values,
|
|
114
123
|
],
|
|
115
124
|
};
|
|
116
125
|
const results = await this.transaction([
|
|
126
|
+
lockRetirement(pending.service, pending.connectionName, pending.retirementGeneration),
|
|
117
127
|
{ sql: "update connections set revision = revision where id = ?", values: [id] },
|
|
118
128
|
queueSaasConnections(`id = ? and revision = ? and ${active}`, [
|
|
119
129
|
id,
|
|
120
130
|
pending.target?.revision ?? "",
|
|
121
131
|
pending.connectionRequestId,
|
|
132
|
+
...fence.values,
|
|
122
133
|
]),
|
|
123
134
|
write,
|
|
124
135
|
{
|
|
@@ -127,29 +138,31 @@ export class ConnectionRequestStore {
|
|
|
127
138
|
values: [id, now.getTime(), pending.connectionRequestId, id, revision],
|
|
128
139
|
},
|
|
129
140
|
]);
|
|
130
|
-
return results[
|
|
141
|
+
return results[3].length ? id : undefined;
|
|
131
142
|
}
|
|
132
|
-
retireRequests(owner, service, now) {
|
|
133
|
-
const expired =
|
|
134
|
-
const superseded =
|
|
143
|
+
retireRequests(owner, service, now, fence = { sql: "1 = 1", values: [] }) {
|
|
144
|
+
const expired = `expires_at <= ? and ${fence.sql}`;
|
|
145
|
+
const superseded = `owner = ? and service = ? and phase = 'pending' and ${fence.sql}`;
|
|
146
|
+
const expiredValues = [new Date(now - 86_400_000).toISOString(), ...fence.values];
|
|
147
|
+
const supersededValues = [owner, service, ...fence.values];
|
|
135
148
|
return [
|
|
136
|
-
queueSaasRequests(expired,
|
|
137
|
-
queueSaasRequests(superseded,
|
|
149
|
+
queueSaasRequests(expired, expiredValues),
|
|
150
|
+
queueSaasRequests(superseded, supersededValues),
|
|
138
151
|
{
|
|
139
152
|
sql: `update connection_requests set phase = 'completed', status = 'failed', error_code = 'request_expired',
|
|
140
153
|
value = null, candidate_value = null, lease_id = null, lease_until = null, updated_at = ?
|
|
141
154
|
where kind = 'saas' and phase <> 'completed' and ${expired}`,
|
|
142
|
-
values: [now,
|
|
155
|
+
values: [now, ...expiredValues],
|
|
143
156
|
},
|
|
144
157
|
{
|
|
145
|
-
sql:
|
|
146
|
-
values:
|
|
158
|
+
sql: `delete from connection_requests where ${expired}`,
|
|
159
|
+
values: expiredValues,
|
|
147
160
|
},
|
|
148
161
|
{
|
|
149
162
|
sql: `update connection_requests set phase = 'completed', status = 'failed', error_code = 'request_superseded',
|
|
150
163
|
error_message = 'A newer authorization request replaced this request.', value = null, candidate_value = null,
|
|
151
164
|
lease_id = null, lease_until = null, updated_at = ? where ${superseded} and (kind = 'saas' or expires_at > ?)`,
|
|
152
|
-
values: [now,
|
|
165
|
+
values: [now, ...supersededValues, new Date(now).toISOString()],
|
|
153
166
|
},
|
|
154
167
|
];
|
|
155
168
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RequestStatement } from "./connection-request-store.ts";
|
|
2
|
+
/** SQL predicate for the one durable retirement fence shared by OAuth publication paths. */
|
|
3
|
+
export declare function retirementMatches(service: string, connectionName: string, generation: string): RequestStatement;
|
|
4
|
+
/** Keeps retirement and publication in the same lock order, including on PostgreSQL. */
|
|
5
|
+
export declare function lockRetirement(service: string, connectionName: string, generation: string): RequestStatement;
|
|
6
|
+
/** A retired name's row is never removed, including when no credential was ever published. */
|
|
7
|
+
export declare function initializeRetirement(service: string, connectionName: string, generation: string): RequestStatement;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** SQL predicate for the one durable retirement fence shared by OAuth publication paths. */
|
|
2
|
+
export function retirementMatches(service, connectionName, generation) {
|
|
3
|
+
return {
|
|
4
|
+
sql: "exists (select 1 from connection_retirements where service = ? and connection_name = ? and generation = ?)",
|
|
5
|
+
values: [service, connectionName, generation],
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
/** Keeps retirement and publication in the same lock order, including on PostgreSQL. */
|
|
9
|
+
export function lockRetirement(service, connectionName, generation) {
|
|
10
|
+
return {
|
|
11
|
+
sql: "update connection_retirements set generation = generation where service = ? and connection_name = ? and generation = ? returning generation",
|
|
12
|
+
values: [service, connectionName, generation],
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/** A retired name's row is never removed, including when no credential was ever published. */
|
|
16
|
+
export function initializeRetirement(service, connectionName, generation) {
|
|
17
|
+
return {
|
|
18
|
+
sql: "insert into connection_retirements (service, connection_name, generation) values (?, ?, ?) on conflict do nothing",
|
|
19
|
+
values: [service, connectionName, generation],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -10,7 +10,10 @@ export declare class SqlConnectionStore implements IConnectionStore {
|
|
|
10
10
|
private read;
|
|
11
11
|
get(service: string, connectionName: string): Promise<StoredConnection | undefined>;
|
|
12
12
|
list(): Promise<StoredConnection[]>;
|
|
13
|
+
getRetirementGeneration(service: string, connectionName: string): Promise<string>;
|
|
13
14
|
set(service: string, connectionName: string, credential: ResolvedCredential): Promise<StoredLocalConnection>;
|
|
15
|
+
setIfCurrentGeneration(service: string, connectionName: string, credential: ResolvedCredential, retirementGeneration: string): Promise<StoredLocalConnection | undefined>;
|
|
16
|
+
private writeCredential;
|
|
14
17
|
updateCredential(input: StoredLocalConnection, refresh?: boolean): Promise<boolean>;
|
|
15
18
|
delete(service: string, connectionName: string): Promise<void>;
|
|
16
19
|
}
|