Skip to content

integrations/sms/twilio/dist

Interfaces

ParseTwilioSmsWebhookOptions

Extended by

Properties

authToken?
optional authToken?: string;
publicUrl?
optional publicUrl?: string;
requireSignature?
optional requireSignature?: boolean;

ParseTwilioSmsWebhookRequestInput

Extends

Properties

authToken?
optional authToken?: string;
Inherited from

ParseTwilioSmsWebhookOptions.authToken

publicUrl?
optional publicUrl?: string;
Inherited from

ParseTwilioSmsWebhookOptions.publicUrl

request
request: Request;
requireSignature?
optional requireSignature?: boolean;
Inherited from

ParseTwilioSmsWebhookOptions.requireSignature


TwilioAccountResource

Indexable

[key: string]: unknown

Properties

friendly_name?
optional friendly_name?: string;
friendlyName?
optional friendlyName?: string;
sid?
optional sid?: string;
status?
optional status?: string;

TwilioIncomingPhoneNumberResource

Indexable

[key: string]: unknown

Properties

capabilities?
optional capabilities?: {
  fax?: boolean;
  mms?: boolean;
  sms?: boolean;
  voice?: boolean;
};
fax?
optional fax?: boolean;
mms?
optional mms?: boolean;
sms?
optional sms?: boolean;
voice?
optional voice?: boolean;
phone_number?
optional phone_number?: string;
phoneNumber?
optional phoneNumber?: string;
sid?
optional sid?: string;

TwilioListMessagesInput

Properties

dateSent?
optional dateSent?: string | Date;
dateSentAfter?
optional dateSentAfter?: string | Date;
dateSentBefore?
optional dateSentBefore?: string | Date;
from?
optional from?: string;
limit?
optional limit?: number;
pageSize?
optional pageSize?: number;
to?
optional to?: string;

TwilioMessageListResource

Properties

messages
messages: TwilioMessageResource[];

TwilioMessageResource

Indexable

[key: string]: unknown

Properties

account_sid?
optional account_sid?: string;
accountSid?
optional accountSid?: string;
body?
optional body?: string;
direction?
optional direction?: string;
from?
optional from?: string;
messaging_service_sid?
optional messaging_service_sid?: string;
messagingServiceSid?
optional messagingServiceSid?: string;
sid
sid: string;
status?
optional status?: string;
to?
optional to?: string;

TwilioSendSmsInput

Properties

body?
optional body?: string;
contentSid?
optional contentSid?: string;
contentVariables?
optional contentVariables?: Record<string, unknown>;
from?
optional from?: string;
maxPrice?
optional maxPrice?: string | number;
mediaUrl?
optional mediaUrl?: string | string[];
messagingServiceSid?
optional messagingServiceSid?: string;
provideFeedback?
optional provideFeedback?: boolean;
scheduleType?
optional scheduleType?: "fixed";
sendAt?
optional sendAt?: string | Date;
shortenUrls?
optional shortenUrls?: boolean;
smartEncoded?
optional smartEncoded?: boolean;
statusCallback?
optional statusCallback?: string;
to
to: string;
validityPeriodSeconds?
optional validityPeriodSeconds?: number;

TwilioSmsClient

Methods

fetchAccount()
fetchAccount(): Promise<TwilioAccountResource>;
Returns

Promise\<TwilioAccountResource>

fetchMessage()
fetchMessage(messageSid): Promise<TwilioMessageResource>;
Parameters
Parameter Type
messageSid string
Returns

Promise\<TwilioMessageResource>

getRawClient()
getRawClient(): Promise<TwilioSmsRawClient>;
Returns

Promise\<TwilioSmsRawClient>

getSdkClient()
getSdkClient(): Promise<TwilioSmsRawClient>;
Returns

Promise\<TwilioSmsRawClient>

Deprecated

Use getRawClient.

listIncomingPhoneNumbers()
listIncomingPhoneNumbers(input?): Promise<TwilioIncomingPhoneNumberResource[]>;
Parameters
Parameter Type
input? { phoneNumber?: string; }
input.phoneNumber? string
Returns

Promise\<TwilioIncomingPhoneNumberResource[]>

listMessages()
listMessages(input?): Promise<TwilioMessageListResource>;
Parameters
Parameter Type
input? TwilioListMessagesInput
Returns

Promise\<TwilioMessageListResource>

sendMessage()
sendMessage(input): Promise<TwilioMessageResource>;
Parameters
Parameter Type
input TwilioSendSmsInput
Returns

Promise\<TwilioMessageResource>

updateMessageStatus()
updateMessageStatus(messageSid, status): Promise<TwilioMessageResource>;
Parameters
Parameter Type
messageSid string
status TwilioMessageStatusUpdate
Returns

Promise\<TwilioMessageResource>


TwilioSmsClientOptions

Extended by

Properties

accountSid
accountSid: string;
authToken
authToken: string;
rawClient?
optional rawClient?: TwilioSmsRawClient;
sdkClient?
optional sdkClient?: TwilioSmsRawClient;
Deprecated

Use rawClient.


TwilioSmsIntegrationOptions

Extends

Properties

accountSid
accountSid: string;
Inherited from

TwilioSmsClientOptions.accountSid

authToken
authToken: string;
Inherited from

TwilioSmsClientOptions.authToken

publicUrl?
optional publicUrl?: string;
rawClient?
optional rawClient?: TwilioSmsRawClient;
Inherited from

TwilioSmsClientOptions.rawClient

requireSignature?
optional requireSignature?: boolean;
sdkClient?
optional sdkClient?: TwilioSmsRawClient;
Deprecated

Use rawClient.

Inherited from

TwilioSmsClientOptions.sdkClient

smsClient?
optional smsClient?: TwilioSmsClient;
webhookAuthToken?
optional webhookAuthToken?: string;

TwilioSmsRawClient

Properties

api
api: {
  accounts: {
     fetch: Promise<TwilioAccountResource>;
  };
};
accounts()
accounts(accountSid): {
  fetch: Promise<TwilioAccountResource>;
};
Parameters
Parameter Type
accountSid string
Returns
{
  fetch: Promise<TwilioAccountResource>;
}
Name Type
fetch() () => Promise\<TwilioAccountResource>
incomingPhoneNumbers
incomingPhoneNumbers: {
  list: Promise<TwilioIncomingPhoneNumberResource[]>;
};
list()
list(input?): Promise<TwilioIncomingPhoneNumberResource[]>;
Parameters
Parameter Type
input? { }
Returns

Promise\<TwilioIncomingPhoneNumberResource[]>

messages
messages: {
  create: Promise<TwilioMessageResource>;
  get: {
     fetch: Promise<TwilioMessageResource>;
     update: Promise<TwilioMessageResource>;
  };
  list: Promise<TwilioMessageResource[]>;
};
create()
create(input): Promise<TwilioMessageResource>;
Parameters
Parameter Type
input unknown
Returns

Promise\<TwilioMessageResource>

get()
get(sid): {
  fetch: Promise<TwilioMessageResource>;
  update: Promise<TwilioMessageResource>;
};
Parameters
Parameter Type
sid string
Returns
{
  fetch: Promise<TwilioMessageResource>;
  update: Promise<TwilioMessageResource>;
}
Name Type
fetch() () => Promise\<TwilioMessageResource>
update() (input) => Promise\<TwilioMessageResource>
list()
list(input?): Promise<TwilioMessageResource[]>;
Parameters
Parameter Type
input? { }
Returns

Promise\<TwilioMessageResource[]>


TwilioSmsWebhook

Properties

accountSid?
optional accountSid?: string;
body?
optional body?: string;
from?
optional from?: string;
media
media: {
  contentType?: string;
  url: string;
}[];
contentType?
optional contentType?: string;
url
url: string;
messageSid?
optional messageSid?: string;
messageStatus?
optional messageStatus?: string;
messagingServiceSid?
optional messagingServiceSid?: string;
numMedia?
optional numMedia?: number;
raw
raw: Record<string, string>;
smsSid?
optional smsSid?: string;
smsStatus?
optional smsStatus?: string;
to?
optional to?: string;

Type Aliases

TwilioMessageStatus

type TwilioMessageStatus =
  | "accepted"
  | "canceled"
  | "delivered"
  | "failed"
  | "partially_delivered"
  | "queued"
  | "read"
  | "received"
  | "receiving"
  | "scheduled"
  | "sending"
  | "sent"
  | "undelivered";

TwilioMessageStatusUpdate

type TwilioMessageStatusUpdate = "canceled" | "cancelled";

TwilioReadMessageInput

type TwilioReadMessageInput =
  | string
  | {
  messageSid: string;
};

TwilioSmsSdkClient

type TwilioSmsSdkClient = TwilioSmsRawClient;

TwilioSmsSdkIncomingPhoneNumberListOptions

type TwilioSmsSdkIncomingPhoneNumberListOptions = NonNullable<Parameters<TwilioSdkIncomingPhoneNumbers["list"]>[0]>;

TwilioSmsSdkMessageCreateOptions

type TwilioSmsSdkMessageCreateOptions = Parameters<TwilioSdkMessages["create"]>[0];

TwilioSmsSdkMessageListOptions

type TwilioSmsSdkMessageListOptions = NonNullable<Parameters<TwilioSdkMessages["list"]>[0]>;

TwilioSmsSdkMessageUpdateOptions

type TwilioSmsSdkMessageUpdateOptions = Parameters<TwilioSdkMessageContext["update"]>[0];

Variables

createTwilioIntegration

const createTwilioIntegration: typeof createTwilioSmsIntegration;

createTwilioIntegrationOperationHandlers

const createTwilioIntegrationOperationHandlers: typeof createTwilioSmsIntegrationOperationHandlers;

Functions

createTwilioSmsClient()

function createTwilioSmsClient(options): TwilioSmsClient;

Parameters

Parameter Type
options TwilioSmsClientOptions

Returns

TwilioSmsClient


createTwilioSmsIntegration()

function createTwilioSmsIntegration(options): {
  bindingReport: OperationBindingReport;
  client: TwilioSmsClient;
  getRawClient: () => Promise<TwilioSmsRawClient>;
  manifest: {
     capabilities: {
        audiences?: ("customer-facing" | "internal-support" | "mixed")[];
        capability: string;
        changesWorkflow?: boolean;
        description?: string;
        exposesSensitiveData?: boolean;
        extension?: boolean;
        label?: string;
        metadata?: Record<string, unknown>;
        providerObjects?: {
           description?: string;
           kind: string;
           label?: string;
           metadata?: Record<string, unknown>;
           schemaName?: string;
        }[];
        requiresCredential?: boolean;
        sideEffect?: boolean;
     }[];
     category: string;
     channelAudiences: ("customer-facing" | "internal-support" | "mixed")[];
     coverage: {
        evidence: {
           label: string;
           url?: string;
        }[];
        notes: string[];
        scope:   | "support-workflow-subset"
           | "provider-api-subset"
           | "connector-required"
           | "local-protocol"
           | "full-provider-api";
     };
     credentialRequirements: {
        description?: string;
        id: string;
        label?: string;
        metadata?: Record<string, unknown>;
        required: boolean;
        scopes: string[];
     }[];
     directions: (
        | "receive-only"
        | "send-only"
        | "inbound-only"
        | "outbound-only"
       | "bidirectional")[];
     id: string;
     limitations: string[];
     maintainers: {
        name: string;
        type: "community" | "official" | "unknown" | "partner";
        url?: string;
     }[];
     metadata?: Record<string, unknown>;
     name: string;
     operations: {
        alias: string;
        audience?: "customer-facing" | "internal-support" | "mixed";
        audiences?: ("customer-facing" | "internal-support" | "mixed")[];
        capability: string;
        changesWorkflow?: boolean;
        description?: string;
        exposesSensitiveData?: boolean;
        extension: boolean;
        externallyVisible?: boolean;
        inputSchema?: unknown;
        inputSchemaName?: string;
        inputSchemaRef?: string;
        label?: string;
        metadata?: Record<string, unknown>;
        outputSchema?: unknown;
        outputSchemaName?: string;
        outputSchemaRef?: string;
        providerObject?: string;
        providerObjects?: {
           description?: string;
           kind: string;
           label?: string;
           metadata?: Record<string, unknown>;
           schemaName?: string;
        }[];
        providerOperation?: string;
        requiredPolicyIds?: string[];
        requiresApproval?: boolean;
        requiresCredential?: boolean;
        sideEffect?: boolean;
     }[];
     packageName: string;
     privacyNotes: string[];
     provider: string;
     trustLevel: "community" | "official" | "verified" | "experimental";
   } & {
     capabilities: readonly [{
        audiences: readonly ["customer-facing"];
        capability: "receive";
        description: "Validates and parses Twilio Messaging webhooks for SDK-user-owned SMS/MMS handling.";
        exposesSensitiveData: true;
        label: "Receive inbound SMS/MMS";
        providerObjects: readonly [{
           kind: "twilioMessage";
           label: "Twilio Message";
        }];
        requiresCredential: true;
      }, {
        audiences: readonly ["customer-facing"];
        capability: "send";
        description: "Creates outbound SMS or MMS messages through the Twilio helper library.";
        exposesSensitiveData: true;
        label: "Send SMS/MMS messages";
        providerObjects: readonly [{
           kind: "twilioMessage";
           label: "Twilio Message";
        }];
        requiresCredential: true;
        sideEffect: true;
      }, {
        audiences: readonly ["customer-facing"];
        capability: "schedule";
        changesWorkflow: true;
        description: "Schedules outbound messages through Twilio's Message Scheduling fields when a Messaging Service SID, SendAt, and ScheduleType are supplied.";
        exposesSensitiveData: true;
        label: "Schedule SMS/MMS messages";
        providerObjects: readonly [{
           kind: "twilioMessage";
           label: "Twilio Message";
        }];
        requiresCredential: true;
        sideEffect: true;
      }, {
        audiences: readonly ["customer-facing", "internal-support"];
        capability: "read-provider-object";
        description: "Reads Twilio Message resources by Message SID.";
        exposesSensitiveData: true;
        label: "Read Twilio messages";
        providerObjects: readonly [{
           kind: "twilioMessage";
           label: "Twilio Message";
        }];
        requiresCredential: true;
      }, {
        audiences: readonly ["customer-facing", "internal-support"];
        capability: "search-provider-object";
        description: "Lists Twilio Message resources with SDK-user-supplied filters.";
        exposesSensitiveData: true;
        label: "List Twilio messages";
        providerObjects: readonly [{
           kind: "twilioMessage";
           label: "Twilio Message";
        }];
        requiresCredential: true;
      }, {
        audiences: readonly ["internal-support"];
        capability: "twilio.webhook-signature";
        description: "Validates X-Twilio-Signature for form-encoded Twilio Messaging webhooks and status callbacks.";
        exposesSensitiveData: true;
        extension: true;
        label: "Validate Twilio webhooks";
        providerObjects: readonly [{
           kind: "twilioWebhook";
           label: "Twilio Webhook";
        }];
        requiresCredential: true;
     }];
     category: "sms";
     channelAudiences: readonly ["customer-facing", "mixed"];
     coverage: {
        evidence: readonly [{
           label: "Twilio Node helper library";
           url: "https://www.npmjs.com/package/twilio";
         }, {
           label: "Twilio Messaging API overview";
           url: "https://www.twilio.com/docs/messaging/api";
         }, {
           label: "Twilio Message resource";
           url: "https://www.twilio.com/docs/messaging/api/message-resource";
         }, {
           label: "Twilio webhook security";
           url: "https://www.twilio.com/docs/usage/webhooks/webhooks-security";
        }];
        notes: readonly ["Implements normalized SMS/MMS send, read, list, cancel, readiness, webhook, and Twilio SDK client access with the official Twilio Node helper library.", "Twilio SMS and Twilio Voice are separate Cognidesk category packages even though they use the same upstream helper library.", "Messaging Services administration, Verify, Conversations, Content, Studio, toll-free/A2P compliance, pricing, and carrier policy remain available only through raw Twilio client access or future normalized operations."];
        scope: "provider-api-subset";
     };
     credentialRequirements: readonly [{
        description: "Server-side Twilio account credentials used for Messaging REST API calls and webhook signature validation.";
        id: "twilio-account";
        label: "Twilio Account SID and Auth Token";
        metadata: {
           scopeKind: "provider-permission";
        };
        required: true;
      }, {
        description: "A Twilio SMS/MMS-capable phone number or Messaging Service configured by the SDK user.";
        id: "twilio-sms-sender";
        label: "Twilio SMS/MMS-capable sender";
        metadata: {
           scopeKind: "internal-capability";
        };
        required: true;
     }];
     directions: readonly ["receive-only", "send-only", "bidirectional"];
     id: "sms.twilio";
     limitations: readonly ["Live SMS readiness depends on the SDK user's Twilio account, SMS-capable sender, Messaging Service configuration, phone-number capabilities, regions, carrier registration, webhooks, and account permissions."];
     maintainers: readonly [{
        name: "Cognidesk";
        type: "official";
     }];
     metadata: {
        implementation: {
           sdkPackage: "twilio";
           strategy: "official-sdk";
           verifiedAt: "2026-06-21";
           verifiedVersion: "6.0.2";
        };
        rawClient: {
           coverage: "upstream-sdk";
           export: "getRawClient";
        };
        sdkClient: {
           coverage: "deprecated-raw-client-alias";
           export: "getSdkClient";
        };
     };
     name: "Twilio Programmable Messaging";
     operations: readonly [{
        alias: "sms.message.receive";
        audiences: readonly ["customer-facing"];
        capability: "receive";
        exposesSensitiveData: true;
        label: "Receive SMS";
        providerObject: "smsMessage";
        providerOperation: "parseWebhook";
      }, {
        alias: "sms.message.send";
        audiences: readonly ["customer-facing"];
        capability: "send";
        exposesSensitiveData: true;
        externallyVisible: true;
        label: "Send SMS";
        providerObject: "smsMessage";
        providerOperation: "sendMessage";
        requiresApproval: true;
        sideEffect: true;
      }, {
        alias: "sms.message.read";
        audiences: readonly ["customer-facing", "internal-support"];
        capability: "read-provider-object";
        exposesSensitiveData: true;
        label: "Read SMS";
        providerObject: "smsMessage";
        providerOperation: "fetchMessage";
      }, {
        alias: "sms.message.search";
        audiences: readonly ["customer-facing", "internal-support"];
        capability: "search-provider-object";
        exposesSensitiveData: true;
        label: "Search SMS";
        providerObject: "smsMessage";
        providerOperation: "listMessages";
     }];
     packageName: "@cognidesk/integration-sms-twilio";
     privacyNotes: readonly ["Phone numbers, message bodies, message metadata, webhook parameters, delivery status, and media URLs can contain customer data and are exchanged with Twilio.", "Twilio credentials stay server-side and are never issued to browsers by this package.", "Outbound SMS consent, opt-in/opt-out handling, quiet hours, campaign registration, content policy, retention, and regional compliance are SDK-user-owned responsibilities."];
     provider: "twilio";
     trustLevel: "official";
  };
  metadata?: Record<string, unknown>;
  operationAliases: (
     | "sms.message.receive"
     | "sms.message.send"
     | "sms.message.read"
    | "sms.message.search")[];
  operations: {
     sms.message.read: (input, _context) => Promise<TwilioMessageResource>;
     sms.message.receive: (input, _context) => Promise<TwilioSmsWebhook>;
     sms.message.search: (input, _context) => Promise<TwilioMessageListResource>;
     sms.message.send: (input, _context) => Promise<TwilioMessageResource>;
  };
  getOperationHandler: {
     sms.message.read: (input, _context) => Promise<TwilioMessageResource>;
     sms.message.receive: (input, _context) => Promise<TwilioSmsWebhook>;
     sms.message.search: (input, _context) => Promise<TwilioMessageListResource>;
     sms.message.send: (input, _context) => Promise<TwilioMessageResource>;
  }[Alias];
  requireOperationHandler: {
     sms.message.read: (input, _context) => Promise<TwilioMessageResource>;
     sms.message.receive: (input, _context) => Promise<TwilioSmsWebhook>;
     sms.message.search: (input, _context) => Promise<TwilioMessageListResource>;
     sms.message.send: (input, _context) => Promise<TwilioMessageResource>;
  }[Alias];
  run: Promise<Awaited<ReturnType<{
     sms.message.read: (input, _context) => Promise<TwilioMessageResource>;
     sms.message.receive: (input, _context) => Promise<TwilioSmsWebhook>;
     sms.message.search: (input, _context) => Promise<TwilioMessageListResource>;
     sms.message.send: (input, _context) => Promise<TwilioMessageResource>;
  }[Alias]>>>;
};

Parameters

Parameter Type
options TwilioSmsIntegrationOptions

Returns

{
  bindingReport: OperationBindingReport;
  client: TwilioSmsClient;
  getRawClient: () => Promise<TwilioSmsRawClient>;
  manifest: {
     capabilities: {
        audiences?: ("customer-facing" | "internal-support" | "mixed")[];
        capability: string;
        changesWorkflow?: boolean;
        description?: string;
        exposesSensitiveData?: boolean;
        extension?: boolean;
        label?: string;
        metadata?: Record<string, unknown>;
        providerObjects?: {
           description?: string;
           kind: string;
           label?: string;
           metadata?: Record<string, unknown>;
           schemaName?: string;
        }[];
        requiresCredential?: boolean;
        sideEffect?: boolean;
     }[];
     category: string;
     channelAudiences: ("customer-facing" | "internal-support" | "mixed")[];
     coverage: {
        evidence: {
           label: string;
           url?: string;
        }[];
        notes: string[];
        scope:   | "support-workflow-subset"
           | "provider-api-subset"
           | "connector-required"
           | "local-protocol"
           | "full-provider-api";
     };
     credentialRequirements: {
        description?: string;
        id: string;
        label?: string;
        metadata?: Record<string, unknown>;
        required: boolean;
        scopes: string[];
     }[];
     directions: (
        | "receive-only"
        | "send-only"
        | "inbound-only"
        | "outbound-only"
       | "bidirectional")[];
     id: string;
     limitations: string[];
     maintainers: {
        name: string;
        type: "community" | "official" | "unknown" | "partner";
        url?: string;
     }[];
     metadata?: Record<string, unknown>;
     name: string;
     operations: {
        alias: string;
        audience?: "customer-facing" | "internal-support" | "mixed";
        audiences?: ("customer-facing" | "internal-support" | "mixed")[];
        capability: string;
        changesWorkflow?: boolean;
        description?: string;
        exposesSensitiveData?: boolean;
        extension: boolean;
        externallyVisible?: boolean;
        inputSchema?: unknown;
        inputSchemaName?: string;
        inputSchemaRef?: string;
        label?: string;
        metadata?: Record<string, unknown>;
        outputSchema?: unknown;
        outputSchemaName?: string;
        outputSchemaRef?: string;
        providerObject?: string;
        providerObjects?: {
           description?: string;
           kind: string;
           label?: string;
           metadata?: Record<string, unknown>;
           schemaName?: string;
        }[];
        providerOperation?: string;
        requiredPolicyIds?: string[];
        requiresApproval?: boolean;
        requiresCredential?: boolean;
        sideEffect?: boolean;
     }[];
     packageName: string;
     privacyNotes: string[];
     provider: string;
     trustLevel: "community" | "official" | "verified" | "experimental";
   } & {
     capabilities: readonly [{
        audiences: readonly ["customer-facing"];
        capability: "receive";
        description: "Validates and parses Twilio Messaging webhooks for SDK-user-owned SMS/MMS handling.";
        exposesSensitiveData: true;
        label: "Receive inbound SMS/MMS";
        providerObjects: readonly [{
           kind: "twilioMessage";
           label: "Twilio Message";
        }];
        requiresCredential: true;
      }, {
        audiences: readonly ["customer-facing"];
        capability: "send";
        description: "Creates outbound SMS or MMS messages through the Twilio helper library.";
        exposesSensitiveData: true;
        label: "Send SMS/MMS messages";
        providerObjects: readonly [{
           kind: "twilioMessage";
           label: "Twilio Message";
        }];
        requiresCredential: true;
        sideEffect: true;
      }, {
        audiences: readonly ["customer-facing"];
        capability: "schedule";
        changesWorkflow: true;
        description: "Schedules outbound messages through Twilio's Message Scheduling fields when a Messaging Service SID, SendAt, and ScheduleType are supplied.";
        exposesSensitiveData: true;
        label: "Schedule SMS/MMS messages";
        providerObjects: readonly [{
           kind: "twilioMessage";
           label: "Twilio Message";
        }];
        requiresCredential: true;
        sideEffect: true;
      }, {
        audiences: readonly ["customer-facing", "internal-support"];
        capability: "read-provider-object";
        description: "Reads Twilio Message resources by Message SID.";
        exposesSensitiveData: true;
        label: "Read Twilio messages";
        providerObjects: readonly [{
           kind: "twilioMessage";
           label: "Twilio Message";
        }];
        requiresCredential: true;
      }, {
        audiences: readonly ["customer-facing", "internal-support"];
        capability: "search-provider-object";
        description: "Lists Twilio Message resources with SDK-user-supplied filters.";
        exposesSensitiveData: true;
        label: "List Twilio messages";
        providerObjects: readonly [{
           kind: "twilioMessage";
           label: "Twilio Message";
        }];
        requiresCredential: true;
      }, {
        audiences: readonly ["internal-support"];
        capability: "twilio.webhook-signature";
        description: "Validates X-Twilio-Signature for form-encoded Twilio Messaging webhooks and status callbacks.";
        exposesSensitiveData: true;
        extension: true;
        label: "Validate Twilio webhooks";
        providerObjects: readonly [{
           kind: "twilioWebhook";
           label: "Twilio Webhook";
        }];
        requiresCredential: true;
     }];
     category: "sms";
     channelAudiences: readonly ["customer-facing", "mixed"];
     coverage: {
        evidence: readonly [{
           label: "Twilio Node helper library";
           url: "https://www.npmjs.com/package/twilio";
         }, {
           label: "Twilio Messaging API overview";
           url: "https://www.twilio.com/docs/messaging/api";
         }, {
           label: "Twilio Message resource";
           url: "https://www.twilio.com/docs/messaging/api/message-resource";
         }, {
           label: "Twilio webhook security";
           url: "https://www.twilio.com/docs/usage/webhooks/webhooks-security";
        }];
        notes: readonly ["Implements normalized SMS/MMS send, read, list, cancel, readiness, webhook, and Twilio SDK client access with the official Twilio Node helper library.", "Twilio SMS and Twilio Voice are separate Cognidesk category packages even though they use the same upstream helper library.", "Messaging Services administration, Verify, Conversations, Content, Studio, toll-free/A2P compliance, pricing, and carrier policy remain available only through raw Twilio client access or future normalized operations."];
        scope: "provider-api-subset";
     };
     credentialRequirements: readonly [{
        description: "Server-side Twilio account credentials used for Messaging REST API calls and webhook signature validation.";
        id: "twilio-account";
        label: "Twilio Account SID and Auth Token";
        metadata: {
           scopeKind: "provider-permission";
        };
        required: true;
      }, {
        description: "A Twilio SMS/MMS-capable phone number or Messaging Service configured by the SDK user.";
        id: "twilio-sms-sender";
        label: "Twilio SMS/MMS-capable sender";
        metadata: {
           scopeKind: "internal-capability";
        };
        required: true;
     }];
     directions: readonly ["receive-only", "send-only", "bidirectional"];
     id: "sms.twilio";
     limitations: readonly ["Live SMS readiness depends on the SDK user's Twilio account, SMS-capable sender, Messaging Service configuration, phone-number capabilities, regions, carrier registration, webhooks, and account permissions."];
     maintainers: readonly [{
        name: "Cognidesk";
        type: "official";
     }];
     metadata: {
        implementation: {
           sdkPackage: "twilio";
           strategy: "official-sdk";
           verifiedAt: "2026-06-21";
           verifiedVersion: "6.0.2";
        };
        rawClient: {
           coverage: "upstream-sdk";
           export: "getRawClient";
        };
        sdkClient: {
           coverage: "deprecated-raw-client-alias";
           export: "getSdkClient";
        };
     };
     name: "Twilio Programmable Messaging";
     operations: readonly [{
        alias: "sms.message.receive";
        audiences: readonly ["customer-facing"];
        capability: "receive";
        exposesSensitiveData: true;
        label: "Receive SMS";
        providerObject: "smsMessage";
        providerOperation: "parseWebhook";
      }, {
        alias: "sms.message.send";
        audiences: readonly ["customer-facing"];
        capability: "send";
        exposesSensitiveData: true;
        externallyVisible: true;
        label: "Send SMS";
        providerObject: "smsMessage";
        providerOperation: "sendMessage";
        requiresApproval: true;
        sideEffect: true;
      }, {
        alias: "sms.message.read";
        audiences: readonly ["customer-facing", "internal-support"];
        capability: "read-provider-object";
        exposesSensitiveData: true;
        label: "Read SMS";
        providerObject: "smsMessage";
        providerOperation: "fetchMessage";
      }, {
        alias: "sms.message.search";
        audiences: readonly ["customer-facing", "internal-support"];
        capability: "search-provider-object";
        exposesSensitiveData: true;
        label: "Search SMS";
        providerObject: "smsMessage";
        providerOperation: "listMessages";
     }];
     packageName: "@cognidesk/integration-sms-twilio";
     privacyNotes: readonly ["Phone numbers, message bodies, message metadata, webhook parameters, delivery status, and media URLs can contain customer data and are exchanged with Twilio.", "Twilio credentials stay server-side and are never issued to browsers by this package.", "Outbound SMS consent, opt-in/opt-out handling, quiet hours, campaign registration, content policy, retention, and regional compliance are SDK-user-owned responsibilities."];
     provider: "twilio";
     trustLevel: "official";
  };
  metadata?: Record<string, unknown>;
  operationAliases: (
     | "sms.message.receive"
     | "sms.message.send"
     | "sms.message.read"
    | "sms.message.search")[];
  operations: {
     sms.message.read: (input, _context) => Promise<TwilioMessageResource>;
     sms.message.receive: (input, _context) => Promise<TwilioSmsWebhook>;
     sms.message.search: (input, _context) => Promise<TwilioMessageListResource>;
     sms.message.send: (input, _context) => Promise<TwilioMessageResource>;
  };
  getOperationHandler: {
     sms.message.read: (input, _context) => Promise<TwilioMessageResource>;
     sms.message.receive: (input, _context) => Promise<TwilioSmsWebhook>;
     sms.message.search: (input, _context) => Promise<TwilioMessageListResource>;
     sms.message.send: (input, _context) => Promise<TwilioMessageResource>;
  }[Alias];
  requireOperationHandler: {
     sms.message.read: (input, _context) => Promise<TwilioMessageResource>;
     sms.message.receive: (input, _context) => Promise<TwilioSmsWebhook>;
     sms.message.search: (input, _context) => Promise<TwilioMessageListResource>;
     sms.message.send: (input, _context) => Promise<TwilioMessageResource>;
  }[Alias];
  run: Promise<Awaited<ReturnType<{
     sms.message.read: (input, _context) => Promise<TwilioMessageResource>;
     sms.message.receive: (input, _context) => Promise<TwilioSmsWebhook>;
     sms.message.search: (input, _context) => Promise<TwilioMessageListResource>;
     sms.message.send: (input, _context) => Promise<TwilioMessageResource>;
  }[Alias]>>>;
}
Name Type
bindingReport OperationBindingReport
client TwilioSmsClient
getRawClient() () => Promise\<TwilioSmsRawClient>
manifest { capabilities: { audiences?: ("customer-facing" | "internal-support" | "mixed")[]; capability: string; changesWorkflow?: boolean; description?: string; exposesSensitiveData?: boolean; extension?: boolean; label?: string; metadata?: Record\<string, unknown>; providerObjects?: { description?: string; kind: string; label?: string; metadata?: Record\<string, unknown>; schemaName?: string; }[]; requiresCredential?: boolean; sideEffect?: boolean; }[]; category: string; channelAudiences: ("customer-facing" | "internal-support" | "mixed")[]; coverage: { evidence: { label: string; url?: string; }[]; notes: string[]; scope: | "support-workflow-subset" | "provider-api-subset" | "connector-required" | "local-protocol" | "full-provider-api"; }; credentialRequirements: { description?: string; id: string; label?: string; metadata?: Record\<string, unknown>; required: boolean; scopes: string[]; }[]; directions: ( | "receive-only" | "send-only" | "inbound-only" | "outbound-only" | "bidirectional")[]; id: string; limitations: string[]; maintainers: { name: string; type: "community" | "official" | "unknown" | "partner"; url?: string; }[]; metadata?: Record\<string, unknown>; name: string; operations: { alias: string; audience?: "customer-facing" | "internal-support" | "mixed"; audiences?: ("customer-facing" | "internal-support" | "mixed")[]; capability: string; changesWorkflow?: boolean; description?: string; exposesSensitiveData?: boolean; extension: boolean; externallyVisible?: boolean; inputSchema?: unknown; inputSchemaName?: string; inputSchemaRef?: string; label?: string; metadata?: Record\<string, unknown>; outputSchema?: unknown; outputSchemaName?: string; outputSchemaRef?: string; providerObject?: string; providerObjects?: { description?: string; kind: string; label?: string; metadata?: Record\<string, unknown>; schemaName?: string; }[]; providerOperation?: string; requiredPolicyIds?: string[]; requiresApproval?: boolean; requiresCredential?: boolean; sideEffect?: boolean; }[]; packageName: string; privacyNotes: string[]; provider: string; trustLevel: "community" | "official" | "verified" | "experimental"; } & { capabilities: readonly [{ audiences: readonly ["customer-facing"]; capability: "receive"; description: "Validates and parses Twilio Messaging webhooks for SDK-user-owned SMS/MMS handling."; exposesSensitiveData: true; label: "Receive inbound SMS/MMS"; providerObjects: readonly [{ kind: "twilioMessage"; label: "Twilio Message"; }]; requiresCredential: true; }, { audiences: readonly ["customer-facing"]; capability: "send"; description: "Creates outbound SMS or MMS messages through the Twilio helper library."; exposesSensitiveData: true; label: "Send SMS/MMS messages"; providerObjects: readonly [{ kind: "twilioMessage"; label: "Twilio Message"; }]; requiresCredential: true; sideEffect: true; }, { audiences: readonly ["customer-facing"]; capability: "schedule"; changesWorkflow: true; description: "Schedules outbound messages through Twilio's Message Scheduling fields when a Messaging Service SID, SendAt, and ScheduleType are supplied."; exposesSensitiveData: true; label: "Schedule SMS/MMS messages"; providerObjects: readonly [{ kind: "twilioMessage"; label: "Twilio Message"; }]; requiresCredential: true; sideEffect: true; }, { audiences: readonly ["customer-facing", "internal-support"]; capability: "read-provider-object"; description: "Reads Twilio Message resources by Message SID."; exposesSensitiveData: true; label: "Read Twilio messages"; providerObjects: readonly [{ kind: "twilioMessage"; label: "Twilio Message"; }]; requiresCredential: true; }, { audiences: readonly ["customer-facing", "internal-support"]; capability: "search-provider-object"; description: "Lists Twilio Message resources with SDK-user-supplied filters."; exposesSensitiveData: true; label: "List Twilio messages"; providerObjects: readonly [{ kind: "twilioMessage"; label: "Twilio Message"; }]; requiresCredential: true; }, { audiences: readonly ["internal-support"]; capability: "twilio.webhook-signature"; description: "Validates X-Twilio-Signature for form-encoded Twilio Messaging webhooks and status callbacks."; exposesSensitiveData: true; extension: true; label: "Validate Twilio webhooks"; providerObjects: readonly [{ kind: "twilioWebhook"; label: "Twilio Webhook"; }]; requiresCredential: true; }]; category: "sms"; channelAudiences: readonly ["customer-facing", "mixed"]; coverage: { evidence: readonly [{ label: "Twilio Node helper library"; url: "https://www.npmjs.com/package/twilio"; }, { label: "Twilio Messaging API overview"; url: "https://www.twilio.com/docs/messaging/api"; }, { label: "Twilio Message resource"; url: "https://www.twilio.com/docs/messaging/api/message-resource"; }, { label: "Twilio webhook security"; url: "https://www.twilio.com/docs/usage/webhooks/webhooks-security"; }]; notes: readonly ["Implements normalized SMS/MMS send, read, list, cancel, readiness, webhook, and Twilio SDK client access with the official Twilio Node helper library.", "Twilio SMS and Twilio Voice are separate Cognidesk category packages even though they use the same upstream helper library.", "Messaging Services administration, Verify, Conversations, Content, Studio, toll-free/A2P compliance, pricing, and carrier policy remain available only through raw Twilio client access or future normalized operations."]; scope: "provider-api-subset"; }; credentialRequirements: readonly [{ description: "Server-side Twilio account credentials used for Messaging REST API calls and webhook signature validation."; id: "twilio-account"; label: "Twilio Account SID and Auth Token"; metadata: { scopeKind: "provider-permission"; }; required: true; }, { description: "A Twilio SMS/MMS-capable phone number or Messaging Service configured by the SDK user."; id: "twilio-sms-sender"; label: "Twilio SMS/MMS-capable sender"; metadata: { scopeKind: "internal-capability"; }; required: true; }]; directions: readonly ["receive-only", "send-only", "bidirectional"]; id: "sms.twilio"; limitations: readonly ["Live SMS readiness depends on the SDK user's Twilio account, SMS-capable sender, Messaging Service configuration, phone-number capabilities, regions, carrier registration, webhooks, and account permissions."]; maintainers: readonly [{ name: "Cognidesk"; type: "official"; }]; metadata: { implementation: { sdkPackage: "twilio"; strategy: "official-sdk"; verifiedAt: "2026-06-21"; verifiedVersion: "6.0.2"; }; rawClient: { coverage: "upstream-sdk"; export: "getRawClient"; }; sdkClient: { coverage: "deprecated-raw-client-alias"; export: "getSdkClient"; }; }; name: "Twilio Programmable Messaging"; operations: readonly [{ alias: "sms.message.receive"; audiences: readonly ["customer-facing"]; capability: "receive"; exposesSensitiveData: true; label: "Receive SMS"; providerObject: "smsMessage"; providerOperation: "parseWebhook"; }, { alias: "sms.message.send"; audiences: readonly ["customer-facing"]; capability: "send"; exposesSensitiveData: true; externallyVisible: true; label: "Send SMS"; providerObject: "smsMessage"; providerOperation: "sendMessage"; requiresApproval: true; sideEffect: true; }, { alias: "sms.message.read"; audiences: readonly ["customer-facing", "internal-support"]; capability: "read-provider-object"; exposesSensitiveData: true; label: "Read SMS"; providerObject: "smsMessage"; providerOperation: "fetchMessage"; }, { alias: "sms.message.search"; audiences: readonly ["customer-facing", "internal-support"]; capability: "search-provider-object"; exposesSensitiveData: true; label: "Search SMS"; providerObject: "smsMessage"; providerOperation: "listMessages"; }]; packageName: "@cognidesk/integration-sms-twilio"; privacyNotes: readonly ["Phone numbers, message bodies, message metadata, webhook parameters, delivery status, and media URLs can contain customer data and are exchanged with Twilio.", "Twilio credentials stay server-side and are never issued to browsers by this package.", "Outbound SMS consent, opt-in/opt-out handling, quiet hours, campaign registration, content policy, retention, and regional compliance are SDK-user-owned responsibilities."]; provider: "twilio"; trustLevel: "official"; }
metadata? Record\<string, unknown>
operationAliases ( | "sms.message.receive" | "sms.message.send" | "sms.message.read" | "sms.message.search")[]
operations { sms.message.read: (input, _context) => Promise\<TwilioMessageResource>; sms.message.receive: (input, _context) => Promise\<TwilioSmsWebhook>; sms.message.search: (input, _context) => Promise\<TwilioMessageListResource>; sms.message.send: (input, _context) => Promise\<TwilioMessageResource>; }
operations.sms.message.read() (input, _context) => Promise\<TwilioMessageResource>
operations.sms.message.receive() (input, _context) => Promise\<TwilioSmsWebhook>
operations.sms.message.search() (input, _context) => Promise\<TwilioMessageListResource>
operations.sms.message.send() (input, _context) => Promise\<TwilioMessageResource>
getOperationHandler() (alias) => { sms.message.read: (input, _context) => Promise\<TwilioMessageResource>; sms.message.receive: (input, _context) => Promise\<TwilioSmsWebhook>; sms.message.search: (input, _context) => Promise\<TwilioMessageListResource>; sms.message.send: (input, _context) => Promise\<TwilioMessageResource>; }[Alias]
requireOperationHandler() (alias) => { sms.message.read: (input, _context) => Promise\<TwilioMessageResource>; sms.message.receive: (input, _context) => Promise\<TwilioSmsWebhook>; sms.message.search: (input, _context) => Promise\<TwilioMessageListResource>; sms.message.send: (input, _context) => Promise\<TwilioMessageResource>; }[Alias]
run() ( alias, input, context?) => Promise\<Awaited\<ReturnType\<{ sms.message.read: (input, _context) => Promise\<TwilioMessageResource>; sms.message.receive: (input, _context) => Promise\<TwilioSmsWebhook>; sms.message.search: (input, _context) => Promise\<TwilioMessageListResource>; sms.message.send: (input, _context) => Promise\<TwilioMessageResource>; }[Alias]>>>

createTwilioSmsIntegrationOperationHandlers()

function createTwilioSmsIntegrationOperationHandlers(options): {
  sms.message.read: (input, _context) => Promise<TwilioMessageResource>;
  sms.message.receive: (input, _context) => Promise<TwilioSmsWebhook>;
  sms.message.search: (input, _context) => Promise<TwilioMessageListResource>;
  sms.message.send: (input, _context) => Promise<TwilioMessageResource>;
};

Parameters

Parameter Type
options TwilioSmsIntegrationOptions

Returns

{
  sms.message.read: (input, _context) => Promise<TwilioMessageResource>;
  sms.message.receive: (input, _context) => Promise<TwilioSmsWebhook>;
  sms.message.search: (input, _context) => Promise<TwilioMessageListResource>;
  sms.message.send: (input, _context) => Promise<TwilioMessageResource>;
}
Name Type
sms.message.read() (input, _context) => Promise\<TwilioMessageResource>
sms.message.receive() (input, _context) => Promise\<TwilioSmsWebhook>
sms.message.search() (input, _context) => Promise\<TwilioMessageListResource>
sms.message.send() (input, _context) => Promise\<TwilioMessageResource>

parseTwilioSmsWebhook()

function parseTwilioSmsWebhook(request, options?): Promise<TwilioSmsWebhook>;

Parameters

Parameter Type
request Request
options? ParseTwilioSmsWebhookOptions

Returns

Promise\<TwilioSmsWebhook>


twilioSmsCredentialStatuses()

function twilioSmsCredentialStatuses(input): {
  expiresAt?: string;
  message?: string;
  providerPackageId?: string;
  requirementId: string;
  scopes?: string[];
  state:   | "required"
     | "configured"
     | "permission-blocked"
     | "not-required"
     | "missing"
     | "expired"
     | "insufficient-scope"
     | "unavailable";
}[];

Parameters

Parameter Type
input { accountSid?: string; authToken?: string; fromNumber?: string; messagingServiceSid?: string; }
input.accountSid? string
input.authToken? string
input.fromNumber? string
input.messagingServiceSid? string

Returns

{ expiresAt?: string; message?: string; providerPackageId?: string; requirementId: string; scopes?: string[]; state: | "required" | "configured" | "permission-blocked" | "not-required" | "missing" | "expired" | "insufficient-scope" | "unavailable"; }[]


validateTwilioRequestSignature()

function validateTwilioRequestSignature(input): boolean;

Parameters

Parameter Type
input { authToken: string; params: Record\<string, string>; signature: string; url: string; }
input.authToken string
input.params Record\<string, string>
input.signature string
input.url string

Returns

boolean

References

twilioSmsProviderManifest

Re-exports twilioSmsProviderManifest