""" Options: Date: 2024-05-17 02:51:50 Version: 6.40 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: https://evovoice.io #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: ListSessions.* #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 SortOrders(str, Enum): ASCEND = 'Ascend' DESCEND = 'Descend' T = TypeVar('T') @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ListRequest(Generic[T], IReturn[ListResponse[T]], IGet): # @ApiMember(Description="The page of data to retrieve") page: int = 0 """ The page of data to retrieve """ # @ApiMember(Description="If you want all objects to be returned. This should be used with care") all: bool = False """ If you want all objects to be returned. This should be used with care """ # @ApiMember(Description="The number per page to retrieve") count_per_page: int = 0 """ The number per page to retrieve """ # @ApiMember(Description="Specific IDs") specific_ids: Optional[List[str]] = None """ Specific IDs """ # @ApiMember(Description="Specify a sort field") sort_field: Optional[str] = None """ Specify a sort field """ # @ApiMember(Description="Specify a sort order") sort_order: Optional[SortOrders] = None """ Specify a sort order """ # @ApiMember(Description="Disables total / page counts - improves performance. Returns only data. If there is no more data, Items will be empty array") simplified_paging: bool = False """ Disables total / page counts - improves performance. Returns only data. If there is no more data, Items will be empty array """ @staticmethod def response_type(): return ListResponse[T] @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class HostedSuiteCompletedFormField: name: Optional[str] = None values: Optional[List[str]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class HostedSuiteCompletedForm: id: Optional[str] = None name: Optional[str] = None date_created: Optional[str] = None date_completed: Optional[str] = None form_id: Optional[str] = None form_name: Optional[str] = None client_id: Optional[str] = None client_name: Optional[str] = None contact_id: Optional[str] = None contact_name: Optional[str] = None contacts_ids: Optional[List[str]] = None contacts_names: Optional[List[str]] = None email_subject: Optional[str] = None caller_number: Optional[str] = None fields: Optional[List[HostedSuiteCompletedFormField]] = None @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 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class LogEntryInfo(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 """ user_name: Optional[str] = None description: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AccountInfo(EntityInfo): # @ApiMember(Description="The name of this account") name: Optional[str] = None """ The name of this account """ # @ApiMember(Description="The ID of this account's parent") parent_account_id: Optional[str] = None """ The ID of this account's parent """ # @ApiMember(Description="The twilio account SID") twilio_account_sid: Optional[str] = None """ The twilio account SID """ # @ApiMember(Description="The ancestors of this account. Useful for breadcrumbs") ancestor_ids: Optional[List[str]] = None """ The ancestors of this account. Useful for breadcrumbs """ # @ApiMember(Description="The max number of phone numbers this account can have") max_phone_numbers: int = 0 """ The max number of phone numbers this account can have """ # @ApiMember(Description="This account is BYOA") is_b_y_o_a: bool = False """ This account is BYOA """ # @ApiMember(Description="TrustHub Profile Sid") trust_hub_profile_sid: Optional[str] = None """ TrustHub Profile Sid """ # @ApiMember(Description="The ID of the logo file") logo_id: Optional[str] = None """ The ID of the logo file """ # @ApiMember(Description="The URI of the logo file") logo_uri: Optional[str] = None """ The URI of the logo file """ # @ApiMember(Description="The billing settings for this account") billing_settings: Optional[BillingSettings] = None """ The billing settings for this account """ @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 """ SessionInfo = TypeVar('SessionInfo') @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ListResponse(Generic[SessionInfo]): # @ApiMember(Description="The items") items: Optional[List[SessionInfo]] = None """ The items """ # @ApiMember(Description="The total number of items") total_count: int = 0 """ The total number of items """ # @ApiMember(Description="The total number of pages") total_pages: int = 0 """ The total number of pages """ # @ApiMember(Description="Are there more pages of items? Used with simplified paging") has_more_pages: bool = False """ Are there more pages of items? Used with simplified paging """ # @Route("/sessions", "GET") # @Api(Description="Retrieve a list of sessions") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ListSessions(ListRequest[SessionInfo], IReturn[ListResponse[SessionInfo]]): """ Retrieve a list of sessions """ # @ApiMember(Description="The account IDs for the sessions to retrieve") account_ids: Optional[List[str]] = None """ The account IDs for the sessions to retrieve """ # @ApiMember(Description="Whether to search live or archived sessions") search_archive: bool = False """ Whether to search live or archived sessions """ # @ApiMember(Description="The start date to retrieve usage records for (YYYY-MM-DD)") start_date: Optional[str] = None """ The start date to retrieve usage records for (YYYY-MM-DD) """ # @ApiMember(Description="The end date to retrieve usage records for (YYYY-MM-DD)") end_date: Optional[str] = None """ The end date to retrieve usage records for (YYYY-MM-DD) """ # @ApiMember(Description="The IDs of the customers whose sessions you want to retrieve") customer_ids: Optional[List[str]] = None """ The IDs of the customers whose sessions you want to retrieve """ # @ApiMember(Description="The IDs of the endpoints whose sessions you want to retrieve") endpoint_ids: Optional[List[str]] = None """ The IDs of the endpoints whose sessions you want to retrieve """ # @ApiMember(Description="Filter by the from (this is a contains search)") from_: Optional[str] = field(metadata=config(field_name='from'), default=None) """ Filter by the from (this is a contains search) """ # @ApiMember(Description="Filter by the to (this is a contains search)") to: Optional[str] = None """ Filter by the to (this is a contains search) """ # @ApiMember(Description="Filter by text in the log") log: Optional[str] = None """ Filter by text in the log """ # @ApiMember(Description="Filter by parent session ID") parent_session_id: Optional[str] = None """ Filter by parent session ID """