Evo Voice

<back to all web services

GetParameterFieldNames

Gets the possible field names for a specified value source

Requires Authentication
Requires any of the roles:SystemAdministrator, Manager, Customer
The following routes are available for this service:
GET/flows/parameters
import Foundation
import ServiceStack

/**
* Gets the possible field names for a specified value source
*/
// @Api(Description="Gets the possible field names for a specified value source")
public class GetParameterFieldNames : IGet, Codable
{
    /**
    * The account ID associated with the flow
    */
    // @ApiMember(Description="The account ID associated with the flow")
    public var accountId:String

    /**
    * Exclude built in fields like customer name
    */
    // @ApiMember(Description="Exclude built in fields like customer name")
    public var excludeBuiltInFields:Bool

    required public init(){}
}

public class GetParameterFieldNamesResponse : Codable
{
    public var customer:[GetParameterField]
    public var system:[GetParameterField]
    public var session:[GetParameterField]
    public var endpoint:[GetParameterField]
    public var user:[GetParameterField]

    required public init(){}
}

public class GetParameterField : Codable
{
    public var fieldName:String
    public var valueType:ValueTypes
    public var field:DataField

    required public init(){}
}

public enum ValueTypes : String, Codable
{
    case NotSpecified
    case String
    case Boolean
    case Number
    case List
    case Struct
    case Transition
    case Custom
    case Date
    case AudioFile
    case TimeZoneId
    case PhoneNumber
    case User
    case Endpoint
    case Time
    case File
    case FaxNumber
    case EmailAccount
    case Customer
    case Flow
    case Team
    case FlowReference
    case Integration
    case Assistant
}

public class DataField : Codable
{
    public var id:String
    public var name:String
    public var type:ValueTypes
    public var uiHint:UIHints
    public var uiTab:String
    public var isAsync:Bool
    public var disableBinding:Bool
    public var structType:DataType
    public var listType:DataType
    public var Description:String
    public var possibleValues:[String]
    public var isOutput:Bool
    public var customFieldValuesUrl:String
    public var defaultValue:Value
    public var transitionNameFormat:String
    public var uniqueness:DataFieldUniqueness
    public var voiceOnly:Bool
    public var conditionalVisibilityField:String
    public var conditionalVisibilityValue:String
    public var noEvalTemplate:Bool
    public var userMode:UserDataFieldModes
    public var anyValueType:Bool

    required public init(){}
}

public enum UIHints : String, Codable
{
    case None
    case LargeText
    case InlineForm
    case Password
    case InlineStruct
}

public class DataType : Codable
{
    public var typeName:String
    public var fields:[DataField]

    required public init(){}
}

public class Value : Codable
{
    public var boolValue:Bool?
    public var stringValue:String
    public var numberValue:Double?
    public var listValue:[Struct]
    public var structValue:Struct

    required public init(){}
}

public class Struct : List<String:Value>
{
    required public init(){ super.init() }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
    }
}

public enum DataFieldUniqueness : String, Codable
{
    case NotUnique
    case Unique
    case UniqueToCustomer
}

public enum UserDataFieldModes : String, Codable
{
    case Hidden
    case ReadOnly
    case ReadWrite
}


Swift GetParameterFieldNames DTOs

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

HTTP + JSV

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

GET /flows/parameters HTTP/1.1 
Host: team.evovoice.io 
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	customer: 
	[
		{
			fieldName: String,
			valueType: NotSpecified
		}
	],
	system: 
	[
		{
			fieldName: String,
			valueType: NotSpecified
		}
	],
	session: 
	[
		{
			fieldName: String,
			valueType: NotSpecified
		}
	],
	endpoint: 
	[
		{
			fieldName: String,
			valueType: NotSpecified
		}
	],
	user: 
	[
		{
			fieldName: String,
			valueType: NotSpecified
		}
	]
}