/* Options: Date: 2025-05-04 22:00:36 Version: 8.71 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://team.evovoice.io //GlobalNamespace: //MakePropertiesOptional: False //AddServiceStackTypes: True //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True IncludeTypes: NewFlow.* //ExcludeTypes: //DefaultImports: */ export class NodeParameterMap { [key:string] : NodeParameter; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export interface IReturn { createResponse(): T; } export interface IPost { } export class Struct { public constructor(init?: Partial) { (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) { (Object as any).assign(this, init); } } export enum UserDataFieldModes { Hidden = 'Hidden', ReadOnly = 'ReadOnly', ReadWrite = 'ReadWrite', } export enum ValueTypes { NotSpecified = 'NotSpecified', String = 'String', Boolean = 'Boolean', Number = 'Number', List = 'List', Struct = 'Struct', Transition = 'Transition', Custom = 'Custom', Date = 'Date', AudioFile = 'AudioFile', TimeZoneId = 'TimeZoneId', PhoneNumber = 'PhoneNumber', User = 'User', Endpoint = 'Endpoint', Time = 'Time', File = 'File', FaxNumber = 'FaxNumber', EmailAccount = 'EmailAccount', Customer = 'Customer', Flow = 'Flow', Team = 'Team', FlowReference = 'FlowReference', Integration = 'Integration', Assistant = 'Assistant', } export enum FlowRoles { UI = 'UI', Reference = 'Reference', PhoneNumberRouting = 'PhoneNumberRouting', UserDialOut = 'UserDialOut', FaxNumberRouting = 'FaxNumberRouting', } export enum FlowNodeCategories { General = 'General', Voice = 'Voice', Logic = 'Logic', DateAndTime = 'DateAndTime', Audio = 'Audio', Messaging = 'Messaging', Assistant = 'Assistant', Flows = 'Flows', Fax = 'Fax', Network = 'Network', Cookies = 'Cookies', CallCenter = 'CallCenter', Intelligence = 'Intelligence', } export enum UIHints { None = 'None', LargeText = 'LargeText', InlineForm = 'InlineForm', Password = 'Password', InlineStruct = 'InlineStruct', } export enum DataFieldUniqueness { NotUnique = 'NotUnique', Unique = 'Unique', UniqueToCustomer = 'UniqueToCustomer', } export class DataField { public id: string; public name: string; public type: ValueTypes; public uiHint: UIHints; public uiTab: string; public isAsync: boolean; public disableBinding: boolean; public structType: DataType; public listType: DataType; public description: string; public possibleValues: string[]; public isOutput: boolean; public customFieldValuesUrl: string; public defaultValue: Value; public transitionNameFormat: string; public uniqueness: DataFieldUniqueness; public voiceOnly: boolean; public conditionalVisibilityField: string; public conditionalVisibilityValue: string; public noEvalTemplate: boolean; public userMode: UserDataFieldModes; public anyValueType: boolean; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class DataType { public typeName: string; public fields: DataField[]; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export enum FlowChannels { Voice = 'Voice', Chat = 'Chat', Fax = 'Fax', } export class FlowNodeSpec { /** @description The name of this node */ // @ApiMember(Description="The name of this node") public name: string; /** @description A description of this node */ // @ApiMember(Description="A description of this node") public description: string; /** @description Icon class for this node (FontAwesome) */ // @ApiMember(Description="Icon class for this node (FontAwesome)") public iconClass: string; /** @description The type name for this node */ // @ApiMember(Description="The type name for this node") public typeName: string; /** @description The category this node should be grouped under */ // @ApiMember(Description="The category this node should be grouped under") public category: FlowNodeCategories; /** @description The URL where this node is located */ // @ApiMember(Description="The URL where this node is located") public url: string; /** @description The data type for this node */ // @ApiMember(Description="The data type for this node") public dataType: DataType; /** @description URL for documentation for this node */ // @ApiMember(Description="URL for documentation for this node") public documentationUrl: string; /** @description The channels that this node is restricted to */ // @ApiMember(Description="The channels that this node is restricted to") public restrictToChannels: FlowChannels[]; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class FlowNodeUI { /** @description The X position of the node */ // @ApiMember(Description="The X position of the node") public x: number; /** @description The Y position of the node */ // @ApiMember(Description="The Y position of the node") public y: number; /** @description Notes for this node */ // @ApiMember(Description="Notes for this node") public notes: string; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class FlowNode { /** @description The ID of this node. Must be unique within the flow but can be anything */ // @ApiMember(Description="The ID of this node. Must be unique within the flow but can be anything") public id: string; /** @description Is this the starting node for the flow. Only one node can have this set */ // @ApiMember(Description="Is this the starting node for the flow. Only one node can have this set") public isStartNode: boolean; /** @description The name of the node, descriptive to be used as a reminder in the GUI */ // @ApiMember(Description="The name of the node, descriptive to be used as a reminder in the GUI") public name: string; /** @description The specification for the node */ // @ApiMember(Description="The specification for the node") public spec: FlowNodeSpec; /** @description The UI data for the node */ // @ApiMember(Description="The UI data for the node") public ui: FlowNodeUI; /** @description The data for this node. These will be POST'd to the endpoint when it is called. */ // @ApiMember(Description="The data for this node. These will be POST'd to the endpoint when it is called.") public parameters: NodeParameterMap; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class FlowExit { /** @description The unique ID for this exit */ // @ApiMember(Description="The unique ID for this exit") public id: string; /** @description The name of this exit */ // @ApiMember(Description="The name of this exit") public name: string; /** @description The UI for the exit */ // @ApiMember(Description="The UI for the exit") public ui: FlowNodeUI; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class FlowParameter extends DataField { public isPublic: boolean; public isKnob: boolean; public constructor(init?: Partial) { super(init); (Object as any).assign(this, init); } } export class FlowUI { public selectedNode: string; public canvasX: number; public canvasY: number; public canvasZoom: number; public constructor(init?: Partial) { (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) { (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) { (Object as any).assign(this, init); } } export class CustomerBreadcrumb { public id: string; public name: string; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class FlowInfo extends EntityInfo { /** @description The name of this flow */ // @ApiMember(Description="The name of this flow") public name: string; /** @description The roles that this flow has */ // @ApiMember(Description="The roles that this flow has") public roles: FlowRoles[]; /** @description What this flow does */ // @ApiMember(Description="What this flow does") public description: string; /** @description Any notes for this flow */ // @ApiMember(Description="Any notes for this flow") public notes: string; /** @description The ID of the account associated with the flow */ // @ApiMember(Description="The ID of the account associated with the flow") public accountId: string; /** @description The name of the account associated with the flow */ // @ApiMember(Description="The name of the account associated with the flow") public accountName: string; /** @description The ID of the customer this flow is associated with */ // @ApiMember(Description="The ID of the customer this flow is associated with") public customerId: string; /** @description The name of the customer this flow is associated with */ // @ApiMember(Description="The name of the customer this flow is associated with") public customerName: string; /** @description The breadcrumb to the flow for this endpoint */ // @ApiMember(Description="The breadcrumb to the flow for this endpoint") public customerBreadcrumb: CustomerBreadcrumb[]; /** @description The nodes in this flow */ // @ApiMember(Description="The nodes in this flow") public nodes: FlowNode[]; /** @description The flow's parameters */ // @ApiMember(Description="The flow's parameters") public parameters: FlowParameter[]; /** @description The flow's exits */ // @ApiMember(Description="The flow's exits") public exits: FlowExit[]; /** @description The UI data for the flow */ // @ApiMember(Description="The UI data for the flow") public ui: FlowUI; /** @description The list of tags for this flow */ // @ApiMember(Description="The list of tags for this flow") public tags: Tag[]; /** @description The number of nodes in this flow */ // @ApiMember(Description="The number of nodes in this flow") public nodeCount: number; public constructor(init?: Partial) { super(init); (Object as any).assign(this, init); } } /** @description Create a new flow */ // @Route("/flows", "POST") // @Api(Description="Create a new flow") export class NewFlow implements IReturn, IPost { /** @description The account ID to associate with the flow */ // @ApiMember(Description="The account ID to associate with the flow") public accountId: string; /** @description The ID of the customer to associate with the flow */ // @ApiMember(Description="The ID of the customer to associate with the flow") public customerId: string; /** @description The name of the flow */ // @ApiMember(Description="The name of the flow") public name: string; /** @description The roles that this flow has */ // @ApiMember(Description="The roles that this flow has") public roles: FlowRoles[]; /** @description The list of nodes for this flow */ // @ApiMember(Description="The list of nodes for this flow") public nodes: FlowNode[]; public constructor(init?: Partial) { (Object as any).assign(this, init); } public getTypeName() { return 'NewFlow'; } public getMethod() { return 'POST'; } public createResponse() { return new FlowInfo(); } }