@hasna/connectors 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/index.js +189 -2
- package/bin/mcp.js +176 -1
- package/bin/serve.js +175 -0
- package/connectors/connect-airtable/.env.example +11 -0
- package/connectors/connect-airtable/CLAUDE.md +121 -0
- package/connectors/connect-airtable/README.md +193 -0
- package/connectors/connect-airtable/package.json +50 -0
- package/connectors/connect-airtable/src/api/client.ts +139 -0
- package/connectors/connect-airtable/src/api/index.ts +405 -0
- package/connectors/connect-airtable/src/cli/index.ts +637 -0
- package/connectors/connect-airtable/src/index.ts +20 -0
- package/connectors/connect-airtable/src/types/index.ts +349 -0
- package/connectors/connect-airtable/src/utils/config.ts +197 -0
- package/connectors/connect-airtable/tsconfig.json +16 -0
- package/connectors/connect-amplitude/.env.example +11 -0
- package/connectors/connect-amplitude/CLAUDE.md +121 -0
- package/connectors/connect-amplitude/README.md +193 -0
- package/connectors/connect-amplitude/package.json +51 -0
- package/connectors/connect-amplitude/src/api/client.ts +144 -0
- package/connectors/connect-amplitude/src/api/index.ts +215 -0
- package/connectors/connect-amplitude/src/cli/index.ts +532 -0
- package/connectors/connect-amplitude/src/index.ts +22 -0
- package/connectors/connect-amplitude/src/types/index.ts +329 -0
- package/connectors/connect-amplitude/src/utils/config.ts +208 -0
- package/connectors/connect-amplitude/tsconfig.json +16 -0
- package/connectors/connect-calendly/.env.example +11 -0
- package/connectors/connect-calendly/CLAUDE.md +272 -0
- package/connectors/connect-calendly/README.md +193 -0
- package/connectors/connect-calendly/package.json +51 -0
- package/connectors/connect-calendly/scripts/release.ts +179 -0
- package/connectors/connect-calendly/src/api/client.ts +213 -0
- package/connectors/connect-calendly/src/api/example.ts +48 -0
- package/connectors/connect-calendly/src/api/index.ts +51 -0
- package/connectors/connect-calendly/src/cli/index.ts +254 -0
- package/connectors/connect-calendly/src/index.ts +103 -0
- package/connectors/connect-calendly/src/types/index.ts +237 -0
- package/connectors/connect-calendly/src/utils/auth.ts +274 -0
- package/connectors/connect-calendly/src/utils/bulk.ts +212 -0
- package/connectors/connect-calendly/src/utils/config.ts +326 -0
- package/connectors/connect-calendly/src/utils/output.ts +175 -0
- package/connectors/connect-calendly/src/utils/settings.ts +114 -0
- package/connectors/connect-calendly/src/utils/storage.ts +198 -0
- package/connectors/connect-calendly/tsconfig.json +16 -0
- package/connectors/connect-convertkit/.env.example +11 -0
- package/connectors/connect-convertkit/CLAUDE.md +272 -0
- package/connectors/connect-convertkit/README.md +193 -0
- package/connectors/connect-convertkit/package.json +51 -0
- package/connectors/connect-convertkit/scripts/release.ts +179 -0
- package/connectors/connect-convertkit/src/api/client.ts +213 -0
- package/connectors/connect-convertkit/src/api/example.ts +48 -0
- package/connectors/connect-convertkit/src/api/index.ts +51 -0
- package/connectors/connect-convertkit/src/cli/index.ts +254 -0
- package/connectors/connect-convertkit/src/index.ts +103 -0
- package/connectors/connect-convertkit/src/types/index.ts +237 -0
- package/connectors/connect-convertkit/src/utils/auth.ts +274 -0
- package/connectors/connect-convertkit/src/utils/bulk.ts +212 -0
- package/connectors/connect-convertkit/src/utils/config.ts +326 -0
- package/connectors/connect-convertkit/src/utils/output.ts +175 -0
- package/connectors/connect-convertkit/src/utils/settings.ts +114 -0
- package/connectors/connect-convertkit/src/utils/storage.ts +198 -0
- package/connectors/connect-convertkit/tsconfig.json +16 -0
- package/connectors/connect-crisp/.env.example +11 -0
- package/connectors/connect-crisp/CLAUDE.md +272 -0
- package/connectors/connect-crisp/README.md +193 -0
- package/connectors/connect-crisp/package.json +51 -0
- package/connectors/connect-crisp/scripts/release.ts +179 -0
- package/connectors/connect-crisp/src/api/client.ts +213 -0
- package/connectors/connect-crisp/src/api/example.ts +48 -0
- package/connectors/connect-crisp/src/api/index.ts +51 -0
- package/connectors/connect-crisp/src/cli/index.ts +254 -0
- package/connectors/connect-crisp/src/index.ts +103 -0
- package/connectors/connect-crisp/src/types/index.ts +237 -0
- package/connectors/connect-crisp/src/utils/auth.ts +274 -0
- package/connectors/connect-crisp/src/utils/bulk.ts +212 -0
- package/connectors/connect-crisp/src/utils/config.ts +326 -0
- package/connectors/connect-crisp/src/utils/output.ts +175 -0
- package/connectors/connect-crisp/src/utils/settings.ts +114 -0
- package/connectors/connect-crisp/src/utils/storage.ts +198 -0
- package/connectors/connect-crisp/tsconfig.json +16 -0
- package/connectors/connect-docusign/.env.example +11 -0
- package/connectors/connect-docusign/CLAUDE.md +128 -0
- package/connectors/connect-docusign/README.md +193 -0
- package/connectors/connect-docusign/package.json +52 -0
- package/connectors/connect-docusign/src/api/client.ts +133 -0
- package/connectors/connect-docusign/src/api/index.ts +178 -0
- package/connectors/connect-docusign/src/cli/index.ts +381 -0
- package/connectors/connect-docusign/src/index.ts +23 -0
- package/connectors/connect-docusign/src/types/index.ts +208 -0
- package/connectors/connect-docusign/src/utils/config.ts +125 -0
- package/connectors/connect-docusign/src/utils/output.ts +119 -0
- package/connectors/connect-docusign/tsconfig.json +16 -0
- package/connectors/connect-drift/.env.example +11 -0
- package/connectors/connect-drift/CLAUDE.md +272 -0
- package/connectors/connect-drift/README.md +193 -0
- package/connectors/connect-drift/package.json +51 -0
- package/connectors/connect-drift/scripts/release.ts +179 -0
- package/connectors/connect-drift/src/api/client.ts +213 -0
- package/connectors/connect-drift/src/api/example.ts +48 -0
- package/connectors/connect-drift/src/api/index.ts +51 -0
- package/connectors/connect-drift/src/cli/index.ts +254 -0
- package/connectors/connect-drift/src/index.ts +103 -0
- package/connectors/connect-drift/src/types/index.ts +237 -0
- package/connectors/connect-drift/src/utils/auth.ts +274 -0
- package/connectors/connect-drift/src/utils/bulk.ts +212 -0
- package/connectors/connect-drift/src/utils/config.ts +326 -0
- package/connectors/connect-drift/src/utils/output.ts +175 -0
- package/connectors/connect-drift/src/utils/settings.ts +114 -0
- package/connectors/connect-drift/src/utils/storage.ts +198 -0
- package/connectors/connect-drift/tsconfig.json +16 -0
- package/connectors/connect-freshdesk/.env.example +11 -0
- package/connectors/connect-freshdesk/CLAUDE.md +272 -0
- package/connectors/connect-freshdesk/README.md +193 -0
- package/connectors/connect-freshdesk/package.json +51 -0
- package/connectors/connect-freshdesk/scripts/release.ts +179 -0
- package/connectors/connect-freshdesk/src/api/client.ts +213 -0
- package/connectors/connect-freshdesk/src/api/example.ts +48 -0
- package/connectors/connect-freshdesk/src/api/index.ts +51 -0
- package/connectors/connect-freshdesk/src/cli/index.ts +254 -0
- package/connectors/connect-freshdesk/src/index.ts +103 -0
- package/connectors/connect-freshdesk/src/types/index.ts +237 -0
- package/connectors/connect-freshdesk/src/utils/auth.ts +274 -0
- package/connectors/connect-freshdesk/src/utils/bulk.ts +212 -0
- package/connectors/connect-freshdesk/src/utils/config.ts +326 -0
- package/connectors/connect-freshdesk/src/utils/output.ts +175 -0
- package/connectors/connect-freshdesk/src/utils/settings.ts +114 -0
- package/connectors/connect-freshdesk/src/utils/storage.ts +198 -0
- package/connectors/connect-freshdesk/tsconfig.json +16 -0
- package/connectors/connect-gumroad/.env.example +11 -0
- package/connectors/connect-gumroad/CLAUDE.md +272 -0
- package/connectors/connect-gumroad/README.md +193 -0
- package/connectors/connect-gumroad/package.json +51 -0
- package/connectors/connect-gumroad/scripts/release.ts +179 -0
- package/connectors/connect-gumroad/src/api/client.ts +213 -0
- package/connectors/connect-gumroad/src/api/example.ts +48 -0
- package/connectors/connect-gumroad/src/api/index.ts +51 -0
- package/connectors/connect-gumroad/src/cli/index.ts +254 -0
- package/connectors/connect-gumroad/src/index.ts +103 -0
- package/connectors/connect-gumroad/src/types/index.ts +237 -0
- package/connectors/connect-gumroad/src/utils/auth.ts +274 -0
- package/connectors/connect-gumroad/src/utils/bulk.ts +212 -0
- package/connectors/connect-gumroad/src/utils/config.ts +326 -0
- package/connectors/connect-gumroad/src/utils/output.ts +175 -0
- package/connectors/connect-gumroad/src/utils/settings.ts +114 -0
- package/connectors/connect-gumroad/src/utils/storage.ts +198 -0
- package/connectors/connect-gumroad/tsconfig.json +16 -0
- package/connectors/connect-hubspot/.env.example +11 -0
- package/connectors/connect-hubspot/CLAUDE.md +128 -0
- package/connectors/connect-hubspot/README.md +193 -0
- package/connectors/connect-hubspot/package.json +52 -0
- package/connectors/connect-hubspot/src/api/client.ts +136 -0
- package/connectors/connect-hubspot/src/api/index.ts +379 -0
- package/connectors/connect-hubspot/src/cli/index.ts +589 -0
- package/connectors/connect-hubspot/src/index.ts +21 -0
- package/connectors/connect-hubspot/src/types/index.ts +285 -0
- package/connectors/connect-hubspot/src/utils/config.ts +205 -0
- package/connectors/connect-hubspot/src/utils/output.ts +119 -0
- package/connectors/connect-hubspot/tsconfig.json +16 -0
- package/connectors/connect-intercom/.env.example +11 -0
- package/connectors/connect-intercom/CLAUDE.md +131 -0
- package/connectors/connect-intercom/README.md +193 -0
- package/connectors/connect-intercom/package.json +52 -0
- package/connectors/connect-intercom/src/api/client.ts +132 -0
- package/connectors/connect-intercom/src/api/index.ts +366 -0
- package/connectors/connect-intercom/src/cli/index.ts +831 -0
- package/connectors/connect-intercom/src/index.ts +21 -0
- package/connectors/connect-intercom/src/types/index.ts +650 -0
- package/connectors/connect-intercom/src/utils/config.ts +157 -0
- package/connectors/connect-intercom/src/utils/output.ts +119 -0
- package/connectors/connect-intercom/tsconfig.json +16 -0
- package/connectors/connect-lemonsqueezy/.env.example +11 -0
- package/connectors/connect-lemonsqueezy/CLAUDE.md +128 -0
- package/connectors/connect-lemonsqueezy/README.md +193 -0
- package/connectors/connect-lemonsqueezy/package.json +52 -0
- package/connectors/connect-lemonsqueezy/src/api/client.ts +133 -0
- package/connectors/connect-lemonsqueezy/src/api/index.ts +502 -0
- package/connectors/connect-lemonsqueezy/src/cli/index.ts +723 -0
- package/connectors/connect-lemonsqueezy/src/index.ts +21 -0
- package/connectors/connect-lemonsqueezy/src/types/index.ts +353 -0
- package/connectors/connect-lemonsqueezy/src/utils/config.ts +205 -0
- package/connectors/connect-lemonsqueezy/src/utils/output.ts +119 -0
- package/connectors/connect-lemonsqueezy/tsconfig.json +16 -0
- package/connectors/connect-linkedin/.env.example +11 -0
- package/connectors/connect-linkedin/CLAUDE.md +124 -0
- package/connectors/connect-linkedin/README.md +193 -0
- package/connectors/connect-linkedin/package.json +52 -0
- package/connectors/connect-linkedin/src/api/client.ts +132 -0
- package/connectors/connect-linkedin/src/api/index.ts +313 -0
- package/connectors/connect-linkedin/src/cli/index.ts +548 -0
- package/connectors/connect-linkedin/src/index.ts +21 -0
- package/connectors/connect-linkedin/src/types/index.ts +472 -0
- package/connectors/connect-linkedin/src/utils/config.ts +157 -0
- package/connectors/connect-linkedin/src/utils/output.ts +119 -0
- package/connectors/connect-linkedin/tsconfig.json +16 -0
- package/connectors/connect-mailchimp/.env.example +11 -0
- package/connectors/connect-mailchimp/CLAUDE.md +127 -0
- package/connectors/connect-mailchimp/README.md +193 -0
- package/connectors/connect-mailchimp/package.json +52 -0
- package/connectors/connect-mailchimp/src/api/client.ts +162 -0
- package/connectors/connect-mailchimp/src/api/index.ts +580 -0
- package/connectors/connect-mailchimp/src/cli/index.ts +822 -0
- package/connectors/connect-mailchimp/src/index.ts +23 -0
- package/connectors/connect-mailchimp/src/types/index.ts +585 -0
- package/connectors/connect-mailchimp/src/utils/config.ts +208 -0
- package/connectors/connect-mailchimp/src/utils/output.ts +119 -0
- package/connectors/connect-mailchimp/tsconfig.json +16 -0
- package/connectors/connect-mongodb/.env.example +11 -0
- package/connectors/connect-mongodb/CLAUDE.md +272 -0
- package/connectors/connect-mongodb/README.md +193 -0
- package/connectors/connect-mongodb/package.json +51 -0
- package/connectors/connect-mongodb/scripts/release.ts +179 -0
- package/connectors/connect-mongodb/src/api/client.ts +213 -0
- package/connectors/connect-mongodb/src/api/example.ts +48 -0
- package/connectors/connect-mongodb/src/api/index.ts +51 -0
- package/connectors/connect-mongodb/src/cli/index.ts +254 -0
- package/connectors/connect-mongodb/src/index.ts +103 -0
- package/connectors/connect-mongodb/src/types/index.ts +237 -0
- package/connectors/connect-mongodb/src/utils/auth.ts +274 -0
- package/connectors/connect-mongodb/src/utils/bulk.ts +212 -0
- package/connectors/connect-mongodb/src/utils/config.ts +326 -0
- package/connectors/connect-mongodb/src/utils/output.ts +175 -0
- package/connectors/connect-mongodb/src/utils/settings.ts +114 -0
- package/connectors/connect-mongodb/src/utils/storage.ts +198 -0
- package/connectors/connect-mongodb/tsconfig.json +16 -0
- package/connectors/connect-netlify/.env.example +11 -0
- package/connectors/connect-netlify/CLAUDE.md +170 -0
- package/connectors/connect-netlify/README.md +193 -0
- package/connectors/connect-netlify/package.json +53 -0
- package/connectors/connect-netlify/src/api/client.ts +132 -0
- package/connectors/connect-netlify/src/api/index.ts +533 -0
- package/connectors/connect-netlify/src/cli/index.ts +985 -0
- package/connectors/connect-netlify/src/index.ts +22 -0
- package/connectors/connect-netlify/src/types/index.ts +423 -0
- package/connectors/connect-netlify/src/utils/config.ts +171 -0
- package/connectors/connect-netlify/src/utils/output.ts +119 -0
- package/connectors/connect-netlify/tsconfig.json +16 -0
- package/connectors/connect-paypal/.env.example +11 -0
- package/connectors/connect-paypal/CLAUDE.md +128 -0
- package/connectors/connect-paypal/README.md +193 -0
- package/connectors/connect-paypal/package.json +51 -0
- package/connectors/connect-paypal/src/api/client.ts +182 -0
- package/connectors/connect-paypal/src/api/index.ts +235 -0
- package/connectors/connect-paypal/src/cli/index.ts +559 -0
- package/connectors/connect-paypal/src/index.ts +23 -0
- package/connectors/connect-paypal/src/types/index.ts +377 -0
- package/connectors/connect-paypal/src/utils/config.ts +125 -0
- package/connectors/connect-paypal/src/utils/output.ts +119 -0
- package/connectors/connect-paypal/tsconfig.json +16 -0
- package/connectors/connect-pinterest/.env.example +11 -0
- package/connectors/connect-pinterest/CLAUDE.md +115 -0
- package/connectors/connect-pinterest/README.md +193 -0
- package/connectors/connect-pinterest/package.json +52 -0
- package/connectors/connect-pinterest/src/api/client.ts +125 -0
- package/connectors/connect-pinterest/src/api/index.ts +203 -0
- package/connectors/connect-pinterest/src/cli/index.ts +653 -0
- package/connectors/connect-pinterest/src/index.ts +21 -0
- package/connectors/connect-pinterest/src/types/index.ts +268 -0
- package/connectors/connect-pinterest/src/utils/config.ts +157 -0
- package/connectors/connect-pinterest/src/utils/output.ts +119 -0
- package/connectors/connect-pinterest/tsconfig.json +16 -0
- package/connectors/connect-posthog/.env.example +11 -0
- package/connectors/connect-posthog/CLAUDE.md +272 -0
- package/connectors/connect-posthog/README.md +193 -0
- package/connectors/connect-posthog/package.json +51 -0
- package/connectors/connect-posthog/scripts/release.ts +179 -0
- package/connectors/connect-posthog/src/api/client.ts +213 -0
- package/connectors/connect-posthog/src/api/example.ts +48 -0
- package/connectors/connect-posthog/src/api/index.ts +51 -0
- package/connectors/connect-posthog/src/cli/index.ts +254 -0
- package/connectors/connect-posthog/src/index.ts +103 -0
- package/connectors/connect-posthog/src/types/index.ts +237 -0
- package/connectors/connect-posthog/src/utils/auth.ts +274 -0
- package/connectors/connect-posthog/src/utils/bulk.ts +212 -0
- package/connectors/connect-posthog/src/utils/config.ts +326 -0
- package/connectors/connect-posthog/src/utils/output.ts +175 -0
- package/connectors/connect-posthog/src/utils/settings.ts +114 -0
- package/connectors/connect-posthog/src/utils/storage.ts +198 -0
- package/connectors/connect-posthog/tsconfig.json +16 -0
- package/connectors/connect-salesforce/.env.example +11 -0
- package/connectors/connect-salesforce/CLAUDE.md +128 -0
- package/connectors/connect-salesforce/README.md +193 -0
- package/connectors/connect-salesforce/package.json +53 -0
- package/connectors/connect-salesforce/src/api/client.ts +150 -0
- package/connectors/connect-salesforce/src/api/index.ts +367 -0
- package/connectors/connect-salesforce/src/cli/index.ts +594 -0
- package/connectors/connect-salesforce/src/index.ts +21 -0
- package/connectors/connect-salesforce/src/types/index.ts +292 -0
- package/connectors/connect-salesforce/src/utils/config.ts +208 -0
- package/connectors/connect-salesforce/src/utils/output.ts +119 -0
- package/connectors/connect-salesforce/tsconfig.json +16 -0
- package/connectors/connect-segment/.env.example +11 -0
- package/connectors/connect-segment/CLAUDE.md +272 -0
- package/connectors/connect-segment/README.md +193 -0
- package/connectors/connect-segment/package.json +51 -0
- package/connectors/connect-segment/scripts/release.ts +179 -0
- package/connectors/connect-segment/src/api/client.ts +213 -0
- package/connectors/connect-segment/src/api/example.ts +48 -0
- package/connectors/connect-segment/src/api/index.ts +51 -0
- package/connectors/connect-segment/src/cli/index.ts +254 -0
- package/connectors/connect-segment/src/index.ts +103 -0
- package/connectors/connect-segment/src/types/index.ts +237 -0
- package/connectors/connect-segment/src/utils/auth.ts +274 -0
- package/connectors/connect-segment/src/utils/bulk.ts +212 -0
- package/connectors/connect-segment/src/utils/config.ts +326 -0
- package/connectors/connect-segment/src/utils/output.ts +175 -0
- package/connectors/connect-segment/src/utils/settings.ts +114 -0
- package/connectors/connect-segment/src/utils/storage.ts +198 -0
- package/connectors/connect-segment/tsconfig.json +16 -0
- package/connectors/connect-sendgrid/.env.example +11 -0
- package/connectors/connect-sendgrid/CLAUDE.md +125 -0
- package/connectors/connect-sendgrid/README.md +193 -0
- package/connectors/connect-sendgrid/package.json +53 -0
- package/connectors/connect-sendgrid/src/api/client.ts +137 -0
- package/connectors/connect-sendgrid/src/api/index.ts +588 -0
- package/connectors/connect-sendgrid/src/cli/index.ts +764 -0
- package/connectors/connect-sendgrid/src/index.ts +21 -0
- package/connectors/connect-sendgrid/src/types/index.ts +403 -0
- package/connectors/connect-sendgrid/src/utils/config.ts +197 -0
- package/connectors/connect-sendgrid/src/utils/output.ts +119 -0
- package/connectors/connect-sendgrid/tsconfig.json +16 -0
- package/connectors/connect-supabase/.env.example +11 -0
- package/connectors/connect-supabase/CLAUDE.md +132 -0
- package/connectors/connect-supabase/README.md +193 -0
- package/connectors/connect-supabase/package.json +52 -0
- package/connectors/connect-supabase/src/api/client.ts +231 -0
- package/connectors/connect-supabase/src/api/index.ts +439 -0
- package/connectors/connect-supabase/src/cli/index.ts +691 -0
- package/connectors/connect-supabase/src/index.ts +24 -0
- package/connectors/connect-supabase/src/types/index.ts +215 -0
- package/connectors/connect-supabase/src/utils/config.ts +219 -0
- package/connectors/connect-supabase/tsconfig.json +16 -0
- package/connectors/connect-vercel/.env.example +11 -0
- package/connectors/connect-vercel/CLAUDE.md +142 -0
- package/connectors/connect-vercel/README.md +193 -0
- package/connectors/connect-vercel/package.json +52 -0
- package/connectors/connect-vercel/src/api/client.ts +139 -0
- package/connectors/connect-vercel/src/api/index.ts +384 -0
- package/connectors/connect-vercel/src/cli/index.ts +740 -0
- package/connectors/connect-vercel/src/index.ts +24 -0
- package/connectors/connect-vercel/src/types/index.ts +350 -0
- package/connectors/connect-vercel/src/utils/config.ts +182 -0
- package/connectors/connect-vercel/src/utils/output.ts +119 -0
- package/connectors/connect-vercel/tsconfig.json +16 -0
- package/connectors/connect-zendesk/.env.example +10 -0
- package/connectors/connect-zendesk/.github/workflows/deploy.yml +51 -0
- package/connectors/connect-zendesk/CLAUDE.md +78 -0
- package/connectors/connect-zendesk/Makefile +129 -0
- package/connectors/connect-zendesk/README.md +295 -0
- package/connectors/connect-zendesk/SCAFFOLD.md +178 -0
- package/connectors/connect-zendesk/nginx-connector.conf +218 -0
- package/connectors/connect-zendesk/nginx.conf +61 -0
- package/connectors/connect-zendesk/package.json +71 -0
- package/connectors/connect-zendesk/scripts/init.sh +62 -0
- package/connectors/connect-zendesk/scripts/publish.ts +210 -0
- package/connectors/connect-zendesk/server/index.js +142 -0
- package/connectors/connect-zendesk/src/api/automations.ts +95 -0
- package/connectors/connect-zendesk/src/api/brands.ts +80 -0
- package/connectors/connect-zendesk/src/api/bulk.ts +838 -0
- package/connectors/connect-zendesk/src/api/client.test.ts +315 -0
- package/connectors/connect-zendesk/src/api/client.ts +173 -0
- package/connectors/connect-zendesk/src/api/example.ts +59 -0
- package/connectors/connect-zendesk/src/api/groups.ts +60 -0
- package/connectors/connect-zendesk/src/api/index.test.ts +111 -0
- package/connectors/connect-zendesk/src/api/index.ts +131 -0
- package/connectors/connect-zendesk/src/api/macros.ts +124 -0
- package/connectors/connect-zendesk/src/api/organizations.ts +85 -0
- package/connectors/connect-zendesk/src/api/slas.ts +80 -0
- package/connectors/connect-zendesk/src/api/ticket-fields.ts +98 -0
- package/connectors/connect-zendesk/src/api/tickets.test.ts +215 -0
- package/connectors/connect-zendesk/src/api/tickets.ts +103 -0
- package/connectors/connect-zendesk/src/api/triggers.test.ts +204 -0
- package/connectors/connect-zendesk/src/api/triggers.ts +125 -0
- package/connectors/connect-zendesk/src/api/users.test.ts +180 -0
- package/connectors/connect-zendesk/src/api/users.ts +108 -0
- package/connectors/connect-zendesk/src/api/views.test.ts +223 -0
- package/connectors/connect-zendesk/src/api/views.ts +145 -0
- package/connectors/connect-zendesk/src/api/webhooks.test.ts +208 -0
- package/connectors/connect-zendesk/src/api/webhooks.ts +118 -0
- package/connectors/connect-zendesk/src/cli/index.ts +1478 -0
- package/connectors/connect-zendesk/src/index.ts +36 -0
- package/connectors/connect-zendesk/src/server/index.ts +204 -0
- package/connectors/connect-zendesk/src/types/index.ts +910 -0
- package/connectors/connect-zendesk/src/utils/config.test.ts +193 -0
- package/connectors/connect-zendesk/src/utils/config.ts +526 -0
- package/connectors/connect-zendesk/src/utils/export.ts +338 -0
- package/connectors/connect-zendesk/src/utils/logger.ts +105 -0
- package/connectors/connect-zendesk/src/utils/output.test.ts +137 -0
- package/connectors/connect-zendesk/src/utils/output.ts +119 -0
- package/connectors/connect-zendesk/tsconfig.json +31 -0
- package/dist/index.js +175 -0
- package/package.json +1 -1
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# scaffold-connector
|
|
2
|
+
|
|
3
|
+
A TypeScript scaffold for building API connector CLIs with multi-profile support.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Multi-profile configuration (switch between different API keys/accounts)
|
|
8
|
+
- Bearer token authentication (easily customizable)
|
|
9
|
+
- Clean CLI structure with Commander.js
|
|
10
|
+
- Pretty and JSON output formats
|
|
11
|
+
- TypeScript with strict mode
|
|
12
|
+
|
|
13
|
+
## Quick Start
|
|
14
|
+
|
|
15
|
+
### 1. Clone and Rename
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Clone for your connector
|
|
19
|
+
git clone https://github.com/hasna/scaffold-connector.git connect-yourapi
|
|
20
|
+
cd connect-yourapi
|
|
21
|
+
|
|
22
|
+
# Update package.json name
|
|
23
|
+
# Change "@hasna/scaffold-connector" to "@hasna/connect-yourapi"
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### 2. Update Configuration
|
|
27
|
+
|
|
28
|
+
Search for `TODO` comments throughout the codebase and update:
|
|
29
|
+
|
|
30
|
+
- `src/cli/index.ts` - Update `CONNECTOR_NAME` and description
|
|
31
|
+
- `src/utils/config.ts` - Update `CONNECTOR_NAME` and env var names
|
|
32
|
+
- `src/api/client.ts` - Update `DEFAULT_BASE_URL` and authentication method
|
|
33
|
+
- `src/api/index.ts` - Rename `Connector` class to your API name
|
|
34
|
+
- `src/types/index.ts` - Add your API's type definitions
|
|
35
|
+
- `package.json` - Update name, description, bin command
|
|
36
|
+
- `.env.example` - Update environment variable names
|
|
37
|
+
|
|
38
|
+
### 3. Install and Test
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Install dependencies
|
|
42
|
+
bun install
|
|
43
|
+
|
|
44
|
+
# Run CLI
|
|
45
|
+
bun run dev
|
|
46
|
+
|
|
47
|
+
# Or run specific commands
|
|
48
|
+
bun run dev profile list
|
|
49
|
+
bun run dev config show
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## CLI Structure
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
connector [options] [command]
|
|
56
|
+
|
|
57
|
+
Options:
|
|
58
|
+
-k, --api-key <key> API key (overrides config)
|
|
59
|
+
-f, --format <format> Output format (json, pretty)
|
|
60
|
+
-p, --profile <profile> Use a specific profile
|
|
61
|
+
|
|
62
|
+
Commands:
|
|
63
|
+
profile list List all profiles
|
|
64
|
+
profile use <name> Switch to a profile
|
|
65
|
+
profile create <name> Create a new profile
|
|
66
|
+
profile delete <name> Delete a profile
|
|
67
|
+
profile show [name] Show profile configuration
|
|
68
|
+
|
|
69
|
+
config set-key <key> Set API key for active profile
|
|
70
|
+
config show Show current configuration
|
|
71
|
+
config clear Clear configuration
|
|
72
|
+
|
|
73
|
+
example list Example API command (replace)
|
|
74
|
+
example get <id> Example API command (replace)
|
|
75
|
+
example create Example API command (replace)
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Project Structure
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
src/
|
|
82
|
+
├── api/
|
|
83
|
+
│ ├── client.ts # HTTP client with authentication
|
|
84
|
+
│ ├── example.ts # Example API module (replace with your API)
|
|
85
|
+
│ └── index.ts # Main connector class
|
|
86
|
+
├── cli/
|
|
87
|
+
│ └── index.ts # CLI commands
|
|
88
|
+
├── types/
|
|
89
|
+
│ └── index.ts # Type definitions
|
|
90
|
+
├── utils/
|
|
91
|
+
│ ├── config.ts # Multi-profile configuration
|
|
92
|
+
│ └── output.ts # CLI output formatting
|
|
93
|
+
└── index.ts # Library exports
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Multi-Profile Configuration
|
|
97
|
+
|
|
98
|
+
Profiles are stored in `~/.connect/{connector-name}/profiles/`:
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
~/.connect/connector/
|
|
102
|
+
├── current_profile # Name of active profile
|
|
103
|
+
└── profiles/
|
|
104
|
+
├── default.json # Default profile
|
|
105
|
+
├── work.json # Named profile
|
|
106
|
+
└── personal.json # Named profile
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Profile Commands
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# Create profiles
|
|
113
|
+
connector profile create work --api-key sk-xxx --use
|
|
114
|
+
connector profile create personal --api-key sk-yyy
|
|
115
|
+
|
|
116
|
+
# Switch profiles
|
|
117
|
+
connector profile use work
|
|
118
|
+
|
|
119
|
+
# Use profile for single command
|
|
120
|
+
connector -p personal example list
|
|
121
|
+
|
|
122
|
+
# List profiles
|
|
123
|
+
connector profile list
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Customizing Authentication
|
|
127
|
+
|
|
128
|
+
Edit `src/api/client.ts` to change authentication:
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
// Bearer token (default)
|
|
132
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
133
|
+
|
|
134
|
+
// API Key header
|
|
135
|
+
'X-API-Key': this.apiKey,
|
|
136
|
+
|
|
137
|
+
// Basic auth
|
|
138
|
+
'Authorization': `Basic ${Buffer.from(`${this.apiKey}:${this.apiSecret}`).toString('base64')}`,
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Adding API Endpoints
|
|
142
|
+
|
|
143
|
+
1. Create a new file in `src/api/` (e.g., `users.ts`)
|
|
144
|
+
2. Export it from `src/api/index.ts`
|
|
145
|
+
3. Add types in `src/types/index.ts`
|
|
146
|
+
4. Add CLI commands in `src/cli/index.ts`
|
|
147
|
+
|
|
148
|
+
Example API module:
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
// src/api/users.ts
|
|
152
|
+
import type { ConnectorClient } from './client';
|
|
153
|
+
|
|
154
|
+
export class UsersApi {
|
|
155
|
+
constructor(private readonly client: ConnectorClient) {}
|
|
156
|
+
|
|
157
|
+
async list(options?: { limit?: number }) {
|
|
158
|
+
return this.client.get('/users', { limit: options?.limit });
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
async get(id: string) {
|
|
162
|
+
return this.client.get(`/users/${id}`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Environment Variables
|
|
168
|
+
|
|
169
|
+
| Variable | Description |
|
|
170
|
+
|----------|-------------|
|
|
171
|
+
| `CONNECTOR_API_KEY` | API key (overrides profile config) |
|
|
172
|
+
| `CONNECTOR_API_SECRET` | API secret (optional) |
|
|
173
|
+
| `CONNECTOR_BASE_URL` | Override base URL (optional) |
|
|
174
|
+
|
|
175
|
+
## Development
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
# Install dependencies
|
|
179
|
+
bun install
|
|
180
|
+
|
|
181
|
+
# Run CLI in development
|
|
182
|
+
bun run dev
|
|
183
|
+
|
|
184
|
+
# Build for distribution
|
|
185
|
+
bun run build
|
|
186
|
+
|
|
187
|
+
# Type check
|
|
188
|
+
bun run typecheck
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## License
|
|
192
|
+
|
|
193
|
+
MIT
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hasna/connect-amplitude",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Amplitude connector - Analytics data, events, users, and cohorts",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"connect-amplitude": "./bin/index.js"
|
|
8
|
+
},
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"main": "./dist/index.js",
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "bun build ./src/index.ts --outdir ./dist --target bun && bun build ./src/cli/index.ts --outdir ./bin --target bun",
|
|
19
|
+
"dev": "bun run ./src/cli/index.ts",
|
|
20
|
+
"typecheck": "tsc --noEmit",
|
|
21
|
+
"prepublishOnly": "bun run build"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"amplitude",
|
|
25
|
+
"analytics",
|
|
26
|
+
"events",
|
|
27
|
+
"tracking",
|
|
28
|
+
"cohorts",
|
|
29
|
+
"connector",
|
|
30
|
+
"cli",
|
|
31
|
+
"typescript",
|
|
32
|
+
"bun"
|
|
33
|
+
],
|
|
34
|
+
"author": "Hasna",
|
|
35
|
+
"license": "Apache-2.0",
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@types/bun": "latest",
|
|
38
|
+
"typescript": "^5"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"commander": "^12.1.0",
|
|
42
|
+
"chalk": "^5.3.0"
|
|
43
|
+
},
|
|
44
|
+
"engines": {
|
|
45
|
+
"bun": ">=1.0.0"
|
|
46
|
+
},
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "git+https://github.com/hasna/connectors.git"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import type { AmplitudeConfig, OutputFormat, AmplitudeErrorResponse } from '../types';
|
|
2
|
+
import { AmplitudeApiError } from '../types';
|
|
3
|
+
|
|
4
|
+
// Amplitude API endpoints
|
|
5
|
+
const API_BASE_URL = 'https://amplitude.com/api/2';
|
|
6
|
+
const BATCH_API_URL = 'https://api2.amplitude.com/2';
|
|
7
|
+
|
|
8
|
+
export interface RequestOptions {
|
|
9
|
+
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
10
|
+
params?: Record<string, string | number | boolean | undefined>;
|
|
11
|
+
body?: Record<string, unknown> | unknown[] | string;
|
|
12
|
+
headers?: Record<string, string>;
|
|
13
|
+
format?: OutputFormat;
|
|
14
|
+
useBatchApi?: boolean;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export class AmplitudeClient {
|
|
18
|
+
private readonly apiKey: string;
|
|
19
|
+
private readonly secretKey: string;
|
|
20
|
+
|
|
21
|
+
constructor(config: AmplitudeConfig) {
|
|
22
|
+
if (!config.apiKey) {
|
|
23
|
+
throw new Error('API key is required');
|
|
24
|
+
}
|
|
25
|
+
if (!config.secretKey) {
|
|
26
|
+
throw new Error('Secret key is required');
|
|
27
|
+
}
|
|
28
|
+
this.apiKey = config.apiKey;
|
|
29
|
+
this.secretKey = config.secretKey;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
private getBaseUrl(useBatchApi?: boolean): string {
|
|
33
|
+
return useBatchApi ? BATCH_API_URL : API_BASE_URL;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
private getAuthHeader(): string {
|
|
37
|
+
const credentials = `${this.apiKey}:${this.secretKey}`;
|
|
38
|
+
const encoded = Buffer.from(credentials).toString('base64');
|
|
39
|
+
return `Basic ${encoded}`;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
private buildUrl(path: string, params?: Record<string, string | number | boolean | undefined>, useBatchApi?: boolean): string {
|
|
43
|
+
const url = new URL(`${this.getBaseUrl(useBatchApi)}${path}`);
|
|
44
|
+
|
|
45
|
+
if (params) {
|
|
46
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
47
|
+
if (value !== undefined && value !== null && value !== '') {
|
|
48
|
+
url.searchParams.append(key, String(value));
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return url.toString();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Make an authenticated request to Amplitude API
|
|
58
|
+
* Uses Basic Auth with API Key and Secret Key
|
|
59
|
+
*/
|
|
60
|
+
async request<T>(path: string, options: RequestOptions = {}): Promise<T> {
|
|
61
|
+
const { method = 'GET', params, body, headers = {}, useBatchApi } = options;
|
|
62
|
+
|
|
63
|
+
const url = this.buildUrl(path, params, useBatchApi);
|
|
64
|
+
|
|
65
|
+
const requestHeaders: Record<string, string> = {
|
|
66
|
+
'Authorization': this.getAuthHeader(),
|
|
67
|
+
'Accept': 'application/json',
|
|
68
|
+
...headers,
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
if (body && ['POST', 'PUT', 'PATCH'].includes(method)) {
|
|
72
|
+
requestHeaders['Content-Type'] = 'application/json';
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const fetchOptions: RequestInit = {
|
|
76
|
+
method,
|
|
77
|
+
headers: requestHeaders,
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
if (body && ['POST', 'PUT', 'PATCH'].includes(method)) {
|
|
81
|
+
fetchOptions.body = typeof body === 'string' ? body : JSON.stringify(body);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const response = await fetch(url, fetchOptions);
|
|
85
|
+
|
|
86
|
+
// Handle 204 No Content
|
|
87
|
+
if (response.status === 204) {
|
|
88
|
+
return {} as T;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Parse response
|
|
92
|
+
let data: unknown;
|
|
93
|
+
const contentType = response.headers.get('content-type') || '';
|
|
94
|
+
|
|
95
|
+
if (contentType.includes('application/json')) {
|
|
96
|
+
const text = await response.text();
|
|
97
|
+
if (text) {
|
|
98
|
+
try {
|
|
99
|
+
data = JSON.parse(text);
|
|
100
|
+
} catch {
|
|
101
|
+
data = text;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
} else {
|
|
105
|
+
data = await response.text();
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Handle errors
|
|
109
|
+
if (!response.ok) {
|
|
110
|
+
let errorMessage: string;
|
|
111
|
+
let errorCode: number | undefined;
|
|
112
|
+
|
|
113
|
+
if (typeof data === 'object' && data !== null) {
|
|
114
|
+
const errorData = data as AmplitudeErrorResponse;
|
|
115
|
+
errorMessage = errorData.error || errorData.message || JSON.stringify(data);
|
|
116
|
+
errorCode = errorData.code;
|
|
117
|
+
} else {
|
|
118
|
+
errorMessage = String(data || response.statusText);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
throw new AmplitudeApiError(errorMessage, response.status, errorCode);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return data as T;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
async get<T>(path: string, params?: Record<string, string | number | boolean | undefined>): Promise<T> {
|
|
128
|
+
return this.request<T>(path, { method: 'GET', params });
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
async post<T>(path: string, body?: Record<string, unknown> | unknown[] | string | object, params?: Record<string, string | number | boolean | undefined>, useBatchApi?: boolean): Promise<T> {
|
|
132
|
+
return this.request<T>(path, { method: 'POST', body: body as Record<string, unknown>, params, useBatchApi });
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Get a preview of the API key (for display/debugging)
|
|
137
|
+
*/
|
|
138
|
+
getApiKeyPreview(): string {
|
|
139
|
+
if (this.apiKey.length > 10) {
|
|
140
|
+
return `${this.apiKey.substring(0, 6)}...${this.apiKey.substring(this.apiKey.length - 4)}`;
|
|
141
|
+
}
|
|
142
|
+
return '***';
|
|
143
|
+
}
|
|
144
|
+
}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AmplitudeConfig,
|
|
3
|
+
Event,
|
|
4
|
+
BatchEventResponse,
|
|
5
|
+
UserSearch,
|
|
6
|
+
UserActivity,
|
|
7
|
+
Cohort,
|
|
8
|
+
ListCohortsResult,
|
|
9
|
+
CohortMembership,
|
|
10
|
+
ChartData,
|
|
11
|
+
EventType,
|
|
12
|
+
EventProperty,
|
|
13
|
+
UserProperty,
|
|
14
|
+
} from '../types';
|
|
15
|
+
import { AmplitudeClient } from './client';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Amplitude API wrapper
|
|
19
|
+
*/
|
|
20
|
+
export class Amplitude {
|
|
21
|
+
private readonly client: AmplitudeClient;
|
|
22
|
+
|
|
23
|
+
constructor(config: AmplitudeConfig) {
|
|
24
|
+
this.client = new AmplitudeClient(config);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Create a client from environment variables
|
|
29
|
+
*/
|
|
30
|
+
static fromEnv(): Amplitude {
|
|
31
|
+
const apiKey = process.env.AMPLITUDE_API_KEY;
|
|
32
|
+
const secretKey = process.env.AMPLITUDE_SECRET_KEY;
|
|
33
|
+
|
|
34
|
+
if (!apiKey) {
|
|
35
|
+
throw new Error('AMPLITUDE_API_KEY environment variable is required');
|
|
36
|
+
}
|
|
37
|
+
if (!secretKey) {
|
|
38
|
+
throw new Error('AMPLITUDE_SECRET_KEY environment variable is required');
|
|
39
|
+
}
|
|
40
|
+
return new Amplitude({ apiKey, secretKey });
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Get a preview of the API key (for debugging)
|
|
45
|
+
*/
|
|
46
|
+
getApiKeyPreview(): string {
|
|
47
|
+
return this.client.getApiKeyPreview();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Get the underlying client for direct API access
|
|
52
|
+
*/
|
|
53
|
+
getClient(): AmplitudeClient {
|
|
54
|
+
return this.client;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// ============================================
|
|
58
|
+
// Events API
|
|
59
|
+
// ============================================
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Upload events (batch)
|
|
63
|
+
* Sends events to Amplitude's batch event upload endpoint
|
|
64
|
+
*/
|
|
65
|
+
async uploadEvents(events: Event[]): Promise<BatchEventResponse> {
|
|
66
|
+
return this.client.post<BatchEventResponse>('/httpapi', {
|
|
67
|
+
api_key: undefined, // Will use Basic Auth instead
|
|
68
|
+
events,
|
|
69
|
+
}, undefined, true);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Track a single event
|
|
74
|
+
*/
|
|
75
|
+
async trackEvent(event: Event): Promise<BatchEventResponse> {
|
|
76
|
+
return this.uploadEvents([event]);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// ============================================
|
|
80
|
+
// Users API
|
|
81
|
+
// ============================================
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Search for users
|
|
85
|
+
*/
|
|
86
|
+
async searchUsers(user: string): Promise<UserSearch> {
|
|
87
|
+
return this.client.get<UserSearch>('/usersearch', { user });
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Get user activity
|
|
92
|
+
*/
|
|
93
|
+
async getUserActivity(params: {
|
|
94
|
+
user?: string;
|
|
95
|
+
amplitude_id?: number;
|
|
96
|
+
offset?: number;
|
|
97
|
+
limit?: number;
|
|
98
|
+
}): Promise<UserActivity> {
|
|
99
|
+
return this.client.get<UserActivity>('/useractivity', params as Record<string, string | number | boolean | undefined>);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// ============================================
|
|
103
|
+
// Cohorts API
|
|
104
|
+
// ============================================
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* List all cohorts
|
|
108
|
+
*/
|
|
109
|
+
async listCohorts(): Promise<ListCohortsResult> {
|
|
110
|
+
return this.client.get<ListCohortsResult>('/cohorts');
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Get cohort by ID
|
|
115
|
+
*/
|
|
116
|
+
async getCohort(cohortId: string): Promise<Cohort> {
|
|
117
|
+
const result = await this.client.get<{ cohort: Cohort }>(`/cohorts/${cohortId}`);
|
|
118
|
+
return result.cohort;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Get cohort membership
|
|
123
|
+
* Returns user IDs or amplitude IDs that are members of the cohort
|
|
124
|
+
*/
|
|
125
|
+
async getCohortMembership(cohortId: string, params?: {
|
|
126
|
+
props?: number; // 1 to include user properties
|
|
127
|
+
propKeys?: string; // Comma-separated list of property keys
|
|
128
|
+
}): Promise<CohortMembership> {
|
|
129
|
+
return this.client.get<CohortMembership>(`/cohorts/${cohortId}/users`, params as Record<string, string | number | boolean | undefined>);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// ============================================
|
|
133
|
+
// Charts API
|
|
134
|
+
// ============================================
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Get chart data
|
|
138
|
+
* Retrieves data from a saved chart
|
|
139
|
+
*/
|
|
140
|
+
async getChartData(chartId: string, params?: {
|
|
141
|
+
start?: string; // YYYYMMDD format
|
|
142
|
+
end?: string; // YYYYMMDD format
|
|
143
|
+
}): Promise<ChartData> {
|
|
144
|
+
return this.client.get<ChartData>(`/chart/${chartId}/query`, params as Record<string, string | number | boolean | undefined>);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// ============================================
|
|
148
|
+
// Taxonomy API
|
|
149
|
+
// ============================================
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* List event types
|
|
153
|
+
*/
|
|
154
|
+
async listEventTypes(): Promise<{ data: EventType[] }> {
|
|
155
|
+
return this.client.get<{ data: EventType[] }>('/taxonomy/event');
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Get event type by name
|
|
160
|
+
*/
|
|
161
|
+
async getEventType(eventType: string): Promise<{ data: EventType }> {
|
|
162
|
+
return this.client.get<{ data: EventType }>(`/taxonomy/event/${encodeURIComponent(eventType)}`);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* List event properties for an event type
|
|
167
|
+
*/
|
|
168
|
+
async listEventProperties(eventType: string): Promise<{ data: EventProperty[] }> {
|
|
169
|
+
return this.client.get<{ data: EventProperty[] }>(`/taxonomy/event/${encodeURIComponent(eventType)}/properties`);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Get event property
|
|
174
|
+
*/
|
|
175
|
+
async getEventProperty(eventType: string, propertyName: string): Promise<{ data: EventProperty }> {
|
|
176
|
+
return this.client.get<{ data: EventProperty }>(`/taxonomy/event/${encodeURIComponent(eventType)}/properties/${encodeURIComponent(propertyName)}`);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* List user properties
|
|
181
|
+
*/
|
|
182
|
+
async listUserProperties(): Promise<{ data: UserProperty[] }> {
|
|
183
|
+
return this.client.get<{ data: UserProperty[] }>('/taxonomy/user-property');
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Get user property by name
|
|
188
|
+
*/
|
|
189
|
+
async getUserProperty(propertyName: string): Promise<{ data: UserProperty }> {
|
|
190
|
+
return this.client.get<{ data: UserProperty }>(`/taxonomy/user-property/${encodeURIComponent(propertyName)}`);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// ============================================
|
|
194
|
+
// Export API
|
|
195
|
+
// ============================================
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Export raw event data
|
|
199
|
+
* Returns a URL to download the exported data
|
|
200
|
+
* Note: This is for the Export API which uses different authentication
|
|
201
|
+
*/
|
|
202
|
+
async exportData(params: {
|
|
203
|
+
start: string; // YYYYMMDDTHH format (e.g., "20240101T00")
|
|
204
|
+
end: string; // YYYYMMDDTHH format (e.g., "20240101T23")
|
|
205
|
+
}): Promise<string> {
|
|
206
|
+
// Export API returns gzipped JSON Lines format
|
|
207
|
+
const response = await this.client.get<string>('/export', {
|
|
208
|
+
start: params.start,
|
|
209
|
+
end: params.end,
|
|
210
|
+
});
|
|
211
|
+
return response;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
export { AmplitudeClient } from './client';
|