/* Options:
Date: 2025-05-28 00:37:36
Version: 8.71
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://team.evovoice.io

//GlobalNamespace: 
//MakePartial: True
//MakeVirtual: True
//MakeInternal: False
//MakeDataContractsExtensible: False
//AddNullableAnnotations: False
//AddReturnMarker: True
//AddDescriptionAsComments: True
//AddDataContractAttributes: False
//AddIndexesToDataMembers: False
//AddGeneratedCodeAttributes: False
//AddResponseStatus: False
//AddImplicitVersion: 
//InitializeCollections: False
//ExportValueTypes: False
IncludeTypes: NotUsedRequest.*
//ExcludeTypes: 
//AddNamespaces: 
//AddDefaultXmlNamespace: http://schemas.servicestack.net/types
*/

using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using Voice.Api.Flows.Data;
using Voice.Api.Endpoints;
using Voice.Api.App;
using Voice.Api.Flows;
using Voice.Api.Notifications;
using Voice.Api;

namespace Voice.Api
{
    [Route("/not-used")]
    public partial class NotUsedRequest
    {
        public virtual PushNotification PushNotification { get; set; }
        public virtual List<NotificationInfo> Notifications { get; set; }
        public virtual NodeParameter NodeParameter { get; set; }
    }

}

namespace Voice.Api.App
{
    public partial class PushNotification
    {
        public virtual PushNotificationTypes Type { get; set; }
        public virtual FlowChannels Channel { get; set; }
        public virtual string EndpointId { get; set; }
        public virtual string EndpointUserName { get; set; }
        public virtual string SessionId { get; set; }
        public virtual string Sender { get; set; }
        public virtual string Title { get; set; }
        public virtual string Body { get; set; }
        public virtual int? Badge { get; set; }
        public virtual string AttachmentUri { get; set; }
        public virtual string AttachmentContentType { get; set; }
        public virtual AgentStates AgentState { get; set; }
        public virtual AgentStateReasons AgentStateReason { get; set; }
    }

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

}

namespace Voice.Api.Endpoints
{
    public enum AgentStateReasons
    {
        Unknown,
        SetByUser,
        MissedCall,
        SetBySystem,
    }

    public enum AgentStates
    {
        Unknown,
        Ready,
        NotReady,
        LoggedOut,
        WrapUp,
        Outgoing,
        Other,
    }

    public enum UserDataFieldModes
    {
        Hidden,
        ReadOnly,
        ReadWrite,
    }

}

namespace Voice.Api.Flows
{
    public enum FlowChannels
    {
        Voice,
        Chat,
        Fax,
    }

    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; }
    }

}

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.Notifications
{
    public partial class NotificationInfo
        : EntityInfo
    {
        ///<summary>
        ///The account ID this endpoint is associated with
        ///</summary>
        [ApiMember(Description="The account ID this endpoint is associated with")]
        public virtual string AccountId { get; set; }

        ///<summary>
        ///The name of the account this endpoint is associated with
        ///</summary>
        [ApiMember(Description="The name of the account this endpoint is associated with")]
        public virtual string AccountName { get; set; }

        ///<summary>
        ///The ID of the customer this endpoint is associated with
        ///</summary>
        [ApiMember(Description="The ID of the customer this endpoint is associated with")]
        public virtual string CustomerId { get; set; }

        ///<summary>
        ///The name of the customer this endpoint is associated with
        ///</summary>
        [ApiMember(Description="The name of the customer this endpoint is associated with")]
        public virtual string CustomerName { get; set; }

        ///<summary>
        ///The breadcrumb to the customer for this endpoint
        ///</summary>
        [ApiMember(Description="The breadcrumb to the customer for this endpoint")]
        public virtual List<CustomerBreadcrumb> CustomerBreadcrumb { get; set; }

        ///<summary>
        ///The type of notification
        ///</summary>
        [ApiMember(Description="The type of notification")]
        public virtual NotificationTypes Type { get; set; }

        ///<summary>
        ///The subject of the notification
        ///</summary>
        [ApiMember(Description="The subject of the notification")]
        public virtual string Subject { get; set; }

        ///<summary>
        ///The body of the notification
        ///</summary>
        [ApiMember(Description="The body of the notification")]
        public virtual string Body { get; set; }

        ///<summary>
        ///The recipients of this notification
        ///</summary>
        [ApiMember(Description="The recipients of this notification")]
        public virtual List<NotificationRecipientInfo> Recipients { get; set; }

        ///<summary>
        ///The list of attachments
        ///</summary>
        [ApiMember(Description="The list of attachments")]
        public virtual List<FileInfo> Attachments { get; set; }

        ///<summary>
        ///The original from for the session
        ///</summary>
        [ApiMember(Description="The original from for the session")]
        public virtual string From { get; set; }

        ///<summary>
        ///The original To for the session
        ///</summary>
        [ApiMember(Description="The original To for the session")]
        public virtual string To { get; set; }

        ///<summary>
        ///Was there an error?
        ///</summary>
        [ApiMember(Description="Was there an error?")]
        public virtual bool Error { get; set; }

        ///<summary>
        ///The error message
        ///</summary>
        [ApiMember(Description="The error message")]
        public virtual string ErrorMessage { get; set; }
    }

}