crisp-api
Version:
Crisp API wrapper for Node - official, maintained by Crisp
209 lines (208 loc) • 6.71 kB
TypeScript
/**************************************************************************
* IMPORTS
***************************************************************************/
import BaseResource from "./BaseResource";
import { WebsiteFilter } from "./WebsiteBase";
/**************************************************************************
* TYPES
***************************************************************************/
export type WebsiteCampaignExcerpt = {
campaign_id?: string;
type?: string;
format?: string;
name?: string;
subject?: string;
tag?: string;
ready?: boolean;
dispatched?: boolean;
running?: boolean;
progress?: number;
targets?: number;
reached?: number;
created_at: number;
updated_at: number;
dispatched_at?: number;
};
export type WebsiteCampaignTemplateExcerpt = {
template_id?: string;
type?: string;
name?: string;
format?: string;
created_at?: number;
updated_at?: number;
};
export type WebsiteCampaignTemplateNew = {
template_id?: string;
};
export interface WebsiteCampaignTemplateItem extends WebsiteCampaignTemplateExcerpt {
content?: string;
}
export interface WebsiteCampaignItem extends WebsiteCampaignExcerpt {
sender?: WebsiteCampaignItemSender;
recipients?: WebsiteCampaignItemRecipients;
flow?: WebsiteCampaignItemFlow;
message?: string;
options?: WebsiteCampaignItemOptions;
statistics?: WebsiteCampaignItemStatistics;
}
export type WebsiteCampaignItemSender = {
user_id?: string;
};
export type WebsiteCampaignItemRecipients = {
type?: string;
segments?: string[];
people?: string[];
filter?: WebsiteFilter[];
};
export type WebsiteCampaignItemFlow = {
launch_event?: string;
assert_filter?: WebsiteFilter[];
assert_delay?: number;
deliver_once?: boolean;
deliver_delay?: number;
};
export type WebsiteCampaignItemOptions = {
deliver_to_chatbox?: boolean;
deliver_to_email?: boolean;
sender_name_website?: boolean;
sender_email_reply?: boolean;
tracking?: boolean;
};
export type WebsiteCampaignItemStatistics = {
opened?: number;
clicked?: number;
unsubscribed?: number;
};
export type WebsiteCampaignRecipient = {
people_id?: string;
email?: string;
person?: WebsiteCampaignRecipientPerson;
subscribed?: boolean;
};
export type WebsiteCampaignRecipientPerson = {
nickname?: string;
avatar?: string;
};
export type WebsiteCampaignStatistic = {
profile?: WebsiteCampaignStatisticProfile;
data?: Record<string, unknown>;
created_at?: number;
updated_at?: number;
};
export type WebsiteCampaignStatisticProfile = {
people_id?: string;
email?: string;
person?: WebsiteCampaignStatisticProfilePerson;
};
export type WebsiteCampaignStatisticProfilePerson = {
nickname?: string;
avatar?: string;
geolocation?: WebsiteCampaignStatisticProfilePersonGeolocation;
};
export type WebsiteCampaignStatisticProfilePersonGeolocation = {
country?: string;
region?: string;
city?: string;
coordinates?: WebsiteCampaignStatisticProfilePersonGeolocationCoordinates;
};
export type WebsiteCampaignStatisticProfilePersonGeolocationCoordinates = {
latitude?: number;
longitude?: number;
};
/**************************************************************************
* CLASSES
***************************************************************************/
/**
* Crisp WebsiteCampaign Resource
*/
declare class WebsiteCampaign extends BaseResource {
/**
* List Campaigns
*/
listCampaigns(websiteID: string, pageNumber?: number): Promise<WebsiteCampaignExcerpt[]>;
/**
* List Campaign Tags
*/
listCampaignTags(websiteID: string): Promise<string[]>;
/**
* List Campaign Templates
*/
listCampaignTemplates(websiteID: string, pageNumber?: number): Promise<WebsiteCampaignTemplateExcerpt[]>;
/**
* Create A New Campaign Template
*/
createNewCampaignTemplate(websiteID: string, templateFormat: string, templateName: string): Promise<WebsiteCampaignTemplateNew>;
/**
* Check If Campaign Template Exists
*/
checkCampaignTemplateExists(websiteID: string, templateID: string): Promise<any>;
/**
* Get A Campaign Template
*/
getCampaignTemplate(websiteID: string, templateID: string): Promise<WebsiteCampaignTemplateItem>;
/**
* Save A Campaign Template
*/
saveCampaignTemplate(websiteID: string, templateID: string, template: WebsiteCampaignTemplateItem): Promise<any>;
/**
* Update A Campaign Template
*/
updateCampaignTemplate(websiteID: string, templateID: string, template: WebsiteCampaignTemplateItem): Promise<any>;
/**
* Remove A Campaign Template
*/
removeCampaignTemplate(websiteID: string, templateID: string): Promise<any>;
/**
* Create A New Campaign
*/
createNewCampaign(websiteID: string, campaignType: string, campaignName: string): Promise<any>;
/**
* Check If Campaign Exists
*/
checkCampaignExists(websiteID: string, campaignID: string): Promise<any>;
/**
* Get A Campaign
*/
getCampaign(websiteID: string, campaignID: string): Promise<WebsiteCampaignItem>;
/**
* Save A Campaign
*/
saveCampaign(websiteID: string, campaignID: string, campaign: WebsiteCampaignItem): Promise<any>;
/**
* Update A Campaign
*/
updateCampaign(websiteID: string, campaignID: string, campaign: WebsiteCampaignItem): Promise<any>;
/**
* Remove A Campaign
*/
removeCampaign(websiteID: string, campaignID: string): Promise<any>;
/**
* Dispatch A Campaign
* @return {Promise}
*/
dispatchCampaign(websiteID: string, campaignID: string): Promise<any>;
/**
* Resume A Campaign
*/
resumeCampaign(websiteID: string, campaignID: string): Promise<any>;
/**
* Pause A Campaign
*/
pauseCampaign(websiteID: string, campaignID: string): Promise<any>;
/**
* Test A Campaign
*/
testCampaign(websiteID: string, campaignID: string): Promise<any>;
/**
* List Campaign Recipients
*/
listCampaignRecipients(websiteID: string, campaignID: string, pageNumber?: number): Promise<WebsiteCampaignRecipient[]>;
/**
* List Campaign Statistics
*/
listCampaignStatistics(websiteID: string, campaignID: string, action: string, pageNumber?: number): Promise<WebsiteCampaignStatistic[]>;
}
/**************************************************************************
* EXPORTS
***************************************************************************/
export default WebsiteCampaign;