Repository navigation
Home
Vendor API integrations for Deno, Bun, and Node — built on
@tundralibs/restlerand@tundralibs/guardian
Tundra Connect wraps popular third-party vendor APIs in typed, tested,
cross-runtime TypeScript clients. Each connect is an independently versioned
package published to JSR under the
@tundraconnect scope. Requests and responses are validated at runtime, and
failures surface as one typed error class per vendor.
- Payments: Stripe, PayPal, Razorpay, Dodo Payments
- Object storage: AWS S3 and S3-compatible stores (Cloudflare R2, MinIO, DigitalOcean Spaces), Google Cloud Storage, Azure Blob Storage
- Messaging and notifications: Slack, Discord, Telegram, Twilio SMS and voice, SendGrid and Cloudflare email, ntfy push
- Market data and prediction markets: CoinGecko, Open Exchange Rates, Kalshi, Polymarket
- Search, data and operations: Algolia, Upstash Redis, Sentry, OpenWeatherMap
- URL safety: Google Web Risk, URLhaus (abuse.ch)
- Analytics: Google Analytics 4 server-side events (Measurement Protocol)
- Cloudflare platform: DNS records and zones, Cloudflare for SaaS custom hostnames, Turnstile token verification
See CONVENTIONS.md for the shared structure and CONTRIBUTING.md for the workflow.
Runs on Deno, Bun and Node; Web-APIs-only, so it also works on Cloudflare Workers (smoke-tested in CI inside workerd) and in the browser (not CI-verified).
-
Algolia
— Typed Algolia Search client: search, save, fetch, delete and browse index records, and wait for indexing tasks to finish.
-
AzureBlob
— Typed Azure Blob Storage client with Shared Key or SAS auth: upload, download, list, inspect and delete blobs, including streamed block uploads and downloads for large files.
-
CloudflareDNS
— Typed Cloudflare DNS client: list, create, update, replace, delete and batch-edit DNS records in a zone, export the zone as BIND, and look up zones by name.
-
CloudflareEmail
— Typed Cloudflare Email Sending client: send transactional email with attachments, validated locally before the request is made.
-
CloudflareSaaS
— Typed Cloudflare for SaaS client: create, list, inspect, update and delete custom hostnames with their TLS and ownership validation state, manage the fallback origin, and read the hostname quota.
-
CloudflareTurnstile
— Typed Cloudflare Turnstile client: verify a widget token server-side with siteverify, with hostname and action checks, a hard per-call deadline, and failed challenges as answers instead of errors.
-
CoinGecko
— Typed CoinGecko client for the demo and pro tiers: coin prices, market data and the full coin list.
-
Discord
— Typed Discord client: post messages through a webhook or a bot token, and verify Ed25519-signed interaction webhooks.
-
DodoPayments
— Typed Dodo Payments client: create, verify and refund payments, manage subscriptions and plan changes, sync products and discount codes, open the customer portal, and verify Standard Webhooks signatures.
-
GCS
— Typed Google Cloud Storage client with bearer or service-account auth: upload, download, list, inspect and delete objects, including resumable streamed uploads for large files.
-
GoogleAnalytics
— Typed Google Analytics 4 Measurement Protocol client: send server-side events and validate them against the debug endpoint, with GA4's event, parameter and user-property limits checked before the request is made.
-
GoogleWebRisk
— Typed Google Web Risk client: check a URL against Google's malware, phishing and unwanted-software lists with the Lookup API's uris:search, under a hard per-call deadline.
-
Kalshi
— Typed Kalshi client: public market data, plus RSA-PSS-signed trading — balance, positions, fills and orders; place, amend and cancel orders.
-
ntfy
— Typed ntfy.sh client for publishing push notifications to a topic.
-
OpenExchange
— Typed Open Exchange Rates client: latest and historical rates, time series, currency conversion, OHLC data and account usage.
-
OpenWeatherMap
— Typed OpenWeatherMap client: current weather and 5-day / 3-hour forecasts by city name or coordinates.
-
PayPal
— Typed PayPal client for Orders v2: create, fetch, capture and refund, with automatic OAuth2 tokens, idempotency keys and webhook verification.
-
Polymarket
— Typed Polymarket client: Gamma market discovery, CLOB trading with secp256k1/EIP-712 order signing, portfolio positions and value, and gasless split/merge/redeem.
-
Razorpay
— Typed Razorpay client: create and fetch orders; capture, fetch and list payments; create payment links; and verify webhook signatures.
-
Resend
— Typed Resend client: send single and batch transactional email with idempotency keys, retrieve delivery status, reschedule or cancel scheduled email, and verify Svix-signed webhooks.
-
S3
— Typed S3 client with SigV4 signing for AWS S3, Cloudflare R2, MinIO and DigitalOcean Spaces: object CRUD and listing, plus streamed multipart uploads and downloads.
-
SendGrid
— Typed Twilio SendGrid client: send transactional email, inspect API-key scopes, and verify ECDSA-signed event webhooks.
-
Sentry
— Typed Sentry API client: list projects; list, fetch and update issues; read issue events; and create releases.
-
Slack
— Typed Slack Web API client: post, update and delete messages, list channels and read history, look up users, and verify request signatures.
-
Stripe
— Typed Stripe client: create and retrieve PaymentIntents and create customers, with idempotency keys and webhook signature verification.
-
Telegram
— Typed Telegram Bot API client for webhook bots: send, edit and delete messages with inline keyboards, answer callback queries, manage the webhook and command menu, and verify and parse webhook updates and commands.
-
Twilio
— Typed Twilio client: send SMS/MMS; place, list, update and delete voice calls; and verify webhook signatures.
-
UpstashRedis
— Typed Upstash Redis REST client: string, hash and list commands, TTLs, counters and pipelining over plain HTTPS — no TCP connection needed.
-
URLhaus
— Typed URLhaus (abuse.ch) client: look up URLs, hosts and payloads in the malware-URL database, with not-listed results instead of errors and a hard per-call deadline.
Each connect's README is its main documentation. The API, error and schema guides for every connect live in the wiki.
Each connect covers a focused subset of its vendor's API with no Node-only dependencies. Check the connect's README for exactly which endpoints.
| If you use… | Reach for |
|---|---|
stripe |
@tundraconnect/stripe |
@aws-sdk/client-s3 (also for R2, MinIO, Spaces) |
@tundraconnect/s3 |
@google-cloud/storage |
@tundraconnect/gcs |
@google-cloud/web-risk, for URL lookups |
@tundraconnect/google-web-risk |
@azure/storage-blob |
@tundraconnect/azure-blob |
@slack/web-api |
@tundraconnect/slack |
discord.js, for webhook and bot messages |
@tundraconnect/discord |
twilio |
@tundraconnect/twilio |
@sendgrid/mail |
@tundraconnect/sendgrid |
razorpay |
@tundraconnect/razorpay |
algoliasearch |
@tundraconnect/algolia |
@upstash/redis |
@tundraconnect/upstash-redis |
@polymarket/clob-client |
@tundraconnect/polymarket |
cloudflare, for DNS records |
@tundraconnect/cloudflare-dns |
cloudflare, for custom hostnames |
@tundraconnect/cloudflare-saas |
cloudflare, for Turnstile siteverify |
@tundraconnect/cloudflare-turnstile |
deno add jsr:@tundraconnect/openexchangeimport { OpenExchange } from '@tundraconnect/openexchange';
const client = new OpenExchange({
auth: { type: 'CUSTOM', appId: 'your-app-id' },
});
const rates = await client.getRates();MIT License — see LICENSE for details.