| Requires any of the roles: | SystemAdministrator, Manager, Customer |
| POST | /flows |
|---|
namespace Voice.Api
open System
open System.IO
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations
[<AllowNullLiteral>]
type EntityInfo() =
///<summary>
///The ID of the object
///</summary>
[<ApiMember(Description="The ID of the object")>]
member val Id:String = null with get,set
///<summary>
///The date the object was created
///</summary>
[<ApiMember(Description="The date the object was created")>]
member val DateCreated:String = null with get,set
///<summary>
///The date the object was last modified
///</summary>
[<ApiMember(Description="The date the object was last modified")>]
member val DateLastModified:String = null with get,set
///<summary>
///The user that created this object
///</summary>
[<ApiMember(Description="The user that created this object")>]
member val CreatedBy:String = null with get,set
///<summary>
///The user that last modified this object
///</summary>
[<ApiMember(Description="The user that last modified this object")>]
member val LastModifiedBy:String = null with get,set
type FlowRoles =
| UI = 0
| Reference = 1
| PhoneNumberRouting = 2
| UserDialOut = 3
| FaxNumberRouting = 4
[<AllowNullLiteral>]
type CustomerBreadcrumb() =
member val Id:String = null with get,set
member val Name:String = null with get,set
type FlowNodeCategories =
| General = 0
| Voice = 1
| Logic = 2
| DateAndTime = 3
| Audio = 4
| Messaging = 5
| Assistant = 6
| Flows = 7
| Fax = 8
| Network = 9
| Cookies = 10
| CallCenter = 11
| Intelligence = 12
type ValueTypes =
| NotSpecified = 0
| String = 1
| Boolean = 2
| Number = 3
| List = 4
| Struct = 5
| Transition = 6
| Custom = 7
| Date = 8
| AudioFile = 9
| TimeZoneId = 10
| PhoneNumber = 11
| User = 12
| Endpoint = 13
| Time = 14
| File = 15
| FaxNumber = 16
| EmailAccount = 17
| Customer = 18
| Flow = 19
| Team = 20
| FlowReference = 21
| Integration = 22
| Assistant = 23
type UIHints =
| None = 0
| LargeText = 1
| InlineForm = 2
| Password = 3
| InlineStruct = 4
[<AllowNullLiteral>]
type Struct() =
inherit Dictionary<String, Value>()
[<AllowNullLiteral>]
type Value() =
member val BoolValue:Nullable<Boolean> = new Nullable<Boolean>() with get,set
member val StringValue:String = null with get,set
member val NumberValue:Nullable<Double> = new Nullable<Double>() with get,set
member val ListValue:ResizeArray<Struct> = null with get,set
member val StructValue:Struct = null with get,set
type DataFieldUniqueness =
| NotUnique = 0
| Unique = 1
| UniqueToCustomer = 2
type UserDataFieldModes =
| Hidden = 0
| ReadOnly = 1
| ReadWrite = 2
[<AllowNullLiteral>]
type DataField() =
member val Id:String = null with get,set
member val Name:String = null with get,set
member val Type:ValueTypes = new ValueTypes() with get,set
member val UIHint:UIHints = new UIHints() with get,set
member val UITab:String = null with get,set
member val IsAsync:Boolean = new Boolean() with get,set
member val DisableBinding:Boolean = new Boolean() with get,set
member val StructType:DataType = null with get,set
member val ListType:DataType = null with get,set
member val Description:String = null with get,set
member val PossibleValues:ResizeArray<String> = null with get,set
member val IsOutput:Boolean = new Boolean() with get,set
member val CustomFieldValuesUrl:String = null with get,set
member val DefaultValue:Value = null with get,set
member val TransitionNameFormat:String = null with get,set
member val Uniqueness:DataFieldUniqueness = new DataFieldUniqueness() with get,set
member val VoiceOnly:Boolean = new Boolean() with get,set
member val ConditionalVisibilityField:String = null with get,set
member val ConditionalVisibilityValue:String = null with get,set
member val NoEvalTemplate:Boolean = new Boolean() with get,set
member val UserMode:UserDataFieldModes = new UserDataFieldModes() with get,set
member val AnyValueType:Boolean = new Boolean() with get,set
[<AllowNullLiteral>]
type DataType() =
member val TypeName:String = null with get,set
member val Fields:ResizeArray<DataField> = null with get,set
type FlowChannels =
| Voice = 0
| Chat = 1
| Fax = 2
[<AllowNullLiteral>]
type FlowNodeSpec() =
///<summary>
///The name of this node
///</summary>
[<ApiMember(Description="The name of this node")>]
member val Name:String = null with get,set
///<summary>
///A description of this node
///</summary>
[<ApiMember(Description="A description of this node")>]
member val Description:String = null with get,set
///<summary>
///Icon class for this node (FontAwesome)
///</summary>
[<ApiMember(Description="Icon class for this node (FontAwesome)")>]
member val IconClass:String = null with get,set
///<summary>
///The type name for this node
///</summary>
[<ApiMember(Description="The type name for this node")>]
member val TypeName:String = null with get,set
///<summary>
///The category this node should be grouped under
///</summary>
[<ApiMember(Description="The category this node should be grouped under")>]
member val Category:FlowNodeCategories = new FlowNodeCategories() with get,set
///<summary>
///The URL where this node is located
///</summary>
[<ApiMember(Description="The URL where this node is located")>]
member val Url:String = null with get,set
///<summary>
///The data type for this node
///</summary>
[<ApiMember(Description="The data type for this node")>]
member val DataType:DataType = null with get,set
///<summary>
///URL for documentation for this node
///</summary>
[<ApiMember(Description="URL for documentation for this node")>]
member val DocumentationUrl:String = null with get,set
///<summary>
///The channels that this node is restricted to
///</summary>
[<ApiMember(Description="The channels that this node is restricted to")>]
member val RestrictToChannels:ResizeArray<FlowChannels> = null with get,set
[<AllowNullLiteral>]
type FlowNodeUI() =
///<summary>
///The X position of the node
///</summary>
[<ApiMember(Description="The X position of the node")>]
member val X:Double = new Double() with get,set
///<summary>
///The Y position of the node
///</summary>
[<ApiMember(Description="The Y position of the node")>]
member val Y:Double = new Double() with get,set
///<summary>
///Notes for this node
///</summary>
[<ApiMember(Description="Notes for this node")>]
member val Notes:String = null with get,set
type ValueSources =
| Value = 0
| Flow = 1
| System = 2
| Customer = 3
| Session = 4
| Endpoint = 5
| Expression = 6
| User = 7
[<AllowNullLiteral>]
type NodeParameter() =
member val Id:String = null with get,set
member val Type:ValueTypes = new ValueTypes() with get,set
member val Source:ValueSources = new ValueSources() with get,set
member val IsAsync:Boolean = new Boolean() with get,set
member val ReferenceId:String = null with get,set
member val Value:Value = null with get,set
member val NoEvalTemplate:Boolean = new Boolean() with get,set
member val ListParameters:ResizeArray<NodeParameterMap> = null with get,set
member val StructParameters:NodeParameterMap = null with get,set
member val IsOutput:Boolean = new Boolean() with get,set
member val Expression:String = null with get,set
member val ListType:DataType = null with get,set
[<AllowNullLiteral>]
type NodeParameterMap() =
inherit Dictionary<String, NodeParameter>()
[<AllowNullLiteral>]
type FlowNode() =
///<summary>
///The ID of this node. Must be unique within the flow but can be anything
///</summary>
[<ApiMember(Description="The ID of this node. Must be unique within the flow but can be anything")>]
member val Id:String = null with get,set
///<summary>
///Is this the starting node for the flow. Only one node can have this set
///</summary>
[<ApiMember(Description="Is this the starting node for the flow. Only one node can have this set")>]
member val IsStartNode:Boolean = new Boolean() with get,set
///<summary>
///The name of the node, descriptive to be used as a reminder in the GUI
///</summary>
[<ApiMember(Description="The name of the node, descriptive to be used as a reminder in the GUI")>]
member val Name:String = null with get,set
///<summary>
///The specification for the node
///</summary>
[<ApiMember(Description="The specification for the node")>]
member val Spec:FlowNodeSpec = null with get,set
///<summary>
///The UI data for the node
///</summary>
[<ApiMember(Description="The UI data for the node")>]
member val UI:FlowNodeUI = null with get,set
///<summary>
///The data for this node. These will be POST'd to the endpoint when it is called.
///</summary>
[<ApiMember(Description="The data for this node. These will be POST'd to the endpoint when it is called.")>]
member val Parameters:NodeParameterMap = null with get,set
[<AllowNullLiteral>]
type FlowParameter() =
inherit DataField()
member val IsPublic:Boolean = new Boolean() with get,set
member val IsKnob:Boolean = new Boolean() with get,set
[<AllowNullLiteral>]
type FlowExit() =
///<summary>
///The unique ID for this exit
///</summary>
[<ApiMember(Description="The unique ID for this exit")>]
member val Id:String = null with get,set
///<summary>
///The name of this exit
///</summary>
[<ApiMember(Description="The name of this exit")>]
member val Name:String = null with get,set
///<summary>
///The UI for the exit
///</summary>
[<ApiMember(Description="The UI for the exit")>]
member val UI:FlowNodeUI = null with get,set
[<AllowNullLiteral>]
type FlowUI() =
member val SelectedNode:String = null with get,set
member val CanvasX:Double = new Double() with get,set
member val CanvasY:Double = new Double() with get,set
member val CanvasZoom:Double = new Double() with get,set
type TagColors =
| Magenta = 0
| Red = 1
| Volcano = 2
| Orange = 3
| Gold = 4
| Lime = 5
| Green = 6
| Cyan = 7
| Blue = 8
| GeekBlue = 9
| Purple = 10
[<AllowNullLiteral>]
type Tag() =
member val Id:String = null with get,set
member val Name:String = null with get,set
member val Color:TagColors = new TagColors() with get,set
[<AllowNullLiteral>]
type FlowInfo() =
inherit EntityInfo()
///<summary>
///The name of this flow
///</summary>
[<ApiMember(Description="The name of this flow")>]
member val Name:String = null with get,set
///<summary>
///The roles that this flow has
///</summary>
[<ApiMember(Description="The roles that this flow has")>]
member val Roles:ResizeArray<FlowRoles> = null with get,set
///<summary>
///What this flow does
///</summary>
[<ApiMember(Description="What this flow does")>]
member val Description:String = null with get,set
///<summary>
///Any notes for this flow
///</summary>
[<ApiMember(Description="Any notes for this flow")>]
member val Notes:String = null with get,set
///<summary>
///The ID of the account associated with the flow
///</summary>
[<ApiMember(Description="The ID of the account associated with the flow")>]
member val AccountId:String = null with get,set
///<summary>
///The name of the account associated with the flow
///</summary>
[<ApiMember(Description="The name of the account associated with the flow")>]
member val AccountName:String = null with get,set
///<summary>
///The ID of the customer this flow is associated with
///</summary>
[<ApiMember(Description="The ID of the customer this flow is associated with")>]
member val CustomerId:String = null with get,set
///<summary>
///The name of the customer this flow is associated with
///</summary>
[<ApiMember(Description="The name of the customer this flow is associated with")>]
member val CustomerName:String = null with get,set
///<summary>
///The breadcrumb to the flow for this endpoint
///</summary>
[<ApiMember(Description="The breadcrumb to the flow for this endpoint")>]
member val CustomerBreadcrumb:ResizeArray<CustomerBreadcrumb> = null with get,set
///<summary>
///The nodes in this flow
///</summary>
[<ApiMember(Description="The nodes in this flow")>]
member val Nodes:ResizeArray<FlowNode> = null with get,set
///<summary>
///The flow's parameters
///</summary>
[<ApiMember(Description="The flow's parameters")>]
member val Parameters:ResizeArray<FlowParameter> = null with get,set
///<summary>
///The flow's exits
///</summary>
[<ApiMember(Description="The flow's exits")>]
member val Exits:ResizeArray<FlowExit> = null with get,set
///<summary>
///The UI data for the flow
///</summary>
[<ApiMember(Description="The UI data for the flow")>]
member val UI:FlowUI = null with get,set
///<summary>
///The list of tags for this flow
///</summary>
[<ApiMember(Description="The list of tags for this flow")>]
member val Tags:ResizeArray<Tag> = null with get,set
///<summary>
///The number of nodes in this flow
///</summary>
[<ApiMember(Description="The number of nodes in this flow")>]
member val NodeCount:Int32 = new Int32() with get,set
///<summary>
///Create a new flow
///</summary>
[<Api(Description="Create a new flow")>]
[<AllowNullLiteral>]
type NewFlow() =
interface IPost
///<summary>
///The account ID to associate with the flow
///</summary>
[<ApiMember(Description="The account ID to associate with the flow")>]
member val AccountId:String = null with get,set
///<summary>
///The ID of the customer to associate with the flow
///</summary>
[<ApiMember(Description="The ID of the customer to associate with the flow")>]
member val CustomerId:String = null with get,set
///<summary>
///The name of the flow
///</summary>
[<ApiMember(Description="The name of the flow")>]
member val Name:String = null with get,set
///<summary>
///The roles that this flow has
///</summary>
[<ApiMember(Description="The roles that this flow has")>]
member val Roles:ResizeArray<FlowRoles> = null with get,set
///<summary>
///The list of nodes for this flow
///</summary>
[<ApiMember(Description="The list of nodes for this flow")>]
member val Nodes:ResizeArray<FlowNode> = null with get,set
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /flows HTTP/1.1
Host: team.evovoice.io
Accept: application/xml
Content-Type: application/xml
Content-Length: length
<NewFlow xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows">
<AccountId>String</AccountId>
<CustomerId>String</CustomerId>
<Name>String</Name>
<Nodes>
<FlowNode>
<Id>String</Id>
<IsStartNode>false</IsStartNode>
<Name>String</Name>
<Parameters xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d4p1:KeyValueOfstringNodeParameteripFhVFNS>
<d4p1:Key>String</d4p1:Key>
<d4p1:Value i:nil="true" />
</d4p1:KeyValueOfstringNodeParameteripFhVFNS>
</Parameters>
<Spec>
<Category>General</Category>
<DataType xmlns:d5p1="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data" i:nil="true" />
<Description>String</Description>
<DocumentationUrl>String</DocumentationUrl>
<IconClass>String</IconClass>
<Name>String</Name>
<RestrictToChannels>
<FlowChannels>Voice</FlowChannels>
</RestrictToChannels>
<TypeName>String</TypeName>
<Url>String</Url>
</Spec>
<UI>
<Notes>String</Notes>
<X>0</X>
<Y>0</Y>
</UI>
</FlowNode>
</Nodes>
<Roles>
<FlowRoles>UI</FlowRoles>
</Roles>
</NewFlow>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length
<FlowInfo xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows">
<CreatedBy xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</CreatedBy>
<DateCreated xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</DateCreated>
<DateLastModified xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</DateLastModified>
<Id xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</Id>
<LastModifiedBy xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</LastModifiedBy>
<AccountId>String</AccountId>
<AccountName>String</AccountName>
<CustomerBreadcrumb xmlns:d2p1="http://schemas.datacontract.org/2004/07/Voice.Api.Customers">
<d2p1:CustomerBreadcrumb>
<d2p1:Id>String</d2p1:Id>
<d2p1:Name>String</d2p1:Name>
</d2p1:CustomerBreadcrumb>
</CustomerBreadcrumb>
<CustomerId>String</CustomerId>
<CustomerName>String</CustomerName>
<Description>String</Description>
<Exits>
<FlowExit>
<Id>String</Id>
<Name>String</Name>
<UI>
<Notes>String</Notes>
<X>0</X>
<Y>0</Y>
</UI>
</FlowExit>
</Exits>
<Name>String</Name>
<NodeCount>0</NodeCount>
<Nodes>
<FlowNode>
<Id>String</Id>
<IsStartNode>false</IsStartNode>
<Name>String</Name>
<Parameters xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d4p1:KeyValueOfstringNodeParameteripFhVFNS>
<d4p1:Key>String</d4p1:Key>
<d4p1:Value i:nil="true" />
</d4p1:KeyValueOfstringNodeParameteripFhVFNS>
</Parameters>
<Spec>
<Category>General</Category>
<DataType xmlns:d5p1="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data" i:nil="true" />
<Description>String</Description>
<DocumentationUrl>String</DocumentationUrl>
<IconClass>String</IconClass>
<Name>String</Name>
<RestrictToChannels>
<FlowChannels>Voice</FlowChannels>
</RestrictToChannels>
<TypeName>String</TypeName>
<Url>String</Url>
</Spec>
<UI>
<Notes>String</Notes>
<X>0</X>
<Y>0</Y>
</UI>
</FlowNode>
</Nodes>
<Notes>String</Notes>
<Parameters>
<FlowParameter>
<AnyValueType xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">false</AnyValueType>
<ConditionalVisibilityField xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">String</ConditionalVisibilityField>
<ConditionalVisibilityValue xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">String</ConditionalVisibilityValue>
<CustomFieldValuesUrl xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">String</CustomFieldValuesUrl>
<DefaultValue xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">
<BoolValue>false</BoolValue>
<ListValue xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d5p1:ArrayOfKeyValueOfstringValue8Ahp2kgT i:nil="true" />
</ListValue>
<NumberValue>0</NumberValue>
<StringValue>String</StringValue>
<StructValue xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" i:nil="true" />
</DefaultValue>
<Description xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">String</Description>
<DisableBinding xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">false</DisableBinding>
<Id xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">String</Id>
<IsAsync xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">false</IsAsync>
<IsOutput xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">false</IsOutput>
<ListType i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data" />
<Name xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">String</Name>
<NoEvalTemplate xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">false</NoEvalTemplate>
<PossibleValues xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">
<d4p1:string>String</d4p1:string>
</PossibleValues>
<StructType i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data" />
<TransitionNameFormat xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">String</TransitionNameFormat>
<Type xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">NotSpecified</Type>
<UIHint xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">None</UIHint>
<UITab xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">String</UITab>
<Uniqueness xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">NotUnique</Uniqueness>
<UserMode xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">Hidden</UserMode>
<VoiceOnly xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">false</VoiceOnly>
<IsKnob>false</IsKnob>
<IsPublic>false</IsPublic>
</FlowParameter>
</Parameters>
<Roles>
<FlowRoles>UI</FlowRoles>
</Roles>
<Tags xmlns:d2p1="http://schemas.datacontract.org/2004/07/Voice.Api.Settings">
<d2p1:Tag>
<d2p1:Color>Magenta</d2p1:Color>
<d2p1:Id>String</d2p1:Id>
<d2p1:Name>String</d2p1:Name>
</d2p1:Tag>
</Tags>
<UI>
<CanvasX>0</CanvasX>
<CanvasY>0</CanvasY>
<CanvasZoom>0</CanvasZoom>
<SelectedNode>String</SelectedNode>
</UI>
</FlowInfo>