@sirhc77/signalwire-rest-sdk
Version:
An SDK for the SignalWire REST API
1,901 lines (1,549 loc) • 87.9 kB
text/typescript
import {PagedResponse} from "./PagedResponse";
import {SWML} from "./SWMLTypes";
export interface CreateCallRequestParamsBase {
from: string;
to: string;
callerId?: string;
fallbackUrl?: string;
}
export interface CreateCallRequestBase {
command: 'dial',
params: CreateCallRequestParamsBase
}
export interface CreateCallRequestUrlParams extends CreateCallRequestParamsBase {
url: string;
}
export interface CreateCallRequestSwmlParams extends CreateCallRequestParamsBase {
swml: SWML;
}
export interface CreateCallRequestWithUrl extends CreateCallRequestBase {
type: 'url';
params: CreateCallRequestUrlParams;
}
export interface CreateCallRequestWithSwml extends CreateCallRequestBase {
type: 'swml';
params: CreateCallRequestSwmlParams;
}
export type CreateCallRequest = CreateCallRequestWithUrl | CreateCallRequestWithSwml;
export interface UpdateCallRequestParamsBase {
id: string;
fallbackUrl?: string;
status?: 'cancelled' | 'completed';
}
export interface UpdateCallRequestBase {
command: 'update',
params: UpdateCallRequestParamsBase
}
export interface UpdateCallRequestUrlParams extends UpdateCallRequestParamsBase {
url: string;
}
export interface UpdateCallRequestSwmlParams extends UpdateCallRequestParamsBase {
swml: SWML;
}
export interface UpdateCallRequestWithUrl extends UpdateCallRequestBase {
type: 'url';
params: UpdateCallRequestUrlParams;
}
export interface UpdateCallRequestWithSwml extends UpdateCallRequestBase {
type: 'swml';
params: UpdateCallRequestSwmlParams;
}
export type UpdateCallRequest = UpdateCallRequestWithUrl | UpdateCallRequestWithSwml;
export interface CallRequestCharge {
description: string;
amount: number;
}
export interface LogCharge {
description: string;
charge: number;
}
export interface CallResponse {
id: string;
from: string;
to: string;
direction: string;
status: string;
duration: number;
durationMS: number;
billableDuration: number;
source: string;
type: string;
chargeDetails: CallRequestCharge[];
}
export interface CallsNamespace {
createCall(request: CreateCallRequest): Promise<CallResponse>;
updateCall(request: UpdateCallRequest): Promise<CallResponse>;
}
export interface CallingNamespace {
calls: CallsNamespace;
}
export type ChunkingStrategy = 'sentence' | 'paragraph' | 'page' | 'sliding';
export type DocumentStatus = 'submitted' | 'in_process' | 'completed' | 'failed';
export interface DatasphereDocument {
id: string;
filename: string;
status: DocumentStatus;
tags: string[];
chunkingStrategy: ChunkingStrategy;
maxSentencesPerChunk: number;
splitNewlines: boolean;
overlapSize: number;
chunkSize: number;
numberOfChunks: number;
createdAt: string;
updatedAt: string;
}
export interface CreateDocumentRequestBase {
chunkingStrategy: ChunkingStrategy;
url: string;
tags?: string[];
}
export interface CreateSentenceStrategyDocumentRequest extends CreateDocumentRequestBase {
chunkingStrategy: 'sentence';
maxSentencesPerChunk?: number;
splitNewlines?: boolean;
}
export interface CreateSlidingStrategyDocumentRequest extends CreateDocumentRequestBase {
chunkingStrategy: 'sliding';
overlapSize?: number;
chunkSize?: number;
}
export interface CreatePageStrategyDocumentRequest extends CreateDocumentRequestBase {
chunkingStrategy: 'page';
}
export interface CreateParagraphStrategyDocumentRequest extends CreateDocumentRequestBase {
chunkingStrategy: 'paragraph';
}
export type CreateDocumentRequest = CreateSentenceStrategyDocumentRequest | CreateSlidingStrategyDocumentRequest |
CreatePageStrategyDocumentRequest | CreateParagraphStrategyDocumentRequest;
export interface SearchDocumentRequest {
tags?: string[];
documentId?: string;
queryString: string;
distance?: number;
count?: number;
language?: string;
posToExpand?: string[];
maxSynonyms?: number;
}
export interface SearchDocumentResult {
text: string;
documentId: string;
}
export interface SearchDocumentsResponse {
chunks: SearchDocumentResult[];
}
export interface UpdateDocumentRequest {
tags?: string[];
}
export interface DocumentsNamespace {
listDocuments(): AsyncIterableIterator<DatasphereDocument>;
listDocumentsPage(url?: string): Promise<PagedResponse<DatasphereDocument>>;
createDocument(request: CreateDocumentRequest): Promise<DatasphereDocument>;
searchDocument(request: SearchDocumentRequest): Promise<SearchDocumentsResponse>;
updateDocument(id: string, request: UpdateDocumentRequest): Promise<DatasphereDocument>;
deleteDocument(id: string): Promise<void>;
}
export interface DatasphereDocumentChunk {
id: string;
datasphereDocumentId: string;
projectId: string;
status: string;
tags: string[];
content: string;
createdAt: string;
updatedAt: string;
}
export interface ChunksNamespace {
listChunks(documentId: string): AsyncIterableIterator<DatasphereDocumentChunk>;
listChunksPage(documentId: string, url?: string): Promise<PagedResponse<DatasphereDocumentChunk>>;
retrieveChunk(documentId: string, chunkId: string): Promise<DatasphereDocumentChunk>;
deleteChunk(documentId: string, chunkId: string): Promise<void>;
}
export interface DatasphereNamespace {
documents: DocumentsNamespace;
chunks: ChunksNamespace;
}
export interface MfaTokenViaTextRequest {
to: string;
from?: string;
message?: string
tokenLength?: number;
maxAttempts?: number;
allowAlphas?: boolean;
validFor?: number;
}
export interface MfaTokenViaTextResponse {
id: string;
success: boolean;
to: string;
channel: 'sms' | 'call';
}
export interface MfaTokenViaPhoneCallRequest {
to: string;
from?: string;
message?: string;
tokenLength?: string;
maxAttempts?: string;
allowAlphas?: string;
validFor?: string;
}
export interface MfaTokenViaPhoneCallResponse {
id: string;
success: boolean;
to: string;
channel: 'sms' | 'call';
}
export interface VerifyMfaTokenRequest {
token: string;
}
export interface VerifyMfaTokenResponse {
success: boolean;
}
export interface MultiFactorAuthenticationNamespace {
requestMfaTokenViaText(request: MfaTokenViaTextRequest): Promise<MfaTokenViaTextResponse>;
requestMfaTokenViaPhoneCall(request: MfaTokenViaPhoneCallRequest): Promise<MfaTokenViaPhoneCallResponse>;
verifyToken(mfaRequestId: string, request: VerifyMfaTokenRequest): Promise<VerifyMfaTokenResponse>;
}
export interface CreateVerifiedCallerIdRequest {
name?: string;
extension?: string;
number: string;
}
export interface VerifiedCallerId {
type: string;
id: string;
name: string;
extension: string;
number: string;
verified: boolean;
verifiedAt: string;
status: 'Verified' | 'Awaiting Verification';
}
export interface ValidateVerificationCodeRequest {
verificationCode: string;
}
export interface ListAllVerifiedCallerIdsOptions {
filterName?: string,
filterNumber?: string
}
export interface UpdateVerifiedCallerIdRequest {
name: string;
}
export interface VerifiedCallerIdsNamespace {
createVerifiedCallerId(request: CreateVerifiedCallerIdRequest): Promise<VerifiedCallerId>;
validateVerificationCode(id: string, request: ValidateVerificationCodeRequest): Promise<VerifiedCallerId>;
redialVerificationCall(id: string): Promise<VerifiedCallerId>;
listAllVerifiedCallerIds(options?: ListAllVerifiedCallerIdsOptions): AsyncIterableIterator<VerifiedCallerId>;
listAllVerifiedCallerIdsPage(options?: ListAllVerifiedCallerIdsOptions, url?: string): Promise<PagedResponse<VerifiedCallerId>>;
retrieveVerifiedCallerId(id: string): Promise<VerifiedCallerId>;
updateVerifiedCallerId(id: string, request: UpdateVerifiedCallerIdRequest): Promise<any>;
deleteVerifiedCallerId(id: string): Promise<void>;
}
export type AddressType =
'Apartment'
| 'Basement'
| 'Building'
| 'Department'
| 'Floor'
| 'Office'
| 'Penthouse'
| 'Suite'
| 'Trailer'
| 'Unit';
export interface CreateAddressRequest {
label: string;
country: string;
firstName: string;
lastName: string;
streetNumber: string;
streetName: string;
addressType?: AddressType;
addressNumber?: string;
city: string;
state: string;
postalCode: string;
}
export interface Address {
id: string;
label: string;
country: string;
firstName: string;
lastName: string;
streetNumber: string;
streetName: string;
addressType?: AddressType;
addressNumber?: string;
city: string;
state: string;
postalCode: string;
}
export interface AddressesNamespace {
listAllAddresses(): AsyncIterableIterator<Address>;
listAllAddressesPage(url?: string): Promise<PagedResponse<Address>>;
retrieveAddress(addressId: string): Promise<Address>;
deleteAddress(addressId: string): Promise<void>;
createAddress(body: CreateAddressRequest): Promise<Address>;
}
export interface ListAllBrandsOptions {
filterName?: string,
filterState?: string
}
export type LegalEntityType = 'PRIVATE_PROFIT' | 'PUBLIC_PROFIT' | 'NON_PROFIT';
export type CompanyVertical =
'REAL_ESTATE'
| 'HEALTHCARE'
| 'ENERGY'
| 'ENTERTAINMENT'
| 'RETAIL'
| 'AGRICULTURE'
| 'INSURANCE'
| 'EDUCATION'
| 'HOSPITALITY'
| 'FINANCIAL'
| 'GAMBLING'
| 'CONSTRUCTION'
| 'NGO'
| 'MANUFACTURING'
| 'GOVERNMENT'
| 'TECHNOLOGY'
| 'COMMUNICATION';
export interface CreateBrandRequest {
name?: string;
companyName: string;
contactEmail?: string;
contactPhone?: string;
einIssuingCountry?: string;
legalEntityType?: LegalEntityType;
ein?: string;
companyAddress?: string;
companyVertical?: CompanyVertical
companyWebsite?: string;
cspBrandReference?: string;
cspSelfRegistered?: boolean;
statusCallbackUrl?: string;
}
export interface Brand {
id: string;
state: string;
name: string;
companyName: string;
contactEmail: string;
contactPhone: string;
einIssuingCountry: string;
legalEntityType: LegalEntityType;
ein: string;
companyAddress: string;
companyVertical?: CompanyVertical
companyWebsite: string;
cspBrandReference?: string;
cspSelfRegistered?: boolean;
statusCallbackUrl?: string;
createdAt: string;
updatedAt: string;
}
export interface BrandsNamespace {
listAllBrands(options?: ListAllBrandsOptions): AsyncIterableIterator<Brand>;
listAllBrandsPage(options?: ListAllBrandsOptions, url?: string): Promise<PagedResponse<Brand>>;
retrieveBrand(id: string): Promise<Brand>;
createBrand(request: CreateBrandRequest): Promise<Brand>;
}
export interface UpdateCampaignRequest {
name: string;
}
export type SMSUseCase =
'2FA'
| 'ACCOUNT_NOTIFICATION'
| 'AGENTS_FRANCHISES'
| 'CARRIER_EXEMPT'
| 'CHARITY'
| 'CUSTOMER_CARE'
| 'DELIVERY_NOTIFICATION'
| 'EMERGENCY'
| 'FRAUD_ALERT'
| 'HIGHER_EDUCATION'
| 'K12_EDUCATION'
| 'LOW_VOLUME_MIXED'
| 'MARKETING'
| 'MIXED'
| 'POLITICAL'
| 'POLITICAL_SECTION_527'
| 'POLLING_VOTING'
| 'PROXY'
| 'PUBLIC_SERVICE_ANNOUNCEMENT'
| 'SECURITY_ALERT'
| 'SOCIAL'
| 'SWEEPSTAKE'
| 'TRIAL'
| 'UCAAS_HIGH_VOLUME'
| 'UCAAS_LOW_VOLUME'
export type SubUseCase =
'CUSTOMER_CARE'
| 'HIGHER_EDUCATION'
| 'POLLING_VOTING'
| 'PUBLIC_SERVICE_ANNOUNCEMENT'
| 'MARKETING'
| 'SECURITY_ALERT'
| '2FA'
| 'ACCOUNT_NOTIFICATION'
| 'DELIVERY_NOTIFICATION'
| 'FRAUD_ALERT'
export interface CreateCampaignRequest {
name: string;
smsUseCase: SMSUseCase;
subUseCases?: SubUseCase[];
description: string;
sample1: string;
sample2: string;
sample3?: string;
sample4?: string;
sample5?: string;
dynamicTemplates?: string;
messageFlow: string;
optInMessage?: string;
optOutMessage: string;
helpMessage: string;
numberPoolingRequired: boolean;
numberPoolingPerCampaign?: string;
directLending: boolean;
embeddedLink: boolean;
embeddedPhone: boolean;
ageGatedContent: boolean;
leadGeneration: boolean;
termsAndConditions: boolean;
}
export interface Campaign {
id: string;
name: string;
smsUseCase: SMSUseCase;
subUseCases?: SubUseCase[];
description: string;
sample1: string;
sample2: string;
sample3?: string;
sample4?: string;
sample5?: string;
dynamicTemplates?: string;
messageFlow: string;
optInMessage?: string;
optOutMessage: string;
helpMessage: string;
numberPoolingRequired: boolean;
numberPoolingPerCampaign?: string;
directLending: boolean;
embeddedLink: boolean;
embeddedPhone: boolean;
ageGatedContent: boolean;
leadGeneration: boolean;
termsAndConditions: boolean;
createdAt: string;
updatedAt: string;
}
export interface CampaignsNamespace {
listAllCampaigns(brandId: string): AsyncIterableIterator<Campaign>;
listAllCampaignsPage(brandId: string, url?: string): Promise<PagedResponse<Campaign>>;
retrieveCampaign(campaignId: string): Promise<Campaign>;
updateCampaign(campaignId: string, request: UpdateCampaignRequest): Promise<Campaign>;
createCampaign(brandId: string, request: CreateCampaignRequest): Promise<Campaign>;
}
export interface ListAllCampaignPhoneNumberAssignmentsOptions {
filterState?: string
}
export interface ListAllCampaignPhoneNumberAssignmentOrdersOptions {
filterState?: string
}
export interface CreateCampaignPhoneNumberAssignmentOrderRequest {
phoneNumbers: string[];
statusCallbackUrl?: string;
}
export interface CampaignPhoneNumberAssignmentOrder {
id: string;
state: string;
processedAt: string;
createdAt: string;
updatedAt: string;
statusCallbackUrl?: string;
}
export interface CampaignNumberAssignmentsNamespace {
listAllPhoneNumberAssignments(campaignId: string, options?: ListAllCampaignPhoneNumberAssignmentsOptions): AsyncIterableIterator<any>;
listAllPhoneNumberAssignmentsPage(campaignId: string, options?: ListAllCampaignPhoneNumberAssignmentsOptions, url?: string): Promise<PagedResponse<any>>;
listAllPhoneNumberAssignmentOrders(campaignId: string, options?: ListAllCampaignPhoneNumberAssignmentOrdersOptions): AsyncIterableIterator<CampaignPhoneNumberAssignmentOrder>;
listAllPhoneNumberAssignmentOrdersPage(campaignId: string, options?: ListAllCampaignPhoneNumberAssignmentOrdersOptions, url?: string): Promise<PagedResponse<CampaignPhoneNumberAssignmentOrder>>;
retrievePhoneNumberAssignmentOrder(assignmentOrderId: string): Promise<CampaignPhoneNumberAssignmentOrder>;
createPhoneNumberAssignmentOrder(campaignId: string, request: CreateCampaignPhoneNumberAssignmentOrderRequest): Promise<CampaignPhoneNumberAssignmentOrder>;
deletePhoneNumberAssignment(numberAssignmentId: string): Promise<void>;
}
export interface CampaignRegistryApiNamespace {
brands: BrandsNamespace;
campaigns: CampaignsNamespace;
campaignNumberAssignments: CampaignNumberAssignmentsNamespace;
}
export interface ListAllDomainApplicationsOptions {
filterDomain?: string,
filterName?: string
}
export interface RelayTopicDomainApplicationCallHandler {
type: 'relay_topic'
callRelayTopic?: string;
callRelayTopicStatusCallbackUrl?: string;
}
export interface RelayApplicationDomainApplicationCallHandler {
type: 'relay_application'
callRelayApplication?: string;
}
export interface LamlWebhooksDomainApplicationCallHandler {
type: 'laml_webhooks'
callRequestUrl?: string;
callRequestMethod?: HTTPMethod;
callFallbackUrl?: string;
callFallbackMethod?: HTTPMethod;
callStatusCallbackUrl?: string;
callStatusCallbackMethod?: HTTPMethod;
}
export interface LamlApplicationDomainApplicationCallHandler {
type: 'laml_application'
callLamlApplicationId?: string;
}
export interface VideoRoomDomainApplicationCallHandler {
type: 'video_room'
callVideoRoomId?: string;
}
export interface RelayScriptDomainApplicationCallHandler {
type: 'relay_script'
callRelayScriptUrl?: string;
}
export interface DialogflowDomainApplicationCallHandler {
type: 'dialogflow'
callDialogflowAgentId?: string;
}
export interface AiAgentDomainApplicationCallHandler {
type: 'ai_agent'
callAiAgentId?: string;
}
export interface CallFlowDomainApplicationCallHandler {
type: 'call_flow'
callFlowId?: string;
callFlowVersion?: 'working_copy' | 'current_deployed';
}
export interface RelayContextDomainApplicationCallHandler {
type: 'relay_context'
callRelayContext?: string;
callRelayContextStatusCallbackUrl?: string;
}
export type DomainApplicationCallHandler =
RelayTopicDomainApplicationCallHandler
| RelayApplicationDomainApplicationCallHandler
| LamlWebhooksDomainApplicationCallHandler
| LamlApplicationDomainApplicationCallHandler
| VideoRoomDomainApplicationCallHandler
| RelayScriptDomainApplicationCallHandler
| DialogflowDomainApplicationCallHandler
| AiAgentDomainApplicationCallHandler
| CallFlowDomainApplicationCallHandler
| RelayContextDomainApplicationCallHandler;
export type HTTPMethod = 'GET' | 'POST';
export interface UpdateDomainApplicationRequest {
name?: string;
identifier?: string;
user?: string;
callHandler?: DomainApplicationCallHandler;
ipAuthEnabled?: boolean;
ipAuth?: string[];
encryption?: Encryption;
codecs?: Codec[];
ciphers?: Cipher[];
}
export type Encryption = 'optional' | 'required';
export type Codec = 'OPUS' | 'G722' | 'PCMU' | 'PCMA' | 'VP8' | 'H264';
export type Cipher =
'AEAD_AES_256_GCM_8'
| 'AES_256_CM_HMAC_SHA1_80'
| 'AES_CM_128_HMAC_SHA1_80'
| 'AES_256_CM_HMAC_SHA1_32'
| 'AES_CM_128_HMAC_SHA1_32';
export type CreateDomainApplicationRequest = {
name: string;
identifier: string;
user?: string;
callHandler: DomainApplicationCallHandler;
ipAuthEnabled?: boolean;
ipAuth?: string[];
encryption?: Encryption;
codecs?: Codec[];
ciphers?: Cipher[];
}
export interface DomainApplication {
id: string;
callHandler: DomainApplicationCallHandler;
type?: string;
domain?: string;
name: string;
identifier: string;
user?: string;
ipAuthEnabled?: boolean;
ipAuth?: string[];
encryption?: Encryption;
codecs?: Codec[];
ciphers?: Cipher[];
}
export interface DomainApplicationsNamespace {
listAllDomainApplications(options?: ListAllDomainApplicationsOptions): AsyncIterableIterator<DomainApplication>;
listAllDomainApplicationsPage(options?: ListAllDomainApplicationsOptions, url?: string): Promise<PagedResponse<DomainApplication>>;
retrieveDomainApplication(id: string): Promise<DomainApplication>;
updateDomainApplication(id: string, request: UpdateDomainApplicationRequest): Promise<DomainApplication>;
createDomainApplication(request: CreateDomainApplicationRequest): Promise<DomainApplication>;
deleteDomainApplication(id: string): Promise<void>;
}
export interface UpdateNumberGroupRequest {
name: string;
}
export interface CreateNumberGroupRequest {
name: string;
stickySender: boolean;
}
export interface NumberGroup {
id: string;
name: string;
stickySender: boolean;
phoneNumberCount: number;
}
export interface NumberGroupsNamespace {
listAllNumberGroups(): AsyncIterableIterator<NumberGroup>;
listAllNumberGroupsPage(url?: string): Promise<PagedResponse<NumberGroup>>;
retrieveNumberGroup(id: string): Promise<NumberGroup>;
updateNumberGroup(id: string, body: UpdateNumberGroupRequest): Promise<NumberGroup>;
createNumberGroup(request: CreateNumberGroupRequest): Promise<NumberGroup>;
deleteNumberGroup(id: string): Promise<void>;
}
export interface CreateNumberGroupMemberRequest {
phoneNumberId: string;
}
export type NumberCapability = 'sms' | 'mms' | 'voice' | 'fax';
export interface NumberGroupMembership {
id: string;
numberGroupId: string;
phoneNumber: {
id: string;
name: string;
number: string;
capabilities: NumberCapability[];
}
}
export interface NumberGroupsMembershipsNamespace {
listAllNumberGroupMembers(numberGroupId: string): AsyncIterableIterator<NumberGroupMembership>;
listAllNumberGroupMembersPage(numberGroupId: string, url?: string): Promise<PagedResponse<NumberGroupMembership>>;
retrieveNumberGroupMember(numberGroupMemberId: string): Promise<NumberGroupMembership>;
createNumberGroupMember(numberGroupId: string, request: CreateNumberGroupMemberRequest): Promise<NumberGroupMembership>;
deleteNumberGroupMember(numberGroupMemberId: string): Promise<void>;
}
export interface ListAllPhoneNumbersOptions {
filterName?: string,
filterNumber?: string
}
export type PhoneNumberListingType = 'local' | 'toll-free';
export type PhoneNumberType = 'longcode' | 'toll-free';
export type CallReceiveMode = 'voice' | 'fax';
export interface RelayScriptPhoneNumberCallHandler {
type: 'relay_script';
callRelayScriptUrl: string;
}
export interface LamlWebhooksPhoneNumberCallHandler {
type: 'laml_webhooks';
callRequestUrl: string;
callRequestMethod?: HTTPMethod;
callFallbackUrl: string;
callFallbackMethod?: HTTPMethod;
callStatusCallbackUrl: string;
callStatusCallbackMethod?: HTTPMethod;
}
export interface LamlApplicationPhoneNumberCallHandler {
type: 'laml_application';
callLamlApplicationId: string;
}
export interface DialogflowPhoneNumberCallHandler {
type: 'dialogflow';
callDialogflowAgentId: string;
}
export interface RelayTopicPhoneNumberCallHandler {
type: 'relay_topic';
callRelayTopic: string;
callRelayTopicStatusCallbackUrl: string;
}
export interface RelayContextPhoneNumberCallHandler {
type: 'relay_context';
callRelayContext: string;
callRelayContextStatusCallbackUrl: string;
}
export interface RelayApplicationPhoneNumberCallHandler {
type: 'relay_application';
callRelayApplication: string;
}
export interface RelayConnectorPhoneNumberCallHandler {
type: 'relay_connector';
callRelayConnectorId: string;
}
export interface RelaySipEndpointPhoneNumberCallHandler {
type: 'relay_sip_endpoint';
callSipEndpointId: string;
}
export interface RelayVertoPhoneNumberCallHandler {
type: 'relay_verto_endpoint';
callVertoResource: string;
}
export interface VideoRoomPhoneNumberCallHandler {
type: 'video_room';
callVideoRoomId: string;
}
export type PhoneNumberCallHandler =
RelayScriptPhoneNumberCallHandler
| RelayConnectorPhoneNumberCallHandler
| LamlWebhooksPhoneNumberCallHandler
| LamlApplicationPhoneNumberCallHandler
| DialogflowPhoneNumberCallHandler
| RelayTopicPhoneNumberCallHandler
| RelayContextPhoneNumberCallHandler
| RelayApplicationPhoneNumberCallHandler
| RelaySipEndpointPhoneNumberCallHandler
| RelayVertoPhoneNumberCallHandler
| VideoRoomPhoneNumberCallHandler;
export interface LamlWebhooksPhoneNumberMessageHandler {
type: 'laml_webhooks';
messageRequestUrl: string;
messageRequestMethod?: HTTPMethod;
messageFallbackUrl: string;
messageFallbackMethod?: HTTPMethod;
messageStatusCallbackUrl: string;
messageStatusCallbackMethod?: HTTPMethod;
}
export interface LamlApplicationPhoneNumberMessageHandler {
type: 'laml_application';
messageLamlApplicationId: string;
}
export interface RelayApplicationPhoneNumberMessageHandler {
type: 'relay_application';
messageRelayApplicationId: string;
}
export interface RelayTopicPhoneNumberMessageHandler {
type: 'relay_topic';
messageRelayTopic: string;
}
export interface RelayContextPhoneNumberMessageHandler {
type: 'relay_context';
messageRelayContext: string;
}
export type PhoneNumberMessageHandler =
LamlWebhooksPhoneNumberMessageHandler
| RelayApplicationPhoneNumberMessageHandler
| RelayTopicPhoneNumberMessageHandler
| RelayContextPhoneNumberMessageHandler
| LamlApplicationPhoneNumberMessageHandler;
export interface UpdatePhoneNumberRequest {
name: string;
callReceiveMode?: CallReceiveMode;
callHandler?: PhoneNumberCallHandler;
messageHandler?: PhoneNumberMessageHandler;
}
export interface PhoneNumber {
id: string;
number: string;
name: string;
callHandler?: PhoneNumberCallHandler;
messageHandler?: PhoneNumberMessageHandler;
callReceiveMode: CallReceiveMode;
capabilities: NumberCapability[];
numberType: PhoneNumberType;
e911AddressId?: string;
createdAt: string;
updatedAt: string;
nextBilledAt: string;
countryCode: string;
}
export interface PhoneNumberListing {
e164: string;
nationalNumberFormatted: string;
internationalNumberFormatted: string;
rateCenter: string;
region: string;
countryCode: string;
capabilities: NumberCapability[];
}
export interface SearchForAvailablePhoneNumbersOptions {
areacode?: string,
numberType?: PhoneNumberListingType,
startsWith?: string,
contains?: string,
endsWith?: string,
maxResults?: string,
region?: string,
city?: string
}
export interface PurchasePhoneNumberRequest {
number: string;
}
export interface PhoneNumbersNamespace {
listAllPhoneNumbers(options?: ListAllPhoneNumbersOptions): AsyncIterableIterator<PhoneNumber>;
listAllPhoneNumbersPage(options?: ListAllPhoneNumbersOptions, url?: string): Promise<PagedResponse<PhoneNumber>>;
retrievePhoneNumber(id: string): Promise<PhoneNumber>;
updatePhoneNumber(id: string, request: UpdatePhoneNumberRequest): Promise<PhoneNumber>;
searchForAvailablePhoneNumbers(options?: SearchForAvailablePhoneNumbersOptions): AsyncIterableIterator<PhoneNumberListing>;
searchForAvailablePhoneNumbersPage(options?: SearchForAvailablePhoneNumbersOptions, url?: string): Promise<PagedResponse<PhoneNumberListing>>;
purchasePhoneNumber(request: PurchasePhoneNumberRequest): Promise<PhoneNumber>;
releasePhoneNumber(id: string): Promise<void>;
}
export type LookupNumberInclude = 'carrier' | 'cnam';
export interface LookupNumberOptions {
include?: LookupNumberInclude[];
}
export interface LookupNumberResponse {
countryCodeNumber: number;
nationalNumber: string;
possibleNumber: boolean;
validNumber: boolean;
nationalNumberFormatted: string;
internationalNumberFormatted: string;
e164: string;
location: string;
countryCode: string;
timeZones: string[];
numberType: string;
carrier?: {
lrn: string;
spid: string;
ocn: string;
lata: string;
city: string;
state: string;
jurisdiction: string;
lec: string;
lineType: string;
}
cnam?: {
callerId: string;
}
}
export interface PhoneNumberLookupNamespace {
lookupNumber(phoneNumber: string, options?: LookupNumberOptions): Promise<LookupNumberResponse>;
}
export interface ListAllSipEndpointsOptions {
filterUsername?: string,
filterCallerId?: string
}
export interface SipEndpointDefaultCallHandler {
type: 'default';
}
export interface SipEndpointPassthroughCallHandler {
type: 'passthrough';
}
export interface SipEndpointBlockPSTNCallHandler {
type: 'block-pstn';
}
export interface SipEndpointAiAgentCallHandler {
type: 'ai_agent';
callAiAgentId: string;
}
export interface SipEndpointRelayContextCallHandler {
type: 'relay_context';
callRelayContext: string;
callRelayContextStatusCallbackUrl: string;
}
export interface SipEndpointRelayScriptCallHandler {
type: 'relay_script';
callRelayScriptUrl: string;
}
export interface SipEndpointLamlWebhooksCallHandler {
type: 'laml_webhooks';
callRequestUrl: string;
callRequestMethod?: HTTPMethod;
callFallbackUrl: string;
callFallbackMethod?: HTTPMethod;
callStatusCallbackUrl: string;
callStatusCallbackMethod?: HTTPMethod;
}
export interface SipEndpointLamlApplicationCallHandler {
type: 'laml_application';
callLamlApplicationId: string;
}
export interface SipEndpointDialogflowCallHandler {
type: 'dialogflow';
callDialogflowAgentId: string;
}
export interface SipEndpointVideoRoomCallHandler {
type: 'video_room';
callVideoRoomId: string;
}
export type SipEndpointCallHandler =
SipEndpointDefaultCallHandler
| SipEndpointPassthroughCallHandler
| SipEndpointBlockPSTNCallHandler
| SipEndpointAiAgentCallHandler
| SipEndpointRelayContextCallHandler
| SipEndpointRelayScriptCallHandler
| SipEndpointLamlWebhooksCallHandler
| SipEndpointLamlApplicationCallHandler
| SipEndpointDialogflowCallHandler
| SipEndpointVideoRoomCallHandler;
export type SipEndpointEncryption = 'default' | 'optional' | 'required';
export interface UpdateSipEndpointRequest {
username?: string;
password?: string;
callerId?: string;
sendAs?: string;
ciphers?: Cipher[];
codecs?: Codec[];
encryption?: SipEndpointEncryption;
callHandler?: SipEndpointCallHandler;
}
export interface CreateSipEndpointRequest {
username: string;
password: string;
callerId?: string;
sendAs?: string;
ciphers?: Cipher[];
codecs?: Codec[];
encryption?: SipEndpointEncryption;
callHandler?: SipEndpointCallHandler;
}
export interface SipEndpoint {
id: string;
username: string;
callerId: string;
sendAs: string;
ciphers: Cipher[];
codecs: Codec[];
encryption: SipEndpointEncryption;
callHandler: SipEndpointCallHandler;
}
export interface SipEndpointsNamespace {
listAllSipEndpoints(options?: ListAllSipEndpointsOptions): AsyncIterableIterator<SipEndpoint>;
listAllSipEndpointsPage(options?: ListAllSipEndpointsOptions, url?: string): Promise<PagedResponse<SipEndpoint>>;
retrieveSipEndpoint(id: string): Promise<SipEndpoint>;
updateSipEndpoint(id: string, request: UpdateSipEndpointRequest): Promise<SipEndpoint>;
createSipEndpoint(request: CreateSipEndpointRequest): Promise<SipEndpoint>;
deleteSipEndpoint(id: string): Promise<void>;
}
export interface UpdateSipProfileRequest {
domainIdentifier?: string;
defaultCodecs?: Codec[];
defaultCiphers?: Cipher[];
defaultEncryption?: Encryption;
defaultSendAs?: string;
}
export interface SipProfile {
domain: string;
domainIdentifier: string;
defaultCodecs: Codec[];
defaultCiphers: Cipher[];
defaultEncryption: Encryption;
defaultSendAs: string;
}
export interface SipProfileNamespace {
retrieveSipProfile(): Promise<SipProfile>;
updateSipProfile(body: UpdateSipProfileRequest): Promise<SipProfile>;
}
export interface BaseRecording {
id: string;
projectId: string;
createdAt: string;
updatedAt: string;
durationInSeconds: number;
errorCode: string;
price: number;
priceUnit: string;
status: string;
url: string;
stereo: boolean;
byteSize: number;
track: string;
}
export interface PSTNRecording extends BaseRecording {
relayPSTNLegId: string;
}
export interface SIPRecording extends BaseRecording {
relaySIPLegId: string;
}
export interface WebRTCRecording extends BaseRecording {
relayWebRTCLegId: string;
}
export type Recording = PSTNRecording | SIPRecording | WebRTCRecording;
export interface RelayRecordingsNamespace {
listRelayRecordings(): AsyncIterableIterator<Recording>;
listRelayRecordingsPage(url?: string): Promise<PagedResponse<Recording>>;
getRelayRecording(id: string): Promise<Recording>;
deleteRelayRecording(id: string): Promise<void>;
}
export interface SpaceManagementNamespace {
multiFactorAuthentication: MultiFactorAuthenticationNamespace;
verifiedCallerIds: VerifiedCallerIdsNamespace;
addresses: AddressesNamespace;
campaignRegistryApi: CampaignRegistryApiNamespace;
domainApplications: DomainApplicationsNamespace;
numberGroups: NumberGroupsNamespace;
numberGroupsMemberships: NumberGroupsMembershipsNamespace;
phoneNumbers: PhoneNumbersNamespace;
phoneNumberLookup: PhoneNumberLookupNamespace;
sipEndpoints: SipEndpointsNamespace;
sipProfile: SipProfileNamespace;
relayRecordings: RelayRecordingsNamespace;
}
export type VideoRoomResolution = '720p' | '1080p';
export interface CreateVideoRoomRequest {
name: string;
displayName: string;
description?: string;
maxMembers?: number;
quality?: VideoRoomResolution;
joinFrom?: string;
joinUntil?: string;
removeAt?: string;
removeAfterSecondsElapsed?: number;
layout?: string;
recordOnStart?: boolean;
enableRoomPreviews?: boolean;
audioVideoSync?: boolean;
}
export interface UpdateVideoRoomRequest {
name?: string;
displayName?: string;
description?: string;
maxMembers?: number;
quality?: VideoRoomResolution;
joinFrom?: string;
joinUntil?: string;
removeAt?: string;
removeAfterSecondsElapsed?: number;
layout?: string;
recordOnStart?: boolean;
enableRoomPreviews?: boolean;
audioVideoSync?: boolean;
}
export interface VideoRoom {
id: string;
name: string;
displayName: string;
description: string;
maxMembers: number;
quality: VideoRoomResolution;
joinFrom: string;
joinUntil: string;
removeAt: string;
removeAfterSecondsElapsed: number;
layout: string;
recordOnStart: boolean;
enableRoomPreviews: boolean;
audioVideoSync: boolean;
fps: number;
activeSession?: VideoRoomSession;
createdAt: string;
updatedAt: string;
}
export interface VideoRoomSession {
id: string;
roomId: string;
name: string;
displayName: string;
joinFrom: string;
joinUntil: string;
removeAt: string;
removeAfterSecondsElapsed: number;
layout: string;
maxMembers: number;
fps: number;
quality: VideoRoomResolution;
startTime: string;
endTime: string;
duration: number;
status: string;
recordOnStart: boolean;
enableRoomPreviews: boolean;
previewUrl: string;
audioVideoSync: boolean;
}
export interface GetVideoRoomOptions {
includeActiveSession?: string
}
export interface VideoRoomsNamespace {
listRooms(options?: GetVideoRoomOptions): AsyncIterableIterator<VideoRoom>;
listRoomsPage(options?: GetVideoRoomOptions, url?: string): Promise<PagedResponse<VideoRoom>>;
retrieveRoomById(id: string): Promise<VideoRoom>;
retrieveRoomByUniqueName(videoRoomName: string, options?: GetVideoRoomOptions): Promise<VideoRoom>;
createRoom(request: CreateVideoRoomRequest): Promise<VideoRoom>;
updateRoom(id: string, request: UpdateVideoRoomRequest): Promise<VideoRoom>;
deleteRoom(id: string): Promise<void>;
}
export interface ListRoomSessionsRecordingsOptions {
mediaTtl?: string
}
export interface ListRoomSessionsOptions {
roomId?: string,
roomName?: string,
status?: string
}
export interface VideoRoomRecording {
id: string;
roomSessionId: string;
status: string;
startedAt: string;
finishedAt: string;
duration: number;
sizeInBytes: number;
format: string;
uri: string;
createdAt: string;
updatedAt: string;
}
export interface VideoRoomSessionMember {
id: string;
name: string;
roomSessionId: string;
joinTime: string;
leaveTime: string;
duration: number;
}
export interface VideoRoomSessionsNamespace {
listRoomSessions(options?: ListRoomSessionsOptions): AsyncIterableIterator<VideoRoomSession>;
listRoomSessionsPage(options?: ListRoomSessionsOptions, url?: string): Promise<PagedResponse<VideoRoomSession>>;
findRoomSessionById(sessionId: string): Promise<VideoRoomSession>;
listRoomSessionsRecordings(sessionId: string, options?: ListRoomSessionsRecordingsOptions):
AsyncIterableIterator<VideoRoomRecording>;
listRoomSessionsRecordingsPage(sessionId: string, options?: ListRoomSessionsRecordingsOptions, url?: string):
Promise<PagedResponse<VideoRoomRecording>>;
listRoomSessionsMembers(sessionId: string): AsyncIterableIterator<VideoRoomSessionMember>;
listRoomSessionsMembersPage(sessionId: string, url?: string): Promise<PagedResponse<VideoRoomSessionMember>>;
}
export interface VideoRoomTokenRequest {
roomName: string;
userName?: string;
permissions?: string[];
joinFrom?: string;
joinUntil?: string;
removeAt?: string;
removeAfterSecondsElapsed?: number;
joinAudioMuted?: boolean;
joinVideoMuted?: boolean;
autoCreateRoom?: boolean;
enableRoomPreviews?: boolean;
roomDisplayName?: string;
endRoomSessionOnLeave?: boolean;
joinAs?: 'audience' | 'member';
mediaAllowed?: 'all' | 'video-only' | 'audio-only';
roomMeta?: object;
meta?: object;
audioVideoSync?: boolean;
}
export interface VideoRoomToken {
token: string;
}
export interface VideoRoomTokensNamespace {
generateNewVideoRoomToken(request: VideoRoomTokenRequest): Promise<any>;
}
export interface ListRecordingsForVideoRoomOptions {
mediaTtl?: string
}
export interface RetrieveVideoRoomRecordingOptions {
mediaTtl?: string
}
export interface VideoRoomRecordingsNamespace {
listRecordingsForRoom(options?: ListRecordingsForVideoRoomOptions): AsyncIterableIterator<VideoRoomRecording>;
listRecordingsForRoomPage(options?: ListRecordingsForVideoRoomOptions, url?: string): Promise<PagedResponse<VideoRoomRecording>>;
retrieveRecording(recordingId: string, options?: RetrieveVideoRoomRecordingOptions): Promise<any>;
deleteRoomRecording(recordingId: string): Promise<any>;
}
export interface VideoRoomStream {
id: string;
url: string;
streamType: string;
width: number;
height: number;
fps: number;
createdAt: string;
updatedAt: string;
}
export interface CreateStreamRequest {
url: string;
}
export interface UpdateStreamRequest {
url?: string;
}
export interface VideoStreamsNamespace {
listStreamsByRoomId(roomId: string): AsyncIterableIterator<VideoRoomStream>;
listStreamsByRoomIdPage(roomId: string, url?: string): Promise<PagedResponse<VideoRoomStream>>;
listStreamsByConferenceId(conferenceId: string): AsyncIterableIterator<VideoRoomStream>;
listStreamsByConferenceIdPage(conferenceId: string, url?: string): Promise<PagedResponse<VideoRoomStream>>;
createStreamForRoom(roomId: string, request: CreateStreamRequest): Promise<VideoRoomStream>;
createStreamForConference(conferenceId: string, request: CreateStreamRequest): Promise<VideoRoomStream>;
retrieveStream(streamId: string): Promise<VideoRoomStream>;
updateStream(streamId: string, request: UpdateStreamRequest): Promise<VideoRoomStream>;
deleteStream(streamId: string): Promise<void>;
}
export interface ListVideoConferencesOptions {
includeActiveSession?: string
}
export interface RetrieveVideoConferenceOptions {
includeActiveSession?: string
}
export type VideoConferenceSize = 'small' | 'medium' | 'large';
export interface CreateVideoConferenceRequest {
name: string;
displayName?: string;
description?: string;
joinFrom?: string;
joinUntil?: string;
quality?: VideoRoomResolution;
layout?: string;
size?: VideoConferenceSize;
recordOnStart?: boolean;
enableRoomPreviews?: boolean;
enableChat?: boolean;
darkPrimary?: string;
darkBackground?: string;
darkForeground?: string;
darkSuccess?: string;
darkNegative?: string;
lightPrimary?: string;
lightBackground?: string;
lightForeground?: string;
lightSuccess?: string;
lightNegative?: string;
}
export interface UpdateVideoConferenceRequest {
name?: string;
displayName?: string;
description?: string;
joinFrom?: string;
joinUntil?: string
quality?: VideoRoomResolution;
layout?: string;
size?: VideoConferenceSize;
recordOnStart?: boolean;
enableRoomPreviews?: boolean;
enableChat?: boolean;
darkPrimary?: string;
darkBackground?: string;
darkForeground?: string;
darkSuccess?: string;
darkNegative?: string;
lightPrimary?: string;
lightBackground?: string;
lightForeground?: string;
lightSuccess?: string;
lightNegative?: string;
}
export interface VideoConference {
id: string;
name: string;
displayName: string;
description: string;
joinFrom: string;
joinUntil: string;
quality: VideoRoomResolution;
layout: string;
size: VideoConferenceSize;
recordOnStart: boolean;
enableRoomPreviews: boolean;
enableChat: boolean;
darkPrimary: string;
darkBackground: string;
darkForeground: string;
darkSuccess: string;
darkNegative: string;
lightPrimary: string;
lightBackground: string;
lightForeground: string;
lightSuccess: string;
lightNegative: string;
createdAt: string;
updatedAt: string;
activeSession?: VideoRoomSession;
}
export interface VideoConferencesNamespace {
listVideoConferences(options?: ListVideoConferencesOptions): AsyncIterableIterator<VideoConference>;
listVideoConferencesPage(options?: ListVideoConferencesOptions, url?: string): Promise<PagedResponse<VideoConference>>;
retrieveVideoConference(conferenceId: string, options?: RetrieveVideoConferenceOptions): Promise<VideoConference>;
createVideoConference(request: CreateVideoConferenceRequest): Promise<VideoConference>;
updateVideoConference(conferenceId: string, request: UpdateVideoConferenceRequest): Promise<VideoConference>;
deleteVideoConference(conferenceId: string): Promise<void>;
}
export interface VideoConferenceToken {
id: string;
name: string;
token: string;
scopes: string[];
}
export interface VideoConferenceTokensNamespace {
listConferenceTokens(conferenceId: string): AsyncIterableIterator<VideoConferenceToken>;
listConferenceTokensPage(conferenceId: string, url?: string): Promise<PagedResponse<VideoConferenceToken>>;
retrieveConferenceToken(conferenceTokenId: string): Promise<VideoConferenceToken>;
resetConferenceToken(conferenceTokenId: string): Promise<VideoConferenceToken>;
}
export interface ListVideoLogsOptions {
includeDeleted?: string,
createdBefore?: string,
createdOn?: string,
createdAfter?: string,
pageSize?: string
}
export interface VideoLog {
id: string;
source: string;
type: string;
url: string;
roomName: string;
status: string;
startTime: string;
endTime: string;
charge: number;
chargeDetails: LogCharge[];
createdAt: string;
updatedAt: string;
}
export interface VideoLogsNamespace {
listLogs(options?: ListVideoLogsOptions): AsyncIterableIterator<VideoLog>;
listLogsPage(options?: ListVideoLogsOptions, url?: string): Promise<PagedResponse<VideoLog>>;
retrieveLog(id: string): Promise<VideoLog>;
}
export interface VideoNamespace {
rooms: VideoRoomsNamespace;
roomSessions: VideoRoomSessionsNamespace;
roomTokens: VideoRoomTokensNamespace;
roomRecordings: VideoRoomRecordingsNamespace;
streams: VideoStreamsNamespace;
conferences: VideoConferencesNamespace;
conferenceTokens: VideoConferenceTokensNamespace;
logs: VideoLogsNamespace;
}
export interface ListMessageLogsOptions {
includeDeleted?: string,
createdBefore?: string,
createdOn?: string,
createdAfter?: string,
pageSize?: string
}
export interface MessageLog {
id: string;
from: string;
to: string;
status: string;
direction: string;
kind: string;
source: string;
type: string;
url: string;
numberOfSegments: number;
charge: number;
chargeDetails: LogCharge[];
createdAt: string;
}
export interface MessageLogsNamespace {
listLogs(options?: ListMessageLogsOptions): AsyncIterableIterator<MessageLog>;
listLogsPage(options?: ListMessageLogsOptions, url?: string): Promise<PagedResponse<MessageLog>>;
retrieveLog(id: string): Promise<MessageLog>;
}
export interface MessageNamespace {
logs: MessageLogsNamespace;
}
export interface VoiceLogsListLogsOptions {
includeDeleted?: string,
createdBefore?: string,
createdOn?: string,
createdAfter?: string,
pageSize?: number
}
export interface VoiceLog {
id: string;
from: string;
to: string;
direction: string;
status: string;
duration: number;
durationMS: number;
billingMS: number;
source: string;
type: string;
url: string;
charge: number;
chargeDetails: LogCharge[];
createdAt: string;
}
export interface VoiceLogsNamespace {
listLogs(options?: VoiceLogsListLogsOptions): AsyncIterableIterator<VoiceLog>;
listLogsPage(options?: VoiceLogsListLogsOptions, url?: string): Promise<PagedResponse<VoiceLog>>;
retrieveLog(voiceLogId: string): Promise<any>;
}
export interface VoiceNamespace {
logs: VoiceLogsNamespace;
}
export interface ListFaxLogsOptions {
includeDeleted?: string,
createdBefore?: string,
createdOn?: string,
createdAfter?: string,
pageSize?: string
}
export interface FaxLog {
id: string;
from: string;
to: string;
status: string;
direction: string;
source: string;
type: string;
url: string;
remoteStation: string;
charge: number;
numberOfPages: number;
quality: string;
chargeDetails: LogCharge[];
createdAt: string;
updatedAt: string;
errorCode: string;
errorMessage: string;
}
export interface FaxLogsNamespace {
listLogs(options?: ListFaxLogsOptions): AsyncIterableIterator<FaxLog>;
listLogsPage(options?: ListFaxLogsOptions, url?: string): Promise<PagedResponse<FaxLog>>;
retrieveFaxLog(id: string): Promise<FaxLog>;
}
export interface FaxNamespace {
logs: FaxLogsNamespace;
}
export type Permission = 'calling' | 'chat' | 'fax' | 'management' | 'messaging' | 'numbers' | 'pubsub' | 'storage'
| 'tasking' | 'video' | 'datasphere';
export interface CreateApiTokenRequest {
name: string;
permissions: Permission[];
subProjectId?: string;
}
export interface UpdateApiTokenRequest {
name?: string;
permissions?: Permission[];
}
export interface ApiToken {
id: string;
name: string;
permissions: Permission[];
token: string;
}
export interface ProjectApiTokensNamespace {
createApiToken(request: CreateApiTokenRequest): Promise<ApiToken>;
updateApiToken(id: string, request: UpdateApiTokenRequest): Promise<ApiToken>;
deleteApiToken(id: string): Promise<void>;
}
export interface ProjectNamespace {
apiTokens: ProjectApiTokensNamespace;
}
export interface GeneratePubSubTokenRequest {
ttl: number;
channels: {
[name: string]: {
read: boolean;
write: boolean;
}
}
memberId?: string;
state?: object;
}
export interface GeneratePubSubTokenResponse {
token: string;
}
export interface PubSubTokenNamespace {
generateToken(request: GeneratePubSubTokenRequest): Promise<GeneratePubSubTokenResponse>;
}
export interface PubSubNamespace {
tokens: PubSubTokenNamespace;
}
export interface GenerateChatTokenRequest {
ttl: number;
channels: {
[name: string]: {
read: boolean;
write: boolean;
}
};
memberId?: string;
state?: any;
}
export interface ChatToken {
token: string;
}
export interface ChatNamespace {
generateChatToken(request: GenerateChatTokenRequest): Promise<ChatToken>;
}
export interface ListFabricResourcesOptions {
type?: string
}
export interface AssignResourceAsPhoneRouteHandlerRequest {
phoneRouteId: string;
handler: string;
}
export interface AssignResourceAsSipEndpointHandlerRequest {
sipEndpointId: string;
}
export interface AssignResourceAsDomainApplicationHandlerRequest {
domainApplicationId: string;
}
export interface FabricResourceBase {
id: string;
projectId: string;
displayName: string;
createdAt: string;
updatedAt: string;
}
export interface FabricResourceAddress {
id: string;
resourceId: string;
name: string;
displayName: string;
coverUrl: string;
previewUrl: string;
locked: boolean;
channels: {
video: string;
audio: string;
messaging: string;
}
}
export interface UpdateFabricSubscriberRequest {
password?: string;
email: string;
firstName?: string;
lastName?: string;
displayName?: string;
jobTitle?: string;
timezone?: string
country?: string;
region?: string;
companyName?: string;
}
export interface CreateFabricSubscriberRequest {
password?: string;
email: string;
firstName?: string;
lastName?: string;
displayName?: string;
jobTitle?: string;
timezone?: string;
country?: string;
region?: string;
companyName?: string;
}
export interface FabricSubscriber {
id: string;
email: string;
firstName: string;
lastName: string;
displayName: string;
jobTitle: string;
timezone: string;
country: string;
region: string;
companyName: string;
}
export interface FabricSubscriberResponse extends FabricResourceBase {
type: 'subscriber';
subscriber: FabricSubscriber;
}
export interface CreateFabricSubscriberTokenRequest {
reference: string;
expireAt?: number;
applicationId?: string;
password?: stri