@hasna/connectors 1.4.1 → 1.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/index.js +1271 -317
- package/bin/mcp.js +524 -211
- package/bin/serve.js +1208 -256
- package/connectors/adobe/package.json +1 -1
- package/connectors/aitableai/package.json +1 -1
- package/connectors/alchemy/package.json +1 -1
- package/connectors/alerty/package.json +1 -1
- package/connectors/alienvault/package.json +1 -1
- package/connectors/alphamoon/package.json +1 -1
- package/connectors/alttextai/package.json +1 -1
- package/connectors/amadeus/package.json +1 -1
- package/connectors/amadeus/src/api/client.ts +6 -6
- package/connectors/amadeus/src/cli/index.ts +6 -6
- package/connectors/amadeus/src/utils/output.ts +5 -5
- package/connectors/amazon/package.json +1 -1
- package/connectors/amilia/package.json +1 -1
- package/connectors/amqpsender/package.json +1 -1
- package/connectors/announcekit/package.json +1 -1
- package/connectors/anthropic/.env.example +1 -1
- package/connectors/anyscale/package.json +1 -1
- package/connectors/apiary/package.json +1 -1
- package/connectors/apiflash/package.json +1 -1
- package/connectors/apitemplateio/package.json +1 -1
- package/connectors/apptivegrid/package.json +1 -1
- package/connectors/assemblyai/package.json +1 -1
- package/connectors/autom/package.json +1 -1
- package/connectors/automizy/package.json +1 -1
- package/connectors/autopilot/package.json +1 -1
- package/connectors/awscognito/package.json +1 -1
- package/connectors/bamboohr/package.json +1 -1
- package/connectors/bannerbear/package.json +1 -1
- package/connectors/baseten/package.json +1 -1
- package/connectors/box/package.json +1 -1
- package/connectors/brevo/package.json +1 -1
- package/connectors/calendly/package.json +1 -1
- package/connectors/cerebras/package.json +1 -1
- package/connectors/chargebee/package.json +1 -1
- package/connectors/clearbit/package.json +1 -1
- package/connectors/clickbank/README.md +2 -2
- package/connectors/cloudflare-workers/package.json +1 -1
- package/connectors/coda/package.json +1 -1
- package/connectors/coingecko/package.json +1 -1
- package/connectors/convertkit/package.json +1 -1
- package/connectors/customerio/package.json +1 -1
- package/connectors/databricks/package.json +1 -1
- package/connectors/datadog/package.json +1 -1
- package/connectors/datasoap/README.md +2 -2
- package/connectors/datasoap/package.json +1 -1
- package/connectors/datumbox/README.md +2 -2
- package/connectors/datumbox/package.json +1 -1
- package/connectors/dayschedule/README.md +2 -2
- package/connectors/dayschedule/package.json +1 -1
- package/connectors/deepgram/package.json +1 -1
- package/connectors/deepinfra/README.md +2 -2
- package/connectors/deepinfra/package.json +1 -1
- package/connectors/deepl/README.md +2 -2
- package/connectors/deepl/package.json +1 -1
- package/connectors/deepseek/package.json +1 -1
- package/connectors/demio/README.md +2 -2
- package/connectors/demio/package.json +1 -1
- package/connectors/descript/README.md +2 -2
- package/connectors/descript/package.json +1 -1
- package/connectors/detrack/README.md +2 -2
- package/connectors/detrack/package.json +1 -1
- package/connectors/devcycle/README.md +2 -2
- package/connectors/devcycle/package.json +1 -1
- package/connectors/dhl/README.md +2 -2
- package/connectors/dhl/package.json +1 -1
- package/connectors/docusign/package.json +1 -1
- package/connectors/dropbox/package.json +1 -1
- package/connectors/fal/package.json +1 -1
- package/connectors/fathom/package.json +1 -1
- package/connectors/fireworks/package.json +1 -1
- package/connectors/gitlab/package.json +1 -1
- package/connectors/googlechat/README.md +1 -2
- package/connectors/googledrive/src/api/client.ts +5 -5
- package/connectors/googledrive/src/api/files.ts +11 -11
- package/connectors/googledrive/src/api/folders.ts +2 -2
- package/connectors/googledrive/src/cli/index.ts +4 -4
- package/connectors/googledrive/src/utils/output.ts +3 -3
- package/connectors/googleforms/README.md +1 -2
- package/connectors/googleperspective/README.md +1 -2
- package/connectors/grafana/package.json +1 -1
- package/connectors/growbots/README.md +2 -2
- package/connectors/growbots/package.json +1 -1
- package/connectors/gumroad/package.json +1 -1
- package/connectors/gupshup/README.md +2 -2
- package/connectors/gupshup/package.json +1 -1
- package/connectors/guru/README.md +2 -2
- package/connectors/guru/package.json +1 -1
- package/connectors/hackernews/README.md +2 -2
- package/connectors/hackernews/package.json +1 -1
- package/connectors/halopsa/README.md +2 -2
- package/connectors/halopsa/package.json +1 -1
- package/connectors/handwrytten/README.md +2 -2
- package/connectors/handwrytten/package.json +1 -1
- package/connectors/hansei/README.md +2 -2
- package/connectors/hansei/package.json +1 -1
- package/connectors/harrypotterapi/README.md +2 -2
- package/connectors/harrypotterapi/package.json +1 -1
- package/connectors/harvest/README.md +2 -2
- package/connectors/harvest/package.json +1 -1
- package/connectors/headlesstesting/README.md +2 -2
- package/connectors/headlesstesting/package.json +1 -1
- package/connectors/homeassistant/package.json +1 -1
- package/connectors/klaviyo/package.json +1 -1
- package/connectors/lemonsqueezy/package.json +1 -1
- package/connectors/lighthouse/src/api/index.ts +1 -1
- package/connectors/linkedin/package.json +1 -1
- package/connectors/linkish/README.md +2 -2
- package/connectors/linkish/package.json +1 -1
- package/connectors/liveagent/README.md +2 -2
- package/connectors/liveagent/package.json +1 -1
- package/connectors/localazy/README.md +2 -2
- package/connectors/localazy/package.json +1 -1
- package/connectors/loginradius/README.md +2 -2
- package/connectors/loginradius/package.json +1 -1
- package/connectors/lokalise/README.md +2 -2
- package/connectors/lokalise/package.json +1 -1
- package/connectors/lonescale/README.md +2 -2
- package/connectors/lonescale/package.json +1 -1
- package/connectors/lucidchart/README.md +2 -2
- package/connectors/lucidchart/package.json +1 -1
- package/connectors/luma/package.json +1 -1
- package/connectors/magento2/README.md +2 -2
- package/connectors/magento2/package.json +1 -1
- package/connectors/mailcheck/README.md +2 -2
- package/connectors/mailcheck/package.json +1 -1
- package/connectors/mailchimp/package.json +1 -1
- package/connectors/mailerlite/README.md +2 -2
- package/connectors/mailerlite/package.json +1 -1
- package/connectors/mailersend/README.md +2 -2
- package/connectors/mailersend/package.json +1 -1
- package/connectors/mailify/README.md +2 -2
- package/connectors/mailify/package.json +1 -1
- package/connectors/mailjet/README.md +2 -2
- package/connectors/mailjet/package.json +1 -1
- package/connectors/mailmodo/README.md +2 -2
- package/connectors/mailmodo/package.json +1 -1
- package/connectors/malcore/README.md +2 -2
- package/connectors/malcore/package.json +1 -1
- package/connectors/mandrill/README.md +2 -2
- package/connectors/mandrill/package.json +1 -1
- package/connectors/marcomrobot/README.md +2 -2
- package/connectors/marcomrobot/package.json +1 -1
- package/connectors/marketingmasterio/README.md +2 -2
- package/connectors/marketingmasterio/package.json +1 -1
- package/connectors/marketplacer/README.md +2 -2
- package/connectors/marketplacer/package.json +1 -1
- package/connectors/marketstack/README.md +2 -2
- package/connectors/marketstack/package.json +1 -1
- package/connectors/matrix/README.md +1 -1
- package/connectors/matrix/package.json +1 -1
- package/connectors/mattermost/README.md +1 -1
- package/connectors/mattermost/package.json +1 -1
- package/connectors/mautic/README.md +1 -1
- package/connectors/mautic/package.json +1 -1
- package/connectors/mav/README.md +1 -1
- package/connectors/mav/package.json +1 -1
- package/connectors/maverick/README.md +1 -1
- package/connectors/maverick/package.json +1 -1
- package/connectors/mem/README.md +1 -1
- package/connectors/mem/package.json +1 -1
- package/connectors/messagebird/package.json +1 -1
- package/connectors/metabase/README.md +1 -1
- package/connectors/metabase/package.json +1 -1
- package/connectors/miro/package.json +1 -1
- package/connectors/mocean/package.json +1 -1
- package/connectors/modal/package.json +1 -1
- package/connectors/monday/package.json +1 -1
- package/connectors/monicacrm/package.json +1 -1
- package/connectors/moonclerk/package.json +1 -1
- package/connectors/moonmail/package.json +1 -1
- package/connectors/morph/package.json +1 -1
- package/connectors/mqtt/package.json +1 -1
- package/connectors/msg91/package.json +1 -1
- package/connectors/mubert/package.json +1 -1
- package/connectors/murf/package.json +1 -1
- package/connectors/mux/package.json +1 -1
- package/connectors/netlify/package.json +1 -1
- package/connectors/okta/package.json +1 -1
- package/connectors/paddle/package.json +1 -1
- package/connectors/perplexity/package.json +1 -1
- package/connectors/pinterest/package.json +1 -1
- package/connectors/pipedrive/package.json +1 -1
- package/connectors/plaid/package.json +1 -1
- package/connectors/quickchart/README.md +2 -2
- package/connectors/quintadb/README.md +2 -2
- package/connectors/rabbitmq/README.md +2 -2
- package/connectors/radar/README.md +2 -2
- package/connectors/raindrop/README.md +2 -2
- package/connectors/rapid7insightvm/README.md +2 -2
- package/connectors/raventools/README.md +2 -2
- package/connectors/rawgvideogamesdatabase/README.md +2 -2
- package/connectors/rdstationcrm/README.md +2 -2
- package/connectors/readai/README.md +2 -2
- package/connectors/roboflow/package.json +1 -1
- package/connectors/runway/package.json +1 -1
- package/connectors/sendgrid/package.json +1 -1
- package/connectors/shuffler/package.json +1 -1
- package/connectors/sierrainteractive/package.json +1 -1
- package/connectors/sifter/package.json +1 -1
- package/connectors/signaturit/package.json +1 -1
- package/connectors/signl4/package.json +1 -1
- package/connectors/simpleem/package.json +1 -1
- package/connectors/simplehash/package.json +1 -1
- package/connectors/simplekpi/package.json +1 -1
- package/connectors/simplelocalize/package.json +1 -1
- package/connectors/simplero/package.json +1 -1
- package/connectors/smartrecruiters/package.json +1 -1
- package/connectors/smtp2go/package.json +1 -1
- package/connectors/snowflake/package.json +1 -1
- package/connectors/sparkpost/package.json +1 -1
- package/connectors/split-in-batches/CLAUDE.md +1 -1
- package/connectors/split-in-batches/README.md +1 -1
- package/connectors/split-in-batches/src/api/client.test.ts +16 -17
- package/connectors/split-in-batches/src/api/client.ts +4 -3
- package/connectors/split-in-batches/src/cli/index.ts +1 -1
- package/connectors/split-io/package.json +1 -1
- package/connectors/split-io/src/api/client.test.ts +20 -0
- package/connectors/split-io/src/cli/index.ts +9 -9
- package/connectors/spreadsheet-file/.env.example +1 -1
- package/connectors/spreadsheet-file/CLAUDE.md +2 -2
- package/connectors/spreadsheet-file/README.md +3 -3
- package/connectors/spreadsheet-file/src/api/client.test.ts +8 -9
- package/connectors/spreadsheet-file/src/api/client.ts +4 -3
- package/connectors/spreadsheet-file/src/cli/index.ts +1 -1
- package/connectors/sprinklr/package.json +1 -1
- package/connectors/sprout-social/package.json +1 -1
- package/connectors/square/package.json +1 -1
- package/connectors/sse-trigger/.env.example +1 -1
- package/connectors/sse-trigger/CLAUDE.md +2 -2
- package/connectors/sse-trigger/README.md +1 -1
- package/connectors/sse-trigger/package.json +1 -1
- package/connectors/sse-trigger/src/api/client.test.ts +12 -8
- package/connectors/sse-trigger/src/api/client.ts +4 -3
- package/connectors/sse-trigger/src/api/index.ts +1 -1
- package/connectors/sse-trigger/src/cli/index.ts +1 -1
- package/connectors/sse-trigger/src/index.ts +1 -1
- package/connectors/stability-api-platform/AGENTS.md +2 -2
- package/connectors/stability-api-platform/CLAUDE.md +1 -1
- package/connectors/stability-api-platform/README.md +2 -2
- package/connectors/stability-api-platform/src/api/client.test.ts +17 -12
- package/connectors/stability-api-platform/src/api/client.ts +4 -3
- package/connectors/stability-api-platform/src/api/index.ts +0 -1
- package/connectors/stability-api-platform/src/cli/index.ts +1 -1
- package/connectors/stability-api-platform/src/index.ts +0 -1
- package/connectors/standout/package.json +1 -1
- package/connectors/statuspage/package.json +1 -1
- package/connectors/stop-and-error/.env.example +1 -1
- package/connectors/stop-and-error/CLAUDE.md +1 -1
- package/connectors/stop-and-error/README.md +1 -1
- package/connectors/stop-and-error/src/api/client.test.ts +12 -8
- package/connectors/stop-and-error/src/api/client.ts +4 -3
- package/connectors/stop-and-error/src/cli/index.ts +2 -2
- package/connectors/stoplight/package.json +1 -1
- package/connectors/stoplight-api-platform/package.json +1 -1
- package/connectors/strand-ai/CLAUDE.md +1 -1
- package/connectors/stripe-financial-connections/.env.example +1 -1
- package/connectors/stripe-financial-connections/CLAUDE.md +2 -2
- package/connectors/stripe-financial-connections/package.json +1 -1
- package/connectors/stripe-financial-connections/src/api/client.test.ts +34 -0
- package/connectors/stripe-financial-connections/src/api/client.ts +4 -3
- package/connectors/stripe-financial-connections/src/cli/index.ts +1 -1
- package/connectors/stripe-terminal/package.json +1 -1
- package/connectors/stytch/package.json +1 -1
- package/connectors/sucuri-api-platform/.env.example +1 -1
- package/connectors/sucuri-api-platform/CLAUDE.md +1 -1
- package/connectors/sucuri-api-platform/README.md +2 -2
- package/connectors/sucuri-api-platform/src/api/client.test.ts +9 -7
- package/connectors/sucuri-api-platform/src/api/client.ts +4 -3
- package/connectors/sucuri-api-platform/src/api/index.ts +1 -1
- package/connectors/sucuri-api-platform/src/cli/index.ts +1 -1
- package/connectors/sucuri-api-platform/src/index.ts +1 -1
- package/connectors/sumo-logic/package.json +1 -1
- package/connectors/supabase/package.json +1 -1
- package/connectors/supabase-api-platform/package.json +1 -1
- package/connectors/sysdig/package.json +1 -1
- package/connectors/tableau/package.json +1 -1
- package/connectors/takecareos/README.md +2 -2
- package/connectors/takecareos/package.json +1 -1
- package/connectors/telegram/src/api/bot.ts +20 -0
- package/connectors/telegram/src/api/client.ts +32 -0
- package/connectors/telegram/src/api/files.test.ts +103 -0
- package/connectors/telegram/src/api/index.ts +1 -0
- package/connectors/telegram/src/api/messages.test.ts +8 -2
- package/connectors/telegram/src/cli/files.test.ts +40 -0
- package/connectors/telegram/src/cli/files.ts +38 -0
- package/connectors/telegram/src/cli/index.ts +27 -30
- package/connectors/telegram/src/cli/updates.test.ts +176 -0
- package/connectors/telegram/src/cli/updates.ts +95 -0
- package/connectors/telegram/src/index.ts +1 -0
- package/connectors/telegram/src/types/index.ts +13 -0
- package/connectors/terraform-cloud/package.json +1 -1
- package/connectors/tettra-api-platform/CLAUDE.md +1 -1
- package/connectors/tettra-api-platform/README.md +2 -2
- package/connectors/tettra-api-platform/src/api/client.test.ts +7 -8
- package/connectors/tettra-api-platform/src/api/client.ts +4 -3
- package/connectors/tettra-api-platform/src/api/index.ts +1 -1
- package/connectors/tettra-api-platform/src/cli/index.ts +1 -1
- package/connectors/tettra-api-platform/src/index.ts +1 -1
- package/connectors/textit/package.json +1 -1
- package/connectors/thousandeyes/package.json +1 -1
- package/connectors/ticket-tailor/package.json +1 -1
- package/connectors/ticketsource/package.json +1 -1
- package/connectors/tiktokads/README.md +1 -1
- package/connectors/time-saved/package.json +1 -1
- package/connectors/tipalti/package.json +1 -1
- package/connectors/together-api-platform/.env.example +1 -1
- package/connectors/together-api-platform/CLAUDE.md +1 -1
- package/connectors/together-api-platform/README.md +1 -1
- package/connectors/together-api-platform/src/api/client.test.ts +11 -7
- package/connectors/together-api-platform/src/api/client.ts +4 -4
- package/connectors/together-api-platform/src/api/index.ts +1 -1
- package/connectors/together-api-platform/src/cli/index.ts +1 -1
- package/connectors/together-api-platform/src/index.ts +1 -1
- package/connectors/tomtom/AGENTS.md +1 -1
- package/connectors/totp/package.json +1 -1
- package/connectors/traverse/package.json +1 -1
- package/connectors/travo-ai/package.json +1 -1
- package/connectors/travo-real-estate/CLAUDE.md +1 -1
- package/connectors/travo-real-estate/README.md +1 -1
- package/connectors/travo-real-estate/src/api/client.test.ts +20 -16
- package/connectors/travo-real-estate/src/api/client.ts +4 -3
- package/connectors/travo-real-estate/src/utils/config.ts +2 -4
- package/connectors/tray-api-platform/CLAUDE.md +1 -1
- package/connectors/tray-api-platform/src/api/client.test.ts +17 -13
- package/connectors/tray-api-platform/src/api/client.ts +4 -3
- package/connectors/tray-api-platform/src/api/index.ts +1 -1
- package/connectors/tray-api-platform/src/cli/index.ts +1 -1
- package/connectors/tray-api-platform/src/index.ts +0 -1
- package/connectors/trigger-dev/package.json +1 -1
- package/connectors/trigger-dev-api-platform/package.json +1 -1
- package/connectors/turbot-pipes/package.json +1 -1
- package/connectors/turso/package.json +1 -1
- package/connectors/turso-api-platform/CLAUDE.md +1 -1
- package/connectors/turso-api-platform/README.md +2 -2
- package/connectors/turso-api-platform/package.json +1 -1
- package/connectors/turso-api-platform/src/api/client.test.ts +17 -13
- package/connectors/turso-api-platform/src/api/client.ts +4 -3
- package/connectors/turso-api-platform/src/cli/index.ts +2 -2
- package/connectors/twilio-api-platform/CLAUDE.md +1 -1
- package/connectors/twilio-api-platform/src/api/client.test.ts +11 -11
- package/connectors/twilio-api-platform/src/api/client.ts +4 -3
- package/connectors/twilio-api-platform/src/api/index.ts +1 -1
- package/connectors/twilio-api-platform/src/cli/index.ts +1 -1
- package/connectors/twilio-api-platform/src/index.ts +1 -1
- package/connectors/tyk-api-platform/.env.example +1 -1
- package/connectors/tyk-api-platform/CLAUDE.md +2 -2
- package/connectors/tyk-api-platform/README.md +1 -1
- package/connectors/tyk-api-platform/package.json +1 -1
- package/connectors/tyk-api-platform/src/api/client.test.ts +14 -15
- package/connectors/tyk-api-platform/src/api/client.ts +4 -3
- package/connectors/tyk-api-platform/src/api/index.ts +1 -1
- package/connectors/tyk-api-platform/src/cli/index.ts +1 -1
- package/connectors/tyk-api-platform/src/index.ts +1 -1
- package/connectors/umami/package.json +1 -1
- package/connectors/unifold/package.json +1 -1
- package/connectors/unione/package.json +1 -1
- package/connectors/uniprot/README.md +1 -1
- package/connectors/uniswap-api/package.json +1 -1
- package/connectors/ups/package.json +1 -1
- package/connectors/usereframe/package.json +1 -1
- package/connectors/vanta/package.json +1 -1
- package/connectors/vector-legal/.env.example +1 -1
- package/connectors/vector-legal/AGENTS.md +1 -1
- package/connectors/vector-legal/CLAUDE.md +1 -1
- package/connectors/vector-legal/README.md +1 -1
- package/connectors/vector-legal/src/api/client.test.ts +9 -5
- package/connectors/vector-legal/src/api/client.ts +4 -3
- package/connectors/vector-legal/src/api/index.ts +1 -1
- package/connectors/vector-legal/src/cli/index.ts +2 -2
- package/connectors/vector-legal/src/index.ts +0 -1
- package/connectors/vector-legal-api/CLAUDE.md +1 -1
- package/connectors/vector-legal-api/README.md +2 -2
- package/connectors/vector-legal-api/src/api/client.test.ts +12 -7
- package/connectors/vector-legal-api/src/api/client.ts +4 -3
- package/connectors/vector-legal-api/src/api/index.ts +1 -1
- package/connectors/vector-legal-api/src/cli/index.ts +1 -1
- package/connectors/vector-legal-api/src/index.ts +1 -2
- package/connectors/vela/package.json +1 -1
- package/connectors/velum-data-quality/.env.example +1 -1
- package/connectors/velum-data-quality/CLAUDE.md +1 -1
- package/connectors/velum-data-quality/src/api/client.test.ts +15 -16
- package/connectors/velum-data-quality/src/api/client.ts +4 -3
- package/connectors/velum-data-quality/src/api/index.ts +1 -1
- package/connectors/velum-data-quality/src/cli/index.ts +1 -1
- package/connectors/velum-data-quality/src/index.ts +0 -1
- package/connectors/velum-labs/package.json +1 -1
- package/connectors/vercel/package.json +1 -1
- package/connectors/vercel-api-platform/.env.example +1 -1
- package/connectors/vercel-api-platform/CLAUDE.md +2 -2
- package/connectors/vercel-api-platform/README.md +2 -2
- package/connectors/vercel-api-platform/src/api/client.test.ts +27 -6
- package/connectors/vercel-api-platform/src/api/client.ts +4 -3
- package/connectors/vercel-api-platform/src/api/index.ts +1 -1
- package/connectors/vercel-api-platform/src/cli/index.ts +2 -2
- package/connectors/vercel-api-platform/src/index.ts +0 -1
- package/connectors/vercel-blob/package.json +1 -1
- package/connectors/vercel-blob-platform/package.json +1 -1
- package/connectors/vercel-edge-config/package.json +1 -1
- package/connectors/vercel-edge-config-platform/package.json +1 -1
- package/connectors/veriphone/README.md +2 -2
- package/connectors/vertex-ai/package.json +1 -1
- package/connectors/vidyard/package.json +1 -1
- package/connectors/vonage/package.json +1 -1
- package/connectors/voygr/package.json +1 -1
- package/connectors/wait/package.json +1 -1
- package/connectors/walmart-marketplace/package.json +1 -1
- package/connectors/wato/package.json +1 -1
- package/connectors/wave-accounting/CLAUDE.md +1 -1
- package/connectors/wave-accounting/package.json +1 -1
- package/connectors/wave-accounting/src/utils/auth.ts +1 -1
- package/connectors/wayco/package.json +1 -1
- package/connectors/weaviate-api-platform/CLAUDE.md +1 -1
- package/connectors/weaviate-api-platform/src/api/client.test.ts +32 -7
- package/connectors/weaviate-api-platform/src/api/client.ts +4 -3
- package/connectors/weaviate-api-platform/src/api/index.ts +1 -1
- package/connectors/weaviate-api-platform/src/cli/index.ts +1 -1
- package/connectors/weaviate-api-platform/src/index.ts +1 -1
- package/connectors/webpagetest/package.json +1 -1
- package/connectors/weezevent/package.json +1 -1
- package/connectors/wikipedia/src/api/client.ts +1 -1
- package/connectors/wildcard/package.json +1 -1
- package/connectors/windmill/package.json +1 -1
- package/connectors/wise/package.json +1 -1
- package/connectors/withai/package.json +1 -1
- package/connectors/wiz/CLAUDE.md +1 -1
- package/connectors/wiz/package.json +1 -1
- package/connectors/wordfence/package.json +1 -1
- package/connectors/wordfence-api-platform/package.json +1 -1
- package/connectors/workflow-trigger/.env.example +1 -1
- package/connectors/workflow-trigger/CLAUDE.md +1 -1
- package/connectors/workflow-trigger/README.md +1 -1
- package/connectors/workflow-trigger/src/api/client.test.ts +10 -6
- package/connectors/workflow-trigger/src/api/client.ts +4 -3
- package/connectors/workflow-trigger/src/cli/index.ts +1 -1
- package/connectors/workos/package.json +1 -1
- package/connectors/write-binary-file/CLAUDE.md +1 -1
- package/connectors/write-binary-file/README.md +1 -1
- package/connectors/write-binary-file/package.json +1 -1
- package/connectors/write-binary-file/src/api/client.test.ts +16 -12
- package/connectors/write-binary-file/src/api/client.ts +4 -3
- package/connectors/write-binary-file/src/api/index.ts +1 -1
- package/connectors/write-binary-file/src/index.ts +1 -1
- package/connectors/wubookratechecker/src/api/client.test.ts +34 -0
- package/connectors/wubookratechecker/src/api/client.ts +3 -1
- package/connectors/wubookratechecker/src/api/index.ts +1 -1
- package/connectors/wubookratechecker/src/types/index.ts +1 -1
- package/connectors/xai/.env.example +1 -1
- package/connectors/xai-api-platform/.env.example +1 -1
- package/connectors/xai-api-platform/CLAUDE.md +1 -1
- package/connectors/xai-api-platform/README.md +1 -1
- package/connectors/xai-api-platform/src/api/client.test.ts +34 -9
- package/connectors/xai-api-platform/src/api/client.ts +4 -3
- package/connectors/xai-api-platform/src/api/index.ts +1 -1
- package/connectors/xai-api-platform/src/cli/index.ts +1 -1
- package/connectors/xai-api-platform/src/index.ts +1 -1
- package/connectors/xai-api-platform/src/utils/config.ts +3 -4
- package/connectors/xai-grok/.env.example +1 -1
- package/connectors/xai-grok/src/api/client.test.ts +3 -3
- package/connectors/xai-grok/src/cli/index.ts +1 -1
- package/connectors/xai-grok/src/utils/config.ts +1 -1
- package/connectors/ynab/package.json +1 -1
- package/connectors/you-com/README.md +2 -2
- package/connectors/you-com/package.json +1 -1
- package/connectors/yousign/package.json +1 -1
- package/connectors/zapier-api-platform/CLAUDE.md +1 -1
- package/connectors/zapier-api-platform/README.md +1 -1
- package/connectors/zapier-api-platform/src/api/client.test.ts +19 -14
- package/connectors/zapier-api-platform/src/api/client.ts +4 -3
- package/connectors/zapier-api-platform/src/api/index.ts +1 -1
- package/connectors/zapier-api-platform/src/cli/index.ts +1 -1
- package/connectors/zapier-api-platform/src/index.ts +1 -1
- package/connectors/zendesk/.env.example +4 -4
- package/connectors/zendesk/CLAUDE.md +1 -3
- package/connectors/zendesk/Makefile +18 -5
- package/connectors/zendesk/README.md +3 -8
- package/connectors/zendesk/SCAFFOLD.md +6 -5
- package/connectors/zerosettle/package.json +1 -1
- package/connectors/zoho-bigin/CLAUDE.md +1 -1
- package/connectors/zoho-campaigns/package.json +1 -1
- package/connectors/zoho-sign/package.json +1 -1
- package/connectors/zoho-subscriptions/CLAUDE.md +1 -1
- package/connectors/zohoprojects/CLAUDE.md +1 -1
- package/connectors/zolvo/package.json +1 -1
- package/connectors/zoom-api/package.json +1 -1
- package/connectors/zymbly/README.md +2 -2
- package/connectors/zymbly/package.json +1 -1
- package/dashboard/dist/assets/index-8uoGZF7B.js +280 -0
- package/dashboard/dist/index.html +1 -1
- package/dist/db/locks.d.ts +1 -1
- package/dist/index.js +17 -15
- package/dist/lib/connector-resolver.d.ts +1 -1
- package/dist/lib/llm.d.ts +1 -1
- package/dist/lib/open-browser.d.ts +18 -0
- package/dist/lib/open-browser.test.d.ts +1 -0
- package/package.json +6 -4
- package/dashboard/dist/assets/index-DlEljRrW.js +0 -285
|
@@ -160,7 +160,7 @@ profileCmd
|
|
|
160
160
|
|
|
161
161
|
console.log(chalk.bold(`Profile: ${profileName}${profileName === active ? chalk.green(' (active)') : ''}`));
|
|
162
162
|
info(`API Key: ${config.apiKey ? `${config.apiKey.substring(0, 8)}...` : chalk.gray('not set')}`);
|
|
163
|
-
info(`Base URL: ${config.baseUrl || chalk.gray('
|
|
163
|
+
info(`Base URL: ${config.baseUrl || chalk.gray('none configured')}`);
|
|
164
164
|
});
|
|
165
165
|
|
|
166
166
|
// ============================================
|
|
@@ -197,7 +197,7 @@ configCmd
|
|
|
197
197
|
console.log(chalk.bold(`Active Profile: ${profileName}`));
|
|
198
198
|
info(`Config directory: ${getConfigDir()}`);
|
|
199
199
|
info(`API Key: ${apiKey ? `${apiKey.substring(0, 8)}...` : chalk.gray('not set')}`);
|
|
200
|
-
info(`Base URL: ${baseUrl || chalk.gray('
|
|
200
|
+
info(`Base URL: ${baseUrl || chalk.gray('none configured')}`);
|
|
201
201
|
});
|
|
202
202
|
|
|
203
203
|
configCmd
|
|
@@ -19,7 +19,7 @@ bun run dev -- --help # Show CLI help
|
|
|
19
19
|
|
|
20
20
|
## API Details
|
|
21
21
|
|
|
22
|
-
- **Base URL**:
|
|
22
|
+
- **Base URL**: no default (must be configured) (configurable via `VECTOR_LEGAL_API_BASE_URL`)
|
|
23
23
|
- **Auth**: Bearer token: `Authorization: Bearer <API_KEY>` (api_key credential field)
|
|
24
24
|
|
|
25
25
|
## API Resources
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# connect-vector-legal-api
|
|
2
2
|
|
|
3
|
-
TypeScript connector for the [Vector Legal API](
|
|
3
|
+
TypeScript connector for the [Vector Legal API](configured.example.com/v1) — legal document management, events, and search.
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
@@ -30,7 +30,7 @@ bun run dev documents list
|
|
|
30
30
|
| Variable | Required | Description |
|
|
31
31
|
|----------|----------|-------------|
|
|
32
32
|
| `VECTOR_LEGAL_API_KEY` | Yes | API key |
|
|
33
|
-
| `VECTOR_LEGAL_API_BASE_URL` | No | Base URL (default: `
|
|
33
|
+
| `VECTOR_LEGAL_API_BASE_URL` | No | Base URL (default: `configured.example.com/v1`) |
|
|
34
34
|
|
|
35
35
|
## CLI
|
|
36
36
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { afterEach, describe, expect, mock, test } from 'bun:test';
|
|
2
|
-
import {
|
|
2
|
+
import { ConnectorClient } from './client';
|
|
3
|
+
import { Connector } from './index';
|
|
3
4
|
|
|
4
5
|
const realFetch = globalThis.fetch;
|
|
5
6
|
|
|
@@ -30,21 +31,21 @@ function installFetch(): Recorded[] {
|
|
|
30
31
|
describe('Vector Legal API client', () => {
|
|
31
32
|
test('uses default base URL and Bearer auth for list documents', async () => {
|
|
32
33
|
const recorded = installFetch();
|
|
33
|
-
const client = new Connector({ apiKey: 'vector-legal-api-key' });
|
|
34
|
+
const client = new Connector({ apiKey: 'vector-legal-api-key', baseUrl: 'https://configured.example.com/v1' });
|
|
34
35
|
await client.documents.list();
|
|
35
36
|
|
|
36
37
|
expect(recorded).toHaveLength(1);
|
|
37
|
-
expect(recorded[0].url).toBe(
|
|
38
|
+
expect(recorded[0].url).toBe(`https://configured.example.com/v1/documents`);
|
|
38
39
|
expect(recorded[0].method).toBe('GET');
|
|
39
40
|
expect(recorded[0].headers.get('Authorization')).toBe('Bearer vector-legal-api-key');
|
|
40
41
|
});
|
|
41
42
|
|
|
42
43
|
test('get document encodes id in path', async () => {
|
|
43
44
|
const recorded = installFetch();
|
|
44
|
-
const client = new Connector({ apiKey: 'vector-legal-api-key' });
|
|
45
|
+
const client = new Connector({ apiKey: 'vector-legal-api-key', baseUrl: 'https://configured.example.com/v1' });
|
|
45
46
|
await client.documents.get('item-1');
|
|
46
47
|
|
|
47
|
-
expect(recorded[0].url).toBe(
|
|
48
|
+
expect(recorded[0].url).toBe(`https://configured.example.com/v1/documents/item-1`);
|
|
48
49
|
expect(recorded[0].headers.get('Authorization')).toBe('Bearer vector-legal-api-key');
|
|
49
50
|
});
|
|
50
51
|
|
|
@@ -61,10 +62,10 @@ describe('Vector Legal API client', () => {
|
|
|
61
62
|
|
|
62
63
|
test('search posts to /search with body', async () => {
|
|
63
64
|
const recorded = installFetch();
|
|
64
|
-
const client = new Connector({ apiKey: 'test-key' });
|
|
65
|
+
const client = new Connector({ apiKey: 'test-key', baseUrl: 'https://configured.example.com/v1' });
|
|
65
66
|
await client.search.search({ query: 'nda' });
|
|
66
67
|
|
|
67
|
-
expect(recorded[0].url).toBe(
|
|
68
|
+
expect(recorded[0].url).toBe(`https://configured.example.com/v1/search`);
|
|
68
69
|
expect(recorded[0].method).toBe('POST');
|
|
69
70
|
});
|
|
70
71
|
|
|
@@ -78,4 +79,8 @@ describe('Vector Legal API client', () => {
|
|
|
78
79
|
test('requires api key', () => {
|
|
79
80
|
expect(() => new Connector({})).toThrow('API key');
|
|
80
81
|
});
|
|
82
|
+
|
|
83
|
+
test('refuses to send without a configured base URL (no default endpoint)', () => {
|
|
84
|
+
expect(() => new ConnectorClient({ apiKey: 'test-key' })).toThrow(/baseUrl/);
|
|
85
|
+
});
|
|
81
86
|
});
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { ConnectorConfig, OutputFormat } from '../types';
|
|
2
2
|
import { ConnectorApiError, parseApiError } from '../types';
|
|
3
3
|
|
|
4
|
-
export const DEFAULT_BASE_URL = 'https://api.vector-legal.com/v1';
|
|
5
|
-
|
|
6
4
|
export interface RequestOptions {
|
|
7
5
|
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
8
6
|
params?: Record<string, string | number | boolean | undefined>;
|
|
@@ -23,7 +21,10 @@ export class ConnectorClient {
|
|
|
23
21
|
throw new Error('API key or token is required');
|
|
24
22
|
}
|
|
25
23
|
this.apiKey = key;
|
|
26
|
-
|
|
24
|
+
if (!config.baseUrl) {
|
|
25
|
+
throw new Error('baseUrl is required: no default endpoint is configured; set baseUrl (profile, config, or the connector BASE_URL environment variable)');
|
|
26
|
+
}
|
|
27
|
+
this.baseUrl = config.baseUrl;
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
getBaseUrl(): string {
|
|
@@ -38,7 +38,7 @@ export class Connector {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
export { ConnectorClient
|
|
41
|
+
export { ConnectorClient } from './client';
|
|
42
42
|
export { DocumentsApi } from './documents';
|
|
43
43
|
export { EventsApi } from './events';
|
|
44
44
|
export { SearchApi } from './search';
|
|
@@ -200,7 +200,7 @@ configCmd
|
|
|
200
200
|
console.log(chalk.bold(`Active Profile: ${getCurrentProfile()}`));
|
|
201
201
|
info(`Config directory: ${getConfigDir()}`);
|
|
202
202
|
info(`API Key: ${apiKey ? `${apiKey.substring(0, 8)}...` : chalk.gray('not set')}`);
|
|
203
|
-
info(`Base URL: ${baseUrl || chalk.gray('
|
|
203
|
+
info(`Base URL: ${baseUrl || chalk.gray('none configured')}`);
|
|
204
204
|
});
|
|
205
205
|
|
|
206
206
|
configCmd
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
|
|
3
3
|
VELUM_DATA_QUALITY_API_KEY=your-api-key-here
|
|
4
4
|
|
|
5
|
-
# Optional: override API base URL (default
|
|
5
|
+
# Optional: override API base URL (no default - must be configured)
|
|
6
6
|
# VELUM_DATA_QUALITY_BASE_URL=https://api.velum-data-quality.com/v1
|
|
@@ -18,7 +18,7 @@ bun run dev -- --help # Show CLI help
|
|
|
18
18
|
|
|
19
19
|
## API Details
|
|
20
20
|
|
|
21
|
-
- **Base URL**:
|
|
21
|
+
- **Base URL**: no default (must be configured) (configurable via `VELUM_DATA_QUALITY_BASE_URL`)
|
|
22
22
|
- **Auth**: Bearer token: `Authorization: Bearer <API_KEY>`
|
|
23
23
|
|
|
24
24
|
## API Resources
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { afterEach, describe, expect, test } from 'bun:test';
|
|
2
|
-
import { Connector, ConnectorClient
|
|
2
|
+
import { Connector, ConnectorClient } from './index';
|
|
3
3
|
|
|
4
4
|
const realFetch = globalThis.fetch;
|
|
5
5
|
|
|
@@ -48,20 +48,19 @@ describe('Velum Data Quality API client', () => {
|
|
|
48
48
|
expect(() => new ConnectorClient({})).toThrow('API key');
|
|
49
49
|
});
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
expect(client.getBaseUrl()).toBe(DEFAULT_BASE_URL);
|
|
51
|
+
test('refuses to send without a configured base URL (no default endpoint)', () => {
|
|
52
|
+
expect(() => new ConnectorClient({ apiKey: 'test-key' })).toThrow(/baseUrl/);
|
|
54
53
|
});
|
|
55
54
|
|
|
56
55
|
test('listChecks sends Bearer auth to GET /checks', async () => {
|
|
57
56
|
const recorded = installFetch((req) => {
|
|
58
57
|
expect(req.method).toBe('GET');
|
|
59
|
-
expect(req.url).toBe(
|
|
58
|
+
expect(req.url).toBe(`https://configured.example.com/v1/checks`);
|
|
60
59
|
expect(req.headers.authorization).toBe('Bearer velum-test-key');
|
|
61
60
|
return { checks: [{ id: 'chk_1' }] };
|
|
62
61
|
});
|
|
63
62
|
|
|
64
|
-
const connector = new Connector({ apiKey: 'velum-test-key' });
|
|
63
|
+
const connector = new Connector({ apiKey: 'velum-test-key', baseUrl: 'https://configured.example.com/v1' });
|
|
65
64
|
const result = await connector.checks.list();
|
|
66
65
|
expect(result).toEqual({ checks: [{ id: 'chk_1' }] });
|
|
67
66
|
expect(recorded).toHaveLength(1);
|
|
@@ -70,11 +69,11 @@ describe('Velum Data Quality API client', () => {
|
|
|
70
69
|
test('getCheck encodes check ID in path', async () => {
|
|
71
70
|
const recorded = installFetch((req) => {
|
|
72
71
|
expect(req.method).toBe('GET');
|
|
73
|
-
expect(req.url).toBe(
|
|
72
|
+
expect(req.url).toBe(`https://configured.example.com/v1/checks/check%2F123`);
|
|
74
73
|
return { id: 'check/123', status: 'active' };
|
|
75
74
|
});
|
|
76
75
|
|
|
77
|
-
const connector = new Connector({ apiKey: 'velum-test-key' });
|
|
76
|
+
const connector = new Connector({ apiKey: 'velum-test-key', baseUrl: 'https://configured.example.com/v1' });
|
|
78
77
|
const result = await connector.checks.get('check/123');
|
|
79
78
|
expect(result).toEqual({ id: 'check/123', status: 'active' });
|
|
80
79
|
expect(recorded).toHaveLength(1);
|
|
@@ -83,12 +82,12 @@ describe('Velum Data Quality API client', () => {
|
|
|
83
82
|
test('createCheck POSTs JSON body to /checks', async () => {
|
|
84
83
|
const recorded = installFetch((req) => {
|
|
85
84
|
expect(req.method).toBe('POST');
|
|
86
|
-
expect(req.url).toBe(
|
|
85
|
+
expect(req.url).toBe(`https://configured.example.com/v1/checks`);
|
|
87
86
|
expect(req.body).toBe(JSON.stringify({ name: 'freshness' }));
|
|
88
87
|
return { id: 'chk_new', name: 'freshness' };
|
|
89
88
|
});
|
|
90
89
|
|
|
91
|
-
const connector = new Connector({ apiKey: 'velum-test-key' });
|
|
90
|
+
const connector = new Connector({ apiKey: 'velum-test-key', baseUrl: 'https://configured.example.com/v1' });
|
|
92
91
|
const result = await connector.checks.create({ name: 'freshness' });
|
|
93
92
|
expect(result).toEqual({ id: 'chk_new', name: 'freshness' });
|
|
94
93
|
expect(recorded).toHaveLength(1);
|
|
@@ -97,11 +96,11 @@ describe('Velum Data Quality API client', () => {
|
|
|
97
96
|
test('listEvents hits GET /events', async () => {
|
|
98
97
|
const recorded = installFetch((req) => {
|
|
99
98
|
expect(req.method).toBe('GET');
|
|
100
|
-
expect(req.url).toBe(
|
|
99
|
+
expect(req.url).toBe(`https://configured.example.com/v1/events`);
|
|
101
100
|
return { events: [{ id: 'evt_1' }] };
|
|
102
101
|
});
|
|
103
102
|
|
|
104
|
-
const connector = new Connector({ apiKey: 'velum-test-key' });
|
|
103
|
+
const connector = new Connector({ apiKey: 'velum-test-key', baseUrl: 'https://configured.example.com/v1' });
|
|
105
104
|
const result = await connector.events.list();
|
|
106
105
|
expect(result).toEqual({ events: [{ id: 'evt_1' }] });
|
|
107
106
|
expect(recorded).toHaveLength(1);
|
|
@@ -110,12 +109,12 @@ describe('Velum Data Quality API client', () => {
|
|
|
110
109
|
test('search POSTs to /search', async () => {
|
|
111
110
|
const recorded = installFetch((req) => {
|
|
112
111
|
expect(req.method).toBe('POST');
|
|
113
|
-
expect(req.url).toBe(
|
|
112
|
+
expect(req.url).toBe(`https://configured.example.com/v1/search`);
|
|
114
113
|
expect(req.body).toBe(JSON.stringify({ query: 'failed' }));
|
|
115
114
|
return { results: [] };
|
|
116
115
|
});
|
|
117
116
|
|
|
118
|
-
const connector = new Connector({ apiKey: 'velum-test-key' });
|
|
117
|
+
const connector = new Connector({ apiKey: 'velum-test-key', baseUrl: 'https://configured.example.com/v1' });
|
|
119
118
|
const result = await connector.search.search({ query: 'failed' });
|
|
120
119
|
expect(result).toEqual({ results: [] });
|
|
121
120
|
expect(recorded).toHaveLength(1);
|
|
@@ -124,11 +123,11 @@ describe('Velum Data Quality API client', () => {
|
|
|
124
123
|
test('rawRequest supports custom path and method', async () => {
|
|
125
124
|
const recorded = installFetch((req) => {
|
|
126
125
|
expect(req.method).toBe('PATCH');
|
|
127
|
-
expect(req.url).toBe(
|
|
126
|
+
expect(req.url).toBe(`https://configured.example.com/v1/checks/chk_1`);
|
|
128
127
|
return { ok: true };
|
|
129
128
|
});
|
|
130
129
|
|
|
131
|
-
const connector = new Connector({ apiKey: 'velum-test-key' });
|
|
130
|
+
const connector = new Connector({ apiKey: 'velum-test-key', baseUrl: 'https://configured.example.com/v1' });
|
|
132
131
|
await connector.rawRequest({ method: 'PATCH', path: '/checks/chk_1', body: { status: 'paused' } });
|
|
133
132
|
expect(recorded).toHaveLength(1);
|
|
134
133
|
});
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { ConnectorConfig, OutputFormat } from '../types';
|
|
2
2
|
import { ConnectorApiError, parseApiError } from '../types';
|
|
3
3
|
|
|
4
|
-
export const DEFAULT_BASE_URL = 'https://api.velum-data-quality.com/v1';
|
|
5
|
-
|
|
6
4
|
export interface RequestOptions {
|
|
7
5
|
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
8
6
|
params?: Record<string, string | number | boolean | undefined>;
|
|
@@ -23,7 +21,10 @@ export class ConnectorClient {
|
|
|
23
21
|
throw new Error('API key, token, or accessToken is required');
|
|
24
22
|
}
|
|
25
23
|
this.apiKey = key;
|
|
26
|
-
|
|
24
|
+
if (!config.baseUrl) {
|
|
25
|
+
throw new Error('baseUrl is required: no default endpoint is configured; set baseUrl (profile, config, or the connector BASE_URL environment variable)');
|
|
26
|
+
}
|
|
27
|
+
this.baseUrl = config.baseUrl;
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
private buildUrl(path: string, params?: Record<string, string | number | boolean | undefined>): string {
|
|
@@ -48,7 +48,7 @@ export class Connector {
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
export { ConnectorClient
|
|
51
|
+
export { ConnectorClient } from './client';
|
|
52
52
|
export { ChecksApi } from './checks';
|
|
53
53
|
export { EventsApi } from './events';
|
|
54
54
|
export { SearchApi } from './search';
|
|
@@ -226,7 +226,7 @@ configCmd
|
|
|
226
226
|
console.log(chalk.bold(`Active Profile: ${profileName}`));
|
|
227
227
|
info(`Config directory: ${getConfigDir()}`);
|
|
228
228
|
info(`API Key: ${apiKey ? `${apiKey.substring(0, 8)}...` : chalk.gray('not set')}`);
|
|
229
|
-
info(`Base URL: ${baseUrl || chalk.gray('
|
|
229
|
+
info(`Base URL: ${baseUrl || chalk.gray('none configured')}`);
|
|
230
230
|
});
|
|
231
231
|
|
|
232
232
|
configCmd
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Vercel Api Platform API credentials
|
|
2
2
|
VERCEL_API_PLATFORM_API_KEY=your-api-key-here
|
|
3
3
|
|
|
4
|
-
# Optional: override API base URL (default
|
|
4
|
+
# Optional: override API base URL (no default - must be configured)
|
|
5
5
|
# VERCEL_API_PLATFORM_BASE_URL=https://api.vercelapiplatform.com/v1
|
|
@@ -4,11 +4,11 @@ Guidance for working with the Vercel Api Platform connector.
|
|
|
4
4
|
|
|
5
5
|
## Distinction from connect-vercel
|
|
6
6
|
|
|
7
|
-
This connector targets **Vercel Api Platform** at `
|
|
7
|
+
This connector targets **Vercel Api Platform** at `configured.example.com/v1` (items, events, search). It is **not** the same as `connect-vercel`, which wraps `api.vercel.com` for deployments and projects.
|
|
8
8
|
|
|
9
9
|
## API Reference
|
|
10
10
|
|
|
11
|
-
- **Base URL**:
|
|
11
|
+
- **Base URL**: no default (must be configured) (override via profile or `VERCEL_API_PLATFORM_BASE_URL`)
|
|
12
12
|
- **Auth**: Bearer token (`Authorization: Bearer <api_key>`)
|
|
13
13
|
- **Endpoints**:
|
|
14
14
|
- `GET /items` — list items
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @hasna/connect-vercel-api-platform
|
|
2
2
|
|
|
3
|
-
TypeScript connector and CLI for the [Vercel Api Platform](
|
|
3
|
+
TypeScript connector and CLI for the [Vercel Api Platform](configured.example.com/v1) REST API.
|
|
4
4
|
|
|
5
5
|
> **Note:** This is distinct from `@hasna/connect-vercel`, which targets `api.vercel.com` for Vercel deployments.
|
|
6
6
|
|
|
@@ -15,7 +15,7 @@ bun add @hasna/connect-vercel-api-platform
|
|
|
15
15
|
```bash
|
|
16
16
|
export VERCEL_API_PLATFORM_API_KEY=your-api-key
|
|
17
17
|
# optional
|
|
18
|
-
export VERCEL_API_PLATFORM_BASE_URL=https://
|
|
18
|
+
export VERCEL_API_PLATFORM_BASE_URL=https://configured.example.com/v1
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
Or use the CLI profile/config commands.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, test, expect, mock, beforeEach, afterEach } from 'bun:test';
|
|
2
|
-
import { ConnectorClient
|
|
2
|
+
import { ConnectorClient } from './client';
|
|
3
3
|
import { Connector } from './index';
|
|
4
4
|
import { ConnectorApiError } from '../types';
|
|
5
5
|
|
|
@@ -38,10 +38,9 @@ describe('ConnectorClient', () => {
|
|
|
38
38
|
expect(client.getBaseUrl()).toBe(TEST_BASE_URL);
|
|
39
39
|
});
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
});
|
|
41
|
+
test('refuses to send without a configured base URL (no default endpoint)', () => {
|
|
42
|
+
expect(() => new ConnectorClient({ apiKey: 'test-key' })).toThrow(/baseUrl/);
|
|
43
|
+
});
|
|
45
44
|
|
|
46
45
|
test('strips trailing slashes from base URL', () => {
|
|
47
46
|
const client = new ConnectorClient({ apiKey: 'key', baseUrl: 'https://api.example.com/v1///' });
|
|
@@ -56,7 +55,7 @@ describe('ConnectorClient', () => {
|
|
|
56
55
|
});
|
|
57
56
|
|
|
58
57
|
test('returns *** for short keys', () => {
|
|
59
|
-
const client = new ConnectorClient({ apiKey: 'short' });
|
|
58
|
+
const client = new ConnectorClient({ apiKey: 'short', baseUrl: 'https://configured.example.com/v1' });
|
|
60
59
|
expect(client.getApiKeyPreview()).toBe('***');
|
|
61
60
|
});
|
|
62
61
|
});
|
|
@@ -198,10 +197,32 @@ describe('Connector API modules', () => {
|
|
|
198
197
|
test('raw.request uses configured base URL override', async () => {
|
|
199
198
|
const connector = new Connector({
|
|
200
199
|
apiKey: 'key',
|
|
200
|
+
baseUrl: 'https://configured.example.com/v1',
|
|
201
|
+
baseUrl: 'https://configured.example.com/v1',
|
|
201
202
|
baseUrl: 'https://override.example.com/v1',
|
|
202
203
|
});
|
|
203
204
|
await connector.raw.request({ path: '/items', method: 'GET' });
|
|
204
205
|
const [url] = getFetchMock().mock.calls[0];
|
|
205
206
|
expect(url).toBe('https://override.example.com/v1/items');
|
|
206
207
|
});
|
|
208
|
+
|
|
209
|
+
test('sends the API key only to the configured base URL', async () => {
|
|
210
|
+
const recorded: string[] = [];
|
|
211
|
+
globalThis.fetch = (async (input: string | URL | Request, init?: RequestInit) => {
|
|
212
|
+
recorded.push(typeof input === 'string' ? input : input.toString());
|
|
213
|
+
return {
|
|
214
|
+
ok: true,
|
|
215
|
+
status: 200,
|
|
216
|
+
statusText: 'OK',
|
|
217
|
+
headers: new Headers({ 'content-type': 'application/json' }),
|
|
218
|
+
async text() { return JSON.stringify({ ok: true }); },
|
|
219
|
+
async json() { return { ok: true }; },
|
|
220
|
+
} as Response;
|
|
221
|
+
}) as typeof fetch;
|
|
222
|
+
const client = new ConnectorClient({ apiKey: 'test-key', baseUrl: 'https://configured.example.com/v1' });
|
|
223
|
+
await client.request('/ping');
|
|
224
|
+
expect(recorded).toHaveLength(1);
|
|
225
|
+
expect(recorded[0].startsWith('https://configured.example.com/v1/')).toBe(true);
|
|
226
|
+
expect(recorded[0]).not.toContain('api.vercelapiplatform.com');
|
|
227
|
+
});
|
|
207
228
|
});
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { ConnectorConfig } from '../types';
|
|
2
2
|
import { ConnectorApiError, parseApiError } from '../types';
|
|
3
3
|
|
|
4
|
-
export const DEFAULT_BASE_URL = 'https://api.vercelapiplatform.com/v1';
|
|
5
|
-
|
|
6
4
|
export interface RequestOptions {
|
|
7
5
|
method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
8
6
|
params?: Record<string, string | number | boolean | undefined>;
|
|
@@ -22,7 +20,10 @@ export class ConnectorClient {
|
|
|
22
20
|
throw new Error('API key, token, or accessToken is required');
|
|
23
21
|
}
|
|
24
22
|
this.apiKey = key;
|
|
25
|
-
|
|
23
|
+
if (!config.baseUrl) {
|
|
24
|
+
throw new Error('baseUrl is required: no default endpoint is configured; set baseUrl (profile, config, or the connector BASE_URL environment variable)');
|
|
25
|
+
}
|
|
26
|
+
this.baseUrl = config.baseUrl.replace(/\/+$/, '');
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
getBaseUrl(): string {
|
|
@@ -41,7 +41,7 @@ export class Connector {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
export { ConnectorClient
|
|
44
|
+
export { ConnectorClient } from './client';
|
|
45
45
|
export { ItemsApi } from './items';
|
|
46
46
|
export { EventsApi } from './events';
|
|
47
47
|
export { SearchApi } from './search';
|
|
@@ -140,7 +140,7 @@ profileCmd.command('show [name]').description('Show profile configuration').acti
|
|
|
140
140
|
const active = getCurrentProfile();
|
|
141
141
|
console.log(chalk.bold(`Profile: ${profileName}${profileName === active ? chalk.green(' (active)') : ''}`));
|
|
142
142
|
info(`API Key: ${config.apiKey ? `${config.apiKey.substring(0, 8)}...` : chalk.gray('not set')}`);
|
|
143
|
-
info(`Base URL: ${config.baseUrl || chalk.gray('
|
|
143
|
+
info(`Base URL: ${config.baseUrl || chalk.gray('none configured')}`);
|
|
144
144
|
});
|
|
145
145
|
|
|
146
146
|
const configCmd = program.command('config').description('Manage CLI configuration');
|
|
@@ -162,7 +162,7 @@ configCmd.command('show').description('Show current configuration').action(() =>
|
|
|
162
162
|
console.log(chalk.bold(`Active Profile: ${profileName}`));
|
|
163
163
|
info(`Config directory: ${getConfigDir()}`);
|
|
164
164
|
info(`API Key: ${apiKey ? `${apiKey.substring(0, 8)}...` : chalk.gray('not set')}`);
|
|
165
|
-
info(`Base URL: ${baseUrl || chalk.gray('
|
|
165
|
+
info(`Base URL: ${baseUrl || chalk.gray('none configured')}`);
|
|
166
166
|
});
|
|
167
167
|
|
|
168
168
|
configCmd.command('clear').description('Clear configuration for active profile').action(() => {
|
|
@@ -21,7 +21,7 @@ bun install
|
|
|
21
21
|
Set your API key via environment variable or CLI profile:
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
export VERIPHONE_API_KEY
|
|
24
|
+
export VERIPHONE_API_KEY=<your-api-key>
|
|
25
25
|
# or
|
|
26
26
|
bun run dev config set-key your-api-key-here
|
|
27
27
|
```
|
|
@@ -35,7 +35,7 @@ Get an API key at [veriphone.io](https://veriphone.io).
|
|
|
35
35
|
bun run dev verify "+4915123577723"
|
|
36
36
|
|
|
37
37
|
# With default country hint
|
|
38
|
-
bun run dev verify "
|
|
38
|
+
bun run dev verify "0151-23577723" --default-country DE
|
|
39
39
|
|
|
40
40
|
# Use POST method
|
|
41
41
|
bun run dev verify "+14155552671" --method post
|