""" Options: Date: 2025-05-04 23:52:51 Version: 8.71 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: https://team.evovoice.io #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: NotUsedRequest.* #ExcludeTypes: #DefaultImports: datetime,decimal,marshmallow.fields:*,servicestack:*,typing:*,dataclasses:dataclass/field,dataclasses_json:dataclass_json/LetterCase/Undefined/config,enum:Enum/IntEnum #DataClass: #DataClassJson: """ import datetime import decimal from marshmallow.fields import * from servicestack import * from typing import * from dataclasses import dataclass, field from dataclasses_json import dataclass_json, LetterCase, Undefined, config from enum import Enum, IntEnum @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Struct(Dict[str,Value]): pass @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Value: bool_value: Optional[bool] = None string_value: Optional[str] = None number_value: Optional[float] = None list_value: Optional[List[Struct]] = None struct_value: Optional[Struct] = None class UserDataFieldModes(str, Enum): HIDDEN = 'Hidden' READ_ONLY = 'ReadOnly' READ_WRITE = 'ReadWrite' class ValueTypes(str, Enum): NOT_SPECIFIED = 'NotSpecified' STRING = 'String' BOOLEAN = 'Boolean' NUMBER = 'Number' LIST = 'List' STRUCT = 'Struct' TRANSITION = 'Transition' CUSTOM = 'Custom' DATE = 'Date' AUDIO_FILE = 'AudioFile' TIME_ZONE_ID = 'TimeZoneId' PHONE_NUMBER = 'PhoneNumber' USER = 'User' ENDPOINT = 'Endpoint' TIME = 'Time' FILE = 'File' FAX_NUMBER = 'FaxNumber' EMAIL_ACCOUNT = 'EmailAccount' CUSTOMER = 'Customer' FLOW = 'Flow' TEAM = 'Team' FLOW_REFERENCE = 'FlowReference' INTEGRATION = 'Integration' ASSISTANT = 'Assistant' class PushNotificationTypes(str, Enum): SESSION_DISCONNECTED = 'SessionDisconnected' SESSION_INVITE = 'SessionInvite' CHAT_MESSAGE = 'ChatMessage' SESSION_INACTIVATED = 'SessionInactivated' AGENT_STATE_CHANGED = 'AgentStateChanged' SESSION_HELD = 'SessionHeld' SESSION_ANSWERED = 'SessionAnswered' ACTIVE_SESSIONS_CHANGED = 'ActiveSessionsChanged' PING = 'Ping' SESSION_SCREEN_CHANGED = 'SessionScreenChanged' TOAST = 'Toast' SESSION_INFO_CHANGED = 'SessionInfoChanged' MESSAGE_RECEIVED = 'MessageReceived' SESSION_HOLDING = 'SessionHolding' class FlowChannels(str, Enum): VOICE = 'Voice' CHAT = 'Chat' FAX = 'Fax' class AgentStates(str, Enum): UNKNOWN = 'Unknown' READY = 'Ready' NOT_READY = 'NotReady' LOGGED_OUT = 'LoggedOut' WRAP_UP = 'WrapUp' OUTGOING = 'Outgoing' OTHER = 'Other' class AgentStateReasons(str, Enum): UNKNOWN = 'Unknown' SET_BY_USER = 'SetByUser' MISSED_CALL = 'MissedCall' SET_BY_SYSTEM = 'SetBySystem' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class PushNotification: type: Optional[PushNotificationTypes] = None channel: Optional[FlowChannels] = None endpoint_id: Optional[str] = None endpoint_user_name: Optional[str] = None session_id: Optional[str] = None sender: Optional[str] = None title: Optional[str] = None body: Optional[str] = None badge: Optional[int] = None attachment_uri: Optional[str] = None attachment_content_type: Optional[str] = None agent_state: Optional[AgentStates] = None agent_state_reason: Optional[AgentStateReasons] = None class ValueSources(str, Enum): VALUE = 'Value' FLOW = 'Flow' SYSTEM = 'System' CUSTOMER = 'Customer' SESSION = 'Session' ENDPOINT = 'Endpoint' EXPRESSION = 'Expression' USER = 'User' class UIHints(str, Enum): NONE = 'None' LARGE_TEXT = 'LargeText' INLINE_FORM = 'InlineForm' PASSWORD = 'Password' INLINE_STRUCT = 'InlineStruct' class DataFieldUniqueness(str, Enum): NOT_UNIQUE = 'NotUnique' UNIQUE = 'Unique' UNIQUE_TO_CUSTOMER = 'UniqueToCustomer' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DataField: id: Optional[str] = None name: Optional[str] = None type: Optional[ValueTypes] = None ui_hint: Optional[UIHints] = None ui_tab: Optional[str] = None is_async: bool = False disable_binding: bool = False struct_type: Optional[DataType] = None list_type: Optional[DataType] = None description: Optional[str] = None possible_values: Optional[List[str]] = None is_output: bool = False custom_field_values_url: Optional[str] = None default_value: Optional[Value] = None transition_name_format: Optional[str] = None uniqueness: Optional[DataFieldUniqueness] = None voice_only: bool = False conditional_visibility_field: Optional[str] = None conditional_visibility_value: Optional[str] = None no_eval_template: bool = False user_mode: Optional[UserDataFieldModes] = None any_value_type: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DataType: type_name: Optional[str] = None fields: Optional[List[DataField]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class NodeParameter: id: Optional[str] = None type: Optional[ValueTypes] = None source: Optional[ValueSources] = None is_async: bool = False reference_id: Optional[str] = None value: Optional[Value] = None no_eval_template: bool = False list_parameters: Optional[List[NodeParameterMap]] = None struct_parameters: Optional[NodeParameterMap] = None is_output: bool = False expression: Optional[str] = None list_type: Optional[DataType] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class NotificationInfo(EntityInfo): # @ApiMember(Description="The account ID this endpoint is associated with") account_id: Optional[str] = None """ The account ID this endpoint is associated with """ # @ApiMember(Description="The name of the account this endpoint is associated with") account_name: Optional[str] = None """ The name of the account this endpoint is associated with """ # @ApiMember(Description="The ID of the customer this endpoint is associated with") customer_id: Optional[str] = None """ The ID of the customer this endpoint is associated with """ # @ApiMember(Description="The name of the customer this endpoint is associated with") customer_name: Optional[str] = None """ The name of the customer this endpoint is associated with """ # @ApiMember(Description="The breadcrumb to the customer for this endpoint") customer_breadcrumb: Optional[List[CustomerBreadcrumb]] = None """ The breadcrumb to the customer for this endpoint """ # @ApiMember(Description="The type of notification") type: Optional[NotificationTypes] = None """ The type of notification """ # @ApiMember(Description="The subject of the notification") subject: Optional[str] = None """ The subject of the notification """ # @ApiMember(Description="The body of the notification") body: Optional[str] = None """ The body of the notification """ # @ApiMember(Description="The recipients of this notification") recipients: Optional[List[NotificationRecipientInfo]] = None """ The recipients of this notification """ # @ApiMember(Description="The list of attachments") attachments: Optional[List[FileInfo]] = None """ The list of attachments """ # @ApiMember(Description="The original from for the session") from_: Optional[str] = field(metadata=config(field_name='from'), default=None) """ The original from for the session """ # @ApiMember(Description="The original To for the session") to: Optional[str] = None """ The original To for the session """ # @ApiMember(Description="Was there an error?") error: bool = False """ Was there an error? """ # @ApiMember(Description="The error message") error_message: Optional[str] = None """ The error message """ # @Route("/not-used") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class NotUsedRequest: push_notification: Optional[PushNotification] = None notifications: Optional[List[NotificationInfo]] = None node_parameter: Optional[NodeParameter] = None