Evo Voice

<back to all web services

AppGetFlows

Requires Authentication
The following routes are available for this service:
GET/portal/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

    type SortOrders =
        | Ascend = 0
        | Descend = 1

    [<AllowNullLiteral>]
    type ListRequest<T>() = 
        interface IGet
        ///<summary>
        ///The page of data to retrieve
        ///</summary>
        [<ApiMember(Description="The page of data to retrieve")>]
        member val Page:Int32 = new Int32() with get,set

        ///<summary>
        ///If you want all objects to be returned. This should be used with care
        ///</summary>
        [<ApiMember(Description="If you want all objects to be returned. This should be used with care")>]
        member val All:Boolean = new Boolean() with get,set

        ///<summary>
        ///The number per page to retrieve
        ///</summary>
        [<ApiMember(Description="The number per page to retrieve")>]
        member val CountPerPage:Int32 = new Int32() with get,set

        ///<summary>
        ///Specific IDs
        ///</summary>
        [<ApiMember(Description="Specific IDs")>]
        member val SpecificIds:ResizeArray<String> = null with get,set

        ///<summary>
        ///Specify a sort field
        ///</summary>
        [<ApiMember(Description="Specify a sort field")>]
        member val SortField:String = null with get,set

        ///<summary>
        ///Specify a sort order
        ///</summary>
        [<ApiMember(Description="Specify a sort order")>]
        member val SortOrder:SortOrders = new SortOrders() with get,set

        ///<summary>
        ///Disables total / page counts - improves performance. Returns only data. If there is no more data, Items will be empty array
        ///</summary>
        [<ApiMember(Description="Disables total / page counts - improves performance. Returns only data. If there is no more data, Items will be empty array")>]
        member val SimplifiedPaging:Boolean = new Boolean() with get,set

    [<AllowNullLiteral>]
    type AppGetFlows() = 
        inherit ListRequest<FlowInfo>()
        member val AccountId:String = null with get,set
        member val CustomerId:String = null with get,set
        member val NameFilter:String = null with get,set
        member val Role:Nullable<FlowRoles> = new Nullable<FlowRoles>() with get,set

    [<AllowNullLiteral>]
    type BillingItem() = 
        member val BaseCost:Double = new Double() with get,set
        member val RawUnitMultiplier:Double = new Double() with get,set
        member val UnitCost:Double = new Double() with get,set
        member val Allowance:Int32 = new Int32() with get,set

    [<AllowNullLiteral>]
    type BillingSettings() = 
        member val Base:BillingItem = null with get,set
        member val LocalNumbers:BillingItem = null with get,set
        member val TollFreeNumbers:BillingItem = null with get,set
        member val InboundVoiceCalls:BillingItem = null with get,set
        member val OutboundVoiceCalls:BillingItem = null with get,set
        member val InboundFaxes:BillingItem = null with get,set
        member val OutboundFaxes:BillingItem = null with get,set
        member val InboundSmsMessages:BillingItem = null with get,set
        member val OutboundSmsMessages:BillingItem = null with get,set
        member val AIInsights:BillingItem = null with get,set
        member val AILiveMinutes:BillingItem = null with get,set

    [<AllowNullLiteral>]
    type AccountInfo() = 
        inherit EntityInfo()
        ///<summary>
        ///The name of this account
        ///</summary>
        [<ApiMember(Description="The name of this account")>]
        member val Name:String = null with get,set

        ///<summary>
        ///The ID of this account's parent
        ///</summary>
        [<ApiMember(Description="The ID of this account's parent")>]
        member val ParentAccountId:String = null with get,set

        ///<summary>
        ///The twilio account SID
        ///</summary>
        [<ApiMember(Description="The twilio account SID")>]
        member val TwilioAccountSid:String = null with get,set

        ///<summary>
        ///The ancestors of this account. Useful for breadcrumbs
        ///</summary>
        [<ApiMember(Description="The ancestors of this account. Useful for breadcrumbs")>]
        member val AncestorIds:ResizeArray<String> = null with get,set

        ///<summary>
        ///The max number of phone numbers this account can have
        ///</summary>
        [<ApiMember(Description="The max number of phone numbers this account can have")>]
        member val MaxPhoneNumbers:Int32 = new Int32() with get,set

        ///<summary>
        ///This account is BYOA
        ///</summary>
        [<ApiMember(Description="This account is BYOA")>]
        member val IsBYOA:Boolean = new Boolean() with get,set

        ///<summary>
        ///TrustHub Profile Sid
        ///</summary>
        [<ApiMember(Description="TrustHub Profile Sid")>]
        member val TrustHubProfileSid:String = null with get,set

        ///<summary>
        ///The ID of the logo file
        ///</summary>
        [<ApiMember(Description="The ID of the logo file")>]
        member val LogoId:String = null with get,set

        ///<summary>
        ///The URI of the logo file
        ///</summary>
        [<ApiMember(Description="The URI of the logo file")>]
        member val LogoUri:String = null with get,set

        ///<summary>
        ///The billing settings for this account
        ///</summary>
        [<ApiMember(Description="The billing settings for this account")>]
        member val BillingSettings:BillingSettings = null with get,set

    [<AllowNullLiteral>]
    type ListResponse<T>() = 
        ///<summary>
        ///The items
        ///</summary>
        [<ApiMember(Description="The items")>]
        member val Items:ResizeArray<AccountInfo> = null with get,set

        ///<summary>
        ///The total number of items
        ///</summary>
        [<ApiMember(Description="The total number of items")>]
        member val TotalCount:Int32 = new Int32() with get,set

        ///<summary>
        ///The total number of pages
        ///</summary>
        [<ApiMember(Description="The total number of pages")>]
        member val TotalPages:Int32 = new Int32() with get,set

        ///<summary>
        ///Are there more pages of items? Used with simplified paging
        ///</summary>
        [<ApiMember(Description="Are there more pages of items? Used with simplified paging")>]
        member val HasMorePages:Boolean = new Boolean() with get,set

F# AppGetFlows DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json

To embed the response in a jsonp callback, append ?callback=myCallback

HTTP + JSON

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

GET /portal/flows HTTP/1.1 
Host: team.evovoice.io 
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"items":[{"name":"String","roles":["UI"],"description":"String","notes":"String","accountId":"String","accountName":"String","customerId":"String","customerName":"String","customerBreadcrumb":[{"id":"String","name":"String"}],"nodes":[{"id":"String","isStartNode":false,"name":"String","spec":{"name":"String","description":"String","iconClass":"String","typeName":"String","category":"General","url":"String","documentationUrl":"String","restrictToChannels":["Voice"]},"ui":{"x":0,"y":0,"notes":"String"},"parameters":{}}],"parameters":[{"isPublic":false,"isKnob":false,"id":"String","name":"String","type":"NotSpecified","uiHint":"None","uiTab":"String","isAsync":false,"disableBinding":false,"description":"String","possibleValues":["String"],"isOutput":false,"customFieldValuesUrl":"String","defaultValue":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[null]},"transitionNameFormat":"String","uniqueness":"NotUnique","voiceOnly":false,"conditionalVisibilityField":"String","conditionalVisibilityValue":"String","noEvalTemplate":false,"userMode":"Hidden","anyValueType":false}],"exits":[{"id":"String","name":"String","ui":{"x":0,"y":0,"notes":"String"}}],"ui":{"selectedNode":"String","canvasX":0,"canvasY":0,"canvasZoom":0},"tags":[{"id":"String","name":"String","color":"Magenta"}],"nodeCount":0,"id":"String","dateCreated":"String","dateLastModified":"String","createdBy":"String","lastModifiedBy":"String"}],"totalCount":0,"totalPages":0,"hasMorePages":false}