Zaptickdocs
SDK

TypeScript types

Everything the SDK returns has a named type you can import. Pair with typed form libraries or zod schemas for end-to-end safety.

#Top-level exports

Types for every namespace are re-exported from the package root. You never need to dig into subpaths.

TypeScript
import type {
  // Messages
  SendTemplateParams, SendTextParams, SendMediaParams,
  MessageResponse, SendTextResponse,

  // Templates
  Template, TemplateComponent, TemplateButton,
  TemplateListParams, TemplateListResponse,

  // Contacts
  Contact, CreateContactParams, UpdateContactParams,
  ContactListParams, ContactListResponse,

  // Campaigns
  Campaign, CreateCampaignParams, LaunchCampaignParams,

  // Workflows / Chatbots / Inbox / Flows
  Workflow, Chatbot, Conversation, Flow,

  // Webhooks
  WebhookEvent, WebhookEventName, VerifySignatureParams,

  // Errors
  ZaptickError, ZaptickAuthError, ZaptickRateLimitError,
} from 'zaptick';

#Event type discrimination

The WebhookEvent union is discriminated on type, so TypeScript narrows data for you:

TypeScript
import type { WebhookEvent } from 'zaptick';

function handle(event: WebhookEvent) {
  switch (event.type) {
    case 'message.delivered':
      // event.data is typed as { messageId, phone, deliveredAt, ... }
      break;
    case 'campaign.completed':
      // event.data is typed as { campaignId, sent, delivered, failed }
      break;
    case 'conversation.incoming':
      // event.data is typed as { conversationId, from, body, ... }
      break;
  }
}

#Enum-like unions

We prefer string-literal unions over TS enums so types survive JSON.stringify and interop cleanly with wire formats.

TypeScript
type WorkflowStatus = 'draft' | 'active' | 'paused' | 'archived';
type ChatbotStatus  = 'draft' | 'live' | 'paused';
type FlowStatus     = 'draft' | 'published' | 'retired';