Requires any of the roles: | SystemAdministrator, Manager, Customer |
POST | /customers |
---|
export class NodeParameterMap
{
[key:string] : NodeParameter;
public constructor(init?: Partial<NodeParameterMap>) { (Object as any).assign(this, init); }
}
export class EntityInfo
{
/** @description The ID of the object */
// @ApiMember(Description="The ID of the object")
public id: string;
/** @description The date the object was created */
// @ApiMember(Description="The date the object was created")
public dateCreated: string;
/** @description The date the object was last modified */
// @ApiMember(Description="The date the object was last modified")
public dateLastModified: string;
/** @description The user that created this object */
// @ApiMember(Description="The user that created this object")
public createdBy: string;
/** @description The user that last modified this object */
// @ApiMember(Description="The user that last modified this object")
public lastModifiedBy: string;
public constructor(init?: Partial<EntityInfo>) { (Object as any).assign(this, init); }
}
export class CustomerBreadcrumb
{
public id: string;
public name: string;
public constructor(init?: Partial<CustomerBreadcrumb>) { (Object as any).assign(this, init); }
}
export class Value
{
public boolValue?: boolean;
public stringValue: string;
public numberValue?: number;
public listValue: Struct[];
public structValue: Struct;
public constructor(init?: Partial<Value>) { (Object as any).assign(this, init); }
}
export class Struct
{
public constructor(init?: Partial<Struct>) { (Object as any).assign(this, init); }
}
export enum TagColors
{
Magenta = 'Magenta',
Red = 'Red',
Volcano = 'Volcano',
Orange = 'Orange',
Gold = 'Gold',
Lime = 'Lime',
Green = 'Green',
Cyan = 'Cyan',
Blue = 'Blue',
GeekBlue = 'GeekBlue',
Purple = 'Purple',
}
export class Tag
{
public id: string;
public name: string;
public color: TagColors;
public constructor(init?: Partial<Tag>) { (Object as any).assign(this, init); }
}
export enum SimpleSchedulingRuleTypes
{
Always = 'Always',
CustomerState = 'CustomerState',
Time = 'Time',
}
export class ScheduleDay
{
public offset: number;
public dayOfWeek: DayOfWeek;
public constructor(init?: Partial<ScheduleDay>) { (Object as any).assign(this, init); }
}
export enum SchedulingRuleFrequency
{
None = 'None',
Secondly = 'Secondly',
Minutely = 'Minutely',
Hourly = 'Hourly',
Daily = 'Daily',
Weekly = 'Weekly',
Monthly = 'Monthly',
Yearly = 'Yearly',
}
export class SchedulingRule
{
public id: string;
public name: string;
public priority: number;
public state: string;
public source: string;
public condition: string;
public simpleRuleType: SimpleSchedulingRuleTypes;
public customerState: string;
public flowId: string;
public flowParams: Struct;
public isAllDay: boolean;
public startDate: string;
public startTime: string;
public endTime: string;
public bySetPosition: number[];
public byMonth: number[];
public byWeekNo: number[];
public byYearDay: number[];
public byMonthDay: number[];
public byDay: ScheduleDay[];
public byHour: number[];
public byMinute: number[];
public interval: number;
public count: number;
public untilDate: string;
public frequency: SchedulingRuleFrequency;
public constructor(init?: Partial<SchedulingRule>) { (Object as any).assign(this, init); }
}
export class Schedule
{
public timeZoneId: string;
public inherit: boolean;
public forceClosed: boolean;
public rules: SchedulingRule[];
public defaultState: string;
public constructor(init?: Partial<Schedule>) { (Object as any).assign(this, init); }
}
export class IntegrationData
{
public thirdPartyId: string;
public constructor(init?: Partial<IntegrationData>) { (Object as any).assign(this, init); }
}
export class Dictionary<T> { [Key: string]: T; }
export class EntityIntegrationData extends Dictionary<IntegrationData>
{
public constructor(init?: Partial<EntityIntegrationData>) { super(); (Object as any).assign(this, init); }
}
export class BillingItem
{
public baseCost: number;
public rawUnitMultiplier: number;
public unitCost: number;
public allowance: number;
public constructor(init?: Partial<BillingItem>) { (Object as any).assign(this, init); }
}
export class BillingSettings
{
public base: BillingItem;
public localNumbers: BillingItem;
public tollFreeNumbers: BillingItem;
public inboundVoiceCalls: BillingItem;
public outboundVoiceCalls: BillingItem;
public inboundFaxes: BillingItem;
public outboundFaxes: BillingItem;
public inboundSmsMessages: BillingItem;
public outboundSmsMessages: BillingItem;
public aiInsights: BillingItem;
public aiLiveMinutes: BillingItem;
public constructor(init?: Partial<BillingSettings>) { (Object as any).assign(this, init); }
}
export class AppSettings
{
public enablePhoneNumberManagement: boolean;
public enableDeviceManagement: boolean;
public enableDialer: boolean;
public enableCallHistory: boolean;
public enableAssistants: boolean;
public showFileNameInMessageCenter: boolean;
public chakraTheme: string;
public customCss: string;
public pageTitle: string;
public stringMappings: string;
public logoutUrl: string;
public portMyNumberUrl: string;
public constructor(init?: Partial<AppSettings>) { (Object as any).assign(this, init); }
}
export class CustomerInfo extends EntityInfo
{
/** @description The ID of the account associated with this customer */
// @ApiMember(Description="The ID of the account associated with this customer")
public accountId: string;
/** @description The parent customer ID for this customer */
// @ApiMember(Description="The parent customer ID for this customer")
public parentCustomerId: string;
/** @description The breadcrumb to this customer */
// @ApiMember(Description="The breadcrumb to this customer")
public breadcrumb: CustomerBreadcrumb[];
/** @description The name of the account associated with this customer */
// @ApiMember(Description="The name of the account associated with this customer")
public accountName: string;
/** @description Is this customer staging or production? */
// @ApiMember(Description="Is this customer staging or production?")
public isStaging: boolean;
/** @description The name of the company */
// @ApiMember(Description="The name of the company")
public name: string;
/** @description The reference ID for this company */
// @ApiMember(Description="The reference ID for this company")
public referenceId: string;
/** @description This customer's data values */
// @ApiMember(Description="This customer's data values")
public data: Struct;
/** @description The list of tags for this customer */
// @ApiMember(Description="The list of tags for this customer")
public tags: Tag[];
/** @description This customer's schedule */
// @ApiMember(Description="This customer's schedule")
public schedule: Schedule;
/** @description Integration data for this customer */
// @ApiMember(Description="Integration data for this customer")
public integrationData: EntityIntegrationData;
/** @description Override this customer's billing settings? Otherwise inherits from parent */
// @ApiMember(Description="Override this customer's billing settings? Otherwise inherits from parent")
public overrideBillingSettings: boolean;
/** @description Billing settings for this customer */
// @ApiMember(Description="Billing settings for this customer")
public billingSettings: BillingSettings;
/** @description Should this customer override the parent customer's app settings */
// @ApiMember(Description="Should this customer override the parent customer's app settings")
public overrideAppSettings: boolean;
/** @description App / Portal settings for this customer */
// @ApiMember(Description="App / Portal settings for this customer")
public appSettings: AppSettings;
public constructor(init?: Partial<CustomerInfo>) { super(init); (Object as any).assign(this, init); }
}
/** @description Creates a new customer */
// @Api(Description="Creates a new customer")
export class NewCustomer implements IPost
{
/** @description The account ID to associate this customer with */
// @ApiMember(Description="The account ID to associate this customer with")
public accountId: string;
/** @description The name of the customer */
// @ApiMember(Description="The name of the customer")
public name: string;
/** @description The parent customer for this customer */
// @ApiMember(Description="The parent customer for this customer")
public parentCustomerId: string;
/** @description The reference ID for this customer (e.g. in a third party system) */
// @ApiMember(Description="The reference ID for this customer (e.g. in a third party system)")
public referenceId: string;
/** @description Data values for this customer */
// @ApiMember(Description="Data values for this customer")
public data: Struct;
public constructor(init?: Partial<NewCustomer>) { (Object as any).assign(this, init); }
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /customers HTTP/1.1
Host: team.evovoice.io
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
accountId: String,
name: String,
parentCustomerId: String,
referenceId: String
}
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { accountId: String, parentCustomerId: String, breadcrumb: [ { id: String, name: String } ], accountName: String, isStaging: False, name: String, referenceId: String, tags: [ { id: String, name: String, color: Magenta } ], schedule: { timeZoneId: String, inherit: False, forceClosed: False, rules: [ { id: String, name: String, priority: 0, state: String, source: String, condition: String, simpleRuleType: Always, customerState: String, flowId: String, isAllDay: False, startDate: String, startTime: String, endTime: String, bySetPosition: [ 0 ], byMonth: [ 0 ], byWeekNo: [ 0 ], byYearDay: [ 0 ], byMonthDay: [ 0 ], byDay: [ { offset: 0, dayOfWeek: Sunday } ], byHour: [ 0 ], byMinute: [ 0 ], interval: 0, count: 0, untilDate: String, frequency: None } ], defaultState: String }, integrationData: { String: { thirdPartyId: String } }, overrideBillingSettings: False, billingSettings: { base: { baseCost: 0, rawUnitMultiplier: 0, unitCost: 0, allowance: 0 }, localNumbers: { baseCost: 0, rawUnitMultiplier: 0, unitCost: 0, allowance: 0 }, tollFreeNumbers: { baseCost: 0, rawUnitMultiplier: 0, unitCost: 0, allowance: 0 }, inboundVoiceCalls: { baseCost: 0, rawUnitMultiplier: 0, unitCost: 0, allowance: 0 }, outboundVoiceCalls: { baseCost: 0, rawUnitMultiplier: 0, unitCost: 0, allowance: 0 }, inboundFaxes: { baseCost: 0, rawUnitMultiplier: 0, unitCost: 0, allowance: 0 }, outboundFaxes: { baseCost: 0, rawUnitMultiplier: 0, unitCost: 0, allowance: 0 }, inboundSmsMessages: { baseCost: 0, rawUnitMultiplier: 0, unitCost: 0, allowance: 0 }, outboundSmsMessages: { baseCost: 0, rawUnitMultiplier: 0, unitCost: 0, allowance: 0 }, aiInsights: { baseCost: 0, rawUnitMultiplier: 0, unitCost: 0, allowance: 0 }, aiLiveMinutes: { baseCost: 0, rawUnitMultiplier: 0, unitCost: 0, allowance: 0 } }, overrideAppSettings: False, appSettings: { enablePhoneNumberManagement: False, enableDeviceManagement: False, enableDialer: False, enableCallHistory: False, enableAssistants: False, showFileNameInMessageCenter: False, chakraTheme: String, customCss: String, pageTitle: String, stringMappings: String, logoutUrl: String, portMyNumberUrl: String }, id: String, dateCreated: String, dateLastModified: String, createdBy: String, lastModifiedBy: String }