svix
Version:
Svix webhooks API client and webhook verification library
107 lines (86 loc) • 3.37 kB
text/typescript
import { Authentication } from "./api/authentication";
import { Application } from "./api/application";
import { BackgroundTask } from "./api/backgroundTask";
import { Endpoint } from "./api/endpoint";
import { EventType } from "./api/eventType";
import { Ingest } from "./api/ingest";
import { Integration } from "./api/integration";
import { Management } from "./api/management";
import { Message } from "./api/message";
import { MessageAttempt } from "./api/messageAttempt";
import { OperationalWebhook } from "./api/operationalWebhook";
import { OperationalWebhookEndpoint } from "./api/operationalWebhookEndpoint";
import { Statistics } from "./api/statistics";
import { SvixRequestContext } from "./request";
export { PostOptions, ApiException } from "./util";
export { HTTPValidationError, HttpErrorOut, ValidationError } from "./HttpErrors";
export * from "./webhook";
export * from "./models/index";
export { ApplicationListOptions } from "./api/application";
export { BackgroundTaskListOptions } from "./api/backgroundTask";
export { EndpointListOptions, EndpointGetStatsOptions } from "./api/endpoint";
export { EventTypeListOptions } from "./api/eventType";
export { IntegrationListOptions } from "./api/integration";
export { MessageListOptions, messageInRaw } from "./api/message";
export { MessageAttemptListByEndpointOptions } from "./api/messageAttempt";
export { OperationalWebhookEndpointListOptions } from "./api/operationalWebhookEndpoint";
export interface SvixOptions {
debug?: boolean;
serverUrl?: string;
/** Time in milliseconds to wait for requests to get a response. */
requestTimeout?: number;
}
const REGIONS = [
{ region: "us", url: "https://api.us.svix.com" },
{ region: "eu", url: "https://api.eu.svix.com" },
{ region: "in", url: "https://api.in.svix.com" },
{ region: "ca", url: "https://api.ca.svix.com" },
{ region: "au", url: "https://api.au.svix.com" },
];
export class Svix {
private readonly requestCtx: SvixRequestContext;
public constructor(token: string, options: SvixOptions = {}) {
const regionalUrl = REGIONS.find((x) => x.region === token.split(".")[1])?.url;
const baseUrl: string = options.serverUrl ?? regionalUrl ?? "https://api.svix.com";
this.requestCtx = { baseUrl, token, timeout: options.requestTimeout };
}
public get authentication() {
return new Authentication(this.requestCtx);
}
public get application() {
return new Application(this.requestCtx);
}
public get endpoint() {
return new Endpoint(this.requestCtx);
}
public get eventType() {
return new EventType(this.requestCtx);
}
public get ingest() {
return new Ingest(this.requestCtx);
}
public get integration() {
return new Integration(this.requestCtx);
}
public get management() {
return new Management(this.requestCtx);
}
public get message() {
return new Message(this.requestCtx);
}
public get messageAttempt() {
return new MessageAttempt(this.requestCtx);
}
public get backgroundTask() {
return new BackgroundTask(this.requestCtx);
}
public get statistics() {
return new Statistics(this.requestCtx);
}
public get operationalWebhook() {
return new OperationalWebhook(this.requestCtx);
}
public get operationalWebhookEndpoint() {
return new OperationalWebhookEndpoint(this.requestCtx);
}
}