| GET | /portal/flows |
|---|
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using Voice.Api.App.Portal;
using Voice.Api;
using Voice.Api.Flows;
using Voice.Api.Customers;
using Voice.Api.Flows.Data;
using Voice.Api.Endpoints;
using Voice.Api.Settings;
using Voice.Api.Accounts;
namespace Voice.Api
{
public partial class EntityInfo
{
///<summary>
///The ID of the object
///</summary>
[ApiMember(Description="The ID of the object")]
public virtual string Id { get; set; }
///<summary>
///The date the object was created
///</summary>
[ApiMember(Description="The date the object was created")]
public virtual string DateCreated { get; set; }
///<summary>
///The date the object was last modified
///</summary>
[ApiMember(Description="The date the object was last modified")]
public virtual string DateLastModified { get; set; }
///<summary>
///The user that created this object
///</summary>
[ApiMember(Description="The user that created this object")]
public virtual string CreatedBy { get; set; }
///<summary>
///The user that last modified this object
///</summary>
[ApiMember(Description="The user that last modified this object")]
public virtual string LastModifiedBy { get; set; }
}
public partial class ListRequest<T>
: IGet
{
///<summary>
///The page of data to retrieve
///</summary>
[ApiMember(Description="The page of data to retrieve")]
public virtual int Page { 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")]
public virtual bool All { get; set; }
///<summary>
///The number per page to retrieve
///</summary>
[ApiMember(Description="The number per page to retrieve")]
public virtual int CountPerPage { get; set; }
///<summary>
///Specific IDs
///</summary>
[ApiMember(Description="Specific IDs")]
public virtual List<string> SpecificIds { get; set; }
///<summary>
///Specify a sort field
///</summary>
[ApiMember(Description="Specify a sort field")]
public virtual string SortField { get; set; }
///<summary>
///Specify a sort order
///</summary>
[ApiMember(Description="Specify a sort order")]
public virtual SortOrders SortOrder { 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")]
public virtual bool SimplifiedPaging { get; set; }
}
public partial class ListResponse<T>
{
///<summary>
///The items
///</summary>
[ApiMember(Description="The items")]
public virtual List<AccountInfo> Items { get; set; }
///<summary>
///The total number of items
///</summary>
[ApiMember(Description="The total number of items")]
public virtual int TotalCount { get; set; }
///<summary>
///The total number of pages
///</summary>
[ApiMember(Description="The total number of pages")]
public virtual int TotalPages { 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")]
public virtual bool HasMorePages { get; set; }
}
public enum SortOrders
{
Ascend,
Descend,
}
}
namespace Voice.Api.Accounts
{
public partial class AccountInfo
: EntityInfo
{
///<summary>
///The name of this account
///</summary>
[ApiMember(Description="The name of this account")]
public virtual string Name { get; set; }
///<summary>
///The ID of this account's parent
///</summary>
[ApiMember(Description="The ID of this account's parent")]
public virtual string ParentAccountId { get; set; }
///<summary>
///The twilio account SID
///</summary>
[ApiMember(Description="The twilio account SID")]
public virtual string TwilioAccountSid { get; set; }
///<summary>
///The ancestors of this account. Useful for breadcrumbs
///</summary>
[ApiMember(Description="The ancestors of this account. Useful for breadcrumbs")]
public virtual List<string> AncestorIds { 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")]
public virtual int MaxPhoneNumbers { get; set; }
///<summary>
///This account is BYOA
///</summary>
[ApiMember(Description="This account is BYOA")]
public virtual bool IsBYOA { get; set; }
///<summary>
///TrustHub Profile Sid
///</summary>
[ApiMember(Description="TrustHub Profile Sid")]
public virtual string TrustHubProfileSid { get; set; }
///<summary>
///The ID of the logo file
///</summary>
[ApiMember(Description="The ID of the logo file")]
public virtual string LogoId { get; set; }
///<summary>
///The URI of the logo file
///</summary>
[ApiMember(Description="The URI of the logo file")]
public virtual string LogoUri { get; set; }
///<summary>
///The billing settings for this account
///</summary>
[ApiMember(Description="The billing settings for this account")]
public virtual BillingSettings BillingSettings { get; set; }
}
public partial class BillingItem
{
public virtual double BaseCost { get; set; }
public virtual double RawUnitMultiplier { get; set; }
public virtual double UnitCost { get; set; }
public virtual int Allowance { get; set; }
}
public partial class BillingSettings
{
public virtual BillingItem Base { get; set; }
public virtual BillingItem LocalNumbers { get; set; }
public virtual BillingItem TollFreeNumbers { get; set; }
public virtual BillingItem InboundVoiceCalls { get; set; }
public virtual BillingItem OutboundVoiceCalls { get; set; }
public virtual BillingItem InboundFaxes { get; set; }
public virtual BillingItem OutboundFaxes { get; set; }
public virtual BillingItem InboundSmsMessages { get; set; }
public virtual BillingItem OutboundSmsMessages { get; set; }
public virtual BillingItem AIInsights { get; set; }
public virtual BillingItem AILiveMinutes { get; set; }
public virtual BillingItem AIMessages { get; set; }
}
}
namespace Voice.Api.App.Portal
{
public partial class AppGetFlows
: ListRequest<FlowInfo>
{
public virtual string AccountId { get; set; }
public virtual string CustomerId { get; set; }
public virtual string NameFilter { get; set; }
public virtual FlowRoles? Role { get; set; }
}
}
namespace Voice.Api.Customers
{
public partial class CustomerBreadcrumb
{
public virtual string Id { get; set; }
public virtual string Name { get; set; }
}
}
namespace Voice.Api.Endpoints
{
public enum UserDataFieldModes
{
Hidden,
ReadOnly,
ReadWrite,
}
}
namespace Voice.Api.Flows
{
public enum FlowChannels
{
Voice,
Chat,
Fax,
}
public partial class FlowExit
{
///<summary>
///The unique ID for this exit
///</summary>
[ApiMember(Description="The unique ID for this exit")]
public virtual string Id { get; set; }
///<summary>
///The name of this exit
///</summary>
[ApiMember(Description="The name of this exit")]
public virtual string Name { get; set; }
///<summary>
///The UI for the exit
///</summary>
[ApiMember(Description="The UI for the exit")]
public virtual FlowNodeUI UI { get; set; }
}
public partial class FlowInfo
: EntityInfo
{
///<summary>
///The name of this flow
///</summary>
[ApiMember(Description="The name of this flow")]
public virtual string Name { get; set; }
///<summary>
///The roles that this flow has
///</summary>
[ApiMember(Description="The roles that this flow has")]
public virtual List<FlowRoles> Roles { get; set; }
///<summary>
///What this flow does
///</summary>
[ApiMember(Description="What this flow does")]
public virtual string Description { get; set; }
///<summary>
///Any notes for this flow
///</summary>
[ApiMember(Description="Any notes for this flow")]
public virtual string Notes { get; set; }
///<summary>
///The ID of the account associated with the flow
///</summary>
[ApiMember(Description="The ID of the account associated with the flow")]
public virtual string AccountId { get; set; }
///<summary>
///The name of the account associated with the flow
///</summary>
[ApiMember(Description="The name of the account associated with the flow")]
public virtual string AccountName { 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")]
public virtual string CustomerId { 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")]
public virtual string CustomerName { get; set; }
///<summary>
///The breadcrumb to the flow for this endpoint
///</summary>
[ApiMember(Description="The breadcrumb to the flow for this endpoint")]
public virtual List<CustomerBreadcrumb> CustomerBreadcrumb { get; set; }
///<summary>
///The nodes in this flow
///</summary>
[ApiMember(Description="The nodes in this flow")]
public virtual List<FlowNode> Nodes { get; set; }
///<summary>
///The flow's parameters
///</summary>
[ApiMember(Description="The flow's parameters")]
public virtual List<FlowParameter> Parameters { get; set; }
///<summary>
///The flow's exits
///</summary>
[ApiMember(Description="The flow's exits")]
public virtual List<FlowExit> Exits { get; set; }
///<summary>
///The UI data for the flow
///</summary>
[ApiMember(Description="The UI data for the flow")]
public virtual FlowUI UI { get; set; }
///<summary>
///The list of tags for this flow
///</summary>
[ApiMember(Description="The list of tags for this flow")]
public virtual List<Tag> Tags { get; set; }
///<summary>
///The number of nodes in this flow
///</summary>
[ApiMember(Description="The number of nodes in this flow")]
public virtual int NodeCount { get; set; }
}
public partial class 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")]
public virtual string Id { 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")]
public virtual bool IsStartNode { 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")]
public virtual string Name { get; set; }
///<summary>
///The specification for the node
///</summary>
[ApiMember(Description="The specification for the node")]
public virtual FlowNodeSpec Spec { get; set; }
///<summary>
///The UI data for the node
///</summary>
[ApiMember(Description="The UI data for the node")]
public virtual FlowNodeUI UI { 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.")]
public virtual NodeParameterMap Parameters { get; set; }
}
public enum FlowNodeCategories
{
General,
Voice,
Logic,
DateAndTime,
Audio,
Messaging,
Assistant,
Flows,
Fax,
Network,
Cookies,
CallCenter,
Intelligence,
}
public partial class FlowNodeSpec
{
///<summary>
///The name of this node
///</summary>
[ApiMember(Description="The name of this node")]
public virtual string Name { get; set; }
///<summary>
///A description of this node
///</summary>
[ApiMember(Description="A description of this node")]
public virtual string Description { get; set; }
///<summary>
///Icon class for this node (FontAwesome)
///</summary>
[ApiMember(Description="Icon class for this node (FontAwesome)")]
public virtual string IconClass { get; set; }
///<summary>
///The type name for this node
///</summary>
[ApiMember(Description="The type name for this node")]
public virtual string TypeName { get; set; }
///<summary>
///The category this node should be grouped under
///</summary>
[ApiMember(Description="The category this node should be grouped under")]
public virtual FlowNodeCategories Category { get; set; }
///<summary>
///The URL where this node is located
///</summary>
[ApiMember(Description="The URL where this node is located")]
public virtual string Url { get; set; }
///<summary>
///The data type for this node
///</summary>
[ApiMember(Description="The data type for this node")]
public virtual DataType DataType { get; set; }
///<summary>
///URL for documentation for this node
///</summary>
[ApiMember(Description="URL for documentation for this node")]
public virtual string DocumentationUrl { get; set; }
///<summary>
///The channels that this node is restricted to
///</summary>
[ApiMember(Description="The channels that this node is restricted to")]
public virtual List<FlowChannels> RestrictToChannels { get; set; }
}
public partial class FlowNodeUI
{
///<summary>
///The X position of the node
///</summary>
[ApiMember(Description="The X position of the node")]
public virtual double X { get; set; }
///<summary>
///The Y position of the node
///</summary>
[ApiMember(Description="The Y position of the node")]
public virtual double Y { get; set; }
///<summary>
///Notes for this node
///</summary>
[ApiMember(Description="Notes for this node")]
public virtual string Notes { get; set; }
}
public partial class FlowParameter
: DataField
{
public virtual bool IsPublic { get; set; }
public virtual bool IsKnob { get; set; }
}
public enum FlowRoles
{
UI,
Reference,
PhoneNumberRouting,
UserDialOut,
FaxNumberRouting,
}
public partial class FlowUI
{
public virtual string SelectedNode { get; set; }
public virtual double CanvasX { get; set; }
public virtual double CanvasY { get; set; }
public virtual double CanvasZoom { get; set; }
}
public partial class NodeParameter
{
public virtual string Id { get; set; }
public virtual ValueTypes Type { get; set; }
public virtual ValueSources Source { get; set; }
public virtual bool IsAsync { get; set; }
public virtual string ReferenceId { get; set; }
public virtual Value Value { get; set; }
public virtual bool NoEvalTemplate { get; set; }
public virtual List<NodeParameterMap> ListParameters { get; set; }
public virtual NodeParameterMap StructParameters { get; set; }
public virtual bool IsOutput { get; set; }
public virtual string Expression { get; set; }
public virtual DataType ListType { get; set; }
}
public partial class NodeParameterMap
: Dictionary<string, NodeParameter>
{
}
}
namespace Voice.Api.Flows.Data
{
public partial class DataField
{
public virtual string Id { get; set; }
public virtual string Name { get; set; }
public virtual ValueTypes Type { get; set; }
public virtual UIHints UIHint { get; set; }
public virtual string UITab { get; set; }
public virtual bool IsAsync { get; set; }
public virtual bool DisableBinding { get; set; }
public virtual DataType StructType { get; set; }
public virtual DataType ListType { get; set; }
public virtual string Description { get; set; }
public virtual List<string> PossibleValues { get; set; }
public virtual bool IsOutput { get; set; }
public virtual string CustomFieldValuesUrl { get; set; }
public virtual Value DefaultValue { get; set; }
public virtual string TransitionNameFormat { get; set; }
public virtual DataFieldUniqueness Uniqueness { get; set; }
public virtual bool VoiceOnly { get; set; }
public virtual string ConditionalVisibilityField { get; set; }
public virtual string ConditionalVisibilityValue { get; set; }
public virtual bool NoEvalTemplate { get; set; }
public virtual UserDataFieldModes UserMode { get; set; }
public virtual bool AnyValueType { get; set; }
}
public enum DataFieldUniqueness
{
NotUnique,
Unique,
UniqueToCustomer,
}
public partial class DataType
{
public virtual string TypeName { get; set; }
public virtual List<DataField> Fields { get; set; }
}
public partial class Struct
: Dictionary<string, Value>
{
}
public enum UIHints
{
None,
LargeText,
InlineForm,
Password,
InlineStruct,
}
public partial class Value
{
public virtual bool? BoolValue { get; set; }
public virtual string StringValue { get; set; }
public virtual double? NumberValue { get; set; }
public virtual List<Struct> ListValue { get; set; }
public virtual Struct StructValue { get; set; }
}
public enum ValueSources
{
Value,
Flow,
System,
Customer,
Session,
Endpoint,
Expression,
User,
}
public enum ValueTypes
{
NotSpecified,
String,
Boolean,
Number,
List,
Struct,
Transition,
Custom,
Date,
AudioFile,
TimeZoneId,
PhoneNumber,
User,
Endpoint,
Time,
File,
FaxNumber,
EmailAccount,
Customer,
Flow,
Team,
FlowReference,
Integration,
Assistant,
}
}
namespace Voice.Api.Settings
{
public partial class Tag
{
public virtual string Id { get; set; }
public virtual string Name { get; set; }
public virtual TagColors Color { get; set; }
}
public enum TagColors
{
Magenta,
Red,
Volcano,
Orange,
Gold,
Lime,
Green,
Cyan,
Blue,
GeekBlue,
Purple,
}
}
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.
GET /portal/flows HTTP/1.1 Host: team.evovoice.io Accept: application/xml
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length
<ListResponseOfFlowInfoM153aFo_P xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">
<HasMorePages>false</HasMorePages>
<Items xmlns:d2p1="http://schemas.datacontract.org/2004/07/Voice.Api.Flows">
<d2p1:FlowInfo>
<CreatedBy>String</CreatedBy>
<DateCreated>String</DateCreated>
<DateLastModified>String</DateLastModified>
<Id>String</Id>
<LastModifiedBy>String</LastModifiedBy>
<d2p1:AccountId>String</d2p1:AccountId>
<d2p1:AccountName>String</d2p1:AccountName>
<d2p1:CustomerBreadcrumb xmlns:d4p1="http://schemas.datacontract.org/2004/07/Voice.Api.Customers">
<d4p1:CustomerBreadcrumb>
<d4p1:Id>String</d4p1:Id>
<d4p1:Name>String</d4p1:Name>
</d4p1:CustomerBreadcrumb>
</d2p1:CustomerBreadcrumb>
<d2p1:CustomerId>String</d2p1:CustomerId>
<d2p1:CustomerName>String</d2p1:CustomerName>
<d2p1:Description>String</d2p1:Description>
<d2p1:Exits>
<d2p1:FlowExit>
<d2p1:Id>String</d2p1:Id>
<d2p1:Name>String</d2p1:Name>
<d2p1:UI>
<d2p1:Notes>String</d2p1:Notes>
<d2p1:X>0</d2p1:X>
<d2p1:Y>0</d2p1:Y>
</d2p1:UI>
</d2p1:FlowExit>
</d2p1:Exits>
<d2p1:Name>String</d2p1:Name>
<d2p1:NodeCount>0</d2p1:NodeCount>
<d2p1:Nodes>
<d2p1:FlowNode>
<d2p1:Id>String</d2p1:Id>
<d2p1:IsStartNode>false</d2p1:IsStartNode>
<d2p1:Name>String</d2p1:Name>
<d2p1:Parameters xmlns:d6p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d6p1:KeyValueOfstringNodeParameteripFhVFNS>
<d6p1:Key>String</d6p1:Key>
<d6p1:Value i:nil="true" />
</d6p1:KeyValueOfstringNodeParameteripFhVFNS>
</d2p1:Parameters>
<d2p1:Spec>
<d2p1:Category>General</d2p1:Category>
<d2p1:DataType xmlns:d7p1="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data" i:nil="true" />
<d2p1:Description>String</d2p1:Description>
<d2p1:DocumentationUrl>String</d2p1:DocumentationUrl>
<d2p1:IconClass>String</d2p1:IconClass>
<d2p1:Name>String</d2p1:Name>
<d2p1:RestrictToChannels>
<d2p1:FlowChannels>Voice</d2p1:FlowChannels>
</d2p1:RestrictToChannels>
<d2p1:TypeName>String</d2p1:TypeName>
<d2p1:Url>String</d2p1:Url>
</d2p1:Spec>
<d2p1:UI>
<d2p1:Notes>String</d2p1:Notes>
<d2p1:X>0</d2p1:X>
<d2p1:Y>0</d2p1:Y>
</d2p1:UI>
</d2p1:FlowNode>
</d2p1:Nodes>
<d2p1:Notes>String</d2p1:Notes>
<d2p1:Parameters>
<d2p1: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:d7p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d7p1:ArrayOfKeyValueOfstringValue8Ahp2kgT i:nil="true" />
</ListValue>
<NumberValue>0</NumberValue>
<StringValue>String</StringValue>
<StructValue xmlns:d7p1="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:d6p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">
<d6p1:string>String</d6p1: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>
<d2p1:IsKnob>false</d2p1:IsKnob>
<d2p1:IsPublic>false</d2p1:IsPublic>
</d2p1:FlowParameter>
</d2p1:Parameters>
<d2p1:Roles>
<d2p1:FlowRoles>UI</d2p1:FlowRoles>
</d2p1:Roles>
<d2p1:Tags xmlns:d4p1="http://schemas.datacontract.org/2004/07/Voice.Api.Settings">
<d4p1:Tag>
<d4p1:Color>Magenta</d4p1:Color>
<d4p1:Id>String</d4p1:Id>
<d4p1:Name>String</d4p1:Name>
</d4p1:Tag>
</d2p1:Tags>
<d2p1:UI>
<d2p1:CanvasX>0</d2p1:CanvasX>
<d2p1:CanvasY>0</d2p1:CanvasY>
<d2p1:CanvasZoom>0</d2p1:CanvasZoom>
<d2p1:SelectedNode>String</d2p1:SelectedNode>
</d2p1:UI>
</d2p1:FlowInfo>
</Items>
<TotalCount>0</TotalCount>
<TotalPages>0</TotalPages>
</ListResponseOfFlowInfoM153aFo_P>