""" Options:
Date: 2025-06-02 08:07:22
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: QueueNodeCallback.*
#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 TwilioRequestBase(IReturn[str], IPost):
    call_sid: Optional[str] = None
    account_sid: Optional[str] = None
    from_: Optional[str] = field(metadata=config(field_name='from'), default=None)
    to: Optional[str] = None
    call_status: Optional[str] = None
    api_version: Optional[str] = None
    direction: Optional[str] = None
    forwarded_from: Optional[str] = None
    caller_name: Optional[str] = None
    parent_call_sid: Optional[str] = None
    stir_verstat: Optional[str] = None
    called: Optional[str] = None
    called_zip: Optional[str] = None
    called_city: Optional[str] = None
    called_state: Optional[str] = None
    called_country: Optional[str] = None
    caller: Optional[str] = None
    caller_city: Optional[str] = None
    caller_state: Optional[str] = None
    caller_zip: Optional[str] = None
    caller_country: Optional[str] = None
    from_city: Optional[str] = None
    from_state: Optional[str] = None
    from_zip: Optional[str] = None
    from_country: Optional[str] = None
    to_city: Optional[str] = None
    to_state: Optional[str] = None
    to_zip: Optional[str] = None
    to_country: Optional[str] = None
    message_sid: Optional[str] = None
    sms_id: Optional[str] = None
    messaging_service_sid: Optional[str] = None
    body: Optional[str] = None
    num_media: int = 0
    media_content_type0: Optional[str] = None
    media_url0: Optional[str] = None
    media_content_type1: Optional[str] = None
    media_url1: Optional[str] = None
    media_content_type2: Optional[str] = None
    media_url2: Optional[str] = None
    index: int = 0
    instance_sid: Optional[str] = None
    event_type: Optional[str] = None
    channel_sid: Optional[str] = None
    attributes: Optional[str] = None
    client_identity: Optional[str] = None
    media_content_type: Optional[str] = None
    media_sid: Optional[str] = None
    identity: Optional[str] = None
    digits: Optional[str] = None
    speech_result: Optional[str] = None
    confidence: float = 0.0
    call_duration: int = 0
    recording_url: Optional[str] = None
    recording_sid: Optional[str] = None
    recording_duration: int = 0
    recording_status: Optional[str] = None
    transcription_sid: Optional[str] = None
    transcription_text: Optional[str] = None
    transcription_url: Optional[str] = None
    transcription_status: Optional[str] = None
    dial_call_status: Optional[str] = None
    dial_call_sid: Optional[str] = None
    dial_call_duration: float = 0.0
    dial_bridged: bool = False
    queue_result: Optional[str] = None
    queue_sid: Optional[str] = None
    queue_time: int = 0
    conference_sid: Optional[str] = None
    friendly_name: Optional[str] = None
    status_callback_event: Optional[str] = None
    muted: bool = False
    hold: bool = False
    end_conference_on_exit: bool = False
    start_conference_on_enter: bool = False
    event_name: Optional[str] = None
    assistant_sid: Optional[str] = None
    dialogue_sid: Optional[str] = None
    user_identifier: Optional[str] = None
    current_input: Optional[str] = None
    current_task: Optional[str] = None
    dialogue_payload_url: Optional[str] = None
    memory: Optional[str] = None
    channel: Optional[str] = None
    fax_sid: Optional[str] = None
    fax_status: Optional[str] = None
    num_pages: int = 0
    media_url: Optional[str] = None
    error_code: Optional[str] = None
    error_message: Optional[str] = None
    @staticmethod
    def response_type(): return str


# @Route("/nodes/queue/queue-callback")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class QueueNodeCallback(TwilioRequestBase, IReturn[str]):
    account_id: Optional[str] = None
    session_id: Optional[str] = None
    queue_name: Optional[str] = None