"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""

from __future__ import annotations
import dataclasses
from calendly import utils
from dataclasses_json import Undefined, dataclass_json
from enum import Enum


@dataclass_json(undefined=Undefined.EXCLUDE)
@dataclasses.dataclass
class WebExConferenceDataTelephonyCallInNumbers:
    
    call_in_number: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('callInNumber') }})  
    label: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('label') }})  
    toll_type: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('tollType') }})  
    

@dataclass_json(undefined=Undefined.EXCLUDE)
@dataclasses.dataclass
class WebExConferenceDataTelephony:
    
    call_in_numbers: list[WebExConferenceDataTelephonyCallInNumbers] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('callInNumbers') }})  
    

@dataclass_json(undefined=Undefined.EXCLUDE)
@dataclasses.dataclass
class WebExConferenceData:
    r"""The conference metadata supplied by GoToMeeting"""
    
    id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id') }})
    r"""Canonical reference (unique identifier) for the WebEx conference"""  
    password: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('password') }})  
    telephony: WebExConferenceDataTelephony = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('telephony') }})  
    
class WebExConferenceStatusEnum(str, Enum):
    r"""Indicates the current status of the WebEx conference"""
    INITIATED = 'initiated'
    PROCESSING = 'processing'
    PUSHED = 'pushed'
    FAILED = 'failed'

class WebExConferenceTypeEnum(str, Enum):
    r"""The event location is a WebEx conference"""
    WEBEX_CONFERENCE = 'webex_conference'


@dataclass_json(undefined=Undefined.EXCLUDE)
@dataclasses.dataclass
class WebExConference:
    r"""Details about an Event that will take place using a WebEx conference"""
    
    data: WebExConferenceData = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('data') }})
    r"""The conference metadata supplied by GoToMeeting"""  
    join_url: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('join_url') }})
    r"""WebEx conference meeting url"""  
    status: WebExConferenceStatusEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('status') }})
    r"""Indicates the current status of the WebEx conference"""  
    type: WebExConferenceTypeEnum = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('type') }})
    r"""The event location is a WebEx conference"""  
    