Evo Voice

<back to all web services

NotUsedRequest

The following routes are available for this service:
All Verbs/not-used
import Foundation
import ServiceStack

public class NotUsedRequest : Codable
{
    public var pushNotification:PushNotification
    public var notifications:[NotificationInfo]
    public var nodeParameter:NodeParameter

    required public init(){}
}

public class PushNotification : Codable
{
    public var type:PushNotificationTypes
    public var channel:FlowChannels
    public var endpointId:String
    public var endpointUserName:String
    public var sessionId:String
    public var sender:String
    public var title:String
    public var body:String
    public var badge:Int?
    public var attachmentUri:String
    public var attachmentContentType:String
    public var agentState:AgentStates
    public var agentStateReason:AgentStateReasons

    required public init(){}
}

public enum PushNotificationTypes : String, Codable
{
    case SessionDisconnected
    case SessionInvite
    case ChatMessage
    case SessionInactivated
    case AgentStateChanged
    case SessionHeld
    case SessionAnswered
    case ActiveSessionsChanged
    case Ping
    case SessionScreenChanged
    case Toast
    case SessionInfoChanged
    case MessageReceived
    case SessionHolding
}

public enum FlowChannels : String, Codable
{
    case Voice
    case Chat
    case Fax
}

public enum AgentStates : String, Codable
{
    case Unknown
    case Ready
    case NotReady
    case LoggedOut
    case WrapUp
    case Outgoing
    case Other
}

public enum AgentStateReasons : String, Codable
{
    case Unknown
    case SetByUser
    case MissedCall
    case SetBySystem
}

public class NotificationInfo : EntityInfo
{
    /**
    * The account ID this endpoint is associated with
    */
    // @ApiMember(Description="The account ID this endpoint is associated with")
    public var accountId:String

    /**
    * The name of the account this endpoint is associated with
    */
    // @ApiMember(Description="The name of the account this endpoint is associated with")
    public var accountName:String

    /**
    * The ID of the customer this endpoint is associated with
    */
    // @ApiMember(Description="The ID of the customer this endpoint is associated with")
    public var customerId:String

    /**
    * The name of the customer this endpoint is associated with
    */
    // @ApiMember(Description="The name of the customer this endpoint is associated with")
    public var customerName:String

    /**
    * The breadcrumb to the customer for this endpoint
    */
    // @ApiMember(Description="The breadcrumb to the customer for this endpoint")
    public var customerBreadcrumb:[CustomerBreadcrumb]

    /**
    * The type of notification
    */
    // @ApiMember(Description="The type of notification")
    public var type:NotificationTypes

    /**
    * The subject of the notification
    */
    // @ApiMember(Description="The subject of the notification")
    public var subject:String

    /**
    * The body of the notification
    */
    // @ApiMember(Description="The body of the notification")
    public var body:String

    /**
    * The recipients of this notification
    */
    // @ApiMember(Description="The recipients of this notification")
    public var recipients:[NotificationRecipientInfo]

    /**
    * The list of attachments
    */
    // @ApiMember(Description="The list of attachments")
    public var attachments:[FileInfo]

    /**
    * The original from for the session
    */
    // @ApiMember(Description="The original from for the session")
    public var from:String

    /**
    * The original To for the session
    */
    // @ApiMember(Description="The original To for the session")
    public var to:String

    /**
    * Was there an error?
    */
    // @ApiMember(Description="Was there an error?")
    public var error:Bool

    /**
    * The error message
    */
    // @ApiMember(Description="The error message")
    public var errorMessage:String

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case accountId
        case accountName
        case customerId
        case customerName
        case customerBreadcrumb
        case type
        case subject
        case body
        case recipients
        case attachments
        case from
        case to
        case error
        case errorMessage
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        accountId = try container.decodeIfPresent(String.self, forKey: .accountId)
        accountName = try container.decodeIfPresent(String.self, forKey: .accountName)
        customerId = try container.decodeIfPresent(String.self, forKey: .customerId)
        customerName = try container.decodeIfPresent(String.self, forKey: .customerName)
        customerBreadcrumb = try container.decodeIfPresent([CustomerBreadcrumb].self, forKey: .customerBreadcrumb) ?? []
        type = try container.decodeIfPresent(NotificationTypes.self, forKey: .type)
        subject = try container.decodeIfPresent(String.self, forKey: .subject)
        body = try container.decodeIfPresent(String.self, forKey: .body)
        recipients = try container.decodeIfPresent([NotificationRecipientInfo].self, forKey: .recipients) ?? []
        attachments = try container.decodeIfPresent([FileInfo].self, forKey: .attachments) ?? []
        from = try container.decodeIfPresent(String.self, forKey: .from)
        to = try container.decodeIfPresent(String.self, forKey: .to)
        error = try container.decodeIfPresent(Bool.self, forKey: .error)
        errorMessage = try container.decodeIfPresent(String.self, forKey: .errorMessage)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if accountId != nil { try container.encode(accountId, forKey: .accountId) }
        if accountName != nil { try container.encode(accountName, forKey: .accountName) }
        if customerId != nil { try container.encode(customerId, forKey: .customerId) }
        if customerName != nil { try container.encode(customerName, forKey: .customerName) }
        if customerBreadcrumb != nil { try container.encode(customerBreadcrumb, forKey: .customerBreadcrumb) }
        if type != nil { try container.encode(type, forKey: .type) }
        if subject != nil { try container.encode(subject, forKey: .subject) }
        if body != nil { try container.encode(body, forKey: .body) }
        if recipients != nil { try container.encode(recipients, forKey: .recipients) }
        if attachments != nil { try container.encode(attachments, forKey: .attachments) }
        if from != nil { try container.encode(from, forKey: .from) }
        if to != nil { try container.encode(to, forKey: .to) }
        if error != nil { try container.encode(error, forKey: .error) }
        if errorMessage != nil { try container.encode(errorMessage, forKey: .errorMessage) }
    }
}

public class EntityInfo : Codable
{
    /**
    * The ID of the object
    */
    // @ApiMember(Description="The ID of the object")
    public var id:String

    /**
    * The date the object was created
    */
    // @ApiMember(Description="The date the object was created")
    public var dateCreated:String

    /**
    * The date the object was last modified
    */
    // @ApiMember(Description="The date the object was last modified")
    public var dateLastModified:String

    /**
    * The user that created this object
    */
    // @ApiMember(Description="The user that created this object")
    public var createdBy:String

    /**
    * The user that last modified this object
    */
    // @ApiMember(Description="The user that last modified this object")
    public var lastModifiedBy:String

    required public init(){}
}

public class CustomerBreadcrumb : Codable
{
    public var id:String
    public var name:String

    required public init(){}
}

public enum NotificationTypes : String, Codable
{
    case Email
    case Sms
    case Push
    case IncomingCall
    case OutgoingCall
}

public class NotificationRecipientInfo : Codable
{
    /**
    * The address of the recipient
    */
    // @ApiMember(Description="The address of the recipient")
    public var address:String

    /**
    * Extra info about the recipient e.g. CC, BCC
    */
    // @ApiMember(Description="Extra info about the recipient e.g. CC, BCC")
    public var extra:String

    /**
    * The name of the recipient
    */
    // @ApiMember(Description="The name of the recipient")
    public var name:String

    required public init(){}
}

public class FileInfo : EntityInfo
{
    /**
    * The type of file this is
    */
    // @ApiMember(Description="The type of file this is")
    public var type:FileTypes

    /**
    * The account ID this file is associated with
    */
    // @ApiMember(Description="The account ID this file is associated with")
    public var accountId:String

    /**
    * The name of the account this file is associated with
    */
    // @ApiMember(Description="The name of the account this file is associated with")
    public var accountName:String

    /**
    * The ID of the customer this file is associated with
    */
    // @ApiMember(Description="The ID of the customer this file is associated with")
    public var customerId:String

    /**
    * The name of the customer this file is associated with
    */
    // @ApiMember(Description="The name of the customer this file is associated with")
    public var customerName:String

    /**
    * The breadcrumb to the customer for this file
    */
    // @ApiMember(Description="The breadcrumb to the customer for this file")
    public var customerBreadcrumb:[CustomerBreadcrumb]

    /**
    * The ID of the user this file is assocaited with
    */
    // @ApiMember(Description="The ID of the user this file is assocaited with")
    public var userId:String

    /**
    * The name of the user this file is associated with
    */
    // @ApiMember(Description="The name of the user this file is associated with")
    public var userName:String

    /**
    * The original file name for the file
    */
    // @ApiMember(Description="The original file name for the file")
    public var fileName:String

    /**
    * The URI of the file
    */
    // @ApiMember(Description="The URI of the file")
    public var uri:String

    /**
    * The Content type of the file
    */
    // @ApiMember(Description="The Content type of the file")
    public var contentType:String

    /**
    * The size of the file
    */
    // @ApiMember(Description="The size of the file")
    public var contentLength:Int

    /**
    * The Twilio ID of the recording
    */
    // @ApiMember(Description="The Twilio ID of the recording")
    public var recordingSid:String

    /**
    * The duration of the recording in seconds
    */
    // @ApiMember(Description="The duration of the recording in seconds")
    public var recordingDuration:Int

    /**
    * Who is the recording from?
    */
    // @ApiMember(Description="Who is the recording from?")
    public var recordingFrom:String

    /**
    * Transcription (if available)
    */
    // @ApiMember(Description="Transcription (if available)")
    public var transcription:String

    /**
    * From Address (e.g. caller ID) for incoming calls
    */
    // @ApiMember(Description="From Address (e.g. caller ID) for incoming calls")
    public var fromAddress:String

    /**
    * To Address (e.g. dialed number) for outgoing calls
    */
    // @ApiMember(Description="To Address (e.g. dialed number) for outgoing calls")
    public var toAddress:String

    /**
    * The AI transcription for this call
    */
    // @ApiMember(Description="The AI transcription for this call")
    public var aiTranscription:String

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case type
        case accountId
        case accountName
        case customerId
        case customerName
        case customerBreadcrumb
        case userId
        case userName
        case fileName
        case uri
        case contentType
        case contentLength
        case recordingSid
        case recordingDuration
        case recordingFrom
        case transcription
        case fromAddress
        case toAddress
        case aiTranscription
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        type = try container.decodeIfPresent(FileTypes.self, forKey: .type)
        accountId = try container.decodeIfPresent(String.self, forKey: .accountId)
        accountName = try container.decodeIfPresent(String.self, forKey: .accountName)
        customerId = try container.decodeIfPresent(String.self, forKey: .customerId)
        customerName = try container.decodeIfPresent(String.self, forKey: .customerName)
        customerBreadcrumb = try container.decodeIfPresent([CustomerBreadcrumb].self, forKey: .customerBreadcrumb) ?? []
        userId = try container.decodeIfPresent(String.self, forKey: .userId)
        userName = try container.decodeIfPresent(String.self, forKey: .userName)
        fileName = try container.decodeIfPresent(String.self, forKey: .fileName)
        uri = try container.decodeIfPresent(String.self, forKey: .uri)
        contentType = try container.decodeIfPresent(String.self, forKey: .contentType)
        contentLength = try container.decodeIfPresent(Int.self, forKey: .contentLength)
        recordingSid = try container.decodeIfPresent(String.self, forKey: .recordingSid)
        recordingDuration = try container.decodeIfPresent(Int.self, forKey: .recordingDuration)
        recordingFrom = try container.decodeIfPresent(String.self, forKey: .recordingFrom)
        transcription = try container.decodeIfPresent(String.self, forKey: .transcription)
        fromAddress = try container.decodeIfPresent(String.self, forKey: .fromAddress)
        toAddress = try container.decodeIfPresent(String.self, forKey: .toAddress)
        aiTranscription = try container.decodeIfPresent(String.self, forKey: .aiTranscription)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if type != nil { try container.encode(type, forKey: .type) }
        if accountId != nil { try container.encode(accountId, forKey: .accountId) }
        if accountName != nil { try container.encode(accountName, forKey: .accountName) }
        if customerId != nil { try container.encode(customerId, forKey: .customerId) }
        if customerName != nil { try container.encode(customerName, forKey: .customerName) }
        if customerBreadcrumb != nil { try container.encode(customerBreadcrumb, forKey: .customerBreadcrumb) }
        if userId != nil { try container.encode(userId, forKey: .userId) }
        if userName != nil { try container.encode(userName, forKey: .userName) }
        if fileName != nil { try container.encode(fileName, forKey: .fileName) }
        if uri != nil { try container.encode(uri, forKey: .uri) }
        if contentType != nil { try container.encode(contentType, forKey: .contentType) }
        if contentLength != nil { try container.encode(contentLength, forKey: .contentLength) }
        if recordingSid != nil { try container.encode(recordingSid, forKey: .recordingSid) }
        if recordingDuration != nil { try container.encode(recordingDuration, forKey: .recordingDuration) }
        if recordingFrom != nil { try container.encode(recordingFrom, forKey: .recordingFrom) }
        if transcription != nil { try container.encode(transcription, forKey: .transcription) }
        if fromAddress != nil { try container.encode(fromAddress, forKey: .fromAddress) }
        if toAddress != nil { try container.encode(toAddress, forKey: .toAddress) }
        if aiTranscription != nil { try container.encode(aiTranscription, forKey: .aiTranscription) }
    }
}

public enum FileTypes : String, Codable
{
    case Upload
    case VoiceMessage
    case CallRecording
    case Fax
    case Attachment
    case FaxOutgoing
}

public class NodeParameter : Codable
{
    public var id:String
    public var type:ValueTypes
    public var source:ValueSources
    public var isAsync:Bool
    public var referenceId:String
    public var value:Value
    public var noEvalTemplate:Bool
    public var listParameters:[NodeParameterMap]
    public var structParameters:NodeParameterMap
    public var isOutput:Bool
    public var expression:String
    public var listType:DataType

    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 enum ValueSources : String, Codable
{
    case Value
    case Flow
    case System
    case Customer
    case Session
    case Endpoint
    case Expression
    case User
}

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 class NodeParameterMap : List<String:NodeParameter>
{
    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 class DataType : Codable
{
    public var typeName:String
    public var fields:[DataField]

    required public init(){}
}

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 enum DataFieldUniqueness : String, Codable
{
    case NotUnique
    case Unique
    case UniqueToCustomer
}

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


Swift NotUsedRequest DTOs

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

HTTP + CSV

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

POST /not-used HTTP/1.1 
Host: team.evovoice.io 
Accept: text/csv
Content-Type: text/csv
Content-Length: length

{"pushNotification":{"type":"SessionDisconnected","channel":"Voice","endpointId":"String","endpointUserName":"String","sessionId":"String","sender":"String","title":"String","body":"String","badge":0,"attachmentUri":"String","attachmentContentType":"String","agentState":"Unknown","agentStateReason":"Unknown"},"notifications":[{"accountId":"String","accountName":"String","customerId":"String","customerName":"String","customerBreadcrumb":[{"id":"String","name":"String"}],"type":"Email","subject":"String","body":"String","recipients":[{"address":"String","extra":"String","name":"String"}],"attachments":[{"type":"Upload","accountId":"String","accountName":"String","customerId":"String","customerName":"String","customerBreadcrumb":[{"id":"String","name":"String"}],"userId":"String","userName":"String","fileName":"String","uri":"String","contentType":"String","contentLength":0,"recordingSid":"String","recordingDuration":0,"recordingFrom":"String","transcription":"String","fromAddress":"String","toAddress":"String","aiTranscription":"String","id":"String","dateCreated":"String","dateLastModified":"String","createdBy":"String","lastModifiedBy":"String"}],"from":"String","to":"String","error":false,"errorMessage":"String","id":"String","dateCreated":"String","dateLastModified":"String","createdBy":"String","lastModifiedBy":"String"}]}