""" Options: Date: 2025-05-04 20:33:18 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: DeleteChatMember.* #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 class FlowChannels(str, Enum): VOICE = 'Voice' CHAT = 'Chat' FAX = 'Fax' class SessionDirections(str, Enum): INCOMING = 'Incoming' OUTGOING = 'Outgoing' class SessionCallState(str, Enum): DISCONNECTED = 'Disconnected' RINGING = 'Ringing' CONNECTED = 'Connected' HOLD = 'Hold' PASSIVE = 'Passive' class SessionHoldReasons(str, Enum): NONE = 'None' TRANSFERRING = 'Transferring' class SessionQueueStates(str, Enum): NONE = 'None' QUEUED = 'Queued' RINGING = 'Ringing' CONNECTED = 'Connected' HOLD = 'Hold' DISCONNECTED = 'Disconnected' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class EntityInfo: # @ApiMember(Description="The ID of the object") id: Optional[str] = None """ The ID of the object """ # @ApiMember(Description="The date the object was created") date_created: Optional[str] = None """ The date the object was created """ # @ApiMember(Description="The date the object was last modified") date_last_modified: Optional[str] = None """ The date the object was last modified """ # @ApiMember(Description="The user that created this object") created_by: Optional[str] = None """ The user that created this object """ # @ApiMember(Description="The user that last modified this object") last_modified_by: Optional[str] = None """ The user that last modified this object """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CustomerBreadcrumb: id: Optional[str] = None name: Optional[str] = None class SessionDialState(str, Enum): NONE = 'None' ACTIVE = 'Active' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SessionLogInfo: date: Optional[str] = None message: Optional[str] = None class SessionMemberCallState(str, Enum): NONE = 'None' RINGING = 'Ringing' CONNECTED = 'Connected' HOLD = 'Hold' class SessionMemberRoles(str, Enum): NONE = 'None' CALLER = 'Caller' AGENT = 'Agent' TRANSFER = 'Transfer' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SessionMemberInfo: identity: Optional[str] = None endpoint_id: Optional[str] = None display_name: Optional[str] = None is_original_member: bool = False avatar_url: Optional[str] = None application_data: Optional[Dict[str, str]] = None call_state: Optional[SessionMemberCallState] = None role: Optional[SessionMemberRoles] = None call_sid: Optional[str] = None muted: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SessionInfo(EntityInfo): # @ApiMember(Description="The state of the session") dial_state: Optional[SessionDialState] = None """ The state of the session """ # @ApiMember(Description="The call state of the session") call_state: Optional[SessionCallState] = None """ The call state of the session """ # @ApiMember(Description="The queue state of the session") queue_state: Optional[SessionQueueStates] = None """ The queue state of the session """ # @ApiMember(Description="The ID of the account associated with the flow") account_id: Optional[str] = None """ The ID of the account associated with the flow """ # @ApiMember(Description="The name of the account associated with the session") account_name: Optional[str] = None """ The name of the account associated with the session """ # @ApiMember(Description="The ID of the customer this session is associated with") customer_id: Optional[str] = None """ The ID of the customer this session is associated with """ # @ApiMember(Description="The customer breadcrumb this session is associated with") customer_breadcrumb: Optional[List[CustomerBreadcrumb]] = None """ The customer breadcrumb this session is associated with """ # @ApiMember(Description="The name of the customer this session is associated with") customer_name: Optional[str] = None """ The name of the customer this session is associated with """ # @ApiMember(Description="The ID of the endpoint associated with this session") endpoint_id: Optional[str] = None """ The ID of the endpoint associated with this session """ # @ApiMember(Description="The name of the endpoint associated with this session") endpoint_name: Optional[str] = None """ The name of the endpoint associated with this session """ # @ApiMember(Description="The date the call completed") date_completed: Optional[str] = None """ The date the call completed """ # @ApiMember(Description="The destination of the session (e.g. what was entered into the Dial box)") destination: Optional[str] = None """ The destination of the session (e.g. what was entered into the Dial box) """ # @ApiMember(Description="The to address if any") to_address: Optional[str] = None """ The to address if any """ # @ApiMember(Description="The from address if any") from_address: Optional[str] = None """ The from address if any """ # @ApiMember(Description="The from name if any") from_name: Optional[str] = None """ The from name if any """ # @ApiMember(Description="Answered by name (if any)") answered_by_name: Optional[str] = None """ Answered by name (if any) """ # @ApiMember(Description="The ID of the queue member assigned to this call") queue_member_id: Optional[str] = None """ The ID of the queue member assigned to this call """ # @ApiMember(Description="The flow channel") channel: Optional[FlowChannels] = None """ The flow channel """ # @ApiMember(Description="Has the session ended") ended: bool = False """ Has the session ended """ # @ApiMember(Description="The outcome of the call") outcome: Optional[str] = None """ The outcome of the call """ # @ApiMember(Description="The twilio Call SID of this session") call_sid: Optional[str] = None """ The twilio Call SID of this session """ # @ApiMember(Description="Any console data for this session") console_data: Optional[str] = None """ Any console data for this session """ # @ApiMember(Description="The name of the hold queue for this call") hold_queue_name: Optional[str] = None """ The name of the hold queue for this call """ # @ApiMember(Description="The user ID who put this call on hold") held_by_user_id: Optional[str] = None """ The user ID who put this call on hold """ # @ApiMember(Description="The reason for the hold") hold_reason: Optional[SessionHoldReasons] = None """ The reason for the hold """ # @ApiMember(Description="The SID of the conference if in a conference call") conference_sid: Optional[str] = None """ The SID of the conference if in a conference call """ # @ApiMember(Description="The display name for this session") display_name: Optional[str] = None """ The display name for this session """ # @ApiMember(Description="The log entries for this session") log: Optional[List[SessionLogInfo]] = None """ The log entries for this session """ # @ApiMember(Description="The members of this session") members: Optional[List[SessionMemberInfo]] = None """ The members of this session """ # @ApiMember(Description="The callback number (typically used for SIP to User calls)") callback_number: Optional[str] = None """ The callback number (typically used for SIP to User calls) """ # @ApiMember(Description="The ID of the endpoint that answered") answered_by_id: Optional[str] = None """ The ID of the endpoint that answered """ # @ApiMember(Description="Is this session incoming or outgoing?") direction: Optional[SessionDirections] = None """ Is this session incoming or outgoing? """ # @ApiMember(Description="The phone number that this session is coming from (used with SMS chats)") from_phone_number: Optional[str] = None """ The phone number that this session is coming from (used with SMS chats) """ # @ApiMember(Description="The Call SID of the most recently added conference participant") most_recent_participant_call_sid: Optional[str] = None """ The Call SID of the most recently added conference participant """ # @ApiMember(Description="Was this session missed?") was_missed: bool = False """ Was this session missed? """ # @ApiMember(Description="The ring queue that the call is currently in") ring_queue_id: Optional[str] = None """ The ring queue that the call is currently in """ # @Route("/sessions/{sessionId}/members/{memberId}", "DELETE") # @Api(Description="Removes the specified member from the chat") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DeleteChatMember(IReturn[SessionInfo], IDelete): """ Removes the specified member from the chat """ # @ApiMember(Description="The ID of the session") session_id: Optional[str] = None """ The ID of the session """ # @ApiMember(Description="The member to add. This can be a cell phone number, user ID (email)") member_to_remove: Optional[str] = None """ The member to add. This can be a cell phone number, user ID (email) """