"""Auto-generated Pydantic models for the 3CX XAPI.

Generated from swagger.yaml using datamodel-code-generator, then post-processed
to use our _Base class (which sets extra='allow' and populate_by_name=True).

Do not edit this file by hand — regenerate via `scripts/generate_models.py`.
"""
from __future__ import annotations

from datetime import time as time_aliased, timedelta
from enum import Enum
from uuid import UUID

from pydantic import AwareDatetime, Field, RootModel, conint, constr

from .base import _Base as BaseModel


class ODataCountResponse(RootModel[int]):
    root: int


class ReferenceUpdate(BaseModel):
    field_odata_id: str | None = Field(None, alias="@odata.id")
    field_odata_type: str | None = Field(None, alias="@odata.type")


class ReferenceCreate(BaseModel):
    field_odata_id: str | None = Field(None, alias="@odata.id")


class ReferenceNumeric(Enum):
    negative_infinity = "-INF"
    infinity = "INF"
    nan = "NaN"


class BaseCollectionPaginationCountResponse(BaseModel):
    field_odata_count: int | None = Field(None, alias="@odata.count")


class StringCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[str] | None = None


class CallFlowScript(BaseModel):
    description: str | None = Field(None, alias="Description")
    help: str | None = Field(None, alias="Help")
    id: str | None = Field(None, alias="Id")
    versions: list[str] | None = Field(None, alias="Versions")


class FirstAvailableNumber(BaseModel):
    number: str | None = Field(None, alias="Number")


class BlackListNumber(BaseModel):
    caller_id: str | None = Field(None, alias="CallerId")
    description: str | None = Field(None, alias="Description")
    id: str | None = Field(None, alias="Id")


class RegenerateOptions(BaseModel):
    configuration_link: bool | None = Field(None, alias="ConfigurationLink")
    deskphone_password: bool | None = Field(None, alias="DeskphonePassword")
    rps_key: bool | None = Field(None, alias="RpsKey")
    send_welcome_email: bool | None = Field(None, alias="SendWelcomeEmail")
    sip_auth: bool | None = Field(None, alias="SipAuth")
    voicemail_pin: bool | None = Field(None, alias="VoicemailPIN")
    webclient_password: bool | None = Field(None, alias="WebclientPassword")


class PhoneRegistrar(BaseModel):
    capabilities: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="Capabilities"
    )
    firmware_available: str | None = Field(None, alias="FirmwareAvailable")
    firmware_version: str | None = Field(None, alias="FirmwareVersion")
    interface_link: str | None = Field(None, alias="InterfaceLink")
    ip_address: str | None = Field(None, alias="IpAddress")
    mac: str | None = Field(None, alias="MAC")
    model: str | None = Field(None, alias="Model")
    user_agent: str | None = Field(None, alias="UserAgent")
    vendor: str | None = Field(None, alias="Vendor")


class UserDeleteError(BaseModel):
    error: str | None = Field(None, alias="Error")
    extension_number: str | None = Field(None, alias="ExtensionNumber")


class IActionResult(BaseModel):
    pass


class GreetingFile(BaseModel):
    display_name: str | None = Field(None, alias="DisplayName")
    filename: str | None = Field(None, alias="Filename")


class InstallFirmware(BaseModel):
    model: str | None = Field(None, alias="Model")
    user_agent: str | None = Field(None, alias="UserAgent")


class RecordingRepositorySettings(BaseModel):
    auto_delete_recording_days: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="AutoDeleteRecordingDays"
    )
    auto_delete_recording_enabled: bool | None = Field(
        None, alias="AutoDeleteRecordingEnabled"
    )
    is_recording_archive_enabled: bool | None = Field(
        None, alias="IsRecordingArchiveEnabled"
    )
    recording_disk_space: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="RecordingDiskSpace"
    )
    recording_path: str | None = Field(None, alias="RecordingPath")
    recordings_quota: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="RecordingsQuota"
    )
    recording_used_space: int | None = Field(None, alias="RecordingUsedSpace")


class SystemDirectory(BaseModel):
    dirs: list[str] | None = Field(None, alias="Dirs")
    path: str | None = Field(None, alias="Path")


class XOutboundRulePurge(BaseModel):
    ids: list[conint(ge=-2147483648, le=2147483647)] | None = Field(None, alias="Ids")


class Parameter(BaseModel):
    description: str | None = Field(None, alias="Description")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")
    value: constr(max_length=131072) | None = Field(None, alias="Value")


class DNProperty(BaseModel):
    description: str | None = Field(None, alias="Description")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")
    value: constr(max_length=131072) | None = Field(None, alias="Value")


class RetreivePeersRequest(BaseModel):
    dn_numbers: list[str] | None = Field(None, alias="DnNumbers")
    is_report_peers: bool | None = Field(None, alias="IsReportPeers")


class Country(BaseModel):
    continent: str | None = Field(None, alias="Continent")
    country_code: str | None = Field(None, alias="CountryCode")
    country_codes: list[str] | None = Field(None, alias="CountryCodes")
    download_url: str | None = Field(None, alias="DownloadUrl")
    erp_code: str | None = Field(None, alias="ErpCode")
    exit_code: str | None = Field(None, alias="ExitCode")
    name: str | None = Field(None, alias="Name")
    parent_erp_code: str | None = Field(None, alias="ParentErpCode")
    stun_server: str | None = Field(None, alias="StunServer")
    voicemail_no: str | None = Field(None, alias="VoicemailNo")
    web_meeting_zone: str | None = Field(None, alias="WebMeetingZone")


class LicenseStatus(BaseModel):
    activated: bool | None = Field(None, alias="Activated")
    active_modules: list[str] | None = Field(None, alias="ActiveModules")
    admin_e_mail: str | None = Field(None, alias="AdminEMail")
    company_name: str | None = Field(None, alias="CompanyName")
    contact_name: str | None = Field(None, alias="ContactName")
    country_code: str | None = Field(None, alias="CountryCode")
    country_name: str | None = Field(None, alias="CountryName")
    e_mail: str | None = Field(None, alias="EMail")
    expiration_date: AwareDatetime | None = Field(None, alias="ExpirationDate")
    license_active: bool | None = Field(None, alias="LicenseActive")
    license_key: str | None = Field(None, alias="LicenseKey")
    maintenance_expires_at: AwareDatetime | None = Field(
        None, alias="MaintenanceExpiresAt"
    )
    max_sim_calls: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MaxSimCalls"
    )
    product_code: str | None = Field(None, alias="ProductCode")
    reseller_name: str | None = Field(None, alias="ResellerName")
    sim_meeting_participants: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SimMeetingParticipants"
    )
    support: bool | None = Field(None, alias="Support")
    telephone: str | None = Field(None, alias="Telephone")
    version: str | None = Field(None, alias="Version")


class ResellerInfo(BaseModel):
    id: str | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")


class XLicenseParams(BaseModel):
    company_name: str | None = Field(None, alias="CompanyName")
    contact_name: str | None = Field(None, alias="ContactName")
    country: str | None = Field(None, alias="Country")
    email: str | None = Field(None, alias="Email")
    phone: str | None = Field(None, alias="Phone")


class Property(BaseModel):
    description: str | None = Field(None, alias="Description")
    name: str | None = Field(None, alias="Name")
    value: constr(max_length=131072) | None = Field(None, alias="Value")


class ChatLinkNameValidation(BaseModel):
    friendly_name: str | None = Field(None, alias="FriendlyName")
    pair: str | None = Field(None, alias="Pair")


class InstallUpdates(BaseModel):
    entries: list[UUID] | None = Field(None, alias="Entries")
    key: UUID | None = Field(None, alias="Key")


class Backups(BaseModel):
    creation_time: AwareDatetime | None = Field(None, alias="CreationTime")
    download_link: str | None = Field(None, alias="DownloadLink")
    file_name: str | None = Field(None, alias="FileName")
    size: int | None = Field(None, alias="Size")


class BackupExtras(BaseModel):
    footprint: int | None = Field(None, alias="Footprint")
    is_encrypted: bool | None = Field(None, alias="IsEncrypted")
    version: str | None = Field(None, alias="Version")


class FailoverScriptFile(BaseModel):
    filename: str | None = Field(None, alias="Filename")


class RegistrarFxs(BaseModel):
    interface_link: str | None = Field(None, alias="InterfaceLink")
    mac_address: str | None = Field(None, alias="MacAddress")


class NetworkSettings(BaseModel):
    allow_source_as_outbound: bool | None = Field(None, alias="AllowSourceAsOutbound")
    direct_sip_allow_external: bool | None = Field(None, alias="DirectSIPAllowExternal")
    direct_sip_local_domain: str | None = Field(None, alias="DirectSIPLocalDomain")
    firewall_keep_alive: bool | None = Field(None, alias="FirewallKeepAlive")
    firewall_keep_alive_interval: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="FirewallKeepAliveInterval"
    )
    id: str | None = Field(None, alias="Id")
    ip_v6_binding_enabled: bool | None = Field(None, alias="IpV6BindingEnabled")
    pbx_public_fqdn: str | None = Field(None, alias="PbxPublicFQDN")
    public_interface: str | None = Field(None, alias="PublicInterface")
    public_static_ip: str | None = Field(None, alias="PublicStaticIP")
    sip_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SipPort"
    )
    stun_disabled: bool | None = Field(None, alias="StunDisabled")
    stun_primary_host: str | None = Field(None, alias="StunPrimaryHost")
    stun_primary_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="StunPrimaryPort"
    )
    stun_query: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="StunQuery"
    )
    stun_secondary_host: str | None = Field(None, alias="StunSecondaryHost")
    stun_secondary_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="StunSecondaryPort"
    )
    stun_third_host: str | None = Field(None, alias="StunThirdHost")
    stun_third_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="StunThirdPort"
    )
    tunnel_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="TunnelPort"
    )


class CallCostSettings(BaseModel):
    country_name: str | None = Field(None, alias="CountryName")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    invalid: bool | None = Field(None, alias="Invalid")
    prefix: str | None = Field(None, alias="Prefix")
    rate: float | str | ReferenceNumeric | None = Field(None, alias="Rate")
    read_only: bool | None = Field(None, alias="ReadOnly")


class PhoneLogo(BaseModel):
    display_name: str | None = Field(None, alias="DisplayName")
    filename: str | None = Field(None, alias="Filename")


class ActiveCall(BaseModel):
    callee: str | None = Field(None, alias="Callee")
    caller: str | None = Field(None, alias="Caller")
    established_at: AwareDatetime | None = Field(None, alias="EstablishedAt")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    last_change_status: AwareDatetime | None = Field(None, alias="LastChangeStatus")
    server_now: AwareDatetime | None = Field(None, alias="ServerNow")
    status: str | None = Field(None, alias="Status")


class XServiceManageOptions(BaseModel):
    service_names: list[str] | None = Field(None, alias="ServiceNames")


class FirewallState(BaseModel):
    html: str | None = Field(None, alias="Html")
    id: str | None = Field(None, alias="Id")
    running: bool | None = Field(None, alias="Running")
    stopping: bool | None = Field(None, alias="Stopping")


class ExternalAccount(BaseModel):
    email: str | None = Field(None, alias="Email")
    id: str | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")


class ExternalGroup(BaseModel):
    description: str | None = Field(None, alias="Description")
    display_name: str | None = Field(None, alias="DisplayName")
    id: str | None = Field(None, alias="Id")


class Microsoft365SubscriptionTestResult(BaseModel):
    exception_message: str | None = Field(None, alias="ExceptionMessage")
    fqdn: str | None = Field(None, alias="Fqdn")
    is_subscription_available: bool | None = Field(
        None, alias="IsSubscriptionAvailable"
    )


class Microsoft365Status(BaseModel):
    application_id: str | None = Field(None, alias="ApplicationId")
    exception_message: str | None = Field(None, alias="ExceptionMessage")
    provision_url: str | None = Field(None, alias="ProvisionUrl")


class ExternalAccountsPage(BaseModel):
    next_page_token: str | None = Field(None, alias="NextPageToken")
    users: list[ExternalAccount] | None = Field(None, alias="Users")


class ExternalGroupsPage(BaseModel):
    groups: list[ExternalGroup] | None = Field(None, alias="Groups")
    next_page_token: str | None = Field(None, alias="NextPageToken")


class GroupsRequestOptions(BaseModel):
    count: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Count")
    next_page_token: constr(max_length=10240) | None = Field(
        None, alias="NextPageToken"
    )
    search: str | None = Field(None, alias="Search")


class LanguageItem(BaseModel):
    code: str | None = Field(None, alias="Code")
    name: str | None = Field(None, alias="Name")


class OnBoardUICommand(BaseModel):
    error_message: str | None = Field(None, alias="ErrorMessage")
    mcu_id: str | None = Field(None, alias="McuId")
    operation: str | None = Field(None, alias="Operation")
    request_expiration: AwareDatetime | None = Field(None, alias="RequestExpiration")
    state: str | None = Field(None, alias="State")


class OnBoardConverterSession(BaseModel):
    attempts: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="Attempts"
    )
    call_id: str | None = Field(None, alias="CallId")
    descr: str | None = Field(None, alias="Descr")
    error_message: str | None = Field(None, alias="ErrorMessage")
    eta: AwareDatetime | None = Field(None, alias="Eta")
    id: str | None = Field(None, alias="Id")
    progress: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="Progress"
    )


class OnBoardConverterDataDetail(BaseModel):
    active: bool | None = Field(None, alias="Active")
    cloud: bool | None = Field(None, alias="Cloud")
    enabled: bool | None = Field(None, alias="Enabled")
    guid: str | None = Field(None, alias="Guid")
    host: str | None = Field(None, alias="Host")
    ip: str | None = Field(None, alias="Ip")
    port: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Port")
    version: str | None = Field(None, alias="Version")


class OnBoardConverterData(BaseModel):
    available: bool | None = Field(None, alias="Available")
    clock_skew: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ClockSkew"
    )
    converter: OnBoardConverterDataDetail | None = Field(None, alias="Converter")
    cpu: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Cpu")
    delay: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Delay")
    disk_space_perc: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="DiskSpacePerc"
    )
    instances: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="Instances"
    )
    memory_perc: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MemoryPerc"
    )
    sessions: list[OnBoardConverterSession] | None = Field(None, alias="Sessions")
    transcription_queue: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="TranscriptionQueue"
    )
    ts: AwareDatetime | None = Field(None, alias="Ts")


class TestResult(BaseModel):
    error: str | None = Field(None, alias="Error")
    parameters: list[str] | None = Field(None, alias="Parameters")
    success: bool | None = Field(None, alias="Success")


class EmailTemplate(BaseModel):
    body: constr(max_length=102400) | None = Field(None, alias="Body")
    from_: str | None = Field(None, alias="From")
    is_conference: bool | None = Field(None, alias="IsConference")
    is_default: bool | None = Field(None, alias="IsDefault")
    lang: str | None = Field(None, alias="Lang")
    name: str | None = Field(None, alias="Name")
    subject: str | None = Field(None, alias="Subject")
    template_path: str | None = Field(None, alias="TemplatePath")


class Firmware(BaseModel):
    filename: str | None = Field(None, alias="Filename")
    id: str | None = Field(None, alias="Id")
    model: str | None = Field(None, alias="Model")
    vendor: str | None = Field(None, alias="Vendor")
    version: str | None = Field(None, alias="Version")


class FirmwareState(BaseModel):
    count: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Count")
    file_names: list[str] | None = Field(None, alias="FileNames")
    id: str | None = Field(None, alias="Id")
    total_size: int | None = Field(None, alias="TotalSize")


class AIVoice(BaseModel):
    description: str | None = Field(None, alias="Description")
    gender: str | None = Field(None, alias="Gender")
    id: str | None = Field(None, alias="Id")


class AIAgentTemplate(BaseModel):
    description: str | None = Field(None, alias="Description")
    first_message: str | None = Field(None, alias="FirstMessage")
    id: str | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")
    preview: bool | None = Field(None, alias="Preview")


class AIModel(BaseModel):
    id: str | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")
    preview: bool | None = Field(None, alias="Preview")


class AIResources(BaseModel):
    chips: list[AIModel] | None = Field(None, alias="Chips")
    models: list[AIModel] | None = Field(None, alias="Models")
    realtime_models: list[AIModel] | None = Field(None, alias="RealtimeModels")
    templates: list[AIAgentTemplate] | None = Field(None, alias="Templates")
    voices: list[AIVoice] | None = Field(None, alias="Voices")


class VectorStoreFile(BaseModel):
    created_at: AwareDatetime | None = Field(None, alias="CreatedAt")
    id: str | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")
    size: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Size")
    status: str | None = Field(None, alias="Status")
    vector_store_id: str | None = Field(None, alias="VectorStoreId")


class AddVectorStoreFiles(BaseModel):
    file_ids: list[str] | None = Field(None, alias="FileIds")
    vector_id: str | None = Field(None, alias="VectorId")


class SystemTelemetry(BaseModel):
    cpu_usage: float | str | ReferenceNumeric | None = Field(None, alias="CpuUsage")
    free_disk_space: int | None = Field(None, alias="FreeDiskSpace")
    free_physical_memory: int | None = Field(None, alias="FreePhysicalMemory")
    free_virtual_memory: int | None = Field(None, alias="FreeVirtualMemory")
    tick_count: int | None = Field(None, alias="TickCount")
    time: AwareDatetime | None = Field(None, alias="Time")
    total_disk_space: int | None = Field(None, alias="TotalDiskSpace")
    total_physical_memory: int | None = Field(None, alias="TotalPhysicalMemory")
    total_virtual_memory: int | None = Field(None, alias="TotalVirtualMemory")


class NetworkTelemetry(BaseModel):
    id: str | None = Field(None, alias="Id")
    kbps_received: float | str | ReferenceNumeric | None = Field(
        None, alias="KbpsReceived"
    )
    kbps_sent: float | str | ReferenceNumeric | None = Field(None, alias="KbpsSent")
    time: AwareDatetime | None = Field(None, alias="Time")


class MyPhoneRequestStats(BaseModel):
    avg_duration: float | str | ReferenceNumeric | None = Field(
        None, alias="AvgDuration"
    )
    count: int | None = Field(None, alias="Count")
    max_duration: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MaxDuration"
    )
    request_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="RequestId"
    )
    sum_duration: int | None = Field(None, alias="SumDuration")


class SystemExtensionStatus(BaseModel):
    is_registered: bool | None = Field(None, alias="IsRegistered")
    name: str | None = Field(None, alias="Name")
    number: str | None = Field(None, alias="Number")
    type: str | None = Field(None, alias="Type")


class SystemDatabaseInformation(BaseModel):
    calls_used_space: int | None = Field(None, alias="CallsUsedSpace")
    chat_files_count: int | None = Field(None, alias="ChatFilesCount")
    chats_used_space: int | None = Field(None, alias="ChatsUsedSpace")
    event_log_used_space: int | None = Field(None, alias="EventLogUsedSpace")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")


class SystemHealthStatus(BaseModel):
    custom_templates_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="CustomTemplatesCount"
    )
    firewall: bool | None = Field(None, alias="Firewall")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    phones: bool | None = Field(None, alias="Phones")
    trunks: bool | None = Field(None, alias="Trunks")
    unsupported_firmwares_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="UnsupportedFirmwaresCount"
    )


class RequestHelp(BaseModel):
    grant_period_days: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="GrantPeriodDays"
    )
    issue_description: constr(max_length=2048) | None = Field(
        None, alias="IssueDescription"
    )
    name: str | None = Field(None, alias="Name")
    phone_number: str | None = Field(None, alias="PhoneNumber")
    reply_email: str | None = Field(None, alias="ReplyEmail")


class Playlist(BaseModel):
    auto_gain: bool | None = Field(None, alias="AutoGain")
    files: list[str] | None = Field(None, alias="Files")
    max_volume_percent: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MaxVolumePercent"
    )
    name: str | None = Field(None, alias="Name")
    prompt_name: str | None = Field(None, alias="PromptName")
    repository_path: str | None = Field(None, alias="RepositoryPath")
    shuffle: bool | None = Field(None, alias="Shuffle")


class OauthStateParam(BaseModel):
    pkce_code_verifier: str | None = Field(None, alias="PKCECodeVerifier")
    redirect_uri: str | None = Field(None, alias="RedirectUri")
    variable: str | None = Field(None, alias="Variable")


class OauthState(BaseModel):
    code_challenge: str | None = Field(None, alias="CodeChallenge")
    state: str | None = Field(None, alias="State")


class CrmChoice(BaseModel):
    key: str | None = Field(None, alias="Key")
    value: str | None = Field(None, alias="Value")


class CrmTemplateSource(BaseModel):
    value: str | None = Field(None, alias="Value")


class ActivityLogEvent(BaseModel):
    index: int | None = Field(None, alias="Index")
    message: str | None = Field(None, alias="Message")
    time_stamp: AwareDatetime | None = Field(None, alias="TimeStamp")


class Holiday(BaseModel):
    day: int | None = Field(None, alias="Day")
    day_end: int | None = Field(None, alias="DayEnd")
    group: str | None = Field(None, alias="Group")
    holiday_prompt: str | None = Field(None, alias="HolidayPrompt")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    is_recurrent: bool | None = Field(None, alias="IsRecurrent")
    month: int | None = Field(None, alias="Month")
    month_end: int | None = Field(None, alias="MonthEnd")
    name: str | None = Field(None, alias="Name")
    time_of_end_date: timedelta | None = Field(None, alias="TimeOfEndDate")
    time_of_start_date: timedelta | None = Field(None, alias="TimeOfStartDate")
    year: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Year")
    year_end: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="YearEnd"
    )


class EmergencyGeoLocation(BaseModel):
    friendly_name: str | None = Field(None, alias="FriendlyName")
    id: str | None = Field(None, alias="Id")


class EmergencyGeoTrunkLocation(BaseModel):
    id: str | None = Field(None, alias="Id")
    location: EmergencyGeoLocation | None = Field(None, alias="Location")
    provider_uri: str | None = Field(None, alias="ProviderUri")
    trunk_dn: str | None = Field(None, alias="TrunkDn")


class CallHistoryView(BaseModel):
    call_answered: bool | None = Field(None, alias="CallAnswered")
    call_time: timedelta | None = Field(None, alias="CallTime")
    dst_caller_number: str | None = Field(None, alias="DstCallerNumber")
    dst_display_name: str | None = Field(None, alias="DstDisplayName")
    dst_dn: str | None = Field(None, alias="DstDn")
    dst_dn_type: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="DstDnType"
    )
    dst_extended_display_name: str | None = Field(None, alias="DstExtendedDisplayName")
    dst_external: bool | None = Field(None, alias="DstExternal")
    dst_id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="DstId")
    dst_internal: bool | None = Field(None, alias="DstInternal")
    dst_participant_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="DstParticipantId"
    )
    dst_rec_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="DstRecId"
    )
    segment_action_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SegmentActionId"
    )
    segment_end_time: AwareDatetime | None = Field(None, alias="SegmentEndTime")
    segment_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SegmentId"
    )
    segment_start_time: AwareDatetime | None = Field(None, alias="SegmentStartTime")
    segment_type: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SegmentType"
    )
    src_caller_number: str | None = Field(None, alias="SrcCallerNumber")
    src_display_name: str | None = Field(None, alias="SrcDisplayName")
    src_dn: str | None = Field(None, alias="SrcDn")
    src_dn_type: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SrcDnType"
    )
    src_extended_display_name: str | None = Field(None, alias="SrcExtendedDisplayName")
    src_external: bool | None = Field(None, alias="SrcExternal")
    src_id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="SrcId")
    src_internal: bool | None = Field(None, alias="SrcInternal")
    src_participant_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SrcParticipantId"
    )
    src_rec_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SrcRecId"
    )


class ChatMessagesHistoryView(BaseModel):
    conversation_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ConversationId"
    )
    is_external: bool | None = Field(None, alias="IsExternal")
    message: str | None = Field(None, alias="Message")
    message_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MessageId"
    )
    participants_groups_array: list[str] | None = Field(
        None, alias="ParticipantsGroupsArray"
    )
    queue_number: str | None = Field(None, alias="QueueNumber")
    recipients: str | None = Field(None, alias="Recipients")
    sender_participant_email: str | None = Field(None, alias="SenderParticipantEmail")
    sender_participant_ip: str | None = Field(None, alias="SenderParticipantIp")
    sender_participant_name: str | None = Field(None, alias="SenderParticipantName")
    sender_participant_no: str | None = Field(None, alias="SenderParticipantNo")
    sender_participant_pbx: str | None = Field(None, alias="SenderParticipantPbx")
    sender_participant_phone: str | None = Field(None, alias="SenderParticipantPhone")
    time_sent: AwareDatetime | None = Field(None, alias="TimeSent")


class LastCdrAndChatMessageTimestamp(BaseModel):
    last_cdr_started_at: AwareDatetime | None = Field(None, alias="LastCdrStartedAt")
    last_chat_message_time_sent: AwareDatetime | None = Field(
        None, alias="LastChatMessageTimeSent"
    )


class RingGroupStatistics(BaseModel):
    ring_group_answered_count: int | None = Field(None, alias="RingGroupAnsweredCount")
    ring_group_display_name: str | None = Field(None, alias="RingGroupDisplayName")
    ring_group_dn: str | None = Field(None, alias="RingGroupDn")
    ring_group_received_count: int | None = Field(None, alias="RingGroupReceivedCount")
    ring_group_sentiment_score: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="RingGroupSentimentScore"
    )


class ExtensionsStatisticsByRingGroups(BaseModel):
    extension_answered_count: int | None = Field(None, alias="ExtensionAnsweredCount")
    extension_display_name: str | None = Field(None, alias="ExtensionDisplayName")
    extension_dn: str | None = Field(None, alias="ExtensionDn")
    ring_group_display_name: str | None = Field(None, alias="RingGroupDisplayName")
    ring_group_dn: str | None = Field(None, alias="RingGroupDn")
    ring_group_received_count: int | None = Field(None, alias="RingGroupReceivedCount")
    ring_group_unanswered_count: int | None = Field(
        None, alias="RingGroupUnansweredCount"
    )
    sentiment_score: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SentimentScore"
    )
    sort_order: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SortOrder"
    )


class CallLogData(BaseModel):
    action_dn_caller_id: str | None = Field(None, alias="ActionDnCallerId")
    action_dn_display_name: str | None = Field(None, alias="ActionDnDisplayName")
    action_dn_dn: str | None = Field(None, alias="actionDnDn")
    action_dn_type: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ActionDnType"
    )
    action_type: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ActionType"
    )
    answered: bool | None = Field(None, alias="Answered")
    call_cost: int | None = Field(None, alias="CallCost")
    call_history_id: str | None = Field(None, alias="CallHistoryId")
    call_id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="CallId")
    call_type: str | None = Field(None, alias="CallType")
    cdr_id: str | None = Field(None, alias="CdrId")
    destination_caller_id: str | None = Field(None, alias="DestinationCallerId")
    destination_display_name: str | None = Field(None, alias="DestinationDisplayName")
    destination_dn: str | None = Field(None, alias="DestinationDn")
    destination_type: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="DestinationType"
    )
    direction: str | None = Field(None, alias="Direction")
    dst_rec_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="DstRecId"
    )
    indent: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Indent")
    main_call_history_id: str | None = Field(None, alias="MainCallHistoryId")
    quality_report: bool | None = Field(None, alias="QualityReport")
    reason: str | None = Field(None, alias="Reason")
    recording_url: str | None = Field(None, alias="RecordingUrl")
    ringing_duration: timedelta | None = Field(None, alias="RingingDuration")
    segment_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SegmentId"
    )
    sentiment_score: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SentimentScore"
    )
    source_caller_id: str | None = Field(None, alias="SourceCallerId")
    source_display_name: str | None = Field(None, alias="SourceDisplayName")
    source_dn: str | None = Field(None, alias="SourceDn")
    source_type: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SourceType"
    )
    src_rec_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SrcRecId"
    )
    start_time: AwareDatetime | None = Field(None, alias="StartTime")
    status: str | None = Field(None, alias="Status")
    subrow_desc_number: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SubrowDescNumber"
    )
    summary: str | None = Field(None, alias="Summary")
    talking_duration: timedelta | None = Field(None, alias="TalkingDuration")
    transcription: str | None = Field(None, alias="Transcription")


class ExtensionStatistics(BaseModel):
    display_name: str | None = Field(None, alias="DisplayName")
    dn: str | None = Field(None, alias="Dn")
    inbound_answered_count: int | None = Field(None, alias="InboundAnsweredCount")
    inbound_answered_talking_dur: timedelta | None = Field(
        None, alias="InboundAnsweredTalkingDur"
    )
    inbound_unanswered_count: int | None = Field(None, alias="InboundUnansweredCount")
    outbound_answered_count: int | None = Field(None, alias="OutboundAnsweredCount")
    outbound_answered_talking_dur: timedelta | None = Field(
        None, alias="OutboundAnsweredTalkingDur"
    )
    outbound_unanswered_count: int | None = Field(None, alias="OutboundUnansweredCount")


class ReportExtensionStatisticsByGroup(BaseModel):
    display_name: str | None = Field(None, alias="DisplayName")
    dn: str | None = Field(None, alias="Dn")
    inbound_answered_count: int | None = Field(None, alias="InboundAnsweredCount")
    inbound_answered_talking_dur: timedelta | None = Field(
        None, alias="InboundAnsweredTalkingDur"
    )
    inbound_unanswered_count: int | None = Field(None, alias="InboundUnansweredCount")
    outbound_answered_count: int | None = Field(None, alias="OutboundAnsweredCount")
    outbound_answered_talking_dur: timedelta | None = Field(
        None, alias="OutboundAnsweredTalkingDur"
    )
    outbound_unanswered_count: int | None = Field(None, alias="OutboundUnansweredCount")
    sentiment_score: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SentimentScore"
    )


class CallCostByExtensionGroup(BaseModel):
    billing_cost: int | None = Field(None, alias="BillingCost")
    call_type: str | None = Field(None, alias="CallType")
    dst_dn: str | None = Field(None, alias="DstDn")
    dst_dn_class: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="DstDnClass"
    )
    group_name: str | None = Field(None, alias="GroupName")
    is_answered: bool | None = Field(None, alias="IsAnswered")
    ringing_dur: timedelta | None = Field(None, alias="RingingDur")
    seg_id: str | None = Field(None, alias="SegId")
    src_display_name: str | None = Field(None, alias="SrcDisplayName")
    src_dn: str | None = Field(None, alias="SrcDn")
    start_time: AwareDatetime | None = Field(None, alias="StartTime")
    talking_dur: timedelta | None = Field(None, alias="TalkingDur")


class QueuePerformanceOverview(BaseModel):
    extension_answered_count: int | None = Field(None, alias="ExtensionAnsweredCount")
    extension_display_name: str | None = Field(None, alias="ExtensionDisplayName")
    extension_dn: str | None = Field(None, alias="ExtensionDn")
    extension_dropped_count: int | None = Field(None, alias="ExtensionDroppedCount")
    queue_answered_count: int | None = Field(None, alias="QueueAnsweredCount")
    queue_display_name: str | None = Field(None, alias="QueueDisplayName")
    queue_dn: str | None = Field(None, alias="QueueDn")
    queue_received_count: int | None = Field(None, alias="QueueReceivedCount")
    sort_order: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SortOrder"
    )
    talk_time: timedelta | None = Field(None, alias="TalkTime")


class QueuePerformanceTotals(BaseModel):
    extension_answered_count: int | None = Field(None, alias="ExtensionAnsweredCount")
    extension_dropped_count: int | None = Field(None, alias="ExtensionDroppedCount")
    queue_display_name: str | None = Field(None, alias="QueueDisplayName")
    queue_dn: str | None = Field(None, alias="QueueDn")
    queue_received_count: int | None = Field(None, alias="QueueReceivedCount")


class TeamQueueGeneralStatistics(BaseModel):
    agents_in_queue_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="AgentsInQueueCount"
    )
    answered_count: int | None = Field(None, alias="AnsweredCount")
    avg_talk_time: timedelta | None = Field(None, alias="AvgTalkTime")
    dn: str | None = Field(None, alias="Dn")
    queue_dn_number: str | None = Field(None, alias="QueueDnNumber")
    received_count: int | None = Field(None, alias="ReceivedCount")
    total_talk_time: timedelta | None = Field(None, alias="TotalTalkTime")


class DetailedQueueStatistics(BaseModel):
    answered_count: int | None = Field(None, alias="AnsweredCount")
    avg_ring_time: timedelta | None = Field(None, alias="AvgRingTime")
    avg_talk_time: timedelta | None = Field(None, alias="AvgTalkTime")
    callbacks_count: int | None = Field(None, alias="CallbacksCount")
    calls_count: int | None = Field(None, alias="CallsCount")
    queue_dn: str | None = Field(None, alias="QueueDn")
    queue_dn_number: str | None = Field(None, alias="QueueDnNumber")
    ring_time: timedelta | None = Field(None, alias="RingTime")
    talk_time: timedelta | None = Field(None, alias="TalkTime")


class AbandonedQueueCalls(BaseModel):
    caller_id: str | None = Field(None, alias="CallerId")
    call_history_id: str | None = Field(None, alias="CallHistoryId")
    call_time: AwareDatetime | None = Field(None, alias="CallTime")
    call_time_for_csv: AwareDatetime | None = Field(None, alias="CallTimeForCsv")
    extension_display_name: str | None = Field(None, alias="ExtensionDisplayName")
    extension_dn: str | None = Field(None, alias="ExtensionDn")
    is_logged_in: bool | None = Field(None, alias="IsLoggedIn")
    polling_attempts: int | None = Field(None, alias="PollingAttempts")
    queue_display_name: str | None = Field(None, alias="QueueDisplayName")
    queue_dn: str | None = Field(None, alias="QueueDn")
    wait_time: timedelta | None = Field(None, alias="WaitTime")


class QueueAnsweredCallsByWaitTime(BaseModel):
    answered_time: AwareDatetime | None = Field(None, alias="AnsweredTime")
    call_time: AwareDatetime | None = Field(None, alias="CallTime")
    destination: str | None = Field(None, alias="Destination")
    dn: str | None = Field(None, alias="Dn")
    dn_number: str | None = Field(None, alias="DnNumber")
    ring_time: timedelta | None = Field(None, alias="RingTime")
    sentiment_score: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SentimentScore"
    )
    source: str | None = Field(None, alias="Source")


class QueueCallbacks(BaseModel):
    callbacks_count: int | None = Field(None, alias="CallbacksCount")
    dn: str | None = Field(None, alias="Dn")
    fail_callbacks_count: int | None = Field(None, alias="FailCallbacksCount")
    queue_dn_number: str | None = Field(None, alias="QueueDnNumber")
    received_count: int | None = Field(None, alias="ReceivedCount")


class AgentsInQueueStatistics(BaseModel):
    answered_count: int | None = Field(None, alias="AnsweredCount")
    answered_percent: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="AnsweredPercent"
    )
    answered_per_hour_count: int | None = Field(None, alias="AnsweredPerHourCount")
    avg_ring_time: timedelta | None = Field(None, alias="AvgRingTime")
    avg_talk_time: timedelta | None = Field(None, alias="AvgTalkTime")
    dn: str | None = Field(None, alias="Dn")
    dn_display_name: str | None = Field(None, alias="DnDisplayName")
    logged_in_time: timedelta | None = Field(None, alias="LoggedInTime")
    lost_count: int | None = Field(None, alias="LostCount")
    queue: str | None = Field(None, alias="Queue")
    queue_display_name: str | None = Field(None, alias="QueueDisplayName")
    ring_time: timedelta | None = Field(None, alias="RingTime")
    talk_time: timedelta | None = Field(None, alias="TalkTime")


class QueueFailedCallbacks(BaseModel):
    callback_no: str | None = Field(None, alias="CallbackNo")
    call_time: AwareDatetime | None = Field(None, alias="CallTime")
    dn: str | None = Field(None, alias="Dn")
    queue_dn_number: str | None = Field(None, alias="QueueDnNumber")
    ring_time: timedelta | None = Field(None, alias="RingTime")


class StatisticSla(BaseModel):
    bad_sla_calls_count: int | None = Field(None, alias="BadSlaCallsCount")
    dn: str | None = Field(None, alias="Dn")
    queue_dn_number: str | None = Field(None, alias="QueueDnNumber")
    received_count: int | None = Field(None, alias="ReceivedCount")


class BreachesSla(BaseModel):
    caller_id: str | None = Field(None, alias="CallerId")
    call_time: AwareDatetime | None = Field(None, alias="CallTime")
    queue: str | None = Field(None, alias="Queue")
    queue_dn_number: str | None = Field(None, alias="QueueDnNumber")
    waiting_time: timedelta | None = Field(None, alias="WaitingTime")


class QueueChatPerformance(BaseModel):
    abandoned_count: int | None = Field(None, alias="AbandonedCount")
    answered_count: int | None = Field(None, alias="AnsweredCount")
    incoming_count: int | None = Field(None, alias="IncomingCount")
    quantity_agents: int | None = Field(None, alias="QuantityAgents")
    queue: str | None = Field(None, alias="Queue")
    queue_display_name: str | None = Field(None, alias="QueueDisplayName")


class QueueAgentsChatStatistics(BaseModel):
    answered_count: int | None = Field(None, alias="AnsweredCount")
    dealt_with_count: int | None = Field(None, alias="DealtWithCount")
    dn: str | None = Field(None, alias="Dn")
    dn_display_name: str | None = Field(None, alias="DnDisplayName")
    queue: str | None = Field(None, alias="Queue")
    queue_display_name: str | None = Field(None, alias="QueueDisplayName")
    sort_order: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SortOrder"
    )


class QueueAgentsChatStatisticsTotals(BaseModel):
    answered_count: int | None = Field(None, alias="AnsweredCount")
    dealt_with_count: int | None = Field(None, alias="DealtWithCount")
    queue: str | None = Field(None, alias="Queue")
    queue_display_name: str | None = Field(None, alias="QueueDisplayName")


class AbandonedChatsStatistics(BaseModel):
    chat_id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="ChatId")
    date_of_request: AwareDatetime | None = Field(None, alias="DateOfRequest")
    participant_email: str | None = Field(None, alias="ParticipantEmail")
    participant_message: str | None = Field(None, alias="ParticipantMessage")
    participant_name: str | None = Field(None, alias="ParticipantName")
    participant_number: str | None = Field(None, alias="ParticipantNumber")
    queue_display_name: str | None = Field(None, alias="QueueDisplayName")
    queue_no: str | None = Field(None, alias="QueueNo")
    reason_for_abandoned: str | None = Field(None, alias="ReasonForAbandoned")
    reason_for_dealt_with: str | None = Field(None, alias="ReasonForDealtWith")
    source: str | None = Field(None, alias="Source")


class AgentLoginHistory(BaseModel):
    agent: str | None = Field(None, alias="Agent")
    agent_no: str | None = Field(None, alias="AgentNo")
    day: AwareDatetime | None = Field(None, alias="Day")
    logged_in_day_interval: timedelta | None = Field(None, alias="LoggedInDayInterval")
    logged_in_dt: AwareDatetime | None = Field(None, alias="loggedInDt")
    logged_in_interval: timedelta | None = Field(None, alias="LoggedInInterval")
    logged_in_total_interval: timedelta | None = Field(
        None, alias="LoggedInTotalInterval"
    )
    logged_out_dt: AwareDatetime | None = Field(None, alias="LoggedOutDt")
    queue_no: str | None = Field(None, alias="QueueNo")
    talking_day_interval: timedelta | None = Field(None, alias="TalkingDayInterval")
    talking_interval: timedelta | None = Field(None, alias="TalkingInterval")
    talking_total_interval: timedelta | None = Field(None, alias="TalkingTotalInterval")


class UserActivity(BaseModel):
    answered_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="AnsweredCount"
    )
    date_time_interval: AwareDatetime | None = Field(None, alias="DateTimeInterval")
    unanswered_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="UnansweredCount"
    )


class CallDistribution(BaseModel):
    date_time_interval: AwareDatetime | None = Field(None, alias="DateTimeInterval")
    incoming_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="IncomingCount"
    )
    outgoing_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="OutgoingCount"
    )


class OutboundCall(BaseModel):
    answered: bool | None = Field(None, alias="Answered")
    call_cost: int | None = Field(None, alias="CallCost")
    call_duration: timedelta | None = Field(None, alias="CallDuration")
    call_history_id: str | None = Field(None, alias="CallHistoryId")
    cdr_id: str | None = Field(None, alias="CdrId")
    destination_callee_id: str | None = Field(None, alias="DestinationCalleeId")
    destination_display_name: str | None = Field(None, alias="DestinationDisplayName")
    destination_dn: str | None = Field(None, alias="DestinationDn")
    quality_report: bool | None = Field(None, alias="QualityReport")
    recording_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="RecordingId"
    )
    recording_url: str | None = Field(None, alias="RecordingUrl")
    ringing_duration: timedelta | None = Field(None, alias="RingingDuration")
    rule_name: str | None = Field(None, alias="RuleName")
    sentiment_score: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SentimentScore"
    )
    source_caller_id: str | None = Field(None, alias="SourceCallerId")
    source_display_name: str | None = Field(None, alias="SourceDisplayName")
    source_dn: str | None = Field(None, alias="SourceDn")
    start_time: AwareDatetime | None = Field(None, alias="StartTime")
    status: str | None = Field(None, alias="Status")
    summary: str | None = Field(None, alias="Summary")
    talking_duration: timedelta | None = Field(None, alias="TalkingDuration")
    transcription: str | None = Field(None, alias="Transcription")
    trunk_name: str | None = Field(None, alias="TrunkName")
    trunk_number: str | None = Field(None, alias="TrunkNumber")


class InboundCall(BaseModel):
    call_duration: timedelta | None = Field(None, alias="CallDuration")
    call_history_id: str | None = Field(None, alias="CallHistoryId")
    cdr_id: str | None = Field(None, alias="CdrId")
    destination_caller_id: str | None = Field(None, alias="DestinationCallerId")
    destination_display_name: str | None = Field(None, alias="DestinationDisplayName")
    destination_dn: str | None = Field(None, alias="DestinationDn")
    did: str | None = Field(None, alias="Did")
    quality_report: bool | None = Field(None, alias="QualityReport")
    recording_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="RecordingId"
    )
    recording_url: str | None = Field(None, alias="RecordingUrl")
    ringing_duration: timedelta | None = Field(None, alias="RingingDuration")
    rule_name: str | None = Field(None, alias="RuleName")
    sentiment_score: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SentimentScore"
    )
    source_caller_id: str | None = Field(None, alias="SourceCallerId")
    source_display_name: str | None = Field(None, alias="SourceDisplayName")
    source_dn: str | None = Field(None, alias="SourceDn")
    start_time: AwareDatetime | None = Field(None, alias="StartTime")
    status: str | None = Field(None, alias="Status")
    summary: str | None = Field(None, alias="Summary")
    talking_duration: timedelta | None = Field(None, alias="TalkingDuration")
    transcription: str | None = Field(None, alias="Transcription")
    trunk_name: str | None = Field(None, alias="TrunkName")
    trunk_number: str | None = Field(None, alias="TrunkNumber")


class AuditLog(BaseModel):
    action: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Action")
    id: int | None = Field(None, alias="Id")
    ip: str | None = Field(None, alias="Ip")
    new_data: str | None = Field(None, alias="NewData")
    object_name: str | None = Field(None, alias="ObjectName")
    object_type: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ObjectType"
    )
    prev_data: str | None = Field(None, alias="PrevData")
    source: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Source")
    timestamp: AwareDatetime | None = Field(None, alias="Timestamp")
    user_name: str | None = Field(None, alias="UserName")


class TimeReportData(BaseModel):
    x_value: AwareDatetime | None = Field(None, alias="XValue")
    y_value1: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="YValue1"
    )
    y_value2: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="YValue2"
    )


class PurgeSettings(BaseModel):
    all: bool | None = Field(None, alias="All")
    start: AwareDatetime | None = Field(None, alias="Start")
    stop: AwareDatetime | None = Field(None, alias="Stop")


class Codec(BaseModel):
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")
    rfc_name: str | None = Field(None, alias="RfcName")


class TimeZone(BaseModel):
    iana_name: str | None = Field(None, alias="IanaName")
    id: str | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")
    windows_name: str | None = Field(None, alias="WindowsName")


class DeviceInfo(BaseModel):
    assigned: bool | None = Field(None, alias="Assigned")
    assigned_user: str | None = Field(None, alias="AssignedUser")
    detected_at: AwareDatetime | None = Field(None, alias="DetectedAt")
    firmware_version: str | None = Field(None, alias="FirmwareVersion")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    interface_link: str | None = Field(None, alias="InterfaceLink")
    mac: str | None = Field(None, alias="MAC")
    model: str | None = Field(None, alias="Model")
    network_address: str | None = Field(None, alias="NetworkAddress")
    network_path: str | None = Field(None, alias="NetworkPath")
    parameters: str | None = Field(None, alias="Parameters")
    sbc_name: str | None = Field(None, alias="SbcName")
    template_name: str | None = Field(None, alias="TemplateName")
    user_agent: str | None = Field(None, alias="UserAgent")
    vendor: str | None = Field(None, alias="Vendor")
    via_sbc: bool | None = Field(None, alias="ViaSBC")


class GatewayParameter(BaseModel):
    can_have_did: bool | None = Field(None, alias="CanHaveDID")
    description: str | None = Field(None, alias="Description")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    inbound_possible_values: list[str] | None = Field(
        None, alias="InboundPossibleValues"
    )
    name: str | None = Field(None, alias="Name")
    outbound_possible_values: list[str] | None = Field(
        None, alias="OutboundPossibleValues"
    )
    source_id_possible_values: list[str] | None = Field(
        None, alias="SourceIDPossibleValues"
    )


class GatewayParameterValue(BaseModel):
    description: str | None = Field(None, alias="Description")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")


class NetworkInterface(BaseModel):
    id: str | None = Field(None, alias="Id")


class License(BaseModel):
    country_code: str | None = Field(None, alias="CountryCode")
    is_maintaince_expired: bool | None = Field(None, alias="IsMaintainceExpired")
    max_sim_calls: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MaxSimCalls"
    )
    product_code: str | None = Field(None, alias="ProductCode")


class ConsoleRestrictions(BaseModel):
    access_restricted: bool | None = Field(None, alias="AccessRestricted")
    id: str | None = Field(None, alias="Id")
    ip_whitelist: list[str] | None = Field(None, alias="IpWhitelist")
    my_ip_address: str | None = Field(None, alias="MyIpAddress")


class MusicOnHoldSettings(BaseModel):
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    music_on_hold: str | None = Field(None, alias="MusicOnHold")
    music_on_hold1: str | None = Field(None, alias="MusicOnHold1")
    music_on_hold2: str | None = Field(None, alias="MusicOnHold2")
    music_on_hold3: str | None = Field(None, alias="MusicOnHold3")
    music_on_hold4: str | None = Field(None, alias="MusicOnHold4")
    music_on_hold5: str | None = Field(None, alias="MusicOnHold5")
    music_on_hold6: str | None = Field(None, alias="MusicOnHold6")
    music_on_hold7: str | None = Field(None, alias="MusicOnHold7")
    music_on_hold8: str | None = Field(None, alias="MusicOnHold8")
    music_on_hold9: str | None = Field(None, alias="MusicOnHold9")
    music_on_hold_randomize: bool | None = Field(None, alias="MusicOnHoldRandomize")
    music_on_hold_randomize_per_call: bool | None = Field(
        None, alias="MusicOnHoldRandomizePerCall"
    )


class CodecsSettings(BaseModel):
    external_codec_list: list[str] | None = Field(None, alias="ExternalCodecList")
    local_codec_list: list[str] | None = Field(None, alias="LocalCodecList")


class GeneralSettingsForPbx(BaseModel):
    allow_fwd_to_external: bool | None = Field(None, alias="AllowFwdToExternal")
    busy_monitor: bool | None = Field(None, alias="BusyMonitor")
    busy_monitor_timeout: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="BusyMonitorTimeout"
    )
    disable_outbound_calls_out_office_hours: bool | None = Field(
        None, alias="DisableOutboundCallsOutOfficeHours"
    )
    enable_v_menu_outbound_calls: bool | None = Field(
        None, alias="EnableVMenuOutboundCalls"
    )
    hd_auto_logout_enabled: bool | None = Field(None, alias="HDAutoLogoutEnabled")
    hd_auto_logout_time: timedelta | None = Field(None, alias="HDAutoLogoutTime")
    limit_call_pickup: bool | None = Field(None, alias="LimitCallPickup")
    operator_extension: str | None = Field(None, alias="OperatorExtension")
    play_busy: bool | None = Field(None, alias="PlayBusy")
    scheduled_report_generation_time: timedelta | None = Field(
        None, alias="ScheduledReportGenerationTime"
    )


class DialCodeSettings(BaseModel):
    dial_code_billing_code: str | None = Field(None, alias="DialCodeBillingCode")
    dial_code_hide_caller_id: str | None = Field(None, alias="DialCodeHideCallerID")
    dial_code_hotdesking: str | None = Field(None, alias="DialCodeHotdesking")
    dial_code_hotel_access: str | None = Field(None, alias="DialCodeHotelAccess")
    dial_code_intercom: str | None = Field(None, alias="DialCodeIntercom")
    dial_code_logged_in_queue: str | None = Field(None, alias="DialCodeLoggedInQueue")
    dial_code_logged_out_queue: str | None = Field(None, alias="DialCodeLoggedOutQueue")
    dial_code_out_office: str | None = Field(None, alias="DialCodeOutOffice")
    dial_code_park: str | None = Field(None, alias="DialCodePark")
    dial_code_pickup: str | None = Field(None, alias="DialCodePickup")
    dial_code_profile_status: str | None = Field(None, alias="DialCodeProfileStatus")
    dial_code_unpark: str | None = Field(None, alias="DialCodeUnpark")
    dial_code_v_mail: str | None = Field(None, alias="DialCodeVMail")


class E164Settings(BaseModel):
    area_code: str | None = Field(None, alias="AreaCode")
    country_code: str | None = Field(None, alias="CountryCode")
    country_name: str | None = Field(None, alias="CountryName")
    enabled: bool | None = Field(None, alias="Enabled")
    international_code: str | None = Field(None, alias="InternationalCode")
    national_code: str | None = Field(None, alias="NationalCode")
    prefix: str | None = Field(None, alias="Prefix")
    remove_area_code: bool | None = Field(None, alias="RemoveAreaCode")
    remove_country_code: bool | None = Field(None, alias="RemoveCountryCode")


class CountryCodes(BaseModel):
    country_codes: list[str] | None = Field(None, alias="CountryCodes")


class PhonesSettings(BaseModel):
    allow_multi_queue_ringtones: bool | None = Field(
        None, alias="AllowMultiQueueRingtones"
    )
    auto_cleanup_firmware: bool | None = Field(None, alias="AutoCleanupFirmware")
    auto_update_phones_on_add: bool | None = Field(None, alias="AutoUpdatePhonesOnAdd")
    custom_dnd_profile: str | None = Field(None, alias="CustomDNDProfile")
    fanvil_update_interval: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="FanvilUpdateInterval"
    )
    grandstream_update_interval: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="GrandstreamUpdateInterval"
    )
    phone_allow_multi_firmwares: bool | None = Field(
        None, alias="PhoneAllowMultiFirmwares"
    )
    snom_update_interval: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SnomUpdateInterval"
    )
    use_provisioning_secret: bool | None = Field(None, alias="UseProvisioningSecret")
    use_rpc_for_local_phones: bool | None = Field(None, alias="UseRpcForLocalPhones")
    yealink_update_interval: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="YealinkUpdateInterval"
    )


class LoggingSettings(BaseModel):
    keep_logs: bool | None = Field(None, alias="KeepLogs")
    keep_logs_days: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="KeepLogsDays"
    )
    logging_level: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="LoggingLevel"
    )


class ChatLogSettings(BaseModel):
    auto_clear_months: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="AutoClearMonths"
    )
    auto_close_days: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="AutoCloseDays"
    )
    remote_storage_enabled: bool | None = Field(None, alias="RemoteStorageEnabled")


class AntiHackingSettings(BaseModel):
    hack_auth_requests: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="HackAuthRequests"
    )
    hack_barrier_amber: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="HackBarrierAmber"
    )
    hack_barrier_green: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="HackBarrierGreen"
    )
    hack_barrier_red: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="HackBarrierRed"
    )
    hack_blacklist_duration: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="HackBlacklistDuration"
    )
    hack_challenge_requests: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="HackChallengeRequests"
    )
    max_request_per_period: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MaxRequestPerPeriod"
    )
    security_defense_program: bool | None = Field(None, alias="SecurityDefenseProgram")
    throttle_period_length: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ThrottlePeriodLength"
    )


class Rights(BaseModel):
    allow_ivr: bool | None = Field(None, alias="AllowIVR")
    allow_parking: bool | None = Field(None, alias="AllowParking")
    allow_to_change_presence: bool | None = Field(None, alias="AllowToChangePresence")
    allow_to_manage_company_book: bool | None = Field(
        None, alias="AllowToManageCompanyBook"
    )
    assign_clear_operations: bool | None = Field(None, alias="AssignClearOperations")
    can_barge_in: bool | None = Field(None, alias="CanBargeIn")
    can_intercom: bool | None = Field(None, alias="CanIntercom")
    can_see_group_calls: bool | None = Field(None, alias="CanSeeGroupCalls")
    can_see_group_members: bool | None = Field(None, alias="CanSeeGroupMembers")
    can_see_group_recordings: bool | None = Field(None, alias="CanSeeGroupRecordings")
    invalid: bool | None = Field(None, alias="Invalid")
    perform_operations: bool | None = Field(None, alias="PerformOperations")
    role_name: str | None = Field(None, alias="RoleName")
    show_my_calls: bool | None = Field(None, alias="ShowMyCalls")
    show_my_presence: bool | None = Field(None, alias="ShowMyPresence")
    show_my_presence_outside: bool | None = Field(None, alias="ShowMyPresenceOutside")


class ConcealedPassword(BaseModel):
    concealed: bool | None = Field(None, alias="Concealed")
    value: str | None = Field(None, alias="Value")


class TrunkMessaging(BaseModel):
    enabled: bool | None = Field(None, alias="Enabled")
    number_length: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="NumberLength"
    )
    number_length_enabled: bool | None = Field(None, alias="NumberLengthEnabled")
    provider: str | None = Field(None, alias="Provider")
    webhook: str | None = Field(None, alias="Webhook")


class GatewayParameterBinding(BaseModel):
    custom: str | None = Field(None, alias="Custom")
    param_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ParamId"
    )
    value_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ValueId"
    )


class Choice(BaseModel):
    key: str | None = Field(None, alias="Key")
    value: str | None = Field(None, alias="Value")


class CIDFormatting(BaseModel):
    replace_pattern: str | None = Field(None, alias="ReplacePattern")
    source_pattern: str | None = Field(None, alias="SourcePattern")


class PeerGroup(BaseModel):
    group_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="GroupID"
    )
    is_primary: bool | None = Field(None, alias="IsPrimary")
    name: str | None = Field(None, alias="Name")
    number: str | None = Field(None, alias="Number")
    role_name: str | None = Field(None, alias="RoleName")


class Variable(BaseModel):
    name: str | None = Field(None, alias="Name")
    value: str | None = Field(None, alias="Value")


class PhoneLldpInfo(BaseModel):
    configurable: bool | None = Field(None, alias="Configurable")
    value: bool | None = Field(None, alias="Value")


class CustomQueueRingtone(BaseModel):
    queue: str | None = Field(None, alias="Queue")
    ringtone: str | None = Field(None, alias="Ringtone")


class InterruptionDecision(BaseModel):
    action: str | None = Field(None, alias="Action")
    instructions: str | None = Field(None, alias="Instructions")


class CallParticipant(BaseModel):
    call_id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="CallId")
    device_id: str | None = Field(None, alias="DeviceId")
    direct_control: bool | None = Field(None, alias="DirectControl")
    dn: str | None = Field(None, alias="DN")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    leg_id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="LegId")
    party_caller_id: str | None = Field(None, alias="PartyCallerId")
    party_caller_name: str | None = Field(None, alias="PartyCallerName")
    party_dn: str | None = Field(None, alias="PartyDn")
    party_dn_type: str | None = Field(None, alias="PartyDnType")
    status: str | None = Field(None, alias="Status")


class PhoneModel(BaseModel):
    add_allowed: bool | None = Field(None, alias="AddAllowed")
    can_be_sbc: bool | None = Field(None, alias="CanBeSBC")
    name: str | None = Field(None, alias="Name")
    url: str | None = Field(None, alias="URL")
    user_agent: str | None = Field(None, alias="UserAgent")


class EntityRestrictions(BaseModel):
    allowed: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Allowed")
    unlimited: bool | None = Field(None, alias="Unlimited")
    used: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Used")


class OutboundRoute(BaseModel):
    append: str | None = Field(None, alias="Append")
    caller_id: str | None = Field(None, alias="CallerID")
    prepend: str | None = Field(None, alias="Prepend")
    strip_digits: int | None = Field(None, alias="StripDigits")
    trunk_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="TrunkId"
    )
    trunk_name: str | None = Field(None, alias="TrunkName")


class DNRange(BaseModel):
    from_: str | None = Field(None, alias="From")
    to: str | None = Field(None, alias="To")


class LogEntry(BaseModel):
    text: str | None = Field(None, alias="Text")
    time_stamp: AwareDatetime | None = Field(None, alias="TimeStamp")


class SetRoute(BaseModel):
    did: str | None = Field(None, alias="DID")
    display_name: str | None = Field(None, alias="DisplayName")
    trunk_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="TrunkId"
    )


class ProviderPhone(BaseModel):
    friendly_name: str | None = Field(None, alias="FriendlyName")
    is_in_trunk: bool | None = Field(None, alias="IsInTrunk")
    is_messaging_enabled: bool | None = Field(None, alias="IsMessagingEnabled")
    phone_number: str | None = Field(None, alias="PhoneNumber")
    sid: str | None = Field(None, alias="Sid")


class DeviceLine(BaseModel):
    key: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Key")
    name: str | None = Field(None, alias="Name")
    number: str | None = Field(None, alias="Number")


class FxsModel(BaseModel):
    can_be_sbc: bool | None = Field(None, alias="CanBeSBC")
    display_name: str | None = Field(None, alias="DisplayName")
    user_agent: str | None = Field(None, alias="UserAgent")


class FxsVariableChoice(BaseModel):
    display_name: str | None = Field(None, alias="DisplayName")
    name: str | None = Field(None, alias="Name")


class Prompt(BaseModel):
    filename: str | None = Field(None, alias="Filename")
    id: str | None = Field(None, alias="Id")
    transcription: str | None = Field(None, alias="Transcription")


class WebsiteLinksTranslations(BaseModel):
    authentication_message: str | None = Field(None, alias="AuthenticationMessage")
    ending_message: str | None = Field(None, alias="EndingMessage")
    first_response_message: str | None = Field(None, alias="FirstResponseMessage")
    gdpr_message: str | None = Field(None, alias="GdprMessage")
    greeting_message: str | None = Field(None, alias="GreetingMessage")
    greeting_offline_message: str | None = Field(None, alias="GreetingOfflineMessage")
    invite_message: str | None = Field(None, alias="InviteMessage")
    offline_email_message: str | None = Field(None, alias="OfflineEmailMessage")
    offline_finish_message: str | None = Field(None, alias="OfflineFinishMessage")
    offline_form_invalid_email: str | None = Field(
        None, alias="OfflineFormInvalidEmail"
    )
    offline_form_invalid_name: str | None = Field(None, alias="OfflineFormInvalidName")
    offline_form_maximum_characters_reached: str | None = Field(
        None, alias="OfflineFormMaximumCharactersReached"
    )
    offline_name_message: str | None = Field(None, alias="OfflineNameMessage")
    start_chat_button_text: str | None = Field(None, alias="StartChatButtonText")
    unavailable_message: str | None = Field(None, alias="UnavailableMessage")
    window_title: str | None = Field(None, alias="WindowTitle")


class CategoryUpdate(BaseModel):
    category: str | None = Field(None, alias="Category")
    count: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Count")


class BackupContents(BaseModel):
    call_history: bool | None = Field(None, alias="CallHistory")
    disable_backup_compression: bool | None = Field(
        None, alias="DisableBackupCompression"
    )
    encrypt_backup: bool | None = Field(None, alias="EncryptBackup")
    encrypt_backup_password: ConcealedPassword | None = Field(
        None, alias="EncryptBackupPassword"
    )
    fqdn: bool | None = Field(None, alias="FQDN")
    license: bool | None = Field(None, alias="License")
    phone_provisioning: bool | None = Field(None, alias="PhoneProvisioning")
    prompts: bool | None = Field(None, alias="Prompts")
    recordings: bool | None = Field(None, alias="Recordings")
    voice_mails: bool | None = Field(None, alias="VoiceMails")


class ConcealedDataFile(BaseModel):
    concealed: bool | None = Field(None, alias="Concealed")
    contents: str | None = Field(None, alias="Contents")
    name: str | None = Field(None, alias="Name")


class XSBCConnection(BaseModel):
    calls: int | None = Field(None, alias="Calls")
    cpu: str | None = Field(None, alias="Cpu")
    disk: str | None = Field(None, alias="Disk")
    elapsed_time: timedelta | None = Field(None, alias="ElapsedTime")
    latency: int | None = Field(None, alias="Latency")
    memory: str | None = Field(None, alias="Memory")
    registered_phones: int | None = Field(None, alias="RegisteredPhones")
    udp_active: bool | None = Field(None, alias="UdpActive")
    up: bool | None = Field(None, alias="Up")


class CDRSettingsField(BaseModel):
    length: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Length")
    name: str | None = Field(None, alias="Name")


class OnBoardMcuDataDetail(BaseModel):
    active: bool | None = Field(None, alias="Active")
    cloud: bool | None = Field(None, alias="Cloud")
    enabled: bool | None = Field(None, alias="Enabled")
    guid: str | None = Field(None, alias="Guid")
    host: str | None = Field(None, alias="Host")
    ip: str | None = Field(None, alias="Ip")
    port: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Port")
    version: str | None = Field(None, alias="Version")


class ParticipantDetails(BaseModel):
    email: str | None = None
    key: str | None = None
    moderator: conint(ge=-2147483648, le=2147483647) | None = None
    name: str | None = None
    pbx_extension: str | None = None


class MeetingParams(BaseModel):
    bitrate_data: conint(ge=-2147483648, le=2147483647) | None = None
    bitrate_video: conint(ge=-2147483648, le=2147483647) | None = None
    canchangemedia: conint(ge=-2147483648, le=2147483647) | None = None
    clicktocall: conint(ge=-2147483648, le=2147483647) | None = None
    forcemoderator: conint(ge=-2147483648, le=2147483647) | None = None
    hideparticipants: conint(ge=-2147483648, le=2147483647) | None = None
    mcu: str | None = None
    meetingduration: conint(ge=-2147483648, le=2147483647) | None = None
    meetingtitle: str | None = None
    moderateparticipants: conint(ge=-2147483648, le=2147483647) | None = None
    needorganizer: conint(ge=-2147483648, le=2147483647) | None = None
    note: str | None = None
    org_properties: str | None = None
    part_properties: str | None = None
    privaterooms: conint(ge=-2147483648, le=2147483647) | None = None
    quickmeeting: conint(ge=-2147483648, le=2147483647) | None = None


class KeyValuePair2OfStringOnBoardConnectedParticipant(BaseModel):
    pass


class VectorStoreExpiration(BaseModel):
    anchor: str | None = Field(None, alias="Anchor")
    days: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Days")
    expires_at: AwareDatetime | None = Field(None, alias="ExpiresAt")
    last_active_at: AwareDatetime | None = Field(None, alias="LastActiveAt")


class CrmSelectableValue(BaseModel):
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")


class ExtensionFilter(BaseModel):
    call_ids: list[str] | None = Field(None, alias="CallIds")
    number: str | None = Field(None, alias="Number")


class ArchiveSubsystem(BaseModel):
    archiving: bool | None = Field(None, alias="Archiving")
    enabled: bool | None = Field(None, alias="Enabled")
    folder: str | None = Field(None, alias="Folder")
    schedule_days: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ScheduleDays"
    )


class RemoteMySqlConfig(BaseModel):
    database: str | None = Field(None, alias="Database")
    host: str | None = Field(None, alias="Host")
    password: ConcealedPassword | None = Field(None, alias="Password")
    port: int | None = Field(None, alias="Port")
    user_id: str | None = Field(None, alias="UserId")


class RemoteSqlServerConfig(BaseModel):
    database: str | None = Field(None, alias="Database")
    host: str | None = Field(None, alias="Host")
    password: ConcealedPassword | None = Field(None, alias="Password")
    port: int | None = Field(None, alias="Port")
    user_id: str | None = Field(None, alias="UserId")


class DataTypesToOffload(BaseModel):
    audio_metrics: bool | None = Field(None, alias="AudioMetrics")
    call_history: bool | None = Field(None, alias="CallHistory")
    recordings: bool | None = Field(None, alias="Recordings")
    system_metrics: bool | None = Field(None, alias="SystemMetrics")


class S3Config(BaseModel):
    apply_bucket: bool | None = Field(None, alias="ApplyBucket")
    bucket_name: str | None = Field(None, alias="BucketName")
    region: str | None = Field(None, alias="Region")


class AmazonCredentials(BaseModel):
    access_key: str | None = Field(None, alias="AccessKey")
    secret_key: ConcealedPassword | None = Field(None, alias="SecretKey")


class SyslogDatadogConfig(BaseModel):
    api_key: str | None = Field(None, alias="ApiKey")
    url: str | None = Field(None, alias="Url")


class SyslogSplunkConfig(BaseModel):
    token: str | None = Field(None, alias="Token")
    url: str | None = Field(None, alias="Url")
    validate_server_certificate: bool | None = Field(
        None, alias="ValidateServerCertificate"
    )


class SyslogElkConfig(BaseModel):
    api_key: str | None = Field(None, alias="ApiKey")
    index_name: str | None = Field(None, alias="IndexName")
    url: str | None = Field(None, alias="Url")


class SyslogCategoryConfig(BaseModel):
    is_audit_logs_enabled: bool | None = Field(None, alias="IsAuditLogsEnabled")
    is_event_logs_enabled: bool | None = Field(None, alias="IsEventLogsEnabled")
    is_system_alerts_enabled: bool | None = Field(None, alias="IsSystemAlertsEnabled")


class QualityParty(BaseModel):
    address_str: str | None = Field(None, alias="AddressStr")
    burst: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Burst")
    codec: str | None = Field(None, alias="Codec")
    duration: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="Duration"
    )
    global_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="GlobalPort"
    )
    inbound: bool | None = Field(None, alias="Inbound")
    local_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="LocalPort"
    )
    location: str | None = Field(None, alias="Location")
    mos_from_pbx: float | str | ReferenceNumeric | None = Field(
        None, alias="MOSFromPBX"
    )
    mos_to_pbx: float | str | ReferenceNumeric | None = Field(None, alias="MOSToPBX")
    number: str | None = Field(None, alias="Number")
    rtt: float | str | ReferenceNumeric | None = Field(None, alias="RTT")
    rx_jitter: float | str | ReferenceNumeric | None = Field(None, alias="RxJitter")
    rx_lost: float | str | ReferenceNumeric | None = Field(None, alias="RxLost")
    rx_packets: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="RxPackets"
    )
    tun_address_str: str | None = Field(None, alias="TunAddressStr")
    tx_bursts: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="TxBursts"
    )
    tx_jitter: float | str | ReferenceNumeric | None = Field(None, alias="TxJitter")
    tx_lost: float | str | ReferenceNumeric | None = Field(None, alias="TxLost")
    tx_packets: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="TxPackets"
    )
    user_agent: str | None = Field(None, alias="UserAgent")


class ENL(BaseModel):
    from_: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="From")
    to: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="To")


class EmailVariable(BaseModel):
    name: str | None = Field(None, alias="Name")
    value: str | None = Field(None, alias="Value")


class AutoSchedulerSettings(BaseModel):
    enabled: bool | None = Field(None, alias="Enabled")
    profile_available: str | None = Field(None, alias="ProfileAvailable")
    profile_away: str | None = Field(None, alias="ProfileAway")
    profile_dnd: str | None = Field(None, alias="ProfileDND")


class CallTypeInfo(BaseModel):
    digits_length: str | None = Field(None, alias="DigitsLength")
    prefix: str | None = Field(None, alias="Prefix")


class ContactSource(Enum):
    field_3_cx = "3CX"
    crm = "CRM"
    google = "Google"
    m365 = "M365"


class RemoteAccessStatus(Enum):
    none = "None"
    requested = "Requested"
    active = "Active"


class PeerType(Enum):
    none = "None"
    extension = "Extension"
    queue = "Queue"
    ring_group = "RingGroup"
    ivr = "IVR"
    fax = "Fax"
    conference = "Conference"
    special_menu = "SpecialMenu"
    parking = "Parking"
    external_line = "ExternalLine"
    group = "Group"
    route_point = "RoutePoint"


class UserTag(Enum):
    ms = "MS"
    teams = "Teams"
    google = "Google"
    wake_up = "WakeUp"
    fax_server = "FaxServer"
    principal = "Principal"
    weak_id = "WeakID"
    weak_pass = "WeakPass"
    wm = "WM"
    ai = "AI"


class TranscriptionType(Enum):
    nothing = "Nothing"
    voicemail = "Voicemail"
    recordings = "Recordings"
    both = "Both"
    inherit = "Inherit"


class CfaRoutingType(Enum):
    dial_code = "DialCode"
    forward = "Forward"
    trunk = "Trunk"


class DirectionType(Enum):
    none = "None"
    inbound = "Inbound"
    outbound = "Outbound"
    both = "Both"


class SRTPModeType(Enum):
    srtp_disabled = "SRTPDisabled"
    srtp_enabled = "SRTPEnabled"
    srtp_enforced = "SRTPEnforced"


class IPInRegistrationContactType(Enum):
    external = "External"
    internal = "Internal"
    both = "Both"
    specified = "Specified"


class MatchingStrategyType(Enum):
    match_any_fields = "MatchAnyFields"
    match_all_fields = "MatchAllFields"


class RequireRegistrationForType(Enum):
    nothing = "Nothing"
    incoming_calls = "IncomingCalls"
    outgoing_calls = "OutgoingCalls"
    in_out_calls = "InOutCalls"


class GatewayType(Enum):
    unknown = "Unknown"
    analog = "Analog"
    provider = "Provider"
    bridge_master = "BridgeMaster"
    bridge_slave = "BridgeSlave"
    bridge_slave_over_tunnel = "BridgeSlaveOverTunnel"
    bri = "BRI"
    t1 = "T1"
    e1 = "E1"


class RuleCallTypeType(Enum):
    all_calls = "AllCalls"
    internal_calls_only = "InternalCallsOnly"
    external_calls_only = "ExternalCallsOnly"


class RuleHoursType(Enum):
    all_hours = "AllHours"
    office_hours = "OfficeHours"
    out_of_office_hours = "OutOfOfficeHours"
    specific_hours = "SpecificHours"
    specific_hours_excluding_holidays = "SpecificHoursExcludingHolidays"
    out_of_specific_hours = "OutOfSpecificHours"
    out_of_specific_hours_including_holidays = "OutOfSpecificHoursIncludingHolidays"
    never = "Never"
    break_time = "BreakTime"


class DayOfWeek(Enum):
    sunday = "Sunday"
    monday = "Monday"
    tuesday = "Tuesday"
    wednesday = "Wednesday"
    thursday = "Thursday"
    friday = "Friday"
    saturday = "Saturday"


class RuleConditionType(Enum):
    no_answer = "NoAnswer"
    phone_busy = "PhoneBusy"
    phone_not_registered = "PhoneNotRegistered"
    forward_all = "ForwardAll"
    based_on_caller_id = "BasedOnCallerID"
    based_on_did = "BasedOnDID"


class DestinationType(Enum):
    none = "None"
    voice_mail = "VoiceMail"
    extension = "Extension"
    queue = "Queue"
    ring_group = "RingGroup"
    ivr = "IVR"
    external = "External"
    fax = "Fax"
    boomerang = "Boomerang"
    deflect = "Deflect"
    voice_mail_of_destination = "VoiceMailOfDestination"
    callback = "Callback"
    route_point = "RoutePoint"
    proceed_with_no_exceptions = "ProceedWithNoExceptions"


class TypeOfIPRestriction(Enum):
    any = "Any"
    ipv4 = "IPV4"
    ipv6 = "IPV6"


class TypeOfTransportRestriction(Enum):
    any = "Any"
    udp = "UDP"
    tcp = "TCP"
    tls = "TLS"


class Authentication(Enum):
    both = "Both"
    name = "Name"
    email = "Email"
    none = "None"


class CallHandlingFlags(Enum):
    welcome_message_for_incoming_calls = "WelcomeMessageForIncomingCalls"
    hold_call = "HoldCall"


class GroupHoursMode(Enum):
    default = "Default"
    force_opened = "ForceOpened"
    force_closed = "ForceClosed"
    force_break = "ForceBreak"
    force_custom_operator = "ForceCustomOperator"
    force_holiday = "ForceHoliday"
    has_forced_mask = "HasForcedMask"


class StartupLicense(Enum):
    free = "Free"
    pro = "Pro"


class PollingStrategyType(Enum):
    hunt = "Hunt"
    ring_all = "RingAll"
    hunt_random_start = "HuntRandomStart"
    next_agent = "NextAgent"
    longest_waiting = "LongestWaiting"
    least_talk_time = "LeastTalkTime"
    fewest_answered = "FewestAnswered"
    hunt_by3s = "HuntBy3s"
    first3_available = "First3Available"
    skill_based_routing_ring_all = "SkillBasedRouting_RingAll"
    skill_based_routing_hunt_random_start = "SkillBasedRouting_HuntRandomStart"
    skill_based_routing_round_robin = "SkillBasedRouting_RoundRobin"
    skill_based_routing_fewest_answered = "SkillBasedRouting_FewestAnswered"


class TypeOfChatOwnershipType(Enum):
    take_manually = "TakeManually"
    auto_assign = "AutoAssign"


class QueueRecording(Enum):
    disabled = "Disabled"
    allow_to_opt_out = "AllowToOptOut"
    ask_to_opt_in = "AskToOptIn"


class QueueNotifyCode(Enum):
    callback = "Callback"
    callback_fail = "CallbackFail"
    sla_time_breached = "SLATimeBreached"
    call_lost = "CallLost"
    agent_auto_logout = "AgentAutoLogout"


class ResetQueueStatisticsFrequency(Enum):
    disabled = "Disabled"
    daily = "Daily"
    weekly = "Weekly"
    monthly = "Monthly"


class VMEmailOptionsType(Enum):
    none = "None"
    notification = "Notification"
    attachment = "Attachment"
    attachment_and_delete = "AttachmentAndDelete"
    vmail_to_members = "VmailToMembers"
    email_to_extras_only = "EmailToExtrasOnly"


class StrategyType(Enum):
    hunt = "Hunt"
    ring_all = "RingAll"
    paging = "Paging"


class VMPlayMsgDateTimeType(Enum):
    none = "None"
    play12_hr = "Play12Hr"
    play24_hr = "Play24Hr"


class ProfileType(Enum):
    default = "Default"
    available = "Available"
    away = "Away"
    out_of_office = "OutOfOffice"
    available2 = "Available2"
    out_of_office2 = "OutOfOffice2"


class QueueStatusType(Enum):
    logged_out = "LoggedOut"
    logged_in = "LoggedIn"


class OfficeHoursBits(Enum):
    global_schedule = "GlobalSchedule"
    auto_switch_profiles = "AutoSwitchProfiles"
    auto_queue_log_out = "AutoQueueLogOut"
    block_outbound_calls = "BlockOutboundCalls"


class ProvType(Enum):
    local_lan = "LocalLan"
    remote_ext = "RemoteExt"
    remote_ext_sip_proxy_mgr = "RemoteExtSipProxyMgr"
    sbc = "SBC"


class XferTypeEnum(Enum):
    b_xfer = "BXfer"
    att_xfer = "AttXfer"


class PhoneDeviceVlanType(Enum):
    wan = "Wan"
    pc = "Pc"


class IVRType(Enum):
    default = "Default"
    code_based = "CodeBased"
    script_based = "ScriptBased"
    wakeup = "Wakeup"


class IVRForwardType(Enum):
    end_call = "EndCall"
    extension = "Extension"
    ring_group = "RingGroup"
    queue = "Queue"
    ivr = "IVR"
    voice_mail = "VoiceMail"
    call_by_name = "CallByName"
    repeat_prompt = "RepeatPrompt"
    custom_input = "CustomInput"


class BlockType(Enum):
    block = "Block"
    allow = "Allow"


class AddedBy(Enum):
    manual = "Manual"
    mcu = "Mcu"
    webmeeting = "Webmeeting"
    auto_blacklist = "AutoBlacklist"
    whitelist = "Whitelist"


class TemplateType(Enum):
    preferred = "Preferred"
    supported = "Supported"
    dedicated = "Dedicated"
    third_party = "ThirdParty"
    deleted = "Deleted"
    unknown = "Unknown"


class TrunkEditorType(Enum):
    messaging = "Messaging"
    voip = "Voip"


class TrunkVariableType(Enum):
    text = "Text"
    password = "Password"


class RecordingCallType(Enum):
    local = "Local"
    inbound_external = "InboundExternal"
    outbound_external = "OutboundExternal"


class FileSystemType(Enum):
    local = "Local"
    ftp = "Ftp"
    google_drive = "GoogleDrive"
    network_share = "NetworkShare"
    logs = "Logs"
    sftp = "Sftp"
    google_bucket = "GoogleBucket"
    share_point = "SharePoint"
    amazon_s3 = "AmazonS3"


class InfoLevel(Enum):
    critical = "Critical"
    error = "Error"
    warning = "Warning"
    info = "Info"


class AnalysisCode(Enum):
    trunk_is_disabled = "TrunkIsDisabled"
    registrar_is_not_set = "RegistrarIsNotSet"
    sip_call_failed = "SIPCallFailed"
    call_monitoring_failed = "CallMonitoringFailed"
    err_no_auth_id = "ErrNoAuthID"
    outbound_call_failed = "OutboundCallFailed"
    secure_sip_certificate_invalid = "SecureSIPCertificateInvalid"
    secure_sip_private_key_invalid = "SecureSIPPrivateKeyInvalid"
    secure_sip_certificate_date_invalid = "SecureSIPCertificateDateInvalid"
    inbound_call_failed = "InboundCallFailed"
    route_skipped = "RouteSkipped"
    route_failed = "RouteFailed"
    rtp_mismatch_detected = "RTPMismatchDetected"
    codec_mismatch = "CodecMismatch"
    response_code_fail = "ResponseCodeFail"
    response_text_fail = "ResponseTextFail"
    err_no_auth_pwd = "ErrNoAuthPwd"
    err_no_auth3way = "ErrNoAuth3way"
    err_no_transport = "ErrNoTransport"
    err_no_reply = "ErrNoReply"
    transport_mismatch = "TransportMismatch"
    transport_error = "TransportError"
    registration_failed = "RegistrationFailed"
    registration_is_blocked = "RegistrationIsBlocked"
    forwarding_failed = "ForwardingFailed"
    forwarding_failed_end_call = "ForwardingFailedEndCall"
    warn_outbound_duration = "WarnOutboundDuration"
    number_formats_mismatch = "NumberFormatsMismatch"
    trunk_is_inbound_only = "TrunkIsInboundOnly"
    trunk_is_outbound_only = "TrunkIsOutboundOnly"
    not_supported_rinstance = "NotSupportedRinstance"
    not_supported_rfc2833 = "NotSupportedRFC2833"
    proxy_fqdn_has_no_napt_ror_srv = "ProxyFqdnHasNoNAPTRorSRV"
    proxy_zero_port_ip = "ProxyZeroPortIP"
    registrar_fqdn_has_no_napt_ror_srv = "RegistrarFqdnHasNoNAPTRorSRV"
    registrar_zero_port_ip = "RegistrarZeroPortIP"
    alt_proxy_fqdn_has_no_napt_ror_srv = "AltProxyFqdnHasNoNAPTRorSRV"
    alt_proxy_zero_port_ip = "AltProxyZeroPortIP"
    forwarding_ends_call = "ForwardingEndsCall"
    main_trunk_number = "MainTrunkNumber"
    proxy_fqdn_is_not_resolved = "ProxyFQDNIsNotResolved"
    registrar_fqdn_is_not_resolved = "RegistrarFQDNIsNotResolved"
    alt_proxy_fqdn_is_not_resolved = "AltProxyFQDNIsNotResolved"
    not_supported_session_timers = "NotSupportedSessionTimers"
    outbound_dialed = "OutboundDialed"
    number_formats_match = "NumberFormatsMatch"
    outbound_caller_ready = "OutboundCallerReady"
    local_codec = "LocalCodec"
    remote_codec = "RemoteCodec"
    destination_media_ip = "DestinationMediaIP"
    source_media_ip = "SourceMediaIP"
    outbound_rule_found = "OutboundRuleFound"
    outbound_call_successful = "OutboundCallSuccessful"
    sip_message_response = "SIPMessageResponse"
    ip_mode = "IPMode"
    server_address = "ServerAddress"
    transport_type = "TransportType"
    target_domain = "TargetDomain"
    registered_ok = "RegisteredOK"
    registration_is_not_required = "RegistrationIsNotRequired"
    proxy_is_ip_address = "ProxyIsIpAddress"
    proxy_is_fqdn = "ProxyIsFQDN"
    proxy_resolves_to_naptr = "ProxyResolvesToNAPTR"
    proxy_resolves_to_srv = "ProxyResolvesToSRV"
    proxy_resolves_to_host = "ProxyResolvesToHOST"
    proxy_resolves_to_aaaa = "ProxyResolvesToAAAA"
    registrar_is_i_paddress = "RegistrarIsIPaddress"
    registrar_is_fqdn = "RegistrarIsFQDN"
    registrar_is_fqd_nno_resolve = "RegistrarIsFQDNnoResolve"
    registrar_resolves_to_naptr = "RegistrarResolvesToNAPTR"
    registrar_resolves_to_srv = "RegistrarResolvesToSRV"
    registrar_resolves_to_host = "RegistrarResolvesToHOST"
    registrar_resolves_to_aaaa = "RegistrarResolvesToAAAA"
    inbound_call_source = "InboundCallSource"
    inbound_call_transport = "InboundCallTransport"
    inbound_sip_message = "InboundSIPMessage"
    extra_header = "ExtraHeader"
    supported_privacy = "SupportedPrivacy"
    supported_rinstance = "SupportedRinstance"
    supported_rfc2833 = "SupportedRFC2833"
    supported_video = "SupportedVideo"
    supported_prack = "SupportedPRACK"
    supported_fax = "SupportedFax"
    supported_rtcp = "SupportedRtcp"
    supported_cryptos = "SupportedCryptos"
    supported_session_timers = "SupportedSessionTimers"
    alt_proxy_is_ip_address = "AltProxyIsIPAddress"
    alt_proxy_is_fqdn = "AltProxyIsFQDN"
    alt_proxy_resolves_to_naptr = "AltProxyResolvesToNAPTR"
    alt_proxy_resolves_to_srv = "AltProxyResolvesToSRV"
    alt_proxy_resolves_to_host = "AltProxyResolvesToHOST"
    alt_proxy_resolves_to_aaaa = "AltProxyResolvesToAAAA"
    forwarding_info = "ForwardingInfo"


class TrunkType(Enum):
    voxtelesys = "Voxtelesys"
    twilio = "Twilio"


class DeviceType(Enum):
    fxs = "Fxs"
    dect = "Dect"


class PromptSetType(Enum):
    system = "System"
    custom = "Custom"


class PromptType(Enum):
    file = "File"
    dep_file = "DepFile"
    playlist = "Playlist"


class AnimationStyle(Enum):
    slide_up = "SlideUp"
    slide_from_side = "SlideFromSide"
    fade_in = "FadeIn"
    no_animation = "NoAnimation"


class LiveChatGreeting(Enum):
    disabled = "Disabled"
    only_on_desktop = "OnlyOnDesktop"
    only_on_mobile = "OnlyOnMobile"
    desktop_and_mobile = "DesktopAndMobile"


class LiveChatCommunication(Enum):
    chat_only = "ChatOnly"
    phone_and_chat = "PhoneAndChat"
    phone_only = "PhoneOnly"
    video_phone_and_chat = "VideoPhoneAndChat"


class LiveChatMinimizedStyle(Enum):
    bubble_left = "BubbleLeft"
    bubble_right = "BubbleRight"
    bottom_left = "BottomLeft"
    bottom_right = "BottomRight"


class LiveChatLanguage(Enum):
    browser = "browser"
    en = "en"
    es = "es"
    de = "de"
    fr = "fr"
    it = "it"
    pl = "pl"
    ru = "ru"
    pt = "pt"
    zh = "zh"


class LiveMessageUserinfoFormat(Enum):
    avatar = "Avatar"
    name = "Name"
    both = "Both"
    none = "None"


class LiveChatMessageDateformat(Enum):
    date = "Date"
    time = "Time"
    both = "Both"


class ButtonIconType(Enum):
    url = "Url"
    default = "Default"
    bubble = "Bubble"
    double_bubble = "DoubleBubble"


class ScheduleType(Enum):
    daily = "Daily"
    weekly = "Weekly"
    monthly = "Monthly"
    hourly = "Hourly"
    minutely = "Minutely"
    immediate = "Immediate"


class UpdateType(Enum):
    release = "Release"
    beta = "Beta"
    major_release = "MajorRelease"
    alpha = "Alpha"
    hotfix = "Hotfix"


class FailoverMode(Enum):
    active = "Active"
    passive = "Passive"


class FailoverCondition(Enum):
    all_service = "AllService"
    any_service = "AnyService"


class SbcLogLevel(Enum):
    none = "None"
    low = "Low"
    medium = "Medium"
    verbose = "Verbose"


class Security(Enum):
    tcp = "TCP"
    tls = "TLS"


class ParameterType(Enum):
    string = "String"
    integer = "Integer"
    double = "Double"
    boolean = "Boolean"
    date_time = "DateTime"
    password = "Password"
    o_auth = "OAuth"
    list = "List"


class EditorType(Enum):
    string = "String"
    sql = "Sql"


class AuthenticationType(Enum):
    no = "No"
    basic = "Basic"
    scenario = "Scenario"


class TypeOfCDRLog(Enum):
    single_file_for_all_calls = "SingleFileForAllCalls"
    single_file_for_each_call = "SingleFileForEachCall"
    passive_socket = "PassiveSocket"
    active_socket = "ActiveSocket"


class EventLogType(Enum):
    error = "Error"
    warning = "Warning"
    info = "Info"


class ServiceStatus(Enum):
    stopped = "Stopped"
    start_pending = "StartPending"
    stop_pending = "StopPending"
    running = "Running"
    continue_pending = "ContinuePending"
    pause_pending = "PausePending"
    paused = "Paused"


class GCCollectionMode(Enum):
    default = "Default"
    forced = "Forced"
    optimized = "Optimized"
    aggressive = "Aggressive"


class IntegrationSyncType(Enum):
    sync_all_users = "SyncAllUsers"
    sync_all_users_except_selected = "SyncAllUsersExceptSelected"
    sync_selected = "SyncSelected"
    sync_selected_groups = "SyncSelectedGroups"


class SynchronizedPbxProfile(Enum):
    available = "Available"
    out_of_office = "OutOfOffice"
    away = "Away"


class SynchronizedM365Profile(Enum):
    available = "Available"
    busy = "Busy"
    away = "Away"
    available_idle = "AvailableIdle"
    busy_idle = "BusyIdle"
    do_not_disturb = "DoNotDisturb"
    be_right_back = "BeRightBack"
    in_meeting = "InMeeting"
    in_call = "InCall"


class TypeOfUser(Enum):
    users = "Users"
    shared_mailboxes = "SharedMailboxes"
    licensed_users = "LicensedUsers"


class TranscribeEngine(Enum):
    none = "None"
    google = "Google"
    open_ai = "OpenAI"
    whisper = "Whisper"
    engine3_cx = "Engine3CX"
    engine3_cx_local = "Engine3CXLocal"


class OnBoardMcuServerOS(Enum):
    debian10 = "Debian10"
    debian11 = "Debian11"
    debian12 = "Debian12"


class DtmfMode(Enum):
    none = "None"
    sip_info = "SipInfo"
    rfc2833 = "Rfc2833"
    sip_and_rfc = "SipAndRfc"


class McuOperation(Enum):
    create = "Create"
    delete = "Delete"


class McuReqState(Enum):
    pending = "Pending"
    success = "Success"
    failure = "Failure"


class NotifyCodes(Enum):
    storage_limit = "StorageLimit"
    emergency_number_dialed = "EmergencyNumberDialed"
    trunk_status_changed = "TrunkStatusChanged"
    extension_reg_changed = "ExtensionRegChanged"
    license_limit = "LicenseLimit"
    trunk_failover = "TrunkFailover"
    ip_blocked = "IPBlocked"
    request_anti_hacked = "RequestAntiHacked"
    network_error = "NetworkError"
    trunk_error = "TrunkError"
    stun_error = "STUNError"
    call_denied = "CallDenied"
    number_blocked = "NumberBlocked"
    number_unblocked = "NumberUnblocked"


class SetpointType(Enum):
    voicemail_quota = "VoicemailQuota"
    recording_quota = "RecordingQuota"
    cpu_usage = "CpuUsage"
    inbound_network_usage = "InboundNetworkUsage"
    outbound_network_usage = "OutboundNetworkUsage"
    physical_memory_usage = "PhysicalMemoryUsage"
    virtual_memory_usage = "VirtualMemoryUsage"
    disk_usage = "DiskUsage"
    time_shift = "TimeShift"


class MailServerType(Enum):
    tcx = "Tcx"
    ms365 = "MS365"
    custom = "Custom"
    google_workspace = "GoogleWorkspace"


class PmsIntegrationType(Enum):
    tcxpms = "tcxpms"
    fidelio = "fidelio"


class XOperatingSystemType(Enum):
    other = "Other"
    linux = "Linux"
    windows = "Windows"


class RemoteStorageStatus(Enum):
    not_configured = "NotConfigured"
    partially_configured = "PartiallyConfigured"
    configured = "Configured"


class PhoneSystemService(Enum):
    database = "Database"
    configuration = "Configuration"
    audio_provider = "AudioProvider"
    sip_service = "SIPService"
    system_service = "SystemService"
    ivr = "IVR"
    call_flow = "CallFlow"
    queue_mananger = "QueueMananger"
    tunnel = "Tunnel"
    management_console = "ManagementConsole"
    media_server = "MediaServer"
    hotel_module = "HotelModule"
    event_notiification_manager = "EventNotiificationManager"
    nginx = "Nginx"
    gateway = "Gateway"
    ai_bridge = "AiBridge"


class CreateTicketStatus(Enum):
    ok = "OK"
    key_not_found = "KeyNotFound"
    key_not_assigned_to_user = "KeyNotAssignedToUser"
    key_assigned_to_partner = "KeyAssignedToPartner"
    key_is_not_commercial = "KeyIsNotCommercial"
    key_has_no_support_tickets = "KeyHasNoSupportTickets"


class PhonebookPriorityOptions(Enum):
    not_query_if_in_phonebook_found = "NotQueryIfInPhonebookFound"
    always_query = "AlwaysQuery"


class ContactType(Enum):
    company = "Company"
    personal = "Personal"


class RevokeReason(Enum):
    too_many = "TooMany"
    set_password = "SetPassword"
    invalidate_password = "InvalidatePassword"
    logout = "Logout"
    manual = "Manual"


class LoginType(Enum):
    local = "Local"
    guest = "Guest"


class OffloadDestination(Enum):
    none = "None"
    postgre = "Postgre"
    big_query = "BigQuery"
    my_sql = "MySql"
    sql_server = "SqlServer"


class ServerTrustMode(Enum):
    prefer = "Prefer"
    require = "Require"
    verify_full = "VerifyFull"


class AuthenticateMode(Enum):
    password = "Password"
    certificate_file = "CertificateFile"


class SyslogIntegrationType(Enum):
    none = "None"
    custom = "Custom"
    splunk = "Splunk"
    elastic = "Elastic"
    datadog = "Datadog"


class SyslogProtocol(Enum):
    udp = "Udp"
    tcp = "Tcp"
    tls = "Tls"


class ChatType(Enum):
    sms = "SMS"
    live_chat = "LiveChat"
    facebook = "Facebook"
    internal = "Internal"
    rcs = "RCS"


class ScheduledReportType(Enum):
    none = "None"
    call_logs = "CallLogs"
    chat_logs = "ChatLogs"
    audit_logs = "AuditLogs"
    inbound_rules = "InboundRules"
    queue_abandoned_calls = "QueueAbandonedCalls"
    queue_answered_calls_by_waiting_time = "QueueAnsweredCallsByWaitingTime"
    queue_callbacks = "QueueCallbacks"
    queue_failed_callbacks = "QueueFailedCallbacks"
    queue_performance_overview = "QueuePerformanceOverview"
    queue_detailed_statistics = "QueueDetailedStatistics"
    queue_team_general_statistics = "QueueTeamGeneralStatistics"
    sla_statistics = "SlaStatistics"
    sla_breaches = "SlaBreaches"
    agent_in_queue_statistics = "AgentInQueueStatistics"
    agent_login_history = "AgentLoginHistory"
    extensions_statistics_by_ring_groups = "ExtensionsStatisticsByRingGroups"
    extension_statistics = "ExtensionStatistics"
    call_cost_by_extension_dept = "CallCostByExtensionDept"
    queue_chat_performance = "QueueChatPerformance"
    queue_agents_chat = "QueueAgentsChat"
    abandoned_chats = "AbandonedChats"
    ring_groups = "RingGroups"
    inbound_calls = "InboundCalls"
    out_bound_calls = "OutBoundCalls"
    user_activity = "UserActivity"
    call_distribution = "CallDistribution"


class ReportScheduleType(Enum):
    daily = "Daily"
    weekly = "Weekly"
    monthly = "Monthly"
    hourly = "Hourly"
    not_scheduled = "NotScheduled"


class AvatarStyle(Enum):
    square = "Square"
    circle = "Circle"


class TypeOfAutoPickupForward(Enum):
    transfer_back = "TransferBack"
    dn = "DN"
    extension_voice_mail = "ExtensionVoiceMail"
    external_number = "ExternalNumber"
    route_point = "RoutePoint"


class TypeOfPhoneBookResolving(Enum):
    not_resolve = "NotResolve"
    match_exact = "MatchExact"
    match_length = "MatchLength"


class TypeOfPhoneBookDisplay(Enum):
    first_name_last_name = "FirstNameLastName"
    last_name_first_name = "LastNameFirstName"


class TypeOfPhoneBookAddQueueName(Enum):
    not_add = "NotAdd"
    append = "Append"
    prepend = "Prepend"


class ChatRecipientsType(Enum):
    none = "None"
    my_group_managers = "MyGroupManagers"
    my_group_all_members = "MyGroupAllMembers"
    all_groups_managers = "AllGroupsManagers"


class CallFlowScriptCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[CallFlowScript] | None = None


class BlackListNumberCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[BlackListNumber] | None = None


class ParameterCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Parameter] | None = None


class DNPropertyCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[DNProperty] | None = None


class CountryCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Country] | None = None


class PropertyCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Property] | None = None


class BackupsCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Backups] | None = None


class RegistrarFxsCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[RegistrarFxs] | None = None


class CallCostSettingsCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[CallCostSettings] | None = None


class PhoneLogoCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[PhoneLogo] | None = None


class ActiveCallCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[ActiveCall] | None = None


class EmailTemplateCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[EmailTemplate] | None = None


class FirmwareCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Firmware] | None = None


class PlaylistCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Playlist] | None = None


class ActivityLogEventCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[ActivityLogEvent] | None = None


class HolidayCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Holiday] | None = None


class EmergencyGeoLocationCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[EmergencyGeoLocation] | None = None


class CallHistoryViewCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[CallHistoryView] | None = None


class ChatMessagesHistoryViewCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[ChatMessagesHistoryView] | None = None


class LastCdrAndChatMessageTimestampCollectionResponse(
    BaseCollectionPaginationCountResponse
):
    value: list[LastCdrAndChatMessageTimestamp] | None = None


class RingGroupStatisticsCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[RingGroupStatistics] | None = None


class ExtensionsStatisticsByRingGroupsCollectionResponse(
    BaseCollectionPaginationCountResponse
):
    value: list[ExtensionsStatisticsByRingGroups] | None = None


class CallLogDataCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[CallLogData] | None = None


class ExtensionStatisticsCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[ExtensionStatistics] | None = None


class ReportExtensionStatisticsByGroupCollectionResponse(
    BaseCollectionPaginationCountResponse
):
    value: list[ReportExtensionStatisticsByGroup] | None = None


class CallCostByExtensionGroupCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[CallCostByExtensionGroup] | None = None


class QueuePerformanceOverviewCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[QueuePerformanceOverview] | None = None


class QueuePerformanceTotalsCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[QueuePerformanceTotals] | None = None


class TeamQueueGeneralStatisticsCollectionResponse(
    BaseCollectionPaginationCountResponse
):
    value: list[TeamQueueGeneralStatistics] | None = None


class DetailedQueueStatisticsCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[DetailedQueueStatistics] | None = None


class AbandonedQueueCallsCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[AbandonedQueueCalls] | None = None


class QueueAnsweredCallsByWaitTimeCollectionResponse(
    BaseCollectionPaginationCountResponse
):
    value: list[QueueAnsweredCallsByWaitTime] | None = None


class QueueCallbacksCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[QueueCallbacks] | None = None


class AgentsInQueueStatisticsCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[AgentsInQueueStatistics] | None = None


class QueueFailedCallbacksCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[QueueFailedCallbacks] | None = None


class StatisticSlaCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[StatisticSla] | None = None


class BreachesSlaCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[BreachesSla] | None = None


class QueueChatPerformanceCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[QueueChatPerformance] | None = None


class QueueAgentsChatStatisticsCollectionResponse(
    BaseCollectionPaginationCountResponse
):
    value: list[QueueAgentsChatStatistics] | None = None


class QueueAgentsChatStatisticsTotalsCollectionResponse(
    BaseCollectionPaginationCountResponse
):
    value: list[QueueAgentsChatStatisticsTotals] | None = None


class AbandonedChatsStatisticsCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[AbandonedChatsStatistics] | None = None


class AgentLoginHistoryCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[AgentLoginHistory] | None = None


class UserActivityCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[UserActivity] | None = None


class CallDistributionCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[CallDistribution] | None = None


class OutboundCallCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[OutboundCall] | None = None


class InboundCallCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[InboundCall] | None = None


class AuditLogCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[AuditLog] | None = None


class TimeReportDataCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[TimeReportData] | None = None


class DeviceInfoCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[DeviceInfo] | None = None


class NetworkInterfaceCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[NetworkInterface] | None = None


class RightsCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Rights] | None = None


class PeerGroupCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[PeerGroup] | None = None


class EmergencyGeoTrunkLocationCollectionResponse(
    BaseCollectionPaginationCountResponse
):
    value: list[EmergencyGeoTrunkLocation] | None = None


class PromptCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Prompt] | None = None


class CrmSelectableValueCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[CrmSelectableValue] | None = None


class CodecCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Codec] | None = None


class GatewayParameterCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[GatewayParameter] | None = None


class TimeZoneCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[TimeZone] | None = None


class GatewayParameterValueCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[GatewayParameterValue] | None = None


class PhoneModelCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[PhoneModel] | None = None


class OutboundRouteCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[OutboundRoute] | None = None


class DNRangeCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[DNRange] | None = None


class CIDFormattingCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[CIDFormatting] | None = None


class VariableCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Variable] | None = None


class LogEntryCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[LogEntry] | None = None


class SetRouteCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[SetRoute] | None = None


class ProviderPhoneCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[ProviderPhone] | None = None


class DeviceLineCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[DeviceLine] | None = None


class FxsModelCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[FxsModel] | None = None


class CategoryUpdateCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[CategoryUpdate] | None = None


class CDRSettingsFieldCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[CDRSettingsField] | None = None


class ExternalAccountCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[ExternalAccount] | None = None


class ExternalGroupCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[ExternalGroup] | None = None


class OnBoardConverterSessionCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[OnBoardConverterSession] | None = None


class KeyValuePair2OfStringOnBoardConnectedParticipantCollectionResponse(
    BaseCollectionPaginationCountResponse
):
    value: list[KeyValuePair2OfStringOnBoardConnectedParticipant] | None = None


class AIModelCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[AIModel] | None = None


class AIAgentTemplateCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[AIAgentTemplate] | None = None


class AIVoiceCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[AIVoice] | None = None


class VectorStoreFileCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[VectorStoreFile] | None = None


class CrmChoiceCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[CrmChoice] | None = None


class ExtensionFilterCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[ExtensionFilter] | None = None


class GatewayParameterBindingCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[GatewayParameterBinding] | None = None


class ChoiceCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Choice] | None = None


class CustomQueueRingtoneCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[CustomQueueRingtone] | None = None


class EmailVariableCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[EmailVariable] | None = None


class FxsVariableChoiceCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[FxsVariableChoice] | None = None


class ParticipantDetailsCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[ParticipantDetails] | None = None


class Warnings(Enum):
    contacts_specify_name_surname_company = (
        "WARNINGS.CONTACTS_SPECIFY_NAME_SURNAME_COMPANY"
    )
    contacts_specify_phone_number = "WARNINGS.CONTACTS_SPECIFY_PHONE_NUMBER"
    contacts_specify_name_surname = "WARNINGS.CONTACTS_SPECIFY_NAME_SURNAME"
    string_too_long = "WARNINGS.STRING_TOO_LONG"
    length_not_more50_chars = "WARNINGS.LENGTH_NOT_MORE_50_CHARS"
    length_not_more255_chars = "WARNINGS.LENGTH_NOT_MORE_255_CHARS"
    invalid_hex_character = "WARNINGS.INVALID_HEX_CHARACTER"
    no_more_numbers_available = "WARNINGS.NO_MORE_NUMBERS_AVAILABLE"
    erp_server_error = "WARNINGS.ERP_SERVER_ERROR"
    license_not_found = "WARNINGS.LICENSE_NOT_FOUND"
    limit_reached = "WARNINGS.LIMIT_REACHED"
    invalid = "WARNINGS.INVALID"
    xapi_captcha_error = "WARNINGS.XAPI.CAPTCHA_ERROR"
    xapi_invalid_pin_number = "WARNINGS.XAPI.INVALID_PIN_NUMBER"
    xapi_not_supported = "WARNINGS.XAPI.NOT_SUPPORTED"
    xapi_user_role_downgrade = "WARNINGS.XAPI.USER_ROLE_DOWNGRADE"
    group_cannot_be_deleted = "WARNINGS.GROUP_CANNOT_BE_DELETED"
    cannot_be_deleted = "WARNINGS.CANNOT_BE_DELETED"
    group_with_members_cannot_be_deleted = (
        "WARNINGS.GROUP_WITH_MEMBERS_CANNOT_BE_DELETED"
    )
    xapi_other_user_role_downgrade = "WARNINGS.XAPI.OTHER_USER_ROLE_DOWNGRADE"
    xapi_invalid_license_type = "WARNINGS.XAPI.INVALID_LICENSE_TYPE"
    invalid_password = "WARNINGS.INVALID_PASSWORD"
    xapi_not_found = "WARNINGS.XAPI.NOT_FOUND"
    xapi_file_not_found = "WARNINGS.XAPI.FILE_NOT_FOUND"
    xapi_file_not_accessible = "WARNINGS.XAPI.FILE_NOT_ACCESSIBLE"
    xapi_required = "WARNINGS.XAPI.REQUIRED"
    xapi_can_not_be_empty_string = "WARNINGS.XAPI.CAN_NOT_BE_EMPTY_STRING"
    xapi_duplicate = "WARNINGS.XAPI.DUPLICATE"
    xapi_mac_used_by = "WARNINGS.XAPI.MAC_USED_BY"
    xapi_already_in_use = "WARNINGS.XAPI.ALREADY_IN_USE"
    mac_address_already_in_use = "WARNINGS.MAC_ADDRESS_ALREADY_IN_USE"
    xapi_playlist_in_use = "WARNINGS.XAPI.PLAYLIST_IN_USE"
    xapi_out_of_the_range = "WARNINGS.XAPI.OUT_OF_THE_RANGE"
    xapi_too_many_phones = "WARNINGS.XAPI.TOO_MANY_PHONES"
    xapi_too_many_trunks = "WARNINGS.XAPI.TOO_MANY_TRUNKS"
    xapi_too_many_sbc = "WARNINGS.XAPI.TOO_MANY_SBC"
    xapi_too_many_prompts = "WARNINGS.XAPI.TOO_MANY_PROMPTS"
    xapi_too_many_items_in_list = "WARNINGS.XAPI.TOO_MANY_ITEMS_IN_LIST"
    xapi_aws_storage_under_usage = "WARNINGS.XAPI.AWS_STORAGE_UNDER_USAGE"
    xapi_outbound_rules_limit_reached = "WARNINGS.XAPI.OUTBOUND_RULES_LIMIT_REACHED"
    xapi_forbidden_change = "WARNINGS.XAPI.FORBIDDEN_CHANGE"
    fax_server_cannot_be_deleted = "WARNINGS.FAX_SERVER_CANNOT_BE_DELETED"
    operator_cannot_be_deleted = "WARNINGS.OPERATOR_CANNOT_BE_DELETED"
    user_extension_cannot_be_deleted = "WARNINGS.USER_EXTENSION_CANNOT_BE_DELETED"
    xapi_number_ignored = "WARNINGS.XAPI.NUMBER_IGNORED"
    xapi_invalid_timezone = "WARNINGS.XAPI.INVALID_TIMEZONE"
    xapi_invalid_path = "WARNINGS.XAPI.INVALID_PATH"
    xapi_path_should_not_contain_spaces = "WARNINGS.XAPI.PATH_SHOULD_NOT_CONTAIN_SPACES"
    xapi_invalid_credentials = "WARNINGS.XAPI.INVALID_CREDENTIALS"
    xapi_cannot_connect_ftp = "WARNINGS.XAPI.CANNOT_CONNECT_FTP"
    xapi_cannot_connect_smb = "WARNINGS.XAPI.CANNOT_CONNECT_SMB"
    xapi_cannot_connect_sftp = "WARNINGS.XAPI.CANNOT_CONNECT_SFTP"
    xapi_cannot_connect_google_bucket = "WARNINGS.XAPI.CANNOT_CONNECT_GOOGLE_BUCKET"
    xapi_cannot_connect_amazon_s3_bucket = (
        "WARNINGS.XAPI.CANNOT_CONNECT_AMAZON_S3_BUCKET"
    )
    xapi_playlist_no_source = "WARNINGS.XAPI.PLAYLIST_NO_SOURCE"
    xapi_no_users_in_teams = "WARNINGS.XAPI.NO_USERS_IN_TEAMS"
    xapi_file_format_is_incorrect = "WARNINGS.XAPI.FILE_FORMAT_IS_INCORRECT"
    xapi_invalid_file_name = "WARNINGS.XAPI.INVALID_FILE_NAME"
    csv_invalid_file_format = "WARNINGS.CSV_INVALID_FILE_FORMAT"
    csv_line_corrupted = "WARNINGS.CSV_LINE_CORRUPTED"
    wrong_csv_file_required_columns_not_found = (
        "WARNINGS.WRONG_CSV_FILE_REQUIRED_COLUMNS_NOT_FOUND"
    )
    csv_import_limit_reached = "WARNINGS.CSV_IMPORT_LIMIT_REACHED"
    wrong_csv_file_required_header_not_found = (
        "WARNINGS.WRONG_CSV_FILE_REQUIRED_HEADER_NOT_FOUND"
    )
    xapi_file_is_too_large = "WARNINGS.XAPI.FILE_IS_TOO_LARGE"
    xapi_sbc_cert_fqdn_mismatch = "WARNINGS.XAPI.SBC_CERT_FQDN_MISMATCH"
    xapi_sbc_cert_expired = "WARNINGS.XAPI.SBC_CERT_EXPIRED"
    xapi_sbc_key_cert_mismatch = "WARNINGS.XAPI.SBC_KEY_CERT_MISMATCH"
    xapi_certificate_expired = "WARNINGS.XAPI.CERTIFICATE_EXPIRED"
    xapi_non_existent_ext_number = "WARNINGS.XAPI.NON_EXISTENT_EXT_NUMBER"
    xapi_mcm_mode_required = "WARNINGS.XAPI.MCM_MODE_REQUIRED"
    internationalprefix_is_missing = "WARNINGS.INTERNATIONALPREFIX_IS_MISSING"
    xapi_chat_log_is_disabled = "WARNINGS.XAPI.CHAT_LOG_IS_DISABLED"
    wakeup_ivr_exists = "WARNINGS.WAKEUP_IVR_EXISTS"
    ring_group_enable_paging = "WARNINGS.RING_GROUP_ENABLE_PAGING"
    xapi_create1_sip_truck_emergency = "WARNINGS.XAPI.CREATE_1_SIP_TRUCK_EMERGENCY"
    invalid_ip_mask = "WARNINGS.INVALID_IP_MASK"
    too_many_backups = "WARNINGS.TOO_MANY_BACKUPS"
    backup_location_config_error = "WARNINGS.BACKUP_LOCATION_CONFIG_ERROR"
    backup_not_found_or_invalid = "WARNINGS.BACKUP_NOT_FOUND_OR_INVALID"
    invalid_call_flow_file = "WARNINGS.INVALID_CALL_FLOW_FILE"
    already_expired = "WARNINGS.ALREADY_EXPIRED"
    extracting_outside_the_destination_directory = (
        "WARNINGS.EXTRACTING_OUTSIDE_THE_DESTINATION_DIRECTORY"
    )
    wireshark_not_found = "WARNINGS.WIRESHARK_NOT_FOUND"
    cannot_delete_trunks_binded_ermergency_number = (
        "WARNINGS.CANNOT_DELETE_TRUNKS_BINDED_ERMERGENCY_NUMBER"
    )
    blacklist_number_limit_exceeded = "WARNINGS.BLACKLIST_NUMBER_LIMIT_EXCEEDED"
    double_quotes_not_allowed = "WARNINGS.DOUBLE_QUOTES_NOT_ALLOWED"
    mcu_request_already_in_progress = "WARNINGS.MCU_REQUEST_ALREADY_IN_PROGRESS"
    mcu_limit_reached = "WARNINGS.MCU_LIMIT_REACHED"
    mcu_webmeeting_bridge_not_found = "WARNINGS.MCU_WEBMEETING_BRIDGE_NOT_FOUND"
    mcu_request_not_found = "WARNINGS.MCU_REQUEST_NOT_FOUND"
    mcu_request_timeout = "WARNINGS.MCU_REQUEST_TIMEOUT"
    converter_request_already_in_progress = (
        "WARNINGS.CONVERTER_REQUEST_ALREADY_IN_PROGRESS"
    )
    converter_limit_reached = "WARNINGS.CONVERTER_LIMIT_REACHED"
    converter_webmeeting_bridge_not_found = (
        "WARNINGS.CONVERTER_WEBMEETING_BRIDGE_NOT_FOUND"
    )
    converter_request_not_found = "WARNINGS.CONVERTER_REQUEST_NOT_FOUND"
    converter_request_timeout = "WARNINGS.CONVERTER_REQUEST_TIMEOUT"
    xapi_openai_key_is_missing = "WARNINGS.XAPI.OPENAI_KEY_IS_MISSING"
    length_not_more2048_chars = "WARNINGS.LENGTH_NOT_MORE_2048_CHARS"
    invalid_security_code = "WARNINGS.INVALID_SECURITY_CODE"
    supported_media_format_wav = "WARNINGS.SUPPORTED_MEDIA_FORMAT_WAV"
    no_secret_defined = "WARNINGS.NO_SECRET_DEFINED"
    unable_reach_updates_server = "WARNINGS.UNABLE_REACH_UPDATES_SERVER"
    error_downloading_from_updates_server = (
        "WARNINGS.ERROR_DOWNLOADING_FROM_UPDATES_SERVER"
    )
    capture_localhost_not_allowed = "WARNINGS.CAPTURE_LOCALHOST_NOT_ALLOWED"
    capture_ongoing = "WARNINGS.CAPTURE_ONGOING"


class BlocklistAddr(BaseModel):
    added_by: AddedBy | None = Field(None, alias="AddedBy")
    block_type: BlockType | None = Field(None, alias="BlockType")
    description: str | None = Field(None, alias="Description")
    expires_at: AwareDatetime | None = Field(None, alias="ExpiresAt")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    ip_addr_mask: str | None = Field(None, alias="IPAddrMask")


class Contact(BaseModel):
    business: str | None = Field(None, alias="Business")
    business2: str | None = Field(None, alias="Business2")
    business_fax: str | None = Field(None, alias="BusinessFax")
    company_name: str | None = Field(None, alias="CompanyName")
    contact_type: ContactSource | None = Field(None, alias="ContactType")
    department: str | None = Field(None, alias="Department")
    email: str | None = Field(None, alias="Email")
    first_name: str | None = Field(None, alias="FirstName")
    home: str | None = Field(None, alias="Home")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    last_name: str | None = Field(None, alias="LastName")
    mobile2: str | None = Field(None, alias="Mobile2")
    other: str | None = Field(None, alias="Other")
    pager: str | None = Field(None, alias="Pager")
    phone_number: str | None = Field(None, alias="PhoneNumber")
    tag: str | None = Field(None, alias="Tag")
    title: str | None = Field(None, alias="Title")


class ContactsDirSearchSettings(BaseModel):
    exchange_calendar_profile_switching: bool | None = Field(
        None, alias="ExchangeCalendarProfileSwitching"
    )
    exchange_email_addresses: list[str] | None = Field(
        None, alias="ExchangeEmailAddresses"
    )
    exchange_folders: list[str] | None = Field(None, alias="ExchangeFolders")
    exchange_password: ConcealedPassword | None = Field(None, alias="ExchangePassword")
    exchange_server_url: str | None = Field(None, alias="ExchangeServerUrl")
    exchange_user: str | None = Field(None, alias="ExchangeUser")


class CallControlResultResponse(BaseModel):
    final_status: str | None = Field(None, alias="FinalStatus")
    reason: str | None = Field(None, alias="Reason")
    reason_text: str | None = Field(None, alias="ReasonText")
    result: CallParticipant | None = Field(None, alias="Result")
    vtt_id: str | None = Field(None, alias="VttId")


class PhoneTemplate(BaseModel):
    add_allowed: bool | None = Field(None, alias="AddAllowed")
    allowed_net_configs: list[str] | None = Field(None, alias="AllowedNetConfigs")
    allow_ssl_provisioning: bool | None = Field(None, alias="AllowSSLProvisioning")
    backlight_timeouts: list[str] | None = Field(None, alias="BacklightTimeouts")
    codecs: list[str] | None = Field(None, alias="Codecs")
    content: str | None = Field(None, alias="Content")
    date_formats: list[str] | None = Field(None, alias="DateFormats")
    default_queue_ring_tone: str | None = Field(None, alias="DefaultQueueRingTone")
    hotdesking_allowed: bool | None = Field(None, alias="HotdeskingAllowed")
    id: str | None = Field(None, alias="Id")
    is_custom: bool | None = Field(None, alias="IsCustom")
    languages: list[str] | None = Field(None, alias="Languages")
    max_queue_custom_ringtones: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MaxQueueCustomRingtones"
    )
    models: list[PhoneModel] | None = Field(None, alias="Models")
    power_led_settings: list[str] | None = Field(None, alias="PowerLedSettings")
    queue_ring_tones: list[str] | None = Field(None, alias="QueueRingTones")
    ring_tones: list[str] | None = Field(None, alias="RingTones")
    rps_enabled: bool | None = Field(None, alias="RpsEnabled")
    screen_saver_timeouts: list[str] | None = Field(None, alias="ScreenSaverTimeouts")
    template_type: TemplateType | None = Field(None, alias="TemplateType")
    time_formats: list[str] | None = Field(None, alias="TimeFormats")
    time_zones: list[str] | None = Field(None, alias="TimeZones")
    url: str | None = Field(None, alias="URL")
    xfer_type_enabled: bool | None = Field(None, alias="XferTypeEnabled")


class Recording(BaseModel):
    archived_url: str | None = Field(None, alias="ArchivedUrl")
    call_type: RecordingCallType | None = Field(None, alias="CallType")
    can_be_transcribed: bool | None = Field(None, alias="CanBeTranscribed")
    end_time: AwareDatetime | None = Field(None, alias="EndTime")
    from_caller_number: str | None = Field(None, alias="FromCallerNumber")
    from_crm_contact: str | None = Field(None, alias="FromCrmContact")
    from_did_number: str | None = Field(None, alias="FromDidNumber")
    from_display_name: str | None = Field(None, alias="FromDisplayName")
    from_dn: str | None = Field(None, alias="FromDn")
    from_dn_type: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="FromDnType"
    )
    from_id_participant: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="FromIdParticipant"
    )
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    is_archived: bool | None = Field(None, alias="IsArchived")
    is_transcribed: bool | None = Field(None, alias="IsTranscribed")
    recording_url: str | None = Field(None, alias="RecordingUrl")
    ref_participant_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="RefParticipantId"
    )
    sentiment_score: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SentimentScore"
    )
    start_time: AwareDatetime | None = Field(None, alias="StartTime")
    summary: str | None = Field(None, alias="Summary")
    to_caller_number: str | None = Field(None, alias="ToCallerNumber")
    to_crm_contact: str | None = Field(None, alias="ToCrmContact")
    to_did_number: str | None = Field(None, alias="ToDidNumber")
    to_display_name: str | None = Field(None, alias="ToDisplayName")
    to_dn: str | None = Field(None, alias="ToDn")
    to_dn_type: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ToDnType"
    )
    to_id_participant: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ToIdParticipant"
    )
    transcription: str | None = Field(None, alias="Transcription")
    transcription_result: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="TranscriptionResult"
    )


class DirectoryParameters(BaseModel):
    filesystem: FileSystemType | None = Field(None, alias="Filesystem")
    json_: str | None = Field(None, alias="Json")
    path: str | None = Field(None, alias="Path")


class Restrictions(BaseModel):
    dects: EntityRestrictions | None = Field(None, alias="Dects")
    live_chats: EntityRestrictions | None = Field(None, alias="LiveChats")
    max_prompts: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MaxPrompts"
    )
    sbcs: EntityRestrictions | None = Field(None, alias="Sbcs")
    system: EntityRestrictions | None = Field(None, alias="System")
    trunks: EntityRestrictions | None = Field(None, alias="Trunks")
    users: EntityRestrictions | None = Field(None, alias="Users")


class OutboundRule(BaseModel):
    dn_ranges: list[DNRange] | None = Field(None, alias="DNRanges")
    emergency_rule: bool | None = Field(None, alias="EmergencyRule")
    group_ids: list[conint(ge=-2147483648, le=2147483647)] | None = Field(
        None, alias="GroupIds"
    )
    group_names: list[str] | None = Field(None, alias="GroupNames")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")
    number_length_ranges: str | None = Field(None, alias="NumberLengthRanges")
    prefix: str | None = Field(None, alias="Prefix")
    priority: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="Priority"
    )
    routes: list[OutboundRoute] | None = Field(None, alias="Routes")


class Peer(BaseModel):
    hidden: bool | None = Field(None, alias="Hidden")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    member_of: list[PeerGroup] | None = Field(None, alias="MemberOf")
    name: str | None = Field(None, alias="Name")
    number: str | None = Field(None, alias="Number")
    tags: list[UserTag] | None = Field(None, alias="Tags")
    type: PeerType | None = Field(None, alias="Type")


class TrunkReport(BaseModel):
    code: AnalysisCode | None = Field(None, alias="Code")
    level: InfoLevel | None = Field(None, alias="Level")
    params: list[str] | None = Field(None, alias="Params")
    template: str | None = Field(None, alias="Template")


class TrunkTestResult(BaseModel):
    log: list[LogEntry] | None = Field(None, alias="Log")
    reports: list[TrunkReport] | None = Field(None, alias="Reports")


class SetRouteRequest(BaseModel):
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    routes: list[SetRoute] | None = Field(None, alias="Routes")


class GetProviderPhones(BaseModel):
    account_sid: str | None = Field(None, alias="AccountSid")
    api_key: str | None = Field(None, alias="ApiKey")
    next_page_token: str | None = Field(None, alias="NextPageToken")
    phones_page_size: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="PhonesPageSize"
    )
    type: TrunkType | None = Field(None, alias="Type")


class ProviderPhones(BaseModel):
    next_page_token: str | None = Field(None, alias="NextPageToken")
    phones: list[ProviderPhone] | None = Field(None, alias="Phones")


class PromptSet(BaseModel):
    culture_code: str | None = Field(None, alias="CultureCode")
    description: str | None = Field(None, alias="Description")
    folder: str | None = Field(None, alias="Folder")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    language_code: str | None = Field(None, alias="LanguageCode")
    prompts: list[Prompt] | None = Field(None, alias="Prompts")
    prompt_set_name: str | None = Field(None, alias="PromptSetName")
    prompt_set_type: PromptSetType | None = Field(None, alias="PromptSetType")
    use_alternate_number_pronunciation: bool | None = Field(
        None, alias="UseAlternateNumberPronunciation"
    )
    version: str | None = Field(None, alias="Version")


class CustomPrompt(BaseModel):
    can_be_deleted: bool | None = Field(None, alias="CanBeDeleted")
    display_name: str | None = Field(None, alias="DisplayName")
    file_link: str | None = Field(None, alias="FileLink")
    filename: str | None = Field(None, alias="Filename")
    prompt_type: PromptType | None = Field(None, alias="PromptType")


class UpdatesStats(BaseModel):
    per_page: list[CategoryUpdate] | None = Field(None, alias="PerPage")
    tcx_update: list[CategoryUpdate] | None = Field(None, alias="TcxUpdate")


class CreateBackup(BaseModel):
    contents: BackupContents | None = Field(None, alias="Contents")
    name: str | None = Field(None, alias="Name")


class BackupFailoverSettings(BaseModel):
    condition: FailoverCondition | None = Field(None, alias="Condition")
    enabled: bool | None = Field(None, alias="Enabled")
    interval: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="Interval"
    )
    mode: FailoverMode | None = Field(None, alias="Mode")
    post_start_script: str | None = Field(None, alias="PostStartScript")
    pre_start_script: str | None = Field(None, alias="PreStartScript")
    remote_server: str | None = Field(None, alias="RemoteServer")
    test_sip_server: bool | None = Field(None, alias="TestSIPServer")
    test_tunnel: bool | None = Field(None, alias="TestTunnel")
    test_web_server: bool | None = Field(None, alias="TestWebServer")


class Sbc(BaseModel):
    audio_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="AudioPort"
    )
    connection: XSBCConnection | None = Field(None, alias="Connection")
    display_name: str | None = Field(None, alias="DisplayName")
    group: str | None = Field(None, alias="Group")
    has_connection: bool | None = Field(None, alias="HasConnection")
    local_i_pv4: str | None = Field(None, alias="LocalIPv4")
    log_level: SbcLogLevel | None = Field(None, alias="LogLevel")
    log_size: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="LogSize"
    )
    name: constr(max_length=12) | None = Field(None, alias="Name")
    passive_server: str | None = Field(None, alias="PassiveServer")
    passive_server_is_enabled: bool | None = Field(None, alias="PassiveServerIsEnabled")
    password: str | None = Field(None, alias="Password")
    phone_mac: str | None = Field(None, alias="PhoneMAC")
    phone_user_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="PhoneUserId"
    )
    provision_link: str | None = Field(None, alias="ProvisionLink")
    public_ip: str | None = Field(None, alias="PublicIP")
    security: Security | None = Field(None, alias="Security")
    version: str | None = Field(None, alias="Version")


class CDRSettings(BaseModel):
    enabled: bool | None = Field(None, alias="Enabled")
    enabled_fields: list[CDRSettingsField] | None = Field(None, alias="EnabledFields")
    log_size: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="LogSize"
    )
    log_type: TypeOfCDRLog | None = Field(None, alias="LogType")
    possible_fields: list[str] | None = Field(None, alias="PossibleFields")
    remove_comma_delimiters: bool | None = Field(None, alias="RemoveCommaDelimiters")
    socket_ip_address: str | None = Field(None, alias="SocketIpAddress")
    socket_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SocketPort"
    )


class EventLog(BaseModel):
    event_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="EventId"
    )
    group: str | None = Field(None, alias="Group")
    group_name: str | None = Field(None, alias="GroupName")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    message: str | None = Field(None, alias="Message")
    params: list[str] | None = Field(None, alias="Params")
    source: str | None = Field(None, alias="Source")
    time_generated: AwareDatetime | None = Field(None, alias="TimeGenerated")
    type: EventLogType | None = Field(None, alias="Type")


class ServiceInfo(BaseModel):
    display_name: str | None = Field(None, alias="DisplayName")
    handle_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="HandleCount"
    )
    memory_used: int | None = Field(None, alias="MemoryUsed")
    name: str | None = Field(None, alias="Name")
    restart_enabled: bool | None = Field(None, alias="RestartEnabled")
    sample_time: AwareDatetime | None = Field(None, alias="SampleTime")
    start_stop_enabled: bool | None = Field(None, alias="StartStopEnabled")
    status: ServiceStatus | None = Field(None, alias="Status")
    thread_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ThreadCount"
    )
    total_processor_time: int | None = Field(None, alias="TotalProcessorTime")


class GarbageCollect(BaseModel):
    blocking: bool | None = Field(None, alias="Blocking")
    compacting: bool | None = Field(None, alias="Compacting")
    generation: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="Generation"
    )
    mode: GCCollectionMode | None = Field(None, alias="Mode")


class UsersRequestOptions(BaseModel):
    count: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Count")
    next_page_token: constr(max_length=10240) | None = Field(
        None, alias="NextPageToken"
    )
    search: str | None = Field(None, alias="Search")
    type_of_user: TypeOfUser | None = Field(None, alias="TypeOfUser")


class Microsoft365TeamsIntegration(BaseModel):
    area_code: str | None = Field(None, alias="AreaCode")
    dial_plan_code: str | None = Field(None, alias="DialPlanCode")
    enabled: bool | None = Field(None, alias="Enabled")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    is_dynamic_ip: bool | None = Field(None, alias="IsDynamicIP")
    is_native_fqdn: bool | None = Field(None, alias="IsNativeFQDN")
    sbc_certificate: ConcealedDataFile | None = Field(None, alias="SbcCertificate")
    sbc_certificate_expiration_date: str | None = Field(
        None, alias="SbcCertificateExpirationDate"
    )
    sbc_fqdn: str | None = Field(None, alias="SbcFQDN")
    sbc_private_key: ConcealedDataFile | None = Field(None, alias="SbcPrivateKey")
    secure_sip_enabled: bool | None = Field(None, alias="SecureSipEnabled")
    sip_domain: str | None = Field(None, alias="SipDomain")
    tls_port_for_native_fqdn: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="TlsPortForNativeFQDN"
    )
    tls_port_for_non_native_fqdn: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="TlsPortForNonNativeFQDN"
    )


class VoicemailSettings(BaseModel):
    analyze_model_open_ai: str | None = Field(None, alias="AnalyzeModelOpenAI")
    auto_delete_days: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="AutoDeleteDays"
    )
    auto_delete_enabled: bool | None = Field(None, alias="AutoDeleteEnabled")
    call_recording_stereo: bool | None = Field(None, alias="CallRecordingStereo")
    extension: str | None = Field(None, alias="Extension")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    min_duration: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MinDuration"
    )
    operator_enabled: bool | None = Field(None, alias="OperatorEnabled")
    quota: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Quota")
    remote_storage_enabled: bool | None = Field(None, alias="RemoteStorageEnabled")
    send_email_quota_enabled: bool | None = Field(None, alias="SendEmailQuotaEnabled")
    send_email_quota_percentage: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SendEmailQuotaPercentage"
    )
    transcribe_engine: TranscribeEngine | None = Field(None, alias="TranscribeEngine")
    transcribe_language: str | None = Field(None, alias="TranscribeLanguage")
    transcribe_model_open_ai: str | None = Field(None, alias="TranscribeModelOpenAI")
    transcribe_region: str | None = Field(None, alias="TranscribeRegion")
    transcribe_secret_key: ConcealedPassword | None = Field(
        None, alias="TranscribeSecretKey"
    )
    used_space: int | None = Field(None, alias="UsedSpace")


class OnBoardConverterRow(BaseModel):
    active: bool | None = Field(None, alias="Active")
    cloud: bool | None = Field(None, alias="Cloud")
    enabled: bool | None = Field(None, alias="Enabled")
    guid: str | None = Field(None, alias="Guid")
    host: str | None = Field(None, alias="Host")
    install_script: str | None = Field(None, alias="InstallScript")
    ip: str | None = Field(None, alias="Ip")
    port: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Port")
    secret: str | None = Field(None, alias="Secret")
    server_os: OnBoardMcuServerOS | None = Field(None, alias="ServerOS")
    server_status: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ServerStatus"
    )
    ts_activated: AwareDatetime | None = Field(None, alias="TsActivated")
    ts_created: AwareDatetime | None = Field(None, alias="TsCreated")
    version: str | None = Field(None, alias="Version")


class ConferenceSettings(BaseModel):
    auto_call_participants: bool | None = Field(None, alias="AutoCallParticipants")
    dtmf_mode: DtmfMode | None = Field(None, alias="DtmfMode")
    enable_local_mcu: bool | None = Field(None, alias="EnableLocalMCU")
    enable_pin: bool | None = Field(None, alias="EnablePin")
    extension: str | None = Field(None, alias="Extension")
    external_numbers: str | None = Field(None, alias="ExternalNumbers")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    logo_path: str | None = Field(None, alias="LogoPath")
    music_on_hold: str | None = Field(None, alias="MusicOnHold")
    pin_number: str | None = Field(None, alias="PinNumber")
    zone: str | None = Field(None, alias="Zone")


class MCURequestStatus(BaseModel):
    error_message: str | None = Field(None, alias="ErrorMessage")
    mcu_id: str | None = Field(None, alias="McuId")
    operation: McuOperation | None = Field(None, alias="Operation")
    request_expiration: AwareDatetime | None = Field(None, alias="RequestExpiration")
    state: McuReqState | None = Field(None, alias="State")


class OnBoardMcuRow(BaseModel):
    active: bool | None = Field(None, alias="Active")
    band_cap: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="BandCap"
    )
    city_name: str | None = Field(None, alias="CityName")
    cloud: bool | None = Field(None, alias="Cloud")
    country: str | None = Field(None, alias="Country")
    country_name: str | None = Field(None, alias="CountryName")
    enabled: bool | None = Field(None, alias="Enabled")
    guid: str | None = Field(None, alias="Guid")
    host: str | None = Field(None, alias="Host")
    install_script: str | None = Field(None, alias="InstallScript")
    ip: str | None = Field(None, alias="Ip")
    latitude: float | str | ReferenceNumeric | None = Field(None, alias="Latitude")
    longitude: float | str | ReferenceNumeric | None = Field(None, alias="Longitude")
    manual_geo: bool | None = Field(None, alias="ManualGeo")
    parts_cap: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="PartsCap"
    )
    port: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Port")
    secret: str | None = Field(None, alias="Secret")
    server_os: OnBoardMcuServerOS | None = Field(None, alias="ServerOS")
    server_status: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ServerStatus"
    )
    ts_activated: AwareDatetime | None = Field(None, alias="TsActivated")
    ts_created: AwareDatetime | None = Field(None, alias="TsCreated")
    version: str | None = Field(None, alias="Version")
    zone: str | None = Field(None, alias="Zone")


class OnBoardMcuData(BaseModel):
    attempts: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="Attempts"
    )
    attendee_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="AttendeeCount"
    )
    available: bool | None = Field(None, alias="Available")
    clock_skew: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ClockSkew"
    )
    connected: bool | None = Field(None, alias="Connected")
    cpu: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Cpu")
    delay: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Delay")
    fqdn: str | None = Field(None, alias="Fqdn")
    free_disk_space: int | None = Field(None, alias="FreeDiskSpace")
    mcu: OnBoardMcuDataDetail | None = Field(None, alias="Mcu")
    meeting_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MeetingCount"
    )
    memory: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Memory")
    net_in: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="NetIn")
    net_out: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="NetOut")
    online: bool | None = Field(None, alias="Online")
    restart_time: str | None = Field(None, alias="RestartTime")
    start_time: str | None = Field(None, alias="StartTime")
    ts: AwareDatetime | None = Field(None, alias="Ts")
    update_interval: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="UpdateInterval"
    )


class MailSettings(BaseModel):
    can_edit_mail_server_type: bool | None = Field(None, alias="CanEditMailServerType")
    mail_address: str | None = Field(None, alias="MailAddress")
    mail_password: ConcealedPassword | None = Field(None, alias="MailPassword")
    mail_server: str | None = Field(None, alias="MailServer")
    mail_server_type: MailServerType | None = Field(None, alias="MailServerType")
    mail_ssl_enabled: bool | None = Field(None, alias="MailSslEnabled")
    mail_user: str | None = Field(None, alias="MailUser")


class AISettings(BaseModel):
    api_key: ConcealedPassword | None = Field(None, alias="APIKey")
    company_description: str | None = Field(None, alias="CompanyDescription")
    company_name: str | None = Field(None, alias="CompanyName")
    completion_model: str | None = Field(None, alias="CompletionModel")
    realtime_model: str | None = Field(None, alias="RealtimeModel")


class VectorStore(BaseModel):
    bytes: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Bytes")
    created_at: AwareDatetime | None = Field(None, alias="CreatedAt")
    description: str | None = Field(None, alias="Description")
    expiration: VectorStoreExpiration | None = Field(None, alias="Expiration")
    files_completed: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="FilesCompleted"
    )
    files_total: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="FilesTotal"
    )
    id: str | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")
    status: str | None = Field(None, alias="Status")


class VectorStores(BaseModel):
    first_id: str | None = Field(None, alias="FirstId")
    has_more: bool | None = Field(None, alias="HasMore")
    items: list[VectorStore] | None = Field(None, alias="Items")
    last_id: str | None = Field(None, alias="LastId")


class VectorStoreFiles(BaseModel):
    first_id: str | None = Field(None, alias="FirstId")
    has_more: bool | None = Field(None, alias="HasMore")
    items: list[VectorStoreFile] | None = Field(None, alias="Items")
    last_id: str | None = Field(None, alias="LastId")


class SystemStatus(BaseModel):
    activated: bool | None = Field(None, alias="Activated")
    auto_update_enabled: bool | None = Field(None, alias="AutoUpdateEnabled")
    available_local_ips: str | None = Field(None, alias="AvailableLocalIps")
    backup_scheduled: bool | None = Field(None, alias="BackupScheduled")
    calls_active: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="CallsActive"
    )
    chat_used_space: int | None = Field(None, alias="ChatUsedSpace")
    current_local_ip: str | None = Field(None, alias="CurrentLocalIp")
    db_maintenance_in_progress: bool | None = Field(
        None, alias="DBMaintenanceInProgress"
    )
    disk_usage: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="DiskUsage"
    )
    expiration_date: AwareDatetime | None = Field(None, alias="ExpirationDate")
    extensions_registered: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ExtensionsRegistered"
    )
    extensions_total: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ExtensionsTotal"
    )
    fqdn: str | None = Field(None, alias="FQDN")
    free_disk_space: int | None = Field(None, alias="FreeDiskSpace")
    has_not_running_services: bool | None = Field(None, alias="HasNotRunningServices")
    has_unregistered_system_extensions: bool | None = Field(
        None, alias="HasUnregisteredSystemExtensions"
    )
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    ip: str | None = Field(None, alias="Ip")
    ip_v4: str | None = Field(None, alias="IpV4")
    ip_v6: str | None = Field(None, alias="IpV6")
    is_audit_log_enabled: bool | None = Field(None, alias="IsAuditLogEnabled")
    is_chat_log_enabled: bool | None = Field(None, alias="IsChatLogEnabled")
    is_recording_archive_enabled: bool | None = Field(
        None, alias="IsRecordingArchiveEnabled"
    )
    last_backup_date_time: AwareDatetime | None = Field(
        None, alias="LastBackupDateTime"
    )
    last_check_for_updates: AwareDatetime | None = Field(
        None, alias="LastCheckForUpdates"
    )
    last_successful_update: AwareDatetime | None = Field(
        None, alias="LastSuccessfulUpdate"
    )
    license_active: bool | None = Field(None, alias="LicenseActive")
    license_key: str | None = Field(None, alias="LicenseKey")
    local_ip_valid: bool | None = Field(None, alias="LocalIpValid")
    log_used_space: int | None = Field(None, alias="LogUsedSpace")
    maintenance_expires_at: AwareDatetime | None = Field(
        None, alias="MaintenanceExpiresAt"
    )
    max_sim_calls: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MaxSimCalls"
    )
    max_user_extensions: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MaxUserExtensions"
    )
    os: XOperatingSystemType | None = Field(None, alias="OS")
    outbound_rules: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="OutboundRules"
    )
    product_code: str | None = Field(None, alias="ProductCode")
    recording_quota: int | None = Field(None, alias="RecordingQuota")
    recording_quota_reached: bool | None = Field(None, alias="RecordingQuotaReached")
    recording_stopped: bool | None = Field(None, alias="RecordingStopped")
    recording_used_space: int | None = Field(None, alias="RecordingUsedSpace")
    remote_configuration_required: bool | None = Field(
        None, alias="RemoteConfigurationRequired"
    )
    remote_storage_enabled: bool | None = Field(None, alias="RemoteStorageEnabled")
    remote_storage_status: RemoteStorageStatus | None = Field(
        None, alias="RemoteStorageStatus"
    )
    reseller_name: str | None = Field(None, alias="ResellerName")
    support: bool | None = Field(None, alias="Support")
    total_disk_space: int | None = Field(None, alias="TotalDiskSpace")
    trunks_registered: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="TrunksRegistered"
    )
    trunks_total: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="TrunksTotal"
    )
    user_extensions: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="UserExtensions"
    )
    version: str | None = Field(None, alias="Version")
    voicemail_quota_reached: bool | None = Field(None, alias="VoicemailQuotaReached")
    voicemail_stopped: bool | None = Field(None, alias="VoicemailStopped")


class ProcessTelemetry(BaseModel):
    handle_count: int | None = Field(None, alias="HandleCount")
    private_memory: int | None = Field(None, alias="PrivateMemory")
    process_count: int | None = Field(None, alias="ProcessCount")
    service: PhoneSystemService | None = Field(None, alias="Service")
    thread_count: int | None = Field(None, alias="ThreadCount")
    time: AwareDatetime | None = Field(None, alias="Time")


class CreateTicket(BaseModel):
    can_create_ticket: bool | None = Field(None, alias="CanCreateTicket")
    create_ticket_status: CreateTicketStatus | None = Field(
        None, alias="CreateTicketStatus"
    )
    fix_url: str | None = Field(None, alias="FixUrl")


class VersionUpdateType(BaseModel):
    type: UpdateType | None = Field(None, alias="Type")


class FaxServerSettings(BaseModel):
    auth_id: str | None = Field(None, alias="AuthId")
    auth_password: ConcealedPassword | None = Field(None, alias="AuthPassword")
    auto_cleanup: bool | None = Field(None, alias="AutoCleanup")
    email: str | None = Field(None, alias="Email")
    fax_server_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="FaxServerId"
    )
    g711_to_t38_fallback: bool | None = Field(None, alias="G711ToT38Fallback")
    max_age: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="MaxAge")
    number: str | None = Field(None, alias="Number")
    remote_storage_enabled: bool | None = Field(None, alias="RemoteStorageEnabled")


class CrmIntegration(BaseModel):
    country: str | None = Field(None, alias="Country")
    enabled_for_did_calls: bool | None = Field(None, alias="EnabledForDidCalls")
    enabled_for_external_calls: bool | None = Field(
        None, alias="EnabledForExternalCalls"
    )
    id: str | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")
    phonebook_priority_options: PhonebookPriorityOptions | None = Field(
        None, alias="PhonebookPriorityOptions"
    )
    phonebook_synchronization: bool | None = Field(
        None, alias="PhonebookSynchronization"
    )
    possible_values: list[CrmSelectableValue] | None = Field(
        None, alias="PossibleValues"
    )
    variable_choices: list[CrmChoice] | None = Field(None, alias="VariableChoices")


class ActivityLogsFilter(BaseModel):
    extensions: list[ExtensionFilter] | None = Field(None, alias="Extensions")


class RefreshToken(BaseModel):
    created: AwareDatetime | None = Field(None, alias="Created")
    created_by_ip: str | None = Field(None, alias="CreatedByIp")
    created_by_user_agent: str | None = Field(None, alias="CreatedByUserAgent")
    display_name: str | None = Field(None, alias="DisplayName")
    expires: AwareDatetime | None = Field(None, alias="Expires")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    login_type: LoginType | None = Field(None, alias="LoginType")
    reason_revoked: RevokeReason | None = Field(None, alias="ReasonRevoked")
    revoked: AwareDatetime | None = Field(None, alias="Revoked")
    revoked_by_ip: str | None = Field(None, alias="RevokedByIp")
    sliding_expiration: bool | None = Field(None, alias="SlidingExpiration")
    token: str | None = Field(None, alias="Token")
    used: AwareDatetime | None = Field(None, alias="Used")
    used_by_ip: str | None = Field(None, alias="UsedByIp")
    used_by_user_agent: str | None = Field(None, alias="UsedByUserAgent")
    username: str | None = Field(None, alias="Username")


class AmazonIntegrationSettings(BaseModel):
    s3_config: S3Config | None = Field(None, alias="S3Config")
    service_account_credentials: AmazonCredentials | None = Field(
        None, alias="ServiceAccountCredentials"
    )


class ChatHistoryView(BaseModel):
    chat_name: str | None = Field(None, alias="ChatName")
    conversation_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ConversationId"
    )
    from_name: str | None = Field(None, alias="FromName")
    from_no: str | None = Field(None, alias="FromNo")
    is_external: bool | None = Field(None, alias="IsExternal")
    message: str | None = Field(None, alias="Message")
    participant_email: str | None = Field(None, alias="ParticipantEmail")
    participant_ip: str | None = Field(None, alias="ParticipantIp")
    participant_phone: str | None = Field(None, alias="ParticipantPhone")
    participants_groups_array: list[str] | None = Field(
        None, alias="ParticipantsGroupsArray"
    )
    provider_name: str | None = Field(None, alias="ProviderName")
    provider_type: ChatType | None = Field(None, alias="ProviderType")
    queue_number: str | None = Field(None, alias="QueueNumber")
    source: str | None = Field(None, alias="Source")
    time_sent: AwareDatetime | None = Field(None, alias="TimeSent")


class QualityReport(BaseModel):
    mos: float | str | ReferenceNumeric | None = Field(None, alias="MOS")
    overall_score: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="OverallScore"
    )
    party1: QualityParty | None = Field(None, alias="Party1")
    party2: QualityParty | None = Field(None, alias="Party2")
    reason: str | None = Field(None, alias="Reason")
    summary: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Summary")
    transcoding: bool | None = Field(None, alias="Transcoding")


class ScheduledReport(BaseModel):
    dn: str | None = Field(None, alias="DN")
    email_addresses: str | None = Field(None, alias="EmailAddresses")
    filter_description: constr(max_length=2048) | None = Field(
        None, alias="FilterDescription"
    )
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")
    report_link: str | None = Field(None, alias="ReportLink")
    report_params: str | None = Field(None, alias="ReportParams")
    report_type: ScheduledReportType | None = Field(None, alias="ReportType")
    schedule_type: ReportScheduleType | None = Field(None, alias="ScheduleType")


class UserGroup(BaseModel):
    can_delete: bool | None = Field(None, alias="CanDelete")
    group_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="GroupId"
    )
    group_rights: Rights | None = Field(None, alias="GroupRights")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    member_name: str | None = Field(None, alias="MemberName")
    name: str | None = Field(None, alias="Name")
    number: str | None = Field(None, alias="Number")
    rights: Rights | None = Field(None, alias="Rights")
    tags: list[UserTag] | None = Field(None, alias="Tags")
    transcription_mode: TranscriptionType | None = Field(
        None, alias="TranscriptionMode"
    )
    type: PeerType | None = Field(None, alias="Type")


class VoipProvider(BaseModel):
    countries: list[str] | None = Field(None, alias="Countries")
    id: str | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")
    type: TemplateType | None = Field(None, alias="Type")


class Defs(BaseModel):
    codecs: list[Codec] | None = Field(None, alias="Codecs")
    gateway_parameters: list[GatewayParameter] | None = Field(
        None, alias="GatewayParameters"
    )
    gateway_parameter_values: list[GatewayParameterValue] | None = Field(
        None, alias="GatewayParameterValues"
    )
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    time_zones: list[TimeZone] | None = Field(None, alias="TimeZones")


class Gateway(BaseModel):
    codecs: list[str] | None = Field(None, alias="Codecs")
    deliver_audio: bool | None = Field(None, alias="DeliverAudio")
    dest_number_in_remote_party_id_called: bool | None = Field(
        None, alias="DestNumberInRemotePartyIDCalled"
    )
    dest_number_in_request_line_uri: bool | None = Field(
        None, alias="DestNumberInRequestLineURI"
    )
    dest_number_in_to: bool | None = Field(None, alias="DestNumberInTo")
    host: str | None = Field(None, alias="Host")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    inbound_params: list[GatewayParameterBinding] | None = Field(
        None, alias="InboundParams"
    )
    internal: bool | None = Field(None, alias="Internal")
    ip_in_registration_contact: IPInRegistrationContactType | None = Field(
        None, alias="IPInRegistrationContact"
    )
    is_custom: bool | None = Field(None, alias="IsCustom")
    lines: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Lines")
    matching_strategy: MatchingStrategyType | None = Field(
        None, alias="MatchingStrategy"
    )
    name: str | None = Field(None, alias="Name")
    outbound_caller_id: str | None = Field(None, alias="OutboundCallerID")
    outbound_params: list[GatewayParameterBinding] | None = Field(
        None, alias="OutboundParams"
    )
    port: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Port")
    proxy_host: str | None = Field(None, alias="ProxyHost")
    proxy_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ProxyPort"
    )
    require_registration_for: RequireRegistrationForType | None = Field(
        None, alias="RequireRegistrationFor"
    )
    source_identification: list[GatewayParameterBinding] | None = Field(
        None, alias="SourceIdentification"
    )
    specified_ip_for_registration_contact: str | None = Field(
        None, alias="SpecifiedIPForRegistrationContact"
    )
    srtp_mode: SRTPModeType | None = Field(None, alias="SRTPMode")
    support_reinvite: bool | None = Field(None, alias="SupportReinvite")
    support_replaces: bool | None = Field(None, alias="SupportReplaces")
    template_filename: str | None = Field(None, alias="TemplateFilename")
    time_between_reg: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="TimeBetweenReg"
    )
    type: GatewayType | None = Field(None, alias="Type")
    use_ip_in_contact: bool | None = Field(None, alias="UseIPInContact")
    variable_choices: list[Choice] | None = Field(None, alias="VariableChoices")


class SipDevice(BaseModel):
    dn: Peer | None = Field(None, alias="DN")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    phone_web_password: str | None = Field(None, alias="PhoneWebPassword")
    prov_link: str | None = Field(None, alias="ProvLink")
    registrar: PhoneRegistrar | None = Field(None, alias="Registrar")


class Greeting(BaseModel):
    display_name: str | None = Field(None, alias="DisplayName")
    filename: str | None = Field(None, alias="Filename")
    type: ProfileType | None = Field(None, alias="Type")


class SystemParameters(BaseModel):
    custom1_name: str | None = Field(None, alias="Custom1Name")
    custom2_name: str | None = Field(None, alias="Custom2Name")
    em_rule_creation_allowed: bool | None = Field(None, alias="EmRuleCreationAllowed")
    enl: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="ENL")
    enl_range: ENL | None = Field(None, alias="ENLRange")
    first_external_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="FirstExternalPort"
    )
    fqdn: str | None = Field(None, alias="FQDN")
    global_acprmset: str | None = Field(None, alias="GlobalACPRMSET")
    global_language: str | None = Field(None, alias="GlobalLanguage")
    http_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="HttpPort"
    )
    https_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="HttpsPort"
    )
    ip_v6: str | None = Field(None, alias="IpV6")
    is3_cxfqdn: bool | None = Field(None, alias="Is3CXFQDN")
    is_chat_log_enabled: bool | None = Field(None, alias="IsChatLogEnabled")
    is_hosted: bool | None = Field(None, alias="IsHosted")
    is_hosted3_cx: bool | None = Field(None, alias="IsHosted3CX")
    is_multicompany_mode: bool | None = Field(None, alias="IsMulticompanyMode")
    is_remote_backup: bool | None = Field(None, alias="IsRemoteBackup")
    is_static_ip: bool | None = Field(None, alias="IsStaticIp")
    is_transcription_enabled: bool | None = Field(None, alias="IsTranscriptionEnabled")
    license: License | None = Field(None, alias="License")
    max_did_per_trunk: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MaxDIDPerTrunk"
    )
    pbx_external_host: str | None = Field(None, alias="PbxExternalHost")
    processor_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ProcessorCount"
    )
    remote_storage_status: RemoteStorageStatus | None = Field(
        None, alias="RemoteStorageStatus"
    )
    rps_enabled: bool | None = Field(None, alias="RpsEnabled")
    sip_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SipPort"
    )
    sips_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SipsPort"
    )
    static_ip: str | None = Field(None, alias="StaticIp")
    stun_ip: str | None = Field(None, alias="StunIp")
    tunnnel_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="TunnnelPort"
    )
    version: str | None = Field(None, alias="Version")
    webrtc_last_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="WebrtcLastPort"
    )


class SendEmail(BaseModel):
    date_time: AwareDatetime | None = Field(None, alias="DateTime")
    destination: str | None = Field(None, alias="Destination")
    template: str | None = Field(None, alias="Template")
    variables: list[EmailVariable] | None = Field(None, alias="Variables")


class GeneralSettingsForApps(BaseModel):
    allow_block_calls: bool | None = Field(None, alias="AllowBlockCalls")
    allow_change_password: bool | None = Field(None, alias="AllowChangePassword")
    auto_scheduler_settings: AutoSchedulerSettings | None = Field(
        None, alias="AutoSchedulerSettings"
    )
    avatar_style: AvatarStyle | None = Field(None, alias="AvatarStyle")
    brand_logo_image: constr(max_length=136533) | None = Field(
        None, alias="BrandLogoImage"
    )
    brand_main_image: constr(max_length=2796202) | None = Field(
        None, alias="BrandMainImage"
    )
    brand_url: str | None = Field(None, alias="BrandUrl")
    enable_chat: bool | None = Field(None, alias="EnableChat")
    hide_abandoned_queue_calls: bool | None = Field(
        None, alias="HideAbandonedQueueCalls"
    )
    hide_crm_contacts: bool | None = Field(None, alias="HideCRMContacts")
    hide_interaction_history: bool | None = Field(None, alias="HideInteractionHistory")
    hide_system_extensions: bool | None = Field(None, alias="HideSystemExtensions")
    name_of_custom_available_status: str | None = Field(
        None, alias="NameOfCustomAvailableStatus"
    )
    name_of_custom_out_of_office_status: str | None = Field(
        None, alias="NameOfCustomOutOfOfficeStatus"
    )


class CallParkingSettings(BaseModel):
    auto_pickup_enabled: bool | None = Field(None, alias="AutoPickupEnabled")
    auto_pickup_forward_dn: str | None = Field(None, alias="AutoPickupForwardDN")
    auto_pickup_forward_external_number: str | None = Field(
        None, alias="AutoPickupForwardExternalNumber"
    )
    auto_pickup_forward_type: TypeOfAutoPickupForward | None = Field(
        None, alias="AutoPickupForwardType"
    )
    auto_pickup_timeout: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="AutoPickupTimeout"
    )
    maximum_parked_calls: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MaximumParkedCalls"
    )
    music_on_hold: str | None = Field(None, alias="MusicOnHold")


class SecureSipSettings(BaseModel):
    certificate: ConcealedDataFile | None = Field(None, alias="Certificate")
    private_key: ConcealedDataFile | None = Field(None, alias="PrivateKey")


class PhoneBookSettings(BaseModel):
    phone_book_add_queue_name: TypeOfPhoneBookAddQueueName | None = Field(
        None, alias="PhoneBookAddQueueName"
    )
    phone_book_display: TypeOfPhoneBookDisplay | None = Field(
        None, alias="PhoneBookDisplay"
    )
    resolving_length: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ResolvingLength"
    )
    resolving_type: TypeOfPhoneBookResolving | None = Field(None, alias="ResolvingType")


class EmergencyNotificationsSettings(BaseModel):
    chat_recipients: ChatRecipientsType | None = Field(None, alias="ChatRecipients")
    emergency_dn_prompt: Peer | None = Field(None, alias="EmergencyDNPrompt")
    emergency_play_prompt: str | None = Field(None, alias="EmergencyPlayPrompt")
    specified_list: str | None = Field(None, alias="SpecifiedList")


class CallTypesSettings(BaseModel):
    international: CallTypeInfo | None = Field(None, alias="International")
    local: CallTypeInfo | None = Field(None, alias="Local")
    mobile: CallTypeInfo | None = Field(None, alias="Mobile")
    national: CallTypeInfo | None = Field(None, alias="National")


class Period(BaseModel):
    day_of_week: DayOfWeek | None = Field(None, alias="DayOfWeek")
    start: time_aliased | None = Field(None, alias="Start")
    stop: time_aliased | None = Field(None, alias="Stop")


class Destination(BaseModel):
    external: str | None = Field(None, alias="External")
    name: str | None = Field(None, alias="Name")
    number: str | None = Field(None, alias="Number")
    tags: list[UserTag] | None = Field(None, alias="Tags")
    to: DestinationType | None = Field(None, alias="To")
    type: PeerType | None = Field(None, alias="Type")


class GroupProps(BaseModel):
    dect_max_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="DectMaxCount"
    )
    department_contacts_max_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="DepartmentContactsMaxCount"
    )
    fqdn: str | None = Field(None, alias="Fqdn")
    live_chat_max_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="LiveChatMaxCount"
    )
    outbound_rules_max_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="OutboundRulesMaxCount"
    )
    personal_contacts_max_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="PersonalContactsMaxCount"
    )
    prompts_max_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="PromptsMaxCount"
    )
    reseller_id: str | None = Field(None, alias="ResellerId")
    reseller_name: str | None = Field(None, alias="ResellerName")
    sbc_max_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SbcMaxCount"
    )
    startup_license: StartupLicense | None = Field(None, alias="StartupLicense")
    startup_owner_email: str | None = Field(None, alias="StartupOwnerEmail")
    subcription_expire_date: AwareDatetime | None = Field(
        None, alias="SubcriptionExpireDate"
    )
    subscription: str | None = Field(None, alias="Subscription")
    subscription_type: str | None = Field(None, alias="SubscriptionType")
    system_number_from: str | None = Field(None, alias="SystemNumberFrom")
    system_number_to: str | None = Field(None, alias="SystemNumberTo")
    trunk_number_from: str | None = Field(None, alias="TrunkNumberFrom")
    trunk_number_to: str | None = Field(None, alias="TrunkNumberTo")
    trunks_max_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="TrunksMaxCount"
    )
    user_number_from: str | None = Field(None, alias="UserNumberFrom")
    user_number_to: str | None = Field(None, alias="UserNumberTo")


class Route(BaseModel):
    is_prompt_enabled: bool | None = Field(None, alias="IsPromptEnabled")
    prompt: str | None = Field(None, alias="Prompt")
    route: Destination | None = Field(None, alias="Route")


class QueueAgent(BaseModel):
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")
    number: str | None = Field(None, alias="Number")
    skill_group: str | None = Field(None, alias="SkillGroup")
    tags: list[UserTag] | None = Field(None, alias="Tags")


class QueueManager(BaseModel):
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")
    number: str | None = Field(None, alias="Number")
    tags: list[UserTag] | None = Field(None, alias="Tags")


class ResetQueueStatisticsSchedule(BaseModel):
    day: DayOfWeek | None = Field(None, alias="Day")
    frequency: ResetQueueStatisticsFrequency | None = Field(None, alias="Frequency")
    time: time_aliased | None = Field(None, alias="Time")


class RingGroupMember(BaseModel):
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")
    number: str | None = Field(None, alias="Number")
    tags: list[UserTag] | None = Field(None, alias="Tags")


class AvailableRouting(BaseModel):
    busy_all_calls: bool | None = Field(None, alias="BusyAllCalls")
    busy_external: Destination | None = Field(None, alias="BusyExternal")
    busy_internal: Destination | None = Field(None, alias="BusyInternal")
    no_answer_all_calls: bool | None = Field(None, alias="NoAnswerAllCalls")
    no_answer_external: Destination | None = Field(None, alias="NoAnswerExternal")
    no_answer_internal: Destination | None = Field(None, alias="NoAnswerInternal")
    not_registered_all_calls: bool | None = Field(None, alias="NotRegisteredAllCalls")
    not_registered_external: Destination | None = Field(
        None, alias="NotRegisteredExternal"
    )
    not_registered_internal: Destination | None = Field(
        None, alias="NotRegisteredInternal"
    )


class AwayRouting(BaseModel):
    all_hours_external: bool | None = Field(None, alias="AllHoursExternal")
    all_hours_internal: bool | None = Field(None, alias="AllHoursInternal")
    external: Destination | None = Field(None, alias="External")
    internal: Destination | None = Field(None, alias="Internal")


class PhoneDeviceVlanInfo(BaseModel):
    configurable: bool | None = Field(None, alias="Configurable")
    enabled: bool | None = Field(None, alias="Enabled")
    priority: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="Priority"
    )
    priority_configurable: bool | None = Field(None, alias="PriorityConfigurable")
    priority_max: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="PriorityMax"
    )
    priority_min: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="PriorityMin"
    )
    type: PhoneDeviceVlanType | None = Field(None, alias="Type")
    vlan_id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="VlanId")
    vlan_id_max: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="VlanIdMax"
    )
    vlan_id_min: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="VlanIdMin"
    )


class AgentRoutingDirectory(BaseModel):
    description: str | None = Field(None, alias="Description")
    name: str | None = Field(None, alias="Name")
    number: str | None = Field(None, alias="Number")
    tags: list[UserTag] | None = Field(None, alias="Tags")
    type: PeerType | None = Field(None, alias="Type")


class AgentRoutingAction(BaseModel):
    action: str | None = Field(None, alias="Action")
    name: str | None = Field(None, alias="Name")
    number: str | None = Field(None, alias="Number")
    tags: list[UserTag] | None = Field(None, alias="Tags")
    type: PeerType | None = Field(None, alias="Type")


class BossInterruptionSettings(BaseModel):
    block: InterruptionDecision | None = Field(None, alias="Block")
    interrupt: InterruptionDecision | None = Field(None, alias="Interrupt")
    notify: InterruptionDecision | None = Field(None, alias="Notify")


class ReceptionistForward(BaseModel):
    custom_data: str | None = Field(None, alias="CustomData")
    forward_dn: str | None = Field(None, alias="ForwardDN")
    forward_type: IVRForwardType | None = Field(None, alias="ForwardType")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    input: str | None = Field(None, alias="Input")
    peer_type: PeerType | None = Field(None, alias="PeerType")


class TrunkVariable(BaseModel):
    default_value: str | None = Field(None, alias="DefaultValue")
    max_length: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MaxLength"
    )
    min_length: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MinLength"
    )
    name: str | None = Field(None, alias="Name")
    option: str | None = Field(None, alias="Option")
    option_type: TrunkVariableType | None = Field(None, alias="OptionType")
    pattern: str | None = Field(None, alias="Pattern")
    prompt: str | None = Field(None, alias="Prompt")
    required: bool | None = Field(None, alias="Required")
    title: str | None = Field(None, alias="Title")
    validation: str | None = Field(None, alias="Validation")


class FxsProvisioning(BaseModel):
    local_audio_port_end: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="LocalAudioPortEnd"
    )
    local_audio_port_start: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="LocalAudioPortStart"
    )
    local_interface: str | None = Field(None, alias="LocalInterface")
    local_sip_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="LocalSipPort"
    )
    method: ProvType | None = Field(None, alias="Method")
    prov_link: str | None = Field(None, alias="ProvLink")
    remote_fqdn: str | None = Field(None, alias="RemoteFQDN")
    remote_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="RemotePort"
    )
    sbc_name: str | None = Field(None, alias="SbcName")


class FxsVariable(BaseModel):
    choices: list[FxsVariableChoice] | None = Field(None, alias="Choices")
    name: str | None = Field(None, alias="Name")
    title: str | None = Field(None, alias="Title")
    validation_type: str | None = Field(None, alias="ValidationType")


class LiveChatStyling(BaseModel):
    animation: AnimationStyle | None = Field(None, alias="Animation")
    minimized: bool | None = Field(None, alias="Minimized")
    style: constr(max_length=2048) | None = Field(None, alias="Style")
    use_rubik: bool | None = Field(None, alias="UseRubik")


class GeneralLiveChatSettings(BaseModel):
    allow_sound_notifications: bool | None = Field(
        None, alias="AllowSoundNotifications"
    )
    authentication: Authentication | None = Field(None, alias="Authentication")
    disable_offline_messages: bool | None = Field(None, alias="DisableOfflineMessages")
    enable_ga: bool | None = Field(None, alias="EnableGA")
    enable_on_mobile: bool | None = Field(None, alias="EnableOnMobile")
    gdpr_enabled: bool | None = Field(None, alias="GdprEnabled")
    greeting: LiveChatGreeting | None = Field(None, alias="Greeting")


class LiveChatAdvancedSettings(BaseModel):
    call_title: str | None = Field(None, alias="CallTitle")
    communication_options: LiveChatCommunication | None = Field(
        None, alias="CommunicationOptions"
    )
    enable_direct_call: bool | None = Field(None, alias="EnableDirectCall")
    ignore_queue_ownership: bool | None = Field(None, alias="IgnoreQueueOwnership")


class LiveChatBox(BaseModel):
    button_icon_type: ButtonIconType | None = Field(None, alias="ButtonIconType")
    button_icon_url: str | None = Field(None, alias="ButtonIconUrl")
    chat_delay: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ChatDelay"
    )
    height: str | None = Field(None, alias="Height")
    live_chat_language: LiveChatLanguage | None = Field(None, alias="LiveChatLanguage")
    live_message_userinfo_format: LiveMessageUserinfoFormat | None = Field(
        None, alias="LiveMessageUserinfoFormat"
    )
    message_dateformat: LiveChatMessageDateformat | None = Field(
        None, alias="MessageDateformat"
    )
    minimized_style: LiveChatMinimizedStyle | None = Field(None, alias="MinimizedStyle")
    operator_icon: constr(max_length=136533) | None = Field(None, alias="OperatorIcon")
    operator_name: str | None = Field(None, alias="OperatorName")
    show_operator_actual_name: bool | None = Field(None, alias="ShowOperatorActualName")
    window_icon: constr(max_length=136533) | None = Field(None, alias="WindowIcon")


class BackupSchedule(BaseModel):
    day: DayOfWeek | None = Field(None, alias="Day")
    repeat_hours: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="RepeatHours"
    )
    repeat_minutes: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="RepeatMinutes"
    )
    schedule_type: ScheduleType | None = Field(None, alias="ScheduleType")
    time: time_aliased | None = Field(None, alias="Time")


class UpdateItem(BaseModel):
    category: str | None = Field(None, alias="Category")
    description: str | None = Field(None, alias="Description")
    description_link: str | None = Field(None, alias="DescriptionLink")
    guid: UUID | None = Field(None, alias="Guid")
    ignore: bool | None = Field(None, alias="Ignore")
    image: str | None = Field(None, alias="Image")
    local_version: str | None = Field(None, alias="LocalVersion")
    name: str | None = Field(None, alias="Name")
    out_of_date: bool | None = Field(None, alias="OutOfDate")
    server_version: str | None = Field(None, alias="ServerVersion")
    update_type: UpdateType | None = Field(None, alias="UpdateType")


class LocationSettings(BaseModel):
    file_system_type: FileSystemType | None = Field(None, alias="FileSystemType")
    ftp_password: ConcealedPassword | None = Field(None, alias="FtpPassword")
    ftp_path: str | None = Field(None, alias="FtpPath")
    ftp_user: str | None = Field(None, alias="FtpUser")
    ftp_validate_certificate: bool | None = Field(None, alias="FtpValidateCertificate")
    gb_json: ConcealedDataFile | None = Field(None, alias="GbJson")
    gb_path: str | None = Field(None, alias="GbPath")
    local_path: str | None = Field(None, alias="LocalPath")
    ns_domain: str | None = Field(None, alias="NsDomain")
    ns_password: ConcealedPassword | None = Field(None, alias="NsPassword")
    ns_path: str | None = Field(None, alias="NsPath")
    ns_user: str | None = Field(None, alias="NsUser")
    s3_path: str | None = Field(None, alias="S3Path")
    sftp_password: ConcealedPassword | None = Field(None, alias="SftpPassword")
    sftp_path: str | None = Field(None, alias="SftpPath")
    sftp_private_key: ConcealedDataFile | None = Field(None, alias="SftpPrivateKey")
    sftp_user: str | None = Field(None, alias="SftpUser")
    share_point_path: str | None = Field(None, alias="SharePointPath")


class CrmParameter(BaseModel):
    default: str | None = Field(None, alias="Default")
    editor: EditorType | None = Field(None, alias="Editor")
    list_values: list[str] | None = Field(None, alias="ListValues")
    list_values_text: str | None = Field(None, alias="ListValuesText")
    name: str | None = Field(None, alias="Name")
    parent: str | None = Field(None, alias="Parent")
    request_url: str | None = Field(None, alias="RequestUrl")
    request_url_parameters: str | None = Field(None, alias="RequestUrlParameters")
    response_scenario: str | None = Field(None, alias="ResponseScenario")
    title: str | None = Field(None, alias="Title")
    type: ParameterType | None = Field(None, alias="Type")
    validation: str | None = Field(None, alias="Validation")


class CrmAuthentication(BaseModel):
    type: AuthenticationType | None = Field(None, alias="Type")
    values: list[str] | None = Field(None, alias="Values")


class PbxToM365Binding(BaseModel):
    from_: SynchronizedPbxProfile | None = Field(None, alias="From")
    to: SynchronizedM365Profile | None = Field(None, alias="To")


class M365ToPbxBinding(BaseModel):
    from_: SynchronizedM365Profile | None = Field(None, alias="From")
    to: SynchronizedPbxProfile | None = Field(None, alias="To")


class UsersSyncConfiguration(BaseModel):
    is_enabled: bool | None = Field(None, alias="IsEnabled")
    selected_users: list[str] | None = Field(None, alias="SelectedUsers")
    sync_type: IntegrationSyncType | None = Field(None, alias="SyncType")


class MeetingObj(BaseModel):
    documentlist: str | None = None
    friendlyname: str | None = None
    logo: str | None = None
    meetingid: str | None = None
    meetingprofile: str | None = None
    openlink: str | None = None
    organizer: ParticipantDetails | None = None
    params: MeetingParams | None = None
    participants: list[ParticipantDetails] | None = None
    theme: str | None = None


class Setpoint(BaseModel):
    enabled: bool | None = Field(None, alias="Enabled")
    type: SetpointType | None = Field(None, alias="Type")
    value: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Value")


class CrmContact(BaseModel):
    company_name: str | None = Field(None, alias="CompanyName")
    contact_raw_data: str | None = Field(None, alias="ContactRawData")
    contact_type: ContactType | None = Field(None, alias="ContactType")
    contact_url: str | None = Field(None, alias="ContactUrl")
    department: str | None = Field(None, alias="Department")
    email: str | None = Field(None, alias="Email")
    fax_business: str | None = Field(None, alias="FaxBusiness")
    first_name: str | None = Field(None, alias="FirstName")
    last_name: str | None = Field(None, alias="LastName")
    pager: str | None = Field(None, alias="Pager")
    phone_business: str | None = Field(None, alias="PhoneBusiness")
    phone_business2: str | None = Field(None, alias="PhoneBusiness2")
    phone_home: str | None = Field(None, alias="PhoneHome")
    phone_mobile: str | None = Field(None, alias="PhoneMobile")
    phone_mobile2: str | None = Field(None, alias="PhoneMobile2")
    phone_other: str | None = Field(None, alias="PhoneOther")
    photo_url: str | None = Field(None, alias="PhotoUrl")
    title: str | None = Field(None, alias="Title")


class RemotePostgreConfig(BaseModel):
    authenticate_mode: AuthenticateMode | None = Field(None, alias="AuthenticateMode")
    ca_certificate: ConcealedDataFile | None = Field(None, alias="CACertificate")
    client_certificate: ConcealedDataFile | None = Field(
        None, alias="ClientCertificate"
    )
    client_private_key: ConcealedDataFile | None = Field(None, alias="ClientPrivateKey")
    database: str | None = Field(None, alias="Database")
    host: str | None = Field(None, alias="Host")
    password: ConcealedPassword | None = Field(None, alias="Password")
    port: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Port")
    server_trust_mode: ServerTrustMode | None = Field(None, alias="ServerTrustMode")
    username: str | None = Field(None, alias="Username")


class SyslogCustomRelayConfig(BaseModel):
    client_certificate: ConcealedDataFile | None = Field(
        None, alias="ClientCertificate"
    )
    client_private_key: ConcealedDataFile | None = Field(None, alias="ClientPrivateKey")
    host: str | None = Field(None, alias="Host")
    port: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Port")
    protocol: SyslogProtocol | None = Field(None, alias="Protocol")


class GoogleUserSync(BaseModel):
    is_enabled: bool | None = Field(None, alias="IsEnabled")
    is_sync_departments: bool | None = Field(None, alias="IsSyncDepartments")
    is_sync_personal_contacts: bool | None = Field(None, alias="IsSyncPersonalContacts")
    is_sync_photo: bool | None = Field(None, alias="IsSyncPhoto")
    selected_users: list[str] | None = Field(None, alias="SelectedUsers")
    starting_extension_number: str | None = Field(None, alias="StartingExtensionNumber")
    sync_type: IntegrationSyncType | None = Field(None, alias="SyncType")
    use_calendar_events_as_presence: bool | None = Field(
        None, alias="UseCalendarEventsAsPresence"
    )


class BlocklistAddrCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[BlocklistAddr] | None = None


class ContactCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Contact] | None = None


class PhoneTemplateCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[PhoneTemplate] | None = None


class RecordingCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Recording] | None = None


class OutboundRuleCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[OutboundRule] | None = None


class PeerCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Peer] | None = None


class PromptSetCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[PromptSet] | None = None


class CustomPromptCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[CustomPrompt] | None = None


class SbcCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Sbc] | None = None


class EventLogCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[EventLog] | None = None


class ServiceInfoCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[ServiceInfo] | None = None


class RefreshTokenCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[RefreshToken] | None = None


class ChatHistoryViewCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[ChatHistoryView] | None = None


class ScheduledReportCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[ScheduledReport] | None = None


class SipDeviceCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[SipDevice] | None = None


class UserGroupCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[UserGroup] | None = None


class ReceptionistForwardCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[ReceptionistForward] | None = None


class RingGroupMemberCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[RingGroupMember] | None = None


class QueueAgentCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[QueueAgent] | None = None


class QueueManagerCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[QueueManager] | None = None


class GreetingCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Greeting] | None = None


class TrunkReportCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[TrunkReport] | None = None


class FxsVariableCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[FxsVariable] | None = None


class UpdateItemCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[UpdateItem] | None = None


class CrmParameterCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[CrmParameter] | None = None


class SetpointCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Setpoint] | None = None


class VectorStoreCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[VectorStore] | None = None


class CrmContactCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[CrmContact] | None = None


class PhoneDeviceVlanInfoCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[PhoneDeviceVlanInfo] | None = None


class PeriodCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Period] | None = None


class AgentRoutingDirectoryCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[AgentRoutingDirectory] | None = None


class TrunkVariableCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[TrunkVariable] | None = None


class PbxToM365BindingCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[PbxToM365Binding] | None = None


class M365ToPbxBindingCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[M365ToPbxBinding] | None = None


class DN(BaseModel):
    groups: list[UserGroup] | None = Field(None, alias="Groups")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    number: str | None = Field(None, alias="Number")
    transcription_mode: TranscriptionType | None = Field(
        None, alias="TranscriptionMode"
    )


class Receptionist(DN):
    break_route: Route | None = Field(None, alias="BreakRoute")
    forwards: list[ReceptionistForward] | None = Field(None, alias="Forwards")
    forward_sms_to: str | None = Field(None, alias="ForwardSmsTo")
    holidays_route: Route | None = Field(None, alias="HolidaysRoute")
    invalid_key_forward_dn: str | None = Field(None, alias="InvalidKeyForwardDN")
    is_registered: bool | None = Field(None, alias="IsRegistered")
    ivr_type: IVRType | None = Field(None, alias="IVRType")
    name: str | None = Field(None, alias="Name")
    out_of_office_route: Route | None = Field(None, alias="OutOfOfficeRoute")
    prompt_filename: str | None = Field(None, alias="PromptFilename")
    prompt_set: str | None = Field(None, alias="PromptSet")
    timeout: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Timeout")
    timeout_forward_dn: str | None = Field(None, alias="TimeoutForwardDN")
    timeout_forward_peer_type: PeerType | None = Field(
        None, alias="TimeoutForwardPeerType"
    )
    timeout_forward_type: IVRForwardType | None = Field(
        None, alias="TimeoutForwardType"
    )
    transfer_enable: bool | None = Field(None, alias="TransferEnable")
    use_ms_exchange: bool | None = Field(None, alias="UseMSExchange")


class ClickToCall(DN):
    call_us_enable_chat: bool | None = Field(None, alias="CallUsEnableChat")
    call_us_enable_phone: bool | None = Field(None, alias="CallUsEnablePhone")
    call_us_enable_video: bool | None = Field(None, alias="CallUsEnableVideo")
    call_us_requirement: Authentication | None = Field(None, alias="CallUsRequirement")
    click_to_call_id: str | None = Field(None, alias="ClickToCallId")


class RingGroup(ClickToCall):
    break_route: Route | None = Field(None, alias="BreakRoute")
    forward_no_answer: Destination | None = Field(None, alias="ForwardNoAnswer")
    greeting_file: str | None = Field(None, alias="GreetingFile")
    holidays_route: Route | None = Field(None, alias="HolidaysRoute")
    is_registered: bool | None = Field(None, alias="IsRegistered")
    members: list[RingGroupMember] | None = Field(None, alias="Members")
    multicast_address: str | None = Field(None, alias="MulticastAddress")
    multicast_codec: str | None = Field(None, alias="MulticastCodec")
    multicast_packet_time: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MulticastPacketTime"
    )
    multicast_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MulticastPort"
    )
    name: str | None = Field(None, alias="Name")
    out_of_office_route: Route | None = Field(None, alias="OutOfOfficeRoute")
    ring_strategy: StrategyType | None = Field(None, alias="RingStrategy")
    ring_time: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="RingTime"
    )
    vm_email_list: str | None = Field(None, alias="VMEmailList")
    vm_email_options: VMEmailOptionsType | None = Field(None, alias="VMEmailOptions")


class Queue(ClickToCall):
    agent_availability_mode: bool | None = Field(None, alias="AgentAvailabilityMode")
    agents: list[QueueAgent] | None = Field(None, alias="Agents")
    announce_estimated_wait_time: bool | None = Field(
        None, alias="AnnounceEstimatedWaitTime"
    )
    announce_estimated_wait_time_interval: (
        conint(ge=-2147483648, le=2147483647) | None
    ) = Field(None, alias="AnnounceEstimatedWaitTimeInterval")
    announcement_interval: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="AnnouncementInterval"
    )
    announce_queue_position: bool | None = Field(None, alias="AnnounceQueuePosition")
    auto_logout_missed_calls: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="AutoLogoutMissedCalls"
    )
    break_route: Route | None = Field(None, alias="BreakRoute")
    callback_enable_time: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="CallbackEnableTime"
    )
    callback_offer_only: bool | None = Field(None, alias="CallbackOfferOnly")
    callback_offer_prompt: str | None = Field(None, alias="CallbackOfferPrompt")
    callback_prefix: str | None = Field(None, alias="CallbackPrefix")
    comfort_prompts: list[str] | None = Field(None, alias="ComfortPrompts")
    comfort_prompts_enabled: bool | None = Field(None, alias="ComfortPromptsEnabled")
    comfort_prompts_interval: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="ComfortPromptsInterval"
    )
    destination_no_answer_prompt: str | None = Field(
        None, alias="DestinationNoAnswerPrompt"
    )
    enable_intro: bool | None = Field(None, alias="EnableIntro")
    forward_no_answer: Destination | None = Field(None, alias="ForwardNoAnswer")
    greeting_file: str | None = Field(None, alias="GreetingFile")
    holidays_route: Route | None = Field(None, alias="HolidaysRoute")
    intro_file: str | None = Field(None, alias="IntroFile")
    is_registered: bool | None = Field(None, alias="IsRegistered")
    managers: list[QueueManager] | None = Field(None, alias="Managers")
    master_timeout: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MasterTimeout"
    )
    max_callers_in_queue: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MaxCallersInQueue"
    )
    max_wait_strategy_enabled: bool | None = Field(None, alias="MaxWaitStrategyEnabled")
    max_wait_time_skill_group_values: (
        list[conint(ge=-2147483648, le=2147483647)] | None
    ) = Field(None, alias="MaxWaitTimeSkillGroupValues")
    name: str | None = Field(None, alias="Name")
    notify_codes: list[QueueNotifyCode] | None = Field(None, alias="NotifyCodes")
    on_hold_file: str | None = Field(None, alias="OnHoldFile")
    out_of_office_route: Route | None = Field(None, alias="OutOfOfficeRoute")
    play_full_prompt: bool | None = Field(None, alias="PlayFullPrompt")
    polling_strategy: PollingStrategyType | None = Field(None, alias="PollingStrategy")
    priority_queue: bool | None = Field(None, alias="PriorityQueue")
    prompt_set: str | None = Field(None, alias="PromptSet")
    recording: QueueRecording | None = Field(None, alias="Recording")
    reset_queue_statistics_schedule: ResetQueueStatisticsSchedule | None = Field(
        None, alias="ResetQueueStatisticsSchedule"
    )
    reset_statistics_schedule_enabled: bool | None = Field(
        None, alias="ResetStatisticsScheduleEnabled"
    )
    ring_timeout: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="RingTimeout"
    )
    skill_based_ring_all_cumulative_polling_enabled: bool | None = Field(
        None, alias="SkillBasedRingAllCumulativePollingEnabled"
    )
    sla_time: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SLATime"
    )
    type_of_chat_ownership_type: TypeOfChatOwnershipType | None = Field(
        None, alias="TypeOfChatOwnershipType"
    )
    vm_email_list: str | None = Field(None, alias="VMEmailList")
    vm_email_options: VMEmailOptionsType | None = Field(None, alias="VMEmailOptions")
    wrap_up_time: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="WrapUpTime"
    )


class FxsTemplate(BaseModel):
    allowed_net_configs: list[str] | None = Field(None, alias="AllowedNetConfigs")
    allow_ssl_provisioning: bool | None = Field(None, alias="AllowSSLProvisioning")
    brand: str | None = Field(None, alias="Brand")
    content: str | None = Field(None, alias="Content")
    device_type: DeviceType | None = Field(None, alias="DeviceType")
    id: str | None = Field(None, alias="Id")
    is_custom: bool | None = Field(None, alias="IsCustom")
    languages: list[str] | None = Field(None, alias="Languages")
    models: list[FxsModel] | None = Field(None, alias="Models")
    number_of_extensions: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="NumberOfExtensions"
    )
    rps_enabled: bool | None = Field(None, alias="RpsEnabled")
    template_type: TemplateType | None = Field(None, alias="TemplateType")
    time_zones: list[str] | None = Field(None, alias="TimeZones")
    url: str | None = Field(None, alias="URL")
    variables: list[FxsVariable] | None = Field(None, alias="Variables")


class Weblink(BaseModel):
    advanced: LiveChatAdvancedSettings | None = Field(None, alias="Advanced")
    calls_enabled: bool | None = Field(None, alias="CallsEnabled")
    chat_box: LiveChatBox | None = Field(None, alias="ChatBox")
    chat_enabled: bool | None = Field(None, alias="ChatEnabled")
    default_record: bool | None = Field(None, alias="DefaultRecord")
    dn: Peer | None = Field(None, alias="DN")
    enable_re_captcha: bool | None = Field(None, alias="EnableReCaptcha")
    general: GeneralLiveChatSettings | None = Field(None, alias="General")
    group: str | None = Field(None, alias="Group")
    hidden: bool | None = Field(None, alias="Hidden")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    link: str | None = Field(None, alias="Link")
    meeting_enabled: bool | None = Field(None, alias="MeetingEnabled")
    name: str | None = Field(None, alias="Name")
    styling: LiveChatStyling | None = Field(None, alias="Styling")
    translations: WebsiteLinksTranslations | None = Field(None, alias="Translations")
    website: list[str] | None = Field(None, alias="Website")


class UpdateSettings(BaseModel):
    auto_update_enabled: bool | None = Field(None, alias="AutoUpdateEnabled")
    schedule: BackupSchedule | None = Field(None, alias="Schedule")


class UpdateList(BaseModel):
    entries: list[UpdateItem] | None = Field(None, alias="Entries")
    is_maintanance_expired: bool | None = Field(None, alias="IsMaintananceExpired")
    key: UUID | None = Field(None, alias="Key")
    last_successful_update: AwareDatetime | None = Field(
        None, alias="LastSuccessfulUpdate"
    )


class Parking(DN):
    pass


class BackupSettings(BaseModel):
    contents: BackupContents | None = Field(None, alias="Contents")
    rotation: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="Rotation"
    )
    schedule: BackupSchedule | None = Field(None, alias="Schedule")
    schedule_enabled: bool | None = Field(None, alias="ScheduleEnabled")


class BackupRepositorySettings(BaseModel):
    location: LocationSettings | None = Field(None, alias="Location")


class RestoreSettings(BaseModel):
    encrypt_backup: bool | None = Field(None, alias="EncryptBackup")
    encrypt_backup_password: ConcealedPassword | None = Field(
        None, alias="EncryptBackupPassword"
    )
    schedule: BackupSchedule | None = Field(None, alias="Schedule")
    schedule_enabled: bool | None = Field(None, alias="ScheduleEnabled")


class ServicePrincipal(DN):
    call_control_enabled: bool | None = Field(None, alias="CallControlEnabled")
    is_system: bool | None = Field(None, alias="IsSystem")
    last_used: AwareDatetime | None = Field(None, alias="LastUsed")
    my_phone_enabled: bool | None = Field(None, alias="MyPhoneEnabled")
    peers: list[Peer] | None = Field(None, alias="Peers")
    xapi_enabled: bool | None = Field(None, alias="XAPIEnabled")


class CrmTemplate(BaseModel):
    authentication: CrmAuthentication | None = Field(None, alias="Authentication")
    name: str | None = Field(None, alias="Name")
    parameters: list[CrmParameter] | None = Field(None, alias="Parameters")


class OnBoardMeeting(BaseModel):
    mcu_fqdn: str | None = Field(None, alias="McuFqdn")
    meeting: MeetingObj | None = Field(None, alias="Meeting")
    meeting_id: str | None = Field(None, alias="MeetingId")
    parts: list[KeyValuePair2OfStringOnBoardConnectedParticipant] | None = Field(
        None, alias="Parts"
    )
    profile: str | None = Field(None, alias="Profile")
    recorded: bool | None = Field(None, alias="Recorded")
    sessionid: str | None = Field(None, alias="Sessionid")
    start: AwareDatetime | None = Field(None, alias="Start")


class NotificationSettings(BaseModel):
    auto_restart_failed_services: bool | None = Field(
        None, alias="AutoRestartFailedServices"
    )
    can_edit_email_addresses: bool | None = Field(None, alias="CanEditEmailAddresses")
    email_addresses: str | None = Field(None, alias="EmailAddresses")
    notify_codes: list[NotifyCodes] | None = Field(None, alias="NotifyCodes")
    notify_extension_added: bool | None = Field(None, alias="NotifyExtensionAdded")
    notify_service_stopped: bool | None = Field(None, alias="NotifyServiceStopped")
    notify_success_scheduled_backups: bool | None = Field(
        None, alias="NotifySuccessScheduledBackups"
    )
    notify_system_owners: bool | None = Field(None, alias="NotifySystemOwners")
    notify_updates_available: bool | None = Field(None, alias="NotifyUpdatesAvailable")
    setpoints: list[Setpoint] | None = Field(None, alias="Setpoints")


class HotelServices(BaseModel):
    enabled: bool | None = Field(None, alias="Enabled")
    hotel_groups: list[str] | None = Field(None, alias="HotelGroups")
    integration_type: PmsIntegrationType | None = Field(None, alias="IntegrationType")
    ip_address: str | None = Field(None, alias="IpAddress")
    no_answer_destination: Destination | None = Field(None, alias="NoAnswerDestination")
    no_answer_timeout: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="NoAnswerTimeout"
    )
    port: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Port")


class Fax(DN):
    auth_id: str | None = Field(None, alias="AuthID")
    auth_password: str | None = Field(None, alias="AuthPassword")
    fax_server: bool | None = Field(None, alias="FaxServer")
    outbound_caller_id: str | None = Field(None, alias="OutboundCallerId")


class CrmTestResult(BaseModel):
    is_error: bool | None = Field(None, alias="IsError")
    log: str | None = Field(None, alias="Log")
    message: str | None = Field(None, alias="Message")
    search_result: list[CrmContact] | None = Field(None, alias="SearchResult")


class RemoteArchivingSettings(BaseModel):
    backups: ArchiveSubsystem | None = Field(None, alias="Backups")
    chats: ArchiveSubsystem | None = Field(None, alias="Chats")
    faxes: ArchiveSubsystem | None = Field(None, alias="Faxes")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    location: LocationSettings | None = Field(None, alias="Location")
    recordings: ArchiveSubsystem | None = Field(None, alias="Recordings")
    voicemails: ArchiveSubsystem | None = Field(None, alias="Voicemails")


class DataConnectorSettings(BaseModel):
    data_types_to_offload: DataTypesToOffload | None = Field(
        None, alias="DataTypesToOffload"
    )
    is_big_query_enabled: bool | None = Field(None, alias="IsBigQueryEnabled")
    offload_destination: OffloadDestination | None = Field(
        None, alias="OffloadDestination"
    )
    purge_after_sync: bool | None = Field(None, alias="PurgeAfterSync")
    remote_my_sql_config: RemoteMySqlConfig | None = Field(
        None, alias="RemoteMySqlConfig"
    )
    remote_postgre_config: RemotePostgreConfig | None = Field(
        None, alias="RemotePostgreConfig"
    )
    remote_sql_server_config: RemoteSqlServerConfig | None = Field(
        None, alias="RemoteSqlServerConfig"
    )
    schedule: BackupSchedule | None = Field(None, alias="Schedule")


class SyslogSettings(BaseModel):
    category_config: SyslogCategoryConfig | None = Field(None, alias="CategoryConfig")
    custom_relay_config: SyslogCustomRelayConfig | None = Field(
        None, alias="CustomRelayConfig"
    )
    datadog_config: SyslogDatadogConfig | None = Field(None, alias="DatadogConfig")
    elastic_config: SyslogElkConfig | None = Field(None, alias="ElasticConfig")
    integration_type: SyslogIntegrationType | None = Field(
        None, alias="IntegrationType"
    )
    splunk_config: SyslogSplunkConfig | None = Field(None, alias="SplunkConfig")


class InboundRuleReport(BaseModel):
    did: str | None = Field(None, alias="DID")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    in_office_routing: Destination | None = Field(None, alias="InOfficeRouting")
    out_office_routing: Destination | None = Field(None, alias="OutOfficeRouting")
    rule_name: str | None = Field(None, alias="RuleName")
    trunk: str | None = Field(None, alias="Trunk")


class PhoneSettings(BaseModel):
    allow_custom_queue_ringtones: bool | None = Field(
        None, alias="AllowCustomQueueRingtones"
    )
    backlight: str | None = Field(None, alias="Backlight")
    codecs: list[str] | None = Field(None, alias="Codecs")
    custom_logo: str | None = Field(None, alias="CustomLogo")
    custom_queue_ringtones: list[CustomQueueRingtone] | None = Field(
        None, alias="CustomQueueRingtones"
    )
    date_format: str | None = Field(None, alias="DateFormat")
    firmware: str | None = Field(None, alias="Firmware")
    firmware_lang: str | None = Field(None, alias="FirmwareLang")
    is_logo_customizable: bool | None = Field(None, alias="IsLogoCustomizable")
    is_sbc: bool | None = Field(None, alias="IsSBC")
    ll_dp_info: PhoneLldpInfo | None = Field(None, alias="LlDpInfo")
    local_rtp_port_end: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="LocalRTPPortEnd"
    )
    local_rtp_port_start: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="LocalRTPPortStart"
    )
    local_sip_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="LocalSipPort"
    )
    logo_description: str | None = Field(None, alias="LogoDescription")
    logo_file_extension_allowed: list[str] | None = Field(
        None, alias="LogoFileExtensionAllowed"
    )
    phone_language: str | None = Field(None, alias="PhoneLanguage")
    power_led: str | None = Field(None, alias="PowerLed")
    provision_extended_data: str | None = Field(None, alias="ProvisionExtendedData")
    provision_type: ProvType | None = Field(None, alias="ProvisionType")
    queue_ring_tone: str | None = Field(None, alias="QueueRingTone")
    remote_spm_host: str | None = Field(None, alias="RemoteSpmHost")
    remote_spm_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="RemoteSpmPort"
    )
    ring_tone: str | None = Field(None, alias="RingTone")
    sbc_name: str | None = Field(None, alias="SbcName")
    screen_saver: str | None = Field(None, alias="ScreenSaver")
    secret: str | None = Field(None, alias="Secret")
    srtp: str | None = Field(None, alias="Srtp")
    time_format: str | None = Field(None, alias="TimeFormat")
    time_zone: str | None = Field(None, alias="TimeZone")
    vlan_infos: list[PhoneDeviceVlanInfo] | None = Field(None, alias="VlanInfos")
    xfer_type: XferTypeEnum | None = Field(None, alias="XferType")


class GoogleSettings(BaseModel):
    client_id: str | None = Field(None, alias="ClientId")
    client_secret: ConcealedPassword | None = Field(None, alias="ClientSecret")
    id: str | None = Field(None, alias="Id")
    is_extension_sign_in_enabled: bool | None = Field(
        None, alias="IsExtensionSignInEnabled"
    )
    project_id: str | None = Field(None, alias="ProjectId")
    provision_url: str | None = Field(None, alias="ProvisionUrl")
    re_captcha_enabled: bool | None = Field(None, alias="ReCaptchaEnabled")
    user_sync: GoogleUserSync | None = Field(None, alias="UserSync")


class Schedule(BaseModel):
    ignore_holidays: bool | None = Field(None, alias="IgnoreHolidays")
    periods: list[Period] | None = Field(None, alias="Periods")
    type: RuleHoursType | None = Field(None, alias="Type")


class ForwardingProfile(BaseModel):
    accept_multiple_calls: bool | None = Field(None, alias="AcceptMultipleCalls")
    available_route: AvailableRouting | None = Field(None, alias="AvailableRoute")
    away_route: AwayRouting | None = Field(None, alias="AwayRoute")
    block_push_calls: bool | None = Field(None, alias="BlockPushCalls")
    custom_message: str | None = Field(None, alias="CustomMessage")
    custom_name: str | None = Field(None, alias="CustomName")
    disable_ring_group_calls: bool | None = Field(None, alias="DisableRingGroupCalls")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    name: str | None = Field(None, alias="Name")
    no_answer_timeout: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="NoAnswerTimeout"
    )
    office_hours_auto_queue_log_out: bool | None = Field(
        None, alias="OfficeHoursAutoQueueLogOut"
    )
    ring_my_mobile: bool | None = Field(None, alias="RingMyMobile")


class ExtensionRule(BaseModel):
    call_type: RuleCallTypeType | None = Field(None, alias="CallType")
    condition: RuleConditionType | None = Field(None, alias="Condition")
    data: str | None = Field(None, alias="Data")
    destination: Destination | None = Field(None, alias="Destination")
    enabled: bool | None = Field(None, alias="Enabled")
    hours: Schedule | None = Field(None, alias="Hours")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")


class Phone(BaseModel):
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    interface: str | None = Field(None, alias="Interface")
    mac_address: str | None = Field(None, alias="MacAddress")
    name: str | None = Field(None, alias="Name")
    provisioning_link_ext: str | None = Field(None, alias="ProvisioningLinkExt")
    provisioning_link_local: str | None = Field(None, alias="ProvisioningLinkLocal")
    settings: PhoneSettings | None = Field(None, alias="Settings")
    template_name: str | None = Field(None, alias="TemplateName")


class AgentSettings(BaseModel):
    abusive_caller_action: AgentRoutingAction | None = Field(
        None, alias="AbusiveCallerAction"
    )
    agent_type: str | None = Field(None, alias="AgentType")
    allowed_extensions: str | None = Field(None, alias="AllowedExtensions")
    allow_send_chat_notification: bool | None = Field(
        None, alias="AllowSendChatNotification"
    )
    allow_send_email_notification: bool | None = Field(
        None, alias="AllowSendEmailNotification"
    )
    allow_send_voicemail: bool | None = Field(None, alias="AllowSendVoicemail")
    allow_transfer_calls: bool | None = Field(None, alias="AllowTransferCalls")
    boss_interruption_settings: BossInterruptionSettings | None = Field(
        None, alias="BossInterruptionSettings"
    )
    caller_does_not_respond_action: AgentRoutingAction | None = Field(
        None, alias="CallerDoesNotRespondAction"
    )
    check_status_before_transfer: bool | None = Field(
        None, alias="CheckStatusBeforeTransfer"
    )
    confidential_mode_enabled: bool | None = Field(
        None, alias="ConfidentialModeEnabled"
    )
    enable_name_matching: bool | None = Field(None, alias="EnableNameMatching")
    first_message: str | None = Field(None, alias="FirstMessage")
    knowledgebase: list[str] | None = Field(None, alias="Knowledgebase")
    language: str | None = Field(None, alias="Language")
    max_call_duration: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="MaxCallDuration"
    )
    phonebook_override: Peer | None = Field(None, alias="PhonebookOverride")
    routing_directory: list[AgentRoutingDirectory] | None = Field(
        None, alias="RoutingDirectory"
    )
    spam_action: AgentRoutingAction | None = Field(None, alias="SpamAction")
    spam_instructions: str | None = Field(None, alias="SpamInstructions")
    switch_language: bool | None = Field(None, alias="SwitchLanguage")
    system_prompt: str | None = Field(None, alias="SystemPrompt")
    voice: str | None = Field(None, alias="Voice")


class TrunkMessagingTemplate(BaseModel):
    messaging_variables: list[TrunkVariable] | None = Field(
        None, alias="MessagingVariables"
    )
    optional: bool | None = Field(None, alias="Optional")
    outbound: bool | None = Field(None, alias="Outbound")
    provider: str | None = Field(None, alias="Provider")
    type: str | None = Field(None, alias="Type")


class StatusSyncConfiguration(BaseModel):
    m365_to_pbx_bindings: list[M365ToPbxBinding] | None = Field(
        None, alias="M365ToPbxBindings"
    )
    pbx_to_m365_bindings: list[PbxToM365Binding] | None = Field(
        None, alias="PBXToM365Bindings"
    )
    pbx_to_m365_busy: bool | None = Field(None, alias="PBXToM365Busy")


class ReceptionistCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Receptionist] | None = None


class RingGroupCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[RingGroup] | None = None


class QueueCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Queue] | None = None


class FxsTemplateCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[FxsTemplate] | None = None


class WeblinkCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Weblink] | None = None


class ParkingCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Parking] | None = None


class ServicePrincipalCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[ServicePrincipal] | None = None


class CrmTemplateCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[CrmTemplate] | None = None


class FaxCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Fax] | None = None


class InboundRuleReportCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[InboundRuleReport] | None = None


class ForwardingProfileCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[ForwardingProfile] | None = None


class ExtensionRuleCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[ExtensionRule] | None = None


class PhoneCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Phone] | None = None


class User(ClickToCall):
    access_password: str | None = Field(None, alias="AccessPassword")
    agent_settings: AgentSettings | None = Field(None, alias="AgentSettings")
    ai_agent: bool | None = Field(None, alias="AIAgent")
    allow_lan_only: bool | None = Field(None, alias="AllowLanOnly")
    allow_own_recordings: bool | None = Field(None, alias="AllowOwnRecordings")
    auth_id: str | None = Field(None, alias="AuthID")
    auth_password: str | None = Field(None, alias="AuthPassword")
    blfs: constr(max_length=20480) | None = Field(None, alias="Blfs")
    block_tunnel: bool | None = Field(None, alias="BlockTunnel")
    break_time: Schedule | None = Field(None, alias="BreakTime")
    call_screening: bool | None = Field(None, alias="CallScreening")
    contact_image: str | None = Field(None, alias="ContactImage")
    current_profile_name: str | None = Field(None, alias="CurrentProfileName")
    datev_enabled: bool | None = Field(None, alias="DatevEnabled")
    deskphone_password: str | None = Field(None, alias="DeskphonePassword")
    display_name: str | None = Field(None, alias="DisplayName")
    email_address: str | None = Field(None, alias="EmailAddress")
    emergency_additional_info: str | None = Field(None, alias="EmergencyAdditionalInfo")
    emergency_location_id: str | None = Field(None, alias="EmergencyLocationId")
    enable2_fa: bool | None = Field(None, alias="Enable2FA")
    enabled: bool | None = Field(None, alias="Enabled")
    enable_hotdesking: bool | None = Field(None, alias="EnableHotdesking")
    first_name: str | None = Field(None, alias="FirstName")
    forwarding_exceptions: list[ExtensionRule] | None = Field(
        None, alias="ForwardingExceptions"
    )
    forwarding_profiles: list[ForwardingProfile] | None = Field(
        None, alias="ForwardingProfiles"
    )
    google_calendar_enabled: bool | None = Field(None, alias="GoogleCalendarEnabled")
    google_contacts_enabled: bool | None = Field(None, alias="GoogleContactsEnabled")
    google_sign_in_enabled: bool | None = Field(None, alias="GoogleSignInEnabled")
    greetings: list[Greeting] | None = Field(None, alias="Greetings")
    hide_in_phonebook: bool | None = Field(None, alias="HideInPhonebook")
    hotdesking_assignment: str | None = Field(None, alias="HotdeskingAssignment")
    hours: Schedule | None = Field(None, alias="Hours")
    internal: bool | None = Field(None, alias="Internal")
    is_registered: bool | None = Field(None, alias="IsRegistered")
    language: str | None = Field(None, alias="Language")
    last_name: str | None = Field(None, alias="LastName")
    mobile: str | None = Field(None, alias="Mobile")
    ms365_calendar_enabled: bool | None = Field(None, alias="MS365CalendarEnabled")
    ms365_contacts_enabled: bool | None = Field(None, alias="MS365ContactsEnabled")
    ms365_sign_in_enabled: bool | None = Field(None, alias="MS365SignInEnabled")
    ms365_teams_enabled: bool | None = Field(None, alias="MS365TeamsEnabled")
    my_phone_allow_delete_recordings: bool | None = Field(
        None, alias="MyPhoneAllowDeleteRecordings"
    )
    my_phone_hide_forwardings: bool | None = Field(None, alias="MyPhoneHideForwardings")
    my_phone_push: bool | None = Field(None, alias="MyPhonePush")
    my_phone_show_recordings: bool | None = Field(None, alias="MyPhoneShowRecordings")
    office_hours_props: list[OfficeHoursBits] | None = Field(
        None, alias="OfficeHoursProps"
    )
    outbound_caller_id: str | None = Field(None, alias="OutboundCallerID")
    pbx_delivers_audio: bool | None = Field(None, alias="PbxDeliversAudio")
    phones: list[Phone] | None = Field(None, alias="Phones")
    pin_protected: bool | None = Field(None, alias="PinProtected")
    pin_protect_timeout: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="PinProtectTimeout"
    )
    primary_group_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="PrimaryGroupId"
    )
    prompt_set: str | None = Field(None, alias="PromptSet")
    queue_status: QueueStatusType | None = Field(None, alias="QueueStatus")
    record_calls: bool | None = Field(None, alias="RecordCalls")
    record_email_notify: bool | None = Field(None, alias="RecordEmailNotify")
    record_external_calls_only: bool | None = Field(
        None, alias="RecordExternalCallsOnly"
    )
    require2_fa: bool | None = Field(None, alias="Require2FA")
    send_email_missed_calls: bool | None = Field(None, alias="SendEmailMissedCalls")
    sipid: str | None = Field(None, alias="SIPID")
    srtp_mode: SRTPModeType | None = Field(None, alias="SRTPMode")
    tags: list[UserTag] | None = Field(None, alias="Tags")
    vm_disable_pin_auth: bool | None = Field(None, alias="VMDisablePinAuth")
    vm_email_options: VMEmailOptionsType | None = Field(None, alias="VMEmailOptions")
    vm_enabled: bool | None = Field(None, alias="VMEnabled")
    vmpin: str | None = Field(None, alias="VMPIN")
    vm_play_caller_id: bool | None = Field(None, alias="VMPlayCallerID")
    vm_play_msg_date_time: VMPlayMsgDateTimeType | None = Field(
        None, alias="VMPlayMsgDateTime"
    )
    web_meeting_approve_participants: bool | None = Field(
        None, alias="WebMeetingApproveParticipants"
    )
    web_meeting_friendly_name: str | None = Field(None, alias="WebMeetingFriendlyName")


class MultiEditUserData(BaseModel):
    allow_lan_only: bool | None = Field(None, alias="AllowLanOnly")
    allow_own_recordings: bool | None = Field(None, alias="AllowOwnRecordings")
    blfs: constr(max_length=10240) | None = Field(None, alias="Blfs")
    boss_secretary_requires_full_edit: bool | None = Field(
        None, alias="BossSecretaryRequiresFullEdit"
    )
    call_screening: bool | None = Field(None, alias="CallScreening")
    can_move_forwarding_exceptions: bool | None = Field(
        None, alias="CanMoveForwardingExceptions"
    )
    datev_enabled: bool | None = Field(None, alias="DatevEnabled")
    display_numbers: str | None = Field(None, alias="DisplayNumbers")
    emergency_additional_info: str | None = Field(None, alias="EmergencyAdditionalInfo")
    emergency_location_id: str | None = Field(None, alias="EmergencyLocationId")
    enabled: bool | None = Field(None, alias="Enabled")
    enable_hotdesking: bool | None = Field(None, alias="EnableHotdesking")
    forwarding_exceptions: list[ExtensionRule] | None = Field(
        None, alias="ForwardingExceptions"
    )
    forwarding_profiles: list[ForwardingProfile] | None = Field(
        None, alias="ForwardingProfiles"
    )
    google_calendar_enabled: bool | None = Field(None, alias="GoogleCalendarEnabled")
    google_contacts_enabled: bool | None = Field(None, alias="GoogleContactsEnabled")
    google_sign_in_enabled: bool | None = Field(None, alias="GoogleSignInEnabled")
    greetings: list[Greeting] | None = Field(None, alias="Greetings")
    groups: list[UserGroup] | None = Field(None, alias="Groups")
    hide_in_phonebook: bool | None = Field(None, alias="HideInPhonebook")
    internal: bool | None = Field(None, alias="Internal")
    mobile: str | None = Field(None, alias="Mobile")
    ms365_calendar_enabled: bool | None = Field(None, alias="MS365CalendarEnabled")
    ms365_contacts_enabled: bool | None = Field(None, alias="MS365ContactsEnabled")
    ms365_sign_in_enabled: bool | None = Field(None, alias="MS365SignInEnabled")
    ms365_teams_enabled: bool | None = Field(None, alias="MS365TeamsEnabled")
    my_phone_allow_delete_recordings: bool | None = Field(
        None, alias="MyPhoneAllowDeleteRecordings"
    )
    my_phone_hide_forwardings: bool | None = Field(None, alias="MyPhoneHideForwardings")
    my_phone_show_recordings: bool | None = Field(None, alias="MyPhoneShowRecordings")
    number: str | None = Field(None, alias="Number")
    pbx_delivers_audio: bool | None = Field(None, alias="PbxDeliversAudio")
    pin_protected: bool | None = Field(None, alias="PinProtected")
    pin_protect_timeout: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="PinProtectTimeout"
    )
    prompt_set: str | None = Field(None, alias="PromptSet")
    record_calls: bool | None = Field(None, alias="RecordCalls")
    record_email_notify: bool | None = Field(None, alias="RecordEmailNotify")
    record_external_calls_only: bool | None = Field(
        None, alias="RecordExternalCallsOnly"
    )
    send_email_missed_calls: bool | None = Field(None, alias="SendEmailMissedCalls")
    srtp_mode: SRTPModeType | None = Field(None, alias="SRTPMode")
    transcription_mode: TranscriptionType | None = Field(
        None, alias="TranscriptionMode"
    )
    vm_disable_pin_auth: bool | None = Field(None, alias="VMDisablePinAuth")
    vm_email_options: VMEmailOptionsType | None = Field(None, alias="VMEmailOptions")
    vm_enabled: bool | None = Field(None, alias="VMEnabled")
    vm_play_caller_id: bool | None = Field(None, alias="VMPlayCallerID")
    vm_play_msg_date_time: VMPlayMsgDateTimeType | None = Field(
        None, alias="VMPlayMsgDateTime"
    )


class TrunkTemplate(BaseModel):
    add_allowed: bool | None = Field(None, alias="AddAllowed")
    content: str | None = Field(None, alias="Content")
    countries: list[str] | None = Field(None, alias="Countries")
    default_proxy_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="DefaultProxyPort"
    )
    default_registrar_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="DefaultRegistrarPort"
    )
    description: str | None = Field(None, alias="Description")
    editors: list[TrunkEditorType] | None = Field(None, alias="Editors")
    id: str | None = Field(None, alias="Id")
    is_custom: bool | None = Field(None, alias="IsCustom")
    messaging_template: TrunkMessagingTemplate | None = Field(
        None, alias="MessagingTemplate"
    )
    name: str | None = Field(None, alias="Name")
    tags: list[str] | None = Field(None, alias="Tags")
    template_type: TemplateType | None = Field(None, alias="TemplateType")
    url: str | None = Field(None, alias="Url")


class Group(ClickToCall):
    allow_call_service: bool | None = Field(None, alias="AllowCallService")
    answer_after: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="AnswerAfter"
    )
    break_route: Route | None = Field(None, alias="BreakRoute")
    break_time: Schedule | None = Field(None, alias="BreakTime")
    call_handling_mode: list[CallHandlingFlags] | None = Field(
        None, alias="CallHandlingMode"
    )
    current_group_hours: GroupHoursMode | None = Field(None, alias="CurrentGroupHours")
    custom_operator: Destination | None = Field(None, alias="CustomOperator")
    custom_prompt: str | None = Field(None, alias="CustomPrompt")
    disable_custom_prompt: bool | None = Field(None, alias="DisableCustomPrompt")
    globally_visible: bool | None = Field(None, alias="GloballyVisible")
    has_members: bool | None = Field(None, alias="HasMembers")
    holidays_route: Route | None = Field(None, alias="HolidaysRoute")
    hours: Schedule | None = Field(None, alias="Hours")
    is_default: bool | None = Field(None, alias="IsDefault")
    language: str | None = Field(None, alias="Language")
    last_login_time: AwareDatetime | None = Field(None, alias="LastLoginTime")
    members: list[UserGroup] | None = Field(None, alias="Members")
    name: str | None = Field(None, alias="Name")
    office_holidays: list[Holiday] | None = Field(None, alias="OfficeHolidays")
    office_route: Route | None = Field(None, alias="OfficeRoute")
    out_of_office_route: Route | None = Field(None, alias="OutOfOfficeRoute")
    override_expires_at: AwareDatetime | None = Field(None, alias="OverrideExpiresAt")
    override_holidays: bool | None = Field(None, alias="OverrideHolidays")
    prompt_set: str | None = Field(None, alias="PromptSet")
    props: GroupProps | None = Field(None, alias="Props")
    rights: list[Rights] | None = Field(None, alias="Rights")
    time_zone_id: str | None = Field(None, alias="TimeZoneId")


class InboundRule(BaseModel):
    alter_destination_during_holidays: bool | None = Field(
        None, alias="AlterDestinationDuringHolidays"
    )
    alter_destination_during_out_of_office_hours: bool | None = Field(
        None, alias="AlterDestinationDuringOutOfOfficeHours"
    )
    call_type: RuleCallTypeType | None = Field(None, alias="CallType")
    condition: RuleConditionType | None = Field(None, alias="Condition")
    custom_data: str | None = Field(None, alias="CustomData")
    data: str | None = Field(None, alias="Data")
    holidays_destination: Destination | None = Field(None, alias="HolidaysDestination")
    hours: Schedule | None = Field(None, alias="Hours")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    office_hours_destination: Destination | None = Field(
        None, alias="OfficeHoursDestination"
    )
    out_of_office_hours_destination: Destination | None = Field(
        None, alias="OutOfOfficeHoursDestination"
    )
    rule_name: str | None = Field(None, alias="RuleName")
    trunk_dn: Peer | None = Field(None, alias="TrunkDN")


class Fxs(BaseModel):
    brand: str | None = Field(None, alias="Brand")
    codecs: list[str] | None = Field(None, alias="Codecs")
    fxs_line_count: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="FxsLineCount"
    )
    fxs_lines: list[DeviceLine] | None = Field(None, alias="FxsLines")
    group: str | None = Field(None, alias="Group")
    language: str | None = Field(None, alias="Language")
    mac_address: str | None = Field(None, alias="MacAddress")
    model: str | None = Field(None, alias="Model")
    model_name: str | None = Field(None, alias="ModelName")
    name: str | None = Field(None, alias="Name")
    password: str | None = Field(None, alias="Password")
    provisioning: FxsProvisioning | None = Field(None, alias="Provisioning")
    registered: RegistrarFxs | None = Field(None, alias="Registered")
    secret: str | None = Field(None, alias="Secret")
    template: FxsTemplate | None = Field(None, alias="Template")
    time_zone: str | None = Field(None, alias="TimeZone")
    variables: list[Variable] | None = Field(None, alias="Variables")


class DidNumber(BaseModel):
    number: str | None = Field(None, alias="Number")
    routing_rule: InboundRule | None = Field(None, alias="RoutingRule")
    template_file_name: str | None = Field(None, alias="TemplateFileName")
    trunk_id: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="TrunkId"
    )


class OfficeHours(BaseModel):
    break_time: Schedule | None = Field(None, alias="BreakTime")
    hours: Schedule | None = Field(None, alias="Hours")
    office_holidays: list[Holiday] | None = Field(None, alias="OfficeHolidays")
    system_language: str | None = Field(None, alias="SystemLanguage")
    time_zone_id: str | None = Field(None, alias="TimeZoneId")


class ADUsersSyncConfiguration(BaseModel):
    enable_sso: bool | None = Field(None, alias="EnableSSO")
    is_enabled: bool | None = Field(None, alias="IsEnabled")
    is_sync_departments: bool | None = Field(None, alias="IsSyncDepartments")
    is_sync_details: bool | None = Field(None, alias="IsSyncDetails")
    is_sync_office_phone: bool | None = Field(None, alias="IsSyncOfficePhone")
    is_sync_photo: bool | None = Field(None, alias="IsSyncPhoto")
    selected_groups: list[str] | None = Field(None, alias="SelectedGroups")
    selected_users: list[str] | None = Field(None, alias="SelectedUsers")
    set_teams_presence: bool | None = Field(None, alias="SetTeamsPresence")
    starting_extension_number: str | None = Field(None, alias="StartingExtensionNumber")
    status_sync_configuration: StatusSyncConfiguration | None = Field(
        None, alias="StatusSyncConfiguration"
    )
    sync_events: bool | None = Field(None, alias="SyncEvents")
    sync_guest_users: bool | None = Field(None, alias="SyncGuestUsers")
    sync_personal_contacts: bool | None = Field(None, alias="SyncPersonalContacts")
    sync_type: IntegrationSyncType | None = Field(None, alias="SyncType")


class UserCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[User] | None = None


class TrunkTemplateCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[TrunkTemplate] | None = None


class GroupCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Group] | None = None


class InboundRuleCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[InboundRule] | None = None


class FxsCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Fxs] | None = None


class DidNumberCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[DidNumber] | None = None


class Trunk(DN):
    auth_id: str | None = Field(None, alias="AuthID")
    auth_password: ConcealedPassword | None = Field(None, alias="AuthPassword")
    certificate: str | None = Field(None, alias="Certificate")
    certificate_expiration_date: str | None = Field(
        None, alias="CertificateExpirationDate"
    )
    certificate_name: str | None = Field(None, alias="CertificateName")
    configuration_issue: str | None = Field(None, alias="ConfigurationIssue")
    did_numbers: list[str] | None = Field(None, alias="DidNumbers")
    direction: DirectionType | None = Field(None, alias="Direction")
    disable_video: bool | None = Field(None, alias="DisableVideo")
    diversion_header: bool | None = Field(None, alias="DiversionHeader")
    e164_country_code: str | None = Field(None, alias="E164CountryCode")
    e164_process_incoming_number: bool | None = Field(
        None, alias="E164ProcessIncomingNumber"
    )
    emergency_geo_locations: list[EmergencyGeoTrunkLocation] | None = Field(
        None, alias="EmergencyGeoLocations"
    )
    enable_inbound_calls: bool | None = Field(None, alias="EnableInboundCalls")
    enable_outbound_calls: bool | None = Field(None, alias="EnableOutboundCalls")
    external_number: str | None = Field(None, alias="ExternalNumber")
    gateway: Gateway | None = Field(None, alias="Gateway")
    in_cid_formatting: list[CIDFormatting] | None = Field(None, alias="InCIDFormatting")
    ip_restriction: TypeOfIPRestriction | None = Field(None, alias="IPRestriction")
    is_online: bool | None = Field(None, alias="IsOnline")
    messaging: TrunkMessaging | None = Field(None, alias="Messaging")
    outbound_caller_id: str | None = Field(None, alias="OutboundCallerID")
    out_cid_formatting: list[CIDFormatting] | None = Field(
        None, alias="OutCIDFormatting"
    )
    public_info_groups: list[str] | None = Field(None, alias="PublicInfoGroups")
    public_i_pin_sip: str | None = Field(None, alias="PublicIPinSIP")
    publish_info: bool | None = Field(None, alias="PublishInfo")
    receive_extensions: list[Peer] | None = Field(None, alias="ReceiveExtensions")
    receive_info: bool | None = Field(None, alias="ReceiveInfo")
    remote_my_phone_uri_host: str | None = Field(None, alias="RemoteMyPhoneUriHost")
    remote_pbx_preffix: str | None = Field(None, alias="RemotePBXPreffix")
    routing_rules: list[InboundRule] | None = Field(None, alias="RoutingRules")
    script_name: str | None = Field(None, alias="ScriptName")
    secondary_registrar: str | None = Field(None, alias="SecondaryRegistrar")
    separate_auth_id: str | None = Field(None, alias="SeparateAuthId")
    simultaneous_calls: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="SimultaneousCalls"
    )
    tags: list[UserTag] | None = Field(None, alias="Tags")
    transport_restriction: TypeOfTransportRestriction | None = Field(
        None, alias="TransportRestriction"
    )
    trunk_reg_times: list[Variable] | None = Field(None, alias="TrunkRegTimes")
    tunnel_enabled: bool | None = Field(None, alias="TunnelEnabled")
    tunnel_remote_addr: str | None = Field(None, alias="TunnelRemoteAddr")
    tunnel_remote_port: conint(ge=-2147483648, le=2147483647) | None = Field(
        None, alias="TunnelRemotePort"
    )
    use_separate_auth_id: bool | None = Field(None, alias="UseSeparateAuthId")


class CreateTrunk(BaseModel):
    account_sid: str | None = Field(None, alias="AccountSid")
    api_key: str | None = Field(None, alias="ApiKey")
    default_rule: InboundRule | None = Field(None, alias="DefaultRule")
    groups: list[UserGroup] | None = Field(None, alias="Groups")
    name: str | None = Field(None, alias="Name")
    phone_numbers: list[ProviderPhone] | None = Field(None, alias="PhoneNumbers")
    type: TrunkType | None = Field(None, alias="Type")


class CallFlowApp(DN):
    compilation_last_success: AwareDatetime | None = Field(
        None, alias="CompilationLastSuccess"
    )
    compilation_result: str | None = Field(None, alias="CompilationResult")
    compilation_succeeded: bool | None = Field(None, alias="CompilationSucceeded")
    invalid_script: bool | None = Field(None, alias="InvalidScript")
    is_registered: bool | None = Field(None, alias="IsRegistered")
    name: str | None = Field(None, alias="Name")
    rejected_code: str | None = Field(None, alias="RejectedCode")
    routing_type: CfaRoutingType | None = Field(None, alias="RoutingType")
    script_code: str | None = Field(None, alias="ScriptCode")
    trunk: Trunk | None = Field(None, alias="Trunk")


class Microsoft365Integration(BaseModel):
    ad_users: ADUsersSyncConfiguration | None = Field(None, alias="AdUsers")
    application_id: str | None = Field(None, alias="ApplicationId")
    id: conint(ge=-2147483648, le=2147483647) | None = Field(None, alias="Id")
    shared_mailboxes_sync: UsersSyncConfiguration | None = Field(
        None, alias="SharedMailboxesSync"
    )
    tenant_id: str | None = Field(None, alias="TenantId")


class TrunkCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[Trunk] | None = None


class CallFlowAppCollectionResponse(BaseCollectionPaginationCountResponse):
    value: list[CallFlowApp] | None = None
