# Auto-generated file
from __future__ import annotations
from dataclasses import dataclass, field
from typing import Any, Optional, List, Union

from mercury_ocip.commands.base_command import (
    OCIType,
    OCICommand,
    OCIRequest,
    OCIDataResponse,
    Nillable,
    OCINil,
    OCITable,
)


@dataclass
class AuthenticationRequest(OCIRequest):
    """
    `AuthenticationRequest()`/AuthenticationResponse is 1st stage of the 2 stage OCI login process.


    Attributes:
        user_id (str):
    """

    user_id: str = field(default_factory=str, metadata={"alias": "userId"})


class AuthenticationResponse(OCIDataResponse):
    """
    `AuthenticationRequest()`/Response is 1st stage of the 2 stage OCI login process.


    Attributes:
        user_id (str): userId
        nonce (str): nonce
        password_algorithm (str): passwordAlgorithm
    """

    user_id: str = field(default_factory=str, metadata={"alias": "userId"})
    nonce: str = field(default_factory=str, metadata={"alias": "nonce"})
    password_algorithm: str = field(
        default_factory=str, metadata={"alias": "passwordAlgorithm"}
    )


class LoginRequest14sp4(OCIRequest):
    """
    `LoginRequest14sp4()`/LoginResponse14sp4 is 2nd stage of the 2 stage OCI login process.

    The signedPassword is not required for external authentication login from a trusted
    host (ACL).

    Attributes:
        user_id (str): userId
        signed_password (str): signedPassword *Optional*
        plain_text_password (str): plainTextPassword *Optional*
    """

    user_id: str = field(default_factory=str, metadata={"alias": "userId"})
    signed_password: Optional[str] = field(
        default=None, metadata={"alias": "signedPassword"}
    )
    plain_text_password: Optional[str] = field(
        default=None, metadata={"alias": "plainTextPassword"}
    )


class LoginResponse14sp4(OCIDataResponse):
    """
    `LoginRequest14sp4()`/Response14sp4 is 2nd stage of the 2 stage OCI login process.


    Attributes:
        login_type (str): loginType
        locale (str): locale
        encoding (str): encoding
        group_id (str): groupId *Optional*
        service_provider_id (str): serviceProviderId *Optional*
        is_enterprise (bool): isEnterprise
        password_expires_days (int): passwordExpiresDays *Optional*
        user_domain (str): userDomain
    """

    login_type: str = field(default_factory=str, metadata={"alias": "loginType"})
    locale: str = field(default_factory=str, metadata={"alias": "locale"})
    encoding: str = field(default_factory=str, metadata={"alias": "encoding"})
    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})
    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )
    is_enterprise: bool = field(
        default_factory=bool, metadata={"alias": "isEnterprise"}
    )
    password_expires_days: Optional[int] = field(
        default=None, metadata={"alias": "passwordExpiresDays"}
    )
    user_domain: str = field(default_factory=str, metadata={"alias": "userDomain"})


@dataclass(kw_only=True)
class AccessDevice(OCIType):
    """Uniquely identifies an Identity/device profile created anywhere in the system.

    Attributes:

        device_level (str):

        device_name (str):

    """

    device_level: str = field(metadata={"alias": "deviceLevel"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class AccessDeviceKey(OCIType):
    """Key to uniquely identify a system, service provider, or group device.

    Attributes:

        service_provider_id (Optional[str]):

        group_id (Optional[str]):

        device_name (str):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class AccessDeviceReorderEndpointIdentity(OCIType):
    """Access device end point identity in the context of a reorder command.
        The following elements are only used in XS data mode and ignored in AS data mode:
          privateIdentity

    Attributes:

        line_port (str):

        private_identity (Optional[str]):

    """

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )


@dataclass(kw_only=True)
class AccessDeviceTypeRename(OCIType):
    """Pair of DeviceManagementTagSetName

    Attributes:

        original_device_type_name (str):

        new_device_type_name (str):

    """

    original_device_type_name: str = field(metadata={"alias": "originalDeviceTypeName"})

    new_device_type_name: str = field(metadata={"alias": "newDeviceTypeName"})


@dataclass(kw_only=True)
class ActivatableDN(OCIType):
    """Activatable directory Number in E164 Format.

    Attributes:

        dn (str):

        activate (Optional[bool]):

    """

    dn: str = field(metadata={"alias": "DN"})

    activate: Optional[bool] = field(default=None, metadata={"alias": "activate"})


@dataclass(kw_only=True)
class ActivatableDNRange(OCIType):
    """Activatable directory number range. The minimum and maximum values are inclusive.

    Attributes:

        min_phone_number (str):

        max_phone_number (str):

        activate (Optional[bool]):

    """

    min_phone_number: str = field(metadata={"alias": "minPhoneNumber"})

    max_phone_number: str = field(metadata={"alias": "maxPhoneNumber"})

    activate: Optional[bool] = field(default=None, metadata={"alias": "activate"})


@dataclass(kw_only=True)
class AlternateNumberEntry21(OCIType):
    """Alternate Number Entry.

    Attributes:

        phone_number (Optional[Nillable[str]]):

        extension (Optional[Nillable[str]]):

        ring_pattern (Optional[Nillable[str]]):

        description (Optional[Nillable[str]]):

    """

    phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    extension: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "extension"}
    )

    ring_pattern: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "ringPattern"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["phone_number", "extension", "ring_pattern", "description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class AlternateUserIdEntry(OCIType):
    """Alternate user id.

    Attributes:

        alternate_user_id (str):

        description (Optional[str]):

    """

    alternate_user_id: str = field(metadata={"alias": "alternateUserId"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class AnnouncementFileKey(OCIType):
    """Uniquely identifies a file within a group or user repository.

    Attributes:

        name (str):

        media_file_type (str):

    """

    name: str = field(metadata={"alias": "name"})

    media_file_type: str = field(metadata={"alias": "mediaFileType"})


@dataclass(kw_only=True)
class AnnouncementFileLevelKey(OCIType):
    """Uniquely identifies a file within a group or user repository.
        Includes level to distinguish between group and user announcements
        in scenarios where both are listed.

    Attributes:

        name (str):

        media_file_type (str):

        level (str):

    """

    name: str = field(metadata={"alias": "name"})

    media_file_type: str = field(metadata={"alias": "mediaFileType"})

    level: str = field(metadata={"alias": "level"})


@dataclass(kw_only=True)
class AssignedGroupServicesEntry(OCIType):
    """Assigned Group Services List Entry.
        The isActive element is true, false, or could be missing completely.

    Attributes:

        service_name (str):

        is_active (Optional[bool]):

    """

    service_name: str = field(metadata={"alias": "serviceName"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class AssignedUserServicesEntry(OCIType):
    """Assigned User Services List Entry.
        The isActive element is true, false, or could be missing completely.

    Attributes:

        service_name (str):

        is_active (Optional[bool]):

    """

    service_name: str = field(metadata={"alias": "serviceName"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class AutoAttendantKeyConfigurationModifyEntry(OCIType):
    """The modify configuration entry of a key for Auto
        Attendant.
        The following data elements are only valid for Standard Auto
        Attendants:
        submenuId

    Attributes:

        description (Optional[Nillable[str]]):

        action (str):

        phone_number (Optional[Nillable[str]]):

        audio_file (Optional[Nillable[LabeledMediaFileResource]]):

        video_file (Optional[Nillable[LabeledMediaFileResource]]):

        submenu_id (Optional[Nillable[str]]):

    """

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    action: str = field(metadata={"alias": "action"})

    phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    audio_file: Optional[Nillable[LabeledMediaFileResource]] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[Nillable[LabeledMediaFileResource]] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    submenu_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "submenuId"}
    )

    def __post_init__(self):
        nillable_fields = [
            "description",
            "phone_number",
            "audio_file",
            "video_file",
            "submenu_id",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class AutoAttendantKeyConfigurationModifyEntry20(OCIType):
    """The modify configuration entry of a key for Auto Attendant.
        The following data elements are only used in AS data mode:
          audioFile
          videoFile
          submenuId
        The following data elements are only valid for Standard Auto
        Attendants:
          submenuId

    Attributes:

        description (Optional[Nillable[str]]):

        action (str):

        phone_number (Optional[Nillable[str]]):

        audio_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        video_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        submenu_id (Optional[Nillable[str]]):

    """

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    action: str = field(metadata={"alias": "action"})

    phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    audio_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    submenu_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "submenuId"}
    )

    def __post_init__(self):
        nillable_fields = [
            "description",
            "phone_number",
            "audio_file",
            "video_file",
            "submenu_id",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class AutoAttendantKeyConfigurationReadEntry19(OCIType):
    """The read configuration entry of a key for Auto
        Attendant.
        The following
        data elements are only valid for Standard Auto
        Attendants:
        submenuId

    Attributes:

        description (Optional[str]):

        action (str):

        phone_number (Optional[str]):

        audio_file_description (Optional[str]):

        audio_media_type (Optional[str]):

        video_file_description (Optional[str]):

        video_media_type (Optional[str]):

        submenu_id (Optional[str]):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    action: str = field(metadata={"alias": "action"})

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    audio_file_description: Optional[str] = field(
        default=None, metadata={"alias": "audioFileDescription"}
    )

    audio_media_type: Optional[str] = field(
        default=None, metadata={"alias": "audioMediaType"}
    )

    video_file_description: Optional[str] = field(
        default=None, metadata={"alias": "videoFileDescription"}
    )

    video_media_type: Optional[str] = field(
        default=None, metadata={"alias": "videoMediaType"}
    )

    submenu_id: Optional[str] = field(default=None, metadata={"alias": "submenuId"})


@dataclass(kw_only=True)
class AutoAttendantKeyModifyConfiguration(OCIType):
    """The modify configuration of a key for Auto
        Attendant.

    Attributes:

        key (str):

        entry (Nillable[AutoAttendantKeyConfigurationModifyEntry]):

    """

    key: str = field(metadata={"alias": "key"})

    entry: Nillable[AutoAttendantKeyConfigurationModifyEntry] = field(
        metadata={"alias": "entry"}
    )

    def __post_init__(self):
        nillable_fields = ["entry"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class AutoAttendantKeyModifyConfiguration20(OCIType):
    """The modify configuration of a key for Auto Attendant.

    Attributes:

        key (str):

        entry (Nillable[AutoAttendantKeyConfigurationModifyEntry20]):

    """

    key: str = field(metadata={"alias": "key"})

    entry: Nillable[AutoAttendantKeyConfigurationModifyEntry20] = field(
        metadata={"alias": "entry"}
    )

    def __post_init__(self):
        nillable_fields = ["entry"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class BCCTMaxConnections(OCIType):
    """Maximum number of BCCT Server Connections.
        Can either be unlimited or a bounded int quantity.

    Attributes:

        unlimited (Optional[bool]):

        quantity (Optional[int]):

    """

    unlimited: Optional[bool] = field(default=None, metadata={"alias": "unlimited"})

    quantity: Optional[int] = field(default=None, metadata={"alias": "quantity"})


@dataclass(kw_only=True)
class BroadWorksMobilityAlertingMobileNumberReplacementList(OCIType):
    """A list of Mobile Numbers to be alerted.
        By convention, an element of this type may be set nil to clear the list.

    Attributes:

        mobile_number (List[str]):

    """

    mobile_number: List[str] = field(metadata={"alias": "mobileNumber"})


@dataclass(kw_only=True)
class CallCenterAnnouncementDescriptionList(OCIType):
    """Contains list of file descriptions for audio or video files

    Attributes:

        file_description1 (Optional[str]):

        file_description2 (Optional[str]):

        file_description3 (Optional[str]):

        file_description4 (Optional[str]):

    """

    file_description1: Optional[str] = field(
        default=None, metadata={"alias": "fileDescription1"}
    )

    file_description2: Optional[str] = field(
        default=None, metadata={"alias": "fileDescription2"}
    )

    file_description3: Optional[str] = field(
        default=None, metadata={"alias": "fileDescription3"}
    )

    file_description4: Optional[str] = field(
        default=None, metadata={"alias": "fileDescription4"}
    )


@dataclass(kw_only=True)
class CallCenterAnnouncementFileListModify(OCIType):
    """Contains a list of audio or video files to modify.

    Attributes:

        file1 (Optional[Nillable[LabeledMediaFileResource]]):

        file2 (Optional[Nillable[LabeledMediaFileResource]]):

        file3 (Optional[Nillable[LabeledMediaFileResource]]):

        file4 (Optional[Nillable[LabeledMediaFileResource]]):

    """

    file1: Optional[Nillable[LabeledMediaFileResource]] = field(
        default=None, metadata={"alias": "file1"}
    )

    file2: Optional[Nillable[LabeledMediaFileResource]] = field(
        default=None, metadata={"alias": "file2"}
    )

    file3: Optional[Nillable[LabeledMediaFileResource]] = field(
        default=None, metadata={"alias": "file3"}
    )

    file4: Optional[Nillable[LabeledMediaFileResource]] = field(
        default=None, metadata={"alias": "file4"}
    )

    def __post_init__(self):
        nillable_fields = ["file1", "file2", "file3", "file4"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class CallCenterAnnouncementFileListModify20(OCIType):
    """Contains a list of announcement repository files

    Attributes:

        file1 (Optional[Nillable[AnnouncementFileLevelKey]]):

        file2 (Optional[Nillable[AnnouncementFileLevelKey]]):

        file3 (Optional[Nillable[AnnouncementFileLevelKey]]):

        file4 (Optional[Nillable[AnnouncementFileLevelKey]]):

    """

    file1: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "file1"}
    )

    file2: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "file2"}
    )

    file3: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "file3"}
    )

    file4: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "file4"}
    )

    def __post_init__(self):
        nillable_fields = ["file1", "file2", "file3", "file4"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class CallCenterAnnouncementMediaFileTypeList(OCIType):
    """Contains list of file media types for audio or video files

    Attributes:

        media_type1 (Optional[str]):

        media_type2 (Optional[str]):

        media_type3 (Optional[str]):

        media_type4 (Optional[str]):

    """

    media_type1: Optional[str] = field(default=None, metadata={"alias": "mediaType1"})

    media_type2: Optional[str] = field(default=None, metadata={"alias": "mediaType2"})

    media_type3: Optional[str] = field(default=None, metadata={"alias": "mediaType3"})

    media_type4: Optional[str] = field(default=None, metadata={"alias": "mediaType4"})


@dataclass(kw_only=True)
class CallCenterAnnouncementURLList(OCIType):
    """Contains list of urls

    Attributes:

        url1 (Optional[str]):

        url2 (Optional[str]):

        url3 (Optional[str]):

        url4 (Optional[str]):

    """

    url1: Optional[str] = field(default=None, metadata={"alias": "url1"})

    url2: Optional[str] = field(default=None, metadata={"alias": "url2"})

    url3: Optional[str] = field(default=None, metadata={"alias": "url3"})

    url4: Optional[str] = field(default=None, metadata={"alias": "url4"})


@dataclass(kw_only=True)
class CallCenterAnnouncementURLListModify(OCIType):
    """Contains a list of URLs for modify.

    Attributes:

        url1 (Optional[Nillable[str]]):

        url2 (Optional[Nillable[str]]):

        url3 (Optional[Nillable[str]]):

        url4 (Optional[Nillable[str]]):

    """

    url1: Optional[Nillable[str]] = field(default=None, metadata={"alias": "url1"})

    url2: Optional[Nillable[str]] = field(default=None, metadata={"alias": "url2"})

    url3: Optional[Nillable[str]] = field(default=None, metadata={"alias": "url3"})

    url4: Optional[Nillable[str]] = field(default=None, metadata={"alias": "url4"})

    def __post_init__(self):
        nillable_fields = ["url1", "url2", "url3", "url4"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class CallCenterReportTemplateKey(OCIType):
    """Uniquely identifies a call center report template created in the system.

    Attributes:

        template_level (str):

        template_name (str):

    """

    template_level: str = field(metadata={"alias": "templateLevel"})

    template_name: str = field(metadata={"alias": "templateName"})


@dataclass(kw_only=True)
class CallingNameRetrievalWhiteListReplacementList(OCIType):
    """A list of DNs to add to the CNAM call filtering DN white list.
        By convention, an element of this type may be set nil to clear the list.

    Attributes:

        number (List[str]):

    """

    number: List[str] = field(metadata={"alias": "number"})


@dataclass(kw_only=True)
class CallLogsEntry(OCIType):
    """Call Log entry describing a placed, received, or missed call.

    Attributes:

        country_code (Optional[str]):

        call_log_id (str):

        phone_number (str):

        name (str):

        time (str):

    """

    country_code: Optional[str] = field(default=None, metadata={"alias": "countryCode"})

    call_log_id: str = field(metadata={"alias": "callLogId"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    name: str = field(metadata={"alias": "name"})

    time: str = field(metadata={"alias": "time"})


@dataclass(kw_only=True)
class CallLogsEntry22(OCIType):
    """Call Log entry describing a placed, received, or missed call.

    Attributes:

        country_code (Optional[str]):

        call_log_id (str):

        phone_number (str):

        name (str):

        time (str):

        call_filtering_disposition (Optional[str]):

    """

    country_code: Optional[str] = field(default=None, metadata={"alias": "countryCode"})

    call_log_id: str = field(metadata={"alias": "callLogId"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    name: str = field(metadata={"alias": "name"})

    time: str = field(metadata={"alias": "time"})

    call_filtering_disposition: Optional[str] = field(
        default=None, metadata={"alias": "callFilteringDisposition"}
    )


@dataclass(kw_only=True)
class CallToNumber(OCIType):
    """Call to Number.

    Attributes:

        type (str):

        number (Optional[str]):

        extension (Optional[str]):

    """

    type: str = field(metadata={"alias": "type"})

    number: Optional[str] = field(default=None, metadata={"alias": "number"})

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})


@dataclass(kw_only=True)
class CollaborateBridgeMaximumParticipants(OCIType):
    """Maximum number of Collaborate bridge participants. Can either be unlimited or limited to a value between 3 and 999999.

    Attributes:

        unlimited (Optional[bool]):

        quantity (Optional[int]):

    """

    unlimited: Optional[bool] = field(default=None, metadata={"alias": "unlimited"})

    quantity: Optional[int] = field(default=None, metadata={"alias": "quantity"})


@dataclass(kw_only=True)
class CollaborateGracePeriodDuration(OCIType):
    """Collaborate grace period duration.

    Attributes:

        hours (int):

        minutes (int):

    """

    hours: int = field(metadata={"alias": "hours"})

    minutes: int = field(metadata={"alias": "minutes"})


@dataclass(kw_only=True)
class CollaborateRoomSchedule(OCIType):
    """Collaborate room schedule.

    Attributes:

        schedule_reservationless (Optional[object]):

        schedule_one_time (Optional[object]):

        schedule_recurring (Optional[object]):

    """

    schedule_reservationless: Optional[object] = field(
        default=None, metadata={"alias": "scheduleReservationless"}
    )

    schedule_one_time: Optional[object] = field(
        default=None, metadata={"alias": "scheduleOneTime"}
    )

    schedule_recurring: Optional[object] = field(
        default=None, metadata={"alias": "scheduleRecurring"}
    )


@dataclass(kw_only=True)
class CollaborateRoomScheduleDuration(OCIType):
    """Collaborate room schedule duration.

    Attributes:

        hours (int):

        minutes (int):

    """

    hours: int = field(metadata={"alias": "hours"})

    minutes: int = field(metadata={"alias": "minutes"})


@dataclass(kw_only=True)
class CommunicationBarringAuthorizationCodeConfiguration(OCIType):
    """Communication Barring Authorization Code add entry.

    Attributes:

        code (str):

        description (Optional[str]):

        network_class_of_service (Optional[str]):

    """

    code: str = field(metadata={"alias": "code"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class CommunicationBarringAuthorizationCodeEntry(OCIType):
    """Communication Barring Authorization Code entry.

    Attributes:

        code (str):

        description (Optional[str]):

    """

    code: str = field(metadata={"alias": "code"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class CommunicationBarringCallMeNowRule(OCIType):
    """Communication Barring Call Me Now Rule

    Attributes:

        criteria (str):

        action (str):

        call_timeout_seconds (Optional[Nillable[int]]):

    """

    criteria: str = field(metadata={"alias": "criteria"})

    action: str = field(metadata={"alias": "action"})

    call_timeout_seconds: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "callTimeoutSeconds"}
    )

    def __post_init__(self):
        nillable_fields = ["call_timeout_seconds"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class CommunicationBarringIncomingRule(OCIType):
    """Communication Barring Incoming Rule

    Attributes:

        digit_pattern_criteria (str):

        action (str):

        call_timeout_seconds (Optional[int]):

        time_schedule (Optional[str]):

        holiday_schedule (Optional[str]):

        priority (float):

    """

    digit_pattern_criteria: str = field(metadata={"alias": "digitPatternCriteria"})

    action: str = field(metadata={"alias": "action"})

    call_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "callTimeoutSeconds"}
    )

    time_schedule: Optional[str] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[str] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    priority: float = field(metadata={"alias": "priority"})


@dataclass(kw_only=True)
class CommunicationBarringIncomingRule19sp1(OCIType):
    """Communication Barring Incoming Rule

    Attributes:

        digit_pattern_criteria (Optional[str]):

        incoming_criteria (Optional[str]):

        action (str):

        call_timeout_seconds (Optional[int]):

        time_schedule (Optional[str]):

        holiday_schedule (Optional[str]):

        priority (float):

    """

    digit_pattern_criteria: Optional[str] = field(
        default=None, metadata={"alias": "digitPatternCriteria"}
    )

    incoming_criteria: Optional[str] = field(
        default=None, metadata={"alias": "incomingCriteria"}
    )

    action: str = field(metadata={"alias": "action"})

    call_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "callTimeoutSeconds"}
    )

    time_schedule: Optional[str] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[str] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    priority: float = field(metadata={"alias": "priority"})


@dataclass(kw_only=True)
class CommunicationBarringOriginatingRule(OCIType):
    """Communication Barring Originating Rule

    Attributes:

        criteria (str):

        action (str):

        treatment_id (Optional[Nillable[str]]):

        transfer_number (Optional[Nillable[str]]):

        call_timeout_seconds (Optional[Nillable[int]]):

    """

    criteria: str = field(metadata={"alias": "criteria"})

    action: str = field(metadata={"alias": "action"})

    treatment_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "treatmentId"}
    )

    transfer_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "transferNumber"}
    )

    call_timeout_seconds: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "callTimeoutSeconds"}
    )

    def __post_init__(self):
        nillable_fields = ["treatment_id", "transfer_number", "call_timeout_seconds"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class CommunicationBarringProfileReplacementList(OCIType):
    """A list of communication barring profiles that replaces a previously configured list.
        By convention, an element of this type may be set nil to clear the list.

    Attributes:

        profile_name (List[str]):

    """

    profile_name: List[str] = field(metadata={"alias": "profileName"})


@dataclass(kw_only=True)
class CommunicationBarringRedirectingRule(OCIType):
    """Communication Barring Redirecting Rule

    Attributes:

        criteria (str):

        action (str):

        call_timeout_seconds (Optional[Nillable[int]]):

    """

    criteria: str = field(metadata={"alias": "criteria"})

    action: str = field(metadata={"alias": "action"})

    call_timeout_seconds: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "callTimeoutSeconds"}
    )

    def __post_init__(self):
        nillable_fields = ["call_timeout_seconds"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class Contact(OCIType):
    """Contact information.

    Attributes:

        contact_name (Optional[Nillable[str]]):

        contact_number (Optional[Nillable[str]]):

        contact_email (Optional[Nillable[str]]):

    """

    contact_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "contactName"}
    )

    contact_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "contactNumber"}
    )

    contact_email: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "contactEmail"}
    )

    def __post_init__(self):
        nillable_fields = ["contact_name", "contact_number", "contact_email"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class CriteriaActivation(OCIType):
    """Criteria active status indicator

    Attributes:

        criteria_name (str):

        is_active (bool):

    """

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class CriteriaFromDn(OCIType):
    """The from dn criteria used within an add/get request.

    Attributes:

        from_dn_criteria_selection (str):

        include_anonymous_callers (bool):

        include_unavailable_callers (bool):

        phone_number (Optional[List[str]]):

    """

    from_dn_criteria_selection: str = field(
        metadata={"alias": "fromDnCriteriaSelection"}
    )

    include_anonymous_callers: bool = field(
        metadata={"alias": "includeAnonymousCallers"}
    )

    include_unavailable_callers: bool = field(
        metadata={"alias": "includeUnavailableCallers"}
    )

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )


@dataclass(kw_only=True)
class CriteriaFromDn23(OCIType):
    """The from dn criteria added with the option for selecting internal and external callers, used within an add/get request.

    Attributes:

        from_dn_criteria_selection (str):

        include_anonymous_callers (bool):

        include_unavailable_callers (bool):

        include_internal_callers (bool):

        include_external_callers (bool):

        phone_number (Optional[List[str]]):

    """

    from_dn_criteria_selection: str = field(
        metadata={"alias": "fromDnCriteriaSelection"}
    )

    include_anonymous_callers: bool = field(
        metadata={"alias": "includeAnonymousCallers"}
    )

    include_unavailable_callers: bool = field(
        metadata={"alias": "includeUnavailableCallers"}
    )

    include_internal_callers: bool = field(metadata={"alias": "includeInternalCallers"})

    include_external_callers: bool = field(metadata={"alias": "includeExternalCallers"})

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )


@dataclass(kw_only=True)
class CriteriaFromDnModify(OCIType):
    """The from dn criteria used within a modify request.

    Attributes:

        from_dn_criteria_selection (Optional[str]):

        include_anonymous_callers (Optional[bool]):

        include_unavailable_callers (Optional[bool]):

        phone_number_list (Optional[Nillable[CriteriaReplacementDNList]]):

    """

    from_dn_criteria_selection: Optional[str] = field(
        default=None, metadata={"alias": "fromDnCriteriaSelection"}
    )

    include_anonymous_callers: Optional[bool] = field(
        default=None, metadata={"alias": "includeAnonymousCallers"}
    )

    include_unavailable_callers: Optional[bool] = field(
        default=None, metadata={"alias": "includeUnavailableCallers"}
    )

    phone_number_list: Optional[Nillable[CriteriaReplacementDNList]] = field(
        default=None, metadata={"alias": "phoneNumberList"}
    )

    def __post_init__(self):
        nillable_fields = ["phone_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class CriteriaFromDnModify23(OCIType):
    """The from dn criteria added with the option for selecting internal and external callers, used within a modify request.

    Attributes:

        from_dn_criteria_selection (Optional[str]):

        include_anonymous_callers (Optional[bool]):

        include_unavailable_callers (Optional[bool]):

        include_internal_callers (Optional[bool]):

        include_external_callers (Optional[bool]):

        phone_number_list (Optional[Nillable[CriteriaReplacementDNList]]):

    """

    from_dn_criteria_selection: Optional[str] = field(
        default=None, metadata={"alias": "fromDnCriteriaSelection"}
    )

    include_anonymous_callers: Optional[bool] = field(
        default=None, metadata={"alias": "includeAnonymousCallers"}
    )

    include_unavailable_callers: Optional[bool] = field(
        default=None, metadata={"alias": "includeUnavailableCallers"}
    )

    include_internal_callers: Optional[bool] = field(
        default=None, metadata={"alias": "includeInternalCallers"}
    )

    include_external_callers: Optional[bool] = field(
        default=None, metadata={"alias": "includeExternalCallers"}
    )

    phone_number_list: Optional[Nillable[CriteriaReplacementDNList]] = field(
        default=None, metadata={"alias": "phoneNumberList"}
    )

    def __post_init__(self):
        nillable_fields = ["phone_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class CriteriaReplacementDNList(OCIType):
    """A list of criteria DNs that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        phone_number (List[str]):

    """

    phone_number: List[str] = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class DefaultNetworkClassOfService(OCIType):
    """The default Network Class of Service to set during assignation/unassignation.

    Attributes:

        use_existing (Optional[bool]):

        network_class_of_service_name (Optional[str]):

    """

    use_existing: Optional[bool] = field(
        default=None, metadata={"alias": "useExisting"}
    )

    network_class_of_service_name: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfServiceName"}
    )


@dataclass(kw_only=True)
class DepartmentKey(OCIType):
    """Uniquely identifies a department system-wide.
        Departments are contained in either an enterprise or a group. Enterprise departments can be
        used by any or all groups within the enterprise. Department names are unique within a group and
        within an enterprise, but the same department name can exist in 2 different groups or in both
        a group and its parent enterprise. Therefore, to uniquely identify a department, we must know
        the department name and which enterprise or group contains the department.
        This type is extended by group and enterprise department keys.

    Attributes:

    """


@dataclass(kw_only=True)
class DeviceManagementDeviceTypeModifyOptions22(OCIType):
    """Device Management System device type options during a modify request.

        The following data elements are only used in AS data mode and ignored in XS data mode:
          enableDeviceActivation
          deviceModel

    Attributes:

        device_access_protocol (Optional[str]):

        tag_mode (Optional[str]):

        tag_set (Optional[Nillable[str]]):

        allow_device_profile_custom_tag_set (Optional[bool]):

        allow_group_custom_tag_set (Optional[bool]):

        allow_sp_custom_tag_set (Optional[bool]):

        send_email_upon_reset_failure (Optional[bool]):

        device_access_net_address (Optional[Nillable[str]]):

        device_access_port (Optional[Nillable[int]]):

        device_access_context (Optional[Nillable[str]]):

        default_device_language (Optional[Nillable[str]]):

        default_device_encoding (Optional[Nillable[str]]):

        access_device_credentials (Optional[Nillable[DeviceManagementUserNamePassword16]]):

        use_http_digest_authentication (Optional[bool]):

        mac_based_file_authentication (Optional[bool]):

        user_name_password_file_authentication (Optional[bool]):

        mac_in_non_request_uri (Optional[bool]):

        mac_in_cert (Optional[bool]):

        mac_format_in_non_request_uri (Optional[Nillable[str]]):

        enable_device_activation (Optional[bool]):

        device_model (Optional[Nillable[str]]):

    """

    device_access_protocol: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessProtocol"}
    )

    tag_mode: Optional[str] = field(default=None, metadata={"alias": "tagMode"})

    tag_set: Optional[Nillable[str]] = field(default=None, metadata={"alias": "tagSet"})

    allow_device_profile_custom_tag_set: Optional[bool] = field(
        default=None, metadata={"alias": "allowDeviceProfileCustomTagSet"}
    )

    allow_group_custom_tag_set: Optional[bool] = field(
        default=None, metadata={"alias": "allowGroupCustomTagSet"}
    )

    allow_sp_custom_tag_set: Optional[bool] = field(
        default=None, metadata={"alias": "allowSpCustomTagSet"}
    )

    send_email_upon_reset_failure: Optional[bool] = field(
        default=None, metadata={"alias": "sendEmailUponResetFailure"}
    )

    device_access_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceAccessNetAddress"}
    )

    device_access_port: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "deviceAccessPort"}
    )

    device_access_context: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceAccessContext"}
    )

    default_device_language: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultDeviceLanguage"}
    )

    default_device_encoding: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultDeviceEncoding"}
    )

    access_device_credentials: Optional[
        Nillable[DeviceManagementUserNamePassword16]
    ] = field(default=None, metadata={"alias": "accessDeviceCredentials"})

    use_http_digest_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "useHttpDigestAuthentication"}
    )

    mac_based_file_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "macBasedFileAuthentication"}
    )

    user_name_password_file_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "userNamePasswordFileAuthentication"}
    )

    mac_in_non_request_uri: Optional[bool] = field(
        default=None, metadata={"alias": "macInNonRequestURI"}
    )

    mac_in_cert: Optional[bool] = field(default=None, metadata={"alias": "macInCert"})

    mac_format_in_non_request_uri: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "macFormatInNonRequestURI"}
    )

    enable_device_activation: Optional[bool] = field(
        default=None, metadata={"alias": "enableDeviceActivation"}
    )

    device_model: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceModel"}
    )

    def __post_init__(self):
        nillable_fields = [
            "tag_set",
            "device_access_net_address",
            "device_access_port",
            "device_access_context",
            "default_device_language",
            "default_device_encoding",
            "access_device_credentials",
            "mac_format_in_non_request_uri",
            "device_model",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class DeviceManagementDeviceTypeModifyOptions22V2(OCIType):
    """Device Management System device type options during a modify request.

        The following data elements are only used in AS data mode and ignored in XS data mode:
          enableDeviceActivation
          deviceModel
          autoLinkingDeviceType
          autoCreateDevicesLevel

    Attributes:

        device_access_protocol (Optional[str]):

        tag_mode (Optional[str]):

        tag_set (Optional[Nillable[str]]):

        allow_device_profile_custom_tag_set (Optional[bool]):

        allow_group_custom_tag_set (Optional[bool]):

        allow_sp_custom_tag_set (Optional[bool]):

        send_email_upon_reset_failure (Optional[bool]):

        device_access_net_address (Optional[Nillable[str]]):

        device_access_port (Optional[Nillable[int]]):

        device_access_context (Optional[Nillable[str]]):

        default_device_language (Optional[Nillable[str]]):

        default_device_encoding (Optional[Nillable[str]]):

        access_device_credentials (Optional[Nillable[DeviceManagementUserNamePassword16]]):

        use_http_digest_authentication (Optional[bool]):

        mac_based_file_authentication (Optional[bool]):

        user_name_password_file_authentication (Optional[bool]):

        mac_in_non_request_uri (Optional[bool]):

        mac_in_cert (Optional[bool]):

        mac_format_in_non_request_uri (Optional[Nillable[str]]):

        enable_device_activation (Optional[bool]):

        device_model (Optional[Nillable[str]]):

        auto_linking_device_type (Optional[Nillable[str]]):

        auto_create_devices_level (Optional[str]):

    """

    device_access_protocol: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessProtocol"}
    )

    tag_mode: Optional[str] = field(default=None, metadata={"alias": "tagMode"})

    tag_set: Optional[Nillable[str]] = field(default=None, metadata={"alias": "tagSet"})

    allow_device_profile_custom_tag_set: Optional[bool] = field(
        default=None, metadata={"alias": "allowDeviceProfileCustomTagSet"}
    )

    allow_group_custom_tag_set: Optional[bool] = field(
        default=None, metadata={"alias": "allowGroupCustomTagSet"}
    )

    allow_sp_custom_tag_set: Optional[bool] = field(
        default=None, metadata={"alias": "allowSpCustomTagSet"}
    )

    send_email_upon_reset_failure: Optional[bool] = field(
        default=None, metadata={"alias": "sendEmailUponResetFailure"}
    )

    device_access_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceAccessNetAddress"}
    )

    device_access_port: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "deviceAccessPort"}
    )

    device_access_context: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceAccessContext"}
    )

    default_device_language: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultDeviceLanguage"}
    )

    default_device_encoding: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultDeviceEncoding"}
    )

    access_device_credentials: Optional[
        Nillable[DeviceManagementUserNamePassword16]
    ] = field(default=None, metadata={"alias": "accessDeviceCredentials"})

    use_http_digest_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "useHttpDigestAuthentication"}
    )

    mac_based_file_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "macBasedFileAuthentication"}
    )

    user_name_password_file_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "userNamePasswordFileAuthentication"}
    )

    mac_in_non_request_uri: Optional[bool] = field(
        default=None, metadata={"alias": "macInNonRequestURI"}
    )

    mac_in_cert: Optional[bool] = field(default=None, metadata={"alias": "macInCert"})

    mac_format_in_non_request_uri: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "macFormatInNonRequestURI"}
    )

    enable_device_activation: Optional[bool] = field(
        default=None, metadata={"alias": "enableDeviceActivation"}
    )

    device_model: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceModel"}
    )

    auto_linking_device_type: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "autoLinkingDeviceType"}
    )

    auto_create_devices_level: Optional[str] = field(
        default=None, metadata={"alias": "autoCreateDevicesLevel"}
    )

    def __post_init__(self):
        nillable_fields = [
            "tag_set",
            "device_access_net_address",
            "device_access_port",
            "device_access_context",
            "default_device_language",
            "default_device_encoding",
            "access_device_credentials",
            "mac_format_in_non_request_uri",
            "device_model",
            "auto_linking_device_type",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class DeviceManagementDeviceTypeModifyOptions22V3(OCIType):
    """Device Management System device type options during a modify request.

        The following data elements are only used in AS data mode and ignored in XS data mode:
          enableDeviceActivation
          deviceModel
          autoLinkingDeviceType
          autoCreateDevicesLevel
          isActivationCodeThroughMessagingServer
          bearerFileAuthentication

    Attributes:

        device_access_protocol (Optional[str]):

        tag_mode (Optional[str]):

        tag_set (Optional[Nillable[str]]):

        allow_device_profile_custom_tag_set (Optional[bool]):

        allow_group_custom_tag_set (Optional[bool]):

        allow_sp_custom_tag_set (Optional[bool]):

        send_email_upon_reset_failure (Optional[bool]):

        device_access_net_address (Optional[Nillable[str]]):

        device_access_port (Optional[Nillable[int]]):

        device_access_context (Optional[Nillable[str]]):

        default_device_language (Optional[Nillable[str]]):

        default_device_encoding (Optional[Nillable[str]]):

        access_device_credentials (Optional[Nillable[DeviceManagementUserNamePassword16]]):

        use_http_digest_authentication (Optional[bool]):

        mac_based_file_authentication (Optional[bool]):

        user_name_password_file_authentication (Optional[bool]):

        mac_in_non_request_uri (Optional[bool]):

        mac_in_cert (Optional[bool]):

        mac_format_in_non_request_uri (Optional[Nillable[str]]):

        enable_device_activation (Optional[bool]):

        device_model (Optional[Nillable[str]]):

        auto_linking_device_type (Optional[Nillable[str]]):

        auto_create_devices_level (Optional[str]):

        is_activation_code_through_messaging_server (Optional[bool]):

        bearer_file_authentication (Optional[bool]):

    """

    device_access_protocol: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessProtocol"}
    )

    tag_mode: Optional[str] = field(default=None, metadata={"alias": "tagMode"})

    tag_set: Optional[Nillable[str]] = field(default=None, metadata={"alias": "tagSet"})

    allow_device_profile_custom_tag_set: Optional[bool] = field(
        default=None, metadata={"alias": "allowDeviceProfileCustomTagSet"}
    )

    allow_group_custom_tag_set: Optional[bool] = field(
        default=None, metadata={"alias": "allowGroupCustomTagSet"}
    )

    allow_sp_custom_tag_set: Optional[bool] = field(
        default=None, metadata={"alias": "allowSpCustomTagSet"}
    )

    send_email_upon_reset_failure: Optional[bool] = field(
        default=None, metadata={"alias": "sendEmailUponResetFailure"}
    )

    device_access_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceAccessNetAddress"}
    )

    device_access_port: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "deviceAccessPort"}
    )

    device_access_context: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceAccessContext"}
    )

    default_device_language: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultDeviceLanguage"}
    )

    default_device_encoding: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultDeviceEncoding"}
    )

    access_device_credentials: Optional[
        Nillable[DeviceManagementUserNamePassword16]
    ] = field(default=None, metadata={"alias": "accessDeviceCredentials"})

    use_http_digest_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "useHttpDigestAuthentication"}
    )

    mac_based_file_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "macBasedFileAuthentication"}
    )

    user_name_password_file_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "userNamePasswordFileAuthentication"}
    )

    mac_in_non_request_uri: Optional[bool] = field(
        default=None, metadata={"alias": "macInNonRequestURI"}
    )

    mac_in_cert: Optional[bool] = field(default=None, metadata={"alias": "macInCert"})

    mac_format_in_non_request_uri: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "macFormatInNonRequestURI"}
    )

    enable_device_activation: Optional[bool] = field(
        default=None, metadata={"alias": "enableDeviceActivation"}
    )

    device_model: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceModel"}
    )

    auto_linking_device_type: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "autoLinkingDeviceType"}
    )

    auto_create_devices_level: Optional[str] = field(
        default=None, metadata={"alias": "autoCreateDevicesLevel"}
    )

    is_activation_code_through_messaging_server: Optional[bool] = field(
        default=None, metadata={"alias": "isActivationCodeThroughMessagingServer"}
    )

    bearer_file_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "bearerFileAuthentication"}
    )

    def __post_init__(self):
        nillable_fields = [
            "tag_set",
            "device_access_net_address",
            "device_access_port",
            "device_access_context",
            "default_device_language",
            "default_device_encoding",
            "access_device_credentials",
            "mac_format_in_non_request_uri",
            "device_model",
            "auto_linking_device_type",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class DeviceManagementDeviceTypeOptionsRead22V2(OCIType):
    """Device Management System device type options.

        Note: For the elements listed below, when device configuration is set to deviceManagement, those elements apply to the creation of the Polycom Phone Services directory file only.
              For all other files, they are not used. Those elements are instead configured on a per-file basis at the Device Type File level.
              When device configuration is set to legacy, those elements apply to all configuration files.

              useHttpDigestAuthentication
              macBasedFileAuthentication
              userNamePasswordFileAuthentication
              macInNonRequestURI
              macInCert
              macFormatInNonRequestURI

    Attributes:

        device_access_protocol (str):

        tag_mode (str):

        tag_set (Optional[str]):

        allow_device_profile_custom_tag_set (bool):

        allow_group_custom_tag_set (bool):

        allow_sp_custom_tag_set (bool):

        send_email_upon_reset_failure (bool):

        device_access_net_address (Optional[str]):

        device_access_port (Optional[int]):

        device_access_context (Optional[str]):

        device_access_uri (Optional[str]):

        default_device_language (Optional[str]):

        default_device_encoding (Optional[str]):

        access_device_credentials (Optional[str]):

        use_http_digest_authentication (bool):

        mac_based_file_authentication (bool):

        user_name_password_file_authentication (bool):

        mac_in_non_request_uri (bool):

        mac_in_cert (bool):

        mac_format_in_non_request_uri (Optional[str]):

    """

    device_access_protocol: str = field(metadata={"alias": "deviceAccessProtocol"})

    tag_mode: str = field(metadata={"alias": "tagMode"})

    tag_set: Optional[str] = field(default=None, metadata={"alias": "tagSet"})

    allow_device_profile_custom_tag_set: bool = field(
        metadata={"alias": "allowDeviceProfileCustomTagSet"}
    )

    allow_group_custom_tag_set: bool = field(
        metadata={"alias": "allowGroupCustomTagSet"}
    )

    allow_sp_custom_tag_set: bool = field(metadata={"alias": "allowSpCustomTagSet"})

    send_email_upon_reset_failure: bool = field(
        metadata={"alias": "sendEmailUponResetFailure"}
    )

    device_access_net_address: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessNetAddress"}
    )

    device_access_port: Optional[int] = field(
        default=None, metadata={"alias": "deviceAccessPort"}
    )

    device_access_context: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessContext"}
    )

    device_access_uri: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessURI"}
    )

    default_device_language: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceLanguage"}
    )

    default_device_encoding: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceEncoding"}
    )

    access_device_credentials: Optional[str] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )

    use_http_digest_authentication: bool = field(
        metadata={"alias": "useHttpDigestAuthentication"}
    )

    mac_based_file_authentication: bool = field(
        metadata={"alias": "macBasedFileAuthentication"}
    )

    user_name_password_file_authentication: bool = field(
        metadata={"alias": "userNamePasswordFileAuthentication"}
    )

    mac_in_non_request_uri: bool = field(metadata={"alias": "macInNonRequestURI"})

    mac_in_cert: bool = field(metadata={"alias": "macInCert"})

    mac_format_in_non_request_uri: Optional[str] = field(
        default=None, metadata={"alias": "macFormatInNonRequestURI"}
    )


@dataclass(kw_only=True)
class DeviceManagementDeviceTypeOptionsRead22V3(OCIType):
    """Device Management System device type options.

        Note: For the elements listed below, when device configuration is set to deviceManagement, those elements apply to the creation of the Polycom Phone Services directory file only.
              For all other files, they are not used. Those elements are instead configured on a per-file basis at the Device Type File level.
              When device configuration is set to legacy, those elements apply to all configuration files.

              useHttpDigestAuthentication
              macBasedFileAuthentication
              userNamePasswordFileAuthentication
              bearerFileAuthentication
              macInNonRequestURI
              macInCert
              macFormatInNonRequestURI

        The following data elements are only used in AS data mode:
              enableDeviceActivation, value ‘false’ is returned

        The following elements are only used in AS data mode and not returned in XS data mode
              deviceModel

    Attributes:

        device_access_protocol (str):

        tag_mode (str):

        tag_set (Optional[str]):

        allow_device_profile_custom_tag_set (bool):

        allow_group_custom_tag_set (bool):

        allow_sp_custom_tag_set (bool):

        send_email_upon_reset_failure (bool):

        device_access_net_address (Optional[str]):

        device_access_port (Optional[int]):

        device_access_context (Optional[str]):

        device_access_uri (Optional[str]):

        default_device_language (Optional[str]):

        default_device_encoding (Optional[str]):

        access_device_credentials (Optional[str]):

        use_http_digest_authentication (bool):

        mac_based_file_authentication (bool):

        user_name_password_file_authentication (bool):

        mac_in_non_request_uri (bool):

        mac_in_cert (bool):

        mac_format_in_non_request_uri (Optional[str]):

        enable_device_activation (bool):

        device_model (Optional[str]):

    """

    device_access_protocol: str = field(metadata={"alias": "deviceAccessProtocol"})

    tag_mode: str = field(metadata={"alias": "tagMode"})

    tag_set: Optional[str] = field(default=None, metadata={"alias": "tagSet"})

    allow_device_profile_custom_tag_set: bool = field(
        metadata={"alias": "allowDeviceProfileCustomTagSet"}
    )

    allow_group_custom_tag_set: bool = field(
        metadata={"alias": "allowGroupCustomTagSet"}
    )

    allow_sp_custom_tag_set: bool = field(metadata={"alias": "allowSpCustomTagSet"})

    send_email_upon_reset_failure: bool = field(
        metadata={"alias": "sendEmailUponResetFailure"}
    )

    device_access_net_address: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessNetAddress"}
    )

    device_access_port: Optional[int] = field(
        default=None, metadata={"alias": "deviceAccessPort"}
    )

    device_access_context: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessContext"}
    )

    device_access_uri: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessURI"}
    )

    default_device_language: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceLanguage"}
    )

    default_device_encoding: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceEncoding"}
    )

    access_device_credentials: Optional[str] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )

    use_http_digest_authentication: bool = field(
        metadata={"alias": "useHttpDigestAuthentication"}
    )

    mac_based_file_authentication: bool = field(
        metadata={"alias": "macBasedFileAuthentication"}
    )

    user_name_password_file_authentication: bool = field(
        metadata={"alias": "userNamePasswordFileAuthentication"}
    )

    mac_in_non_request_uri: bool = field(metadata={"alias": "macInNonRequestURI"})

    mac_in_cert: bool = field(metadata={"alias": "macInCert"})

    mac_format_in_non_request_uri: Optional[str] = field(
        default=None, metadata={"alias": "macFormatInNonRequestURI"}
    )

    enable_device_activation: bool = field(metadata={"alias": "enableDeviceActivation"})

    device_model: Optional[str] = field(default=None, metadata={"alias": "deviceModel"})


@dataclass(kw_only=True)
class DeviceManagementDeviceTypeOptionsRead22V4(OCIType):
    """Device Management System device type options.

        Note: For the elements listed below, when device configuration is set to deviceManagement, those elements apply to the creation of the Polycom Phone Services directory file only.
              For all other files, they are not used. Those elements are instead configured on a per-file basis at the Device Type File level.
              When device configuration is set to legacy, those elements apply to all configuration files.

              useHttpDigestAuthentication
              macBasedFileAuthentication
              userNamePasswordFileAuthentication
              macInNonRequestURI
              macInCert
              macFormatInNonRequestURI

        The following data elements are only used in AS data mode:
              enableDeviceActivation, value ‘false’ is returned
              supportLinks, value ‘Not Supported’ is returned

        The following elements are only used in AS data mode and not returned in XS data mode
              deviceModel

    Attributes:

        device_access_protocol (str):

        tag_mode (str):

        tag_set (Optional[str]):

        allow_device_profile_custom_tag_set (bool):

        allow_group_custom_tag_set (bool):

        allow_sp_custom_tag_set (bool):

        send_email_upon_reset_failure (bool):

        device_access_net_address (Optional[str]):

        device_access_port (Optional[int]):

        device_access_context (Optional[str]):

        device_access_uri (Optional[str]):

        default_device_language (Optional[str]):

        default_device_encoding (Optional[str]):

        access_device_credentials (Optional[str]):

        use_http_digest_authentication (bool):

        mac_based_file_authentication (bool):

        user_name_password_file_authentication (bool):

        mac_in_non_request_uri (bool):

        mac_in_cert (bool):

        mac_format_in_non_request_uri (Optional[str]):

        enable_device_activation (bool):

        device_model (Optional[str]):

        support_links (str):

    """

    device_access_protocol: str = field(metadata={"alias": "deviceAccessProtocol"})

    tag_mode: str = field(metadata={"alias": "tagMode"})

    tag_set: Optional[str] = field(default=None, metadata={"alias": "tagSet"})

    allow_device_profile_custom_tag_set: bool = field(
        metadata={"alias": "allowDeviceProfileCustomTagSet"}
    )

    allow_group_custom_tag_set: bool = field(
        metadata={"alias": "allowGroupCustomTagSet"}
    )

    allow_sp_custom_tag_set: bool = field(metadata={"alias": "allowSpCustomTagSet"})

    send_email_upon_reset_failure: bool = field(
        metadata={"alias": "sendEmailUponResetFailure"}
    )

    device_access_net_address: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessNetAddress"}
    )

    device_access_port: Optional[int] = field(
        default=None, metadata={"alias": "deviceAccessPort"}
    )

    device_access_context: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessContext"}
    )

    device_access_uri: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessURI"}
    )

    default_device_language: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceLanguage"}
    )

    default_device_encoding: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceEncoding"}
    )

    access_device_credentials: Optional[str] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )

    use_http_digest_authentication: bool = field(
        metadata={"alias": "useHttpDigestAuthentication"}
    )

    mac_based_file_authentication: bool = field(
        metadata={"alias": "macBasedFileAuthentication"}
    )

    user_name_password_file_authentication: bool = field(
        metadata={"alias": "userNamePasswordFileAuthentication"}
    )

    mac_in_non_request_uri: bool = field(metadata={"alias": "macInNonRequestURI"})

    mac_in_cert: bool = field(metadata={"alias": "macInCert"})

    mac_format_in_non_request_uri: Optional[str] = field(
        default=None, metadata={"alias": "macFormatInNonRequestURI"}
    )

    enable_device_activation: bool = field(metadata={"alias": "enableDeviceActivation"})

    device_model: Optional[str] = field(default=None, metadata={"alias": "deviceModel"})

    support_links: str = field(metadata={"alias": "supportLinks"})


@dataclass(kw_only=True)
class DeviceManagementDeviceTypeOptionsRead22V5(OCIType):
    """Device Management System device type options.

        Note: For the elements listed below, when device configuration is set to deviceManagement, those elements apply to the creation of the Polycom Phone Services directory file only.
              For all other files, they are not used. Those elements are instead configured on a per-file basis at the Device Type File level.
              When device configuration is set to legacy, those elements apply to all configuration files.

              useHttpDigestAuthentication
              macBasedFileAuthentication
              userNamePasswordFileAuthentication
              macInNonRequestURI
              macInCert
              macFormatInNonRequestURI

        The following data elements are only used in AS data mode:
              enableDeviceActivation, value \"false\" is returned
              supportLinks, value \"Not Supported\" is returned

        The following elements are only used in AS data mode and not returned in XS data mode
              deviceModel
              autoLinkingDeviceType
              autoCreateDevicesLevel

    Attributes:

        device_access_protocol (str):

        tag_mode (str):

        tag_set (Optional[str]):

        allow_device_profile_custom_tag_set (bool):

        allow_group_custom_tag_set (bool):

        allow_sp_custom_tag_set (bool):

        send_email_upon_reset_failure (bool):

        device_access_net_address (Optional[str]):

        device_access_port (Optional[int]):

        device_access_context (Optional[str]):

        device_access_uri (Optional[str]):

        default_device_language (Optional[str]):

        default_device_encoding (Optional[str]):

        access_device_credentials (Optional[str]):

        use_http_digest_authentication (bool):

        mac_based_file_authentication (bool):

        user_name_password_file_authentication (bool):

        mac_in_non_request_uri (bool):

        mac_in_cert (bool):

        mac_format_in_non_request_uri (Optional[str]):

        enable_device_activation (bool):

        device_model (Optional[str]):

        support_links (str):

        auto_linking_device_type (Optional[str]):

        auto_create_devices_level (Optional[str]):

    """

    device_access_protocol: str = field(metadata={"alias": "deviceAccessProtocol"})

    tag_mode: str = field(metadata={"alias": "tagMode"})

    tag_set: Optional[str] = field(default=None, metadata={"alias": "tagSet"})

    allow_device_profile_custom_tag_set: bool = field(
        metadata={"alias": "allowDeviceProfileCustomTagSet"}
    )

    allow_group_custom_tag_set: bool = field(
        metadata={"alias": "allowGroupCustomTagSet"}
    )

    allow_sp_custom_tag_set: bool = field(metadata={"alias": "allowSpCustomTagSet"})

    send_email_upon_reset_failure: bool = field(
        metadata={"alias": "sendEmailUponResetFailure"}
    )

    device_access_net_address: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessNetAddress"}
    )

    device_access_port: Optional[int] = field(
        default=None, metadata={"alias": "deviceAccessPort"}
    )

    device_access_context: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessContext"}
    )

    device_access_uri: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessURI"}
    )

    default_device_language: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceLanguage"}
    )

    default_device_encoding: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceEncoding"}
    )

    access_device_credentials: Optional[str] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )

    use_http_digest_authentication: bool = field(
        metadata={"alias": "useHttpDigestAuthentication"}
    )

    mac_based_file_authentication: bool = field(
        metadata={"alias": "macBasedFileAuthentication"}
    )

    user_name_password_file_authentication: bool = field(
        metadata={"alias": "userNamePasswordFileAuthentication"}
    )

    mac_in_non_request_uri: bool = field(metadata={"alias": "macInNonRequestURI"})

    mac_in_cert: bool = field(metadata={"alias": "macInCert"})

    mac_format_in_non_request_uri: Optional[str] = field(
        default=None, metadata={"alias": "macFormatInNonRequestURI"}
    )

    enable_device_activation: bool = field(metadata={"alias": "enableDeviceActivation"})

    device_model: Optional[str] = field(default=None, metadata={"alias": "deviceModel"})

    support_links: str = field(metadata={"alias": "supportLinks"})

    auto_linking_device_type: Optional[str] = field(
        default=None, metadata={"alias": "autoLinkingDeviceType"}
    )

    auto_create_devices_level: Optional[str] = field(
        default=None, metadata={"alias": "autoCreateDevicesLevel"}
    )


@dataclass(kw_only=True)
class DeviceManagementDeviceTypeOptionsRead22V6(OCIType):
    """Device Management System device type options.

        Note: For the elements listed below, when device configuration is set to deviceManagement, those elements apply to the creation of the Polycom Phone Services directory file only.
              For all other files, they are not used. Those elements are instead configured on a per-file basis at the Device Type File level.
              When device configuration is set to legacy, those elements apply to all configuration files except bearerFileAuthentication which is not supported.

              useHttpDigestAuthentication
              macBasedFileAuthentication
              userNamePasswordFileAuthentication
              macInNonRequestURI
              macInCert
              macFormatInNonRequestURI

        The following data elements are only used in AS data mode:
              enableDeviceActivation, value ‘false’ is returned
              supportLinks, value ‘Not Supported’ is returned

        The following elements are only used in AS data mode and not returned in XS data mode
              deviceModel
              autoLinkingDeviceType
              autoCreateDevicesLevel
              isActivationCodeThroughMessagingServer
              bearerFileAuthentication

    Attributes:

        device_access_protocol (str):

        tag_mode (str):

        tag_set (Optional[str]):

        allow_device_profile_custom_tag_set (bool):

        allow_group_custom_tag_set (bool):

        allow_sp_custom_tag_set (bool):

        send_email_upon_reset_failure (bool):

        device_access_net_address (Optional[str]):

        device_access_port (Optional[int]):

        device_access_context (Optional[str]):

        device_access_uri (Optional[str]):

        default_device_language (Optional[str]):

        default_device_encoding (Optional[str]):

        access_device_credentials (Optional[str]):

        use_http_digest_authentication (bool):

        mac_based_file_authentication (bool):

        user_name_password_file_authentication (bool):

        mac_in_non_request_uri (bool):

        mac_in_cert (bool):

        mac_format_in_non_request_uri (Optional[str]):

        enable_device_activation (bool):

        device_model (Optional[str]):

        support_links (str):

        auto_linking_device_type (Optional[str]):

        auto_create_devices_level (Optional[str]):

        is_activation_code_through_messaging_server (Optional[bool]):

        bearer_file_authentication (bool):

    """

    device_access_protocol: str = field(metadata={"alias": "deviceAccessProtocol"})

    tag_mode: str = field(metadata={"alias": "tagMode"})

    tag_set: Optional[str] = field(default=None, metadata={"alias": "tagSet"})

    allow_device_profile_custom_tag_set: bool = field(
        metadata={"alias": "allowDeviceProfileCustomTagSet"}
    )

    allow_group_custom_tag_set: bool = field(
        metadata={"alias": "allowGroupCustomTagSet"}
    )

    allow_sp_custom_tag_set: bool = field(metadata={"alias": "allowSpCustomTagSet"})

    send_email_upon_reset_failure: bool = field(
        metadata={"alias": "sendEmailUponResetFailure"}
    )

    device_access_net_address: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessNetAddress"}
    )

    device_access_port: Optional[int] = field(
        default=None, metadata={"alias": "deviceAccessPort"}
    )

    device_access_context: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessContext"}
    )

    device_access_uri: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessURI"}
    )

    default_device_language: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceLanguage"}
    )

    default_device_encoding: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceEncoding"}
    )

    access_device_credentials: Optional[str] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )

    use_http_digest_authentication: bool = field(
        metadata={"alias": "useHttpDigestAuthentication"}
    )

    mac_based_file_authentication: bool = field(
        metadata={"alias": "macBasedFileAuthentication"}
    )

    user_name_password_file_authentication: bool = field(
        metadata={"alias": "userNamePasswordFileAuthentication"}
    )

    mac_in_non_request_uri: bool = field(metadata={"alias": "macInNonRequestURI"})

    mac_in_cert: bool = field(metadata={"alias": "macInCert"})

    mac_format_in_non_request_uri: Optional[str] = field(
        default=None, metadata={"alias": "macFormatInNonRequestURI"}
    )

    enable_device_activation: bool = field(metadata={"alias": "enableDeviceActivation"})

    device_model: Optional[str] = field(default=None, metadata={"alias": "deviceModel"})

    support_links: str = field(metadata={"alias": "supportLinks"})

    auto_linking_device_type: Optional[str] = field(
        default=None, metadata={"alias": "autoLinkingDeviceType"}
    )

    auto_create_devices_level: Optional[str] = field(
        default=None, metadata={"alias": "autoCreateDevicesLevel"}
    )

    is_activation_code_through_messaging_server: Optional[bool] = field(
        default=None, metadata={"alias": "isActivationCodeThroughMessagingServer"}
    )

    bearer_file_authentication: bool = field(
        metadata={"alias": "bearerFileAuthentication"}
    )


@dataclass(kw_only=True)
class DeviceManagementLanguageMapping(OCIType):
    """Maps a BroadWorks language to a device-equivalent language.

    Attributes:

        broad_works_language (str):

        device_language (Nillable[str]):

    """

    broad_works_language: str = field(metadata={"alias": "broadWorksLanguage"})

    device_language: Nillable[str] = field(metadata={"alias": "deviceLanguage"})

    def __post_init__(self):
        nillable_fields = ["device_language"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class DeviceManagementTag(OCIType):
    """Represents a tag name with its associated value.

    Attributes:

        tag_name (str):

        tag_value (Optional[str]):

    """

    tag_name: str = field(metadata={"alias": "tagName"})

    tag_value: Optional[str] = field(default=None, metadata={"alias": "tagValue"})


@dataclass(kw_only=True)
class DeviceManagementTagSetRename(OCIType):
    """Pair of DeviceManagementTagSetName

    Attributes:

        original_tag_set_name (str):

        new_tag_set_name (str):

    """

    original_tag_set_name: str = field(metadata={"alias": "originalTagSetName"})

    new_tag_set_name: str = field(metadata={"alias": "newTagSetName"})


@dataclass(kw_only=True)
class DeviceManagementUserNamePassword16(OCIType):
    """Access device credentials.

    Attributes:

        user_name (str):

        password (str):

    """

    user_name: str = field(metadata={"alias": "userName"})

    password: str = field(metadata={"alias": "password"})


@dataclass(kw_only=True)
class DialableCallerIDCriteriaPriorityOrder(OCIType):
    """Dialable Caller ID routing order

    Attributes:

        criteria_name (str):

        priority (float):

    """

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    priority: float = field(metadata={"alias": "priority"})


@dataclass(kw_only=True)
class DialPlanPolicy(OCIType):
    """Dial Plan Access Code attributes.

    Attributes:

        use_setting (Optional[str]):

        requires_access_code_for_public_calls (Optional[bool]):

        allow_e164_public_calls (Optional[bool]):

        prefer_e164_number_format_for_callback_services (Optional[bool]):

        public_digit_map (Optional[Nillable[str]]):

        private_digit_map (Optional[Nillable[str]]):

    """

    use_setting: Optional[str] = field(default=None, metadata={"alias": "useSetting"})

    requires_access_code_for_public_calls: Optional[bool] = field(
        default=None, metadata={"alias": "requiresAccessCodeForPublicCalls"}
    )

    allow_e164_public_calls: Optional[bool] = field(
        default=None, metadata={"alias": "allowE164PublicCalls"}
    )

    prefer_e164_number_format_for_callback_services: Optional[bool] = field(
        default=None, metadata={"alias": "preferE164NumberFormatForCallbackServices"}
    )

    public_digit_map: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "publicDigitMap"}
    )

    private_digit_map: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "privateDigitMap"}
    )

    def __post_init__(self):
        nillable_fields = ["public_digit_map", "private_digit_map"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class DialPlanPolicyAccessCode(OCIType):
    """Dial Plan Access Code attributes.

    Attributes:

        access_code (str):

        description (Optional[Nillable[str]]):

        include_code_for_network_translations_and_routing (Optional[bool]):

        include_code_for_screening_services (Optional[bool]):

        enable_secondary_dial_tone (Optional[bool]):

    """

    access_code: str = field(metadata={"alias": "accessCode"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    include_code_for_network_translations_and_routing: Optional[bool] = field(
        default=None, metadata={"alias": "includeCodeForNetworkTranslationsAndRouting"}
    )

    include_code_for_screening_services: Optional[bool] = field(
        default=None, metadata={"alias": "includeCodeForScreeningServices"}
    )

    enable_secondary_dial_tone: Optional[bool] = field(
        default=None, metadata={"alias": "enableSecondaryDialTone"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class DNISKey(OCIType):
    """Uniquely identifies a Call Center DNIS.

    Attributes:

        service_user_id (str):

        name (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class DNRange(OCIType):
    """Directory number range. The minimum and maximum values are inclusive.

    Attributes:

        min_phone_number (str):

        max_phone_number (str):

    """

    min_phone_number: str = field(metadata={"alias": "minPhoneNumber"})

    max_phone_number: str = field(metadata={"alias": "maxPhoneNumber"})


@dataclass(kw_only=True)
class DNValidationStatusMessage(OCIType):
    """The message contains the status and error reason that prevents DN to be assigned/validated

    Attributes:

        dn (str):

        status (str):

        message_code (Optional[int]):

        summary (Optional[str]):

        summary_english (Optional[str]):

    """

    dn: str = field(metadata={"alias": "dn"})

    status: str = field(metadata={"alias": "status"})

    message_code: Optional[int] = field(default=None, metadata={"alias": "messageCode"})

    summary: Optional[str] = field(default=None, metadata={"alias": "summary"})

    summary_english: Optional[str] = field(
        default=None, metadata={"alias": "summaryEnglish"}
    )


@dataclass(kw_only=True)
class EmailAddressList(OCIType):
    """A list of 50 email addresses is configured in the \"Forward it to these e-mail addresses\" section
         on the Voice Management configuration page

        Change History:
        R25.0 - Added

    Attributes:

        email_address (List[str]):

    """

    email_address: List[str] = field(metadata={"alias": "emailAddress"})


@dataclass(kw_only=True)
class EnhancedCallLogsAccountAuthorizationCodeFilter(OCIType):
    """Filter criteria based on the account code.
        When \"callsWithCodes\" is set to true, all call logs with account/authorization codes are returned.
        When it set to false, all call logs without account/authorization codes are returned.

    Attributes:

        calls_with_codes (Optional[bool]):

        account_authorization_code (Optional[str]):

    """

    calls_with_codes: Optional[bool] = field(
        default=None, metadata={"alias": "callsWithCodes"}
    )

    account_authorization_code: Optional[str] = field(
        default=None, metadata={"alias": "accountAuthorizationCode"}
    )


@dataclass(kw_only=True)
class EnhancedCallLogsCallAuthorizationCodeFilter(OCIType):
    """Filter criteria based on call authorization code. Note that this code
        filter is different than EnhancedCallLogsAccountAuthorizationCodeFilter,
        which applies strictly to codes entered using the account/authorization
        code service.
        When \"callsWithCodes\" is set to true, all call logs with authorization
        codes are returned.
        When it set to false, all call logs without authorization codes are
        returned.
        If \"authorizationCode\" is set, all call logs matching that specific
        authorization code are returned.

    Attributes:

        calls_with_codes (Optional[bool]):

        authorization_code (Optional[str]):

    """

    calls_with_codes: Optional[bool] = field(
        default=None, metadata={"alias": "callsWithCodes"}
    )

    authorization_code: Optional[str] = field(
        default=None, metadata={"alias": "authorizationCode"}
    )


@dataclass(kw_only=True)
class EnhancedCallLogsResponsePagingControl(OCIType):
    """Used in enhanced call logs group and enterprise queries to restrict the set of result
        rows when making a request that can result in a large dataset. The client specifies the
        starting row and the number of rows requested.
        The server only provides those rows in results, if available.

    Attributes:

        response_start_index (int):

        response_page_size (int):

    """

    response_start_index: int = field(metadata={"alias": "responseStartIndex"})

    response_page_size: int = field(metadata={"alias": "responsePageSize"})


@dataclass(kw_only=True)
class EnhancedCallLogsTimeRange(OCIType):
    """Time range used to filter call logs.

    Attributes:

        start_date_time (str):

        end_date_time (str):

    """

    start_date_time: str = field(metadata={"alias": "startDateTime"})

    end_date_time: str = field(metadata={"alias": "endDateTime"})


@dataclass(kw_only=True)
class EnterpriseTrunkNumberPrefixModify(OCIType):
    """Enterprise Trunk Number Prefix for modify.

    Attributes:

        number_prefix (str):

        extension_range (Optional[Nillable[ExtensionRange17]]):

    """

    number_prefix: str = field(metadata={"alias": "numberPrefix"})

    extension_range: Optional[Nillable[ExtensionRange17]] = field(
        default=None, metadata={"alias": "extensionRange"}
    )

    def __post_init__(self):
        nillable_fields = ["extension_range"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class EnterpriseTrunkNumberRangeModify(OCIType):
    """Directory number range for modification.

    Attributes:

        dn_range_start (str):

        extension_length (Optional[Nillable[int]]):

    """

    dn_range_start: str = field(metadata={"alias": "dnRangeStart"})

    extension_length: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "extensionLength"}
    )

    def __post_init__(self):
        nillable_fields = ["extension_length"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class EstimatedWaitMessageOptionsModify(OCIType):
    """Estimated Wait Message Options

    Attributes:

        enabled (Optional[bool]):

        operating_mode (Optional[str]):

        play_position_high_volume (Optional[bool]):

        play_time_high_volume (Optional[bool]):

        maximum_positions (Optional[int]):

        maximum_waiting_minutes (Optional[int]):

        default_call_handling_minutes (Optional[int]):

        play_updated_ewm (Optional[bool]):

        time_between_ewm_updates_seconds (Optional[Nillable[int]]):

    """

    enabled: Optional[bool] = field(default=None, metadata={"alias": "enabled"})

    operating_mode: Optional[str] = field(
        default=None, metadata={"alias": "operatingMode"}
    )

    play_position_high_volume: Optional[bool] = field(
        default=None, metadata={"alias": "playPositionHighVolume"}
    )

    play_time_high_volume: Optional[bool] = field(
        default=None, metadata={"alias": "playTimeHighVolume"}
    )

    maximum_positions: Optional[int] = field(
        default=None, metadata={"alias": "maximumPositions"}
    )

    maximum_waiting_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maximumWaitingMinutes"}
    )

    default_call_handling_minutes: Optional[int] = field(
        default=None, metadata={"alias": "defaultCallHandlingMinutes"}
    )

    play_updated_ewm: Optional[bool] = field(
        default=None, metadata={"alias": "playUpdatedEWM"}
    )

    time_between_ewm_updates_seconds: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "timeBetweenEWMUpdatesSeconds"}
    )

    def __post_init__(self):
        nillable_fields = ["time_between_ewm_updates_seconds"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class EstimatedWaitMessageOptionsRead17sp4(OCIType):
    """Estimated Wait Message Options

    Attributes:

        enabled (bool):

        operating_mode (str):

        play_position_high_volume (bool):

        play_time_high_volume (bool):

        maximum_positions (int):

        maximum_waiting_minutes (int):

        default_call_handling_minutes (int):

        play_updated_ewm (bool):

        time_between_ewm_updates_seconds (Optional[int]):

    """

    enabled: bool = field(metadata={"alias": "enabled"})

    operating_mode: str = field(metadata={"alias": "operatingMode"})

    play_position_high_volume: bool = field(
        metadata={"alias": "playPositionHighVolume"}
    )

    play_time_high_volume: bool = field(metadata={"alias": "playTimeHighVolume"})

    maximum_positions: int = field(metadata={"alias": "maximumPositions"})

    maximum_waiting_minutes: int = field(metadata={"alias": "maximumWaitingMinutes"})

    default_call_handling_minutes: int = field(
        metadata={"alias": "defaultCallHandlingMinutes"}
    )

    play_updated_ewm: bool = field(metadata={"alias": "playUpdatedEWM"})

    time_between_ewm_updates_seconds: Optional[int] = field(
        default=None, metadata={"alias": "timeBetweenEWMUpdatesSeconds"}
    )


@dataclass(kw_only=True)
class ExchangeUserNamePassword(OCIType):
    """Exchange server user name and password.

    Attributes:

        user_name (str):

        password (str):

    """

    user_name: str = field(metadata={"alias": "userName"})

    password: str = field(metadata={"alias": "password"})


@dataclass(kw_only=True)
class ExecutiveCallFilteringCriteriaFromDn(OCIType):
    """The from dn criteria used within an executive call filtering criteria add/get request.

    Attributes:

        from_dn_criteria_selection (str):

        include_anonymous_callers (bool):

        include_unavailable_callers (bool):

        phone_number (Optional[List[str]]):

    """

    from_dn_criteria_selection: str = field(
        metadata={"alias": "fromDnCriteriaSelection"}
    )

    include_anonymous_callers: bool = field(
        metadata={"alias": "includeAnonymousCallers"}
    )

    include_unavailable_callers: bool = field(
        metadata={"alias": "includeUnavailableCallers"}
    )

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )


@dataclass(kw_only=True)
class ExtendedMediaFileLevelResource20(OCIType):
    """Represents either an existing file for the application server to use, or
          the contents of a file to transfer and an URL.

    Attributes:

        file (Optional[Nillable[AnnouncementFileLevelKey]]):

        url (Optional[Nillable[str]]):

    """

    file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "file"}
    )

    url: Optional[Nillable[str]] = field(default=None, metadata={"alias": "url"})

    def __post_init__(self):
        nillable_fields = ["file", "url"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ExtendedMediaFileResource20(OCIType):
    """Represents either an existing file for the application server to use, or
          the contents of a file to transfer and an URL.

    Attributes:

        file (Optional[Nillable[AnnouncementFileKey]]):

        url (Optional[Nillable[str]]):

    """

    file: Optional[Nillable[AnnouncementFileKey]] = field(
        default=None, metadata={"alias": "file"}
    )

    url: Optional[Nillable[str]] = field(default=None, metadata={"alias": "url"})

    def __post_init__(self):
        nillable_fields = ["file", "url"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ExtensionRange17(OCIType):
    """Extension range. The minimum and maximum values are inclusive.

    Attributes:

        min_extension (str):

        max_extension (str):

    """

    min_extension: str = field(metadata={"alias": "minExtension"})

    max_extension: str = field(metadata={"alias": "maxExtension"})


@dataclass(kw_only=True)
class FeatureAccessCodeEntry(OCIType):
    """Feature Access Code Entry

    Attributes:

        feature_access_code_name (str):

        main_code (Optional[str]):

        alternate_code (Optional[Nillable[str]]):

    """

    feature_access_code_name: str = field(metadata={"alias": "featureAccessCodeName"})

    main_code: Optional[str] = field(default=None, metadata={"alias": "mainCode"})

    alternate_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "alternateCode"}
    )

    def __post_init__(self):
        nillable_fields = ["alternate_code"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class FeatureAccessCodeModifyEntry(OCIType):
    """Feature Access Code Entry to be used in all the system, service provider and
          group modify commands.

    Attributes:

        feature_access_code_name (str):

        main_code (Optional[str]):

        alternate_code (Optional[Nillable[str]]):

        enable_fac (Optional[bool]):

    """

    feature_access_code_name: str = field(metadata={"alias": "featureAccessCodeName"})

    main_code: Optional[str] = field(default=None, metadata={"alias": "mainCode"})

    alternate_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "alternateCode"}
    )

    enable_fac: Optional[bool] = field(default=None, metadata={"alias": "enableFAC"})

    def __post_init__(self):
        nillable_fields = ["alternate_code"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class FeatureAccessCodeReadEntry(OCIType):
    """Feature Access Code Entry to be used in all GET commands.

    Attributes:

        feature_access_code_name (str):

        main_code (Optional[str]):

        alternate_code (Optional[str]):

        enable_fac (Optional[bool]):

    """

    feature_access_code_name: str = field(metadata={"alias": "featureAccessCodeName"})

    main_code: Optional[str] = field(default=None, metadata={"alias": "mainCode"})

    alternate_code: Optional[str] = field(
        default=None, metadata={"alias": "alternateCode"}
    )

    enable_fac: Optional[bool] = field(default=None, metadata={"alias": "enableFAC"})


@dataclass(kw_only=True)
class FileRepositoryProtocolFTP16(OCIType):
    """Attributes of the FTP protocol when the file repository interface is using FTP.

    Attributes:

        ftp_passive (bool):

        net_address (str):

        ftp_remote_verification (bool):

    """

    ftp_passive: bool = field(metadata={"alias": "ftpPassive"})

    net_address: str = field(metadata={"alias": "netAddress"})

    ftp_remote_verification: bool = field(metadata={"alias": "ftpRemoteVerification"})


@dataclass(kw_only=True)
class FileRepositoryProtocolWebDAV(OCIType):
    """Attributes of the WebDav protocol when the file repository interface is using WebDav.

    Attributes:

        secure (bool):

        net_address (str):

    """

    secure: bool = field(metadata={"alias": "secure"})

    net_address: str = field(metadata={"alias": "netAddress"})


@dataclass(kw_only=True)
class FileResource(OCIType):
    """Represents either an existing file for the application server to use, or
        the contents of a file to transfer.

    Attributes:

        source_file_name (Optional[str]):

        file_content (Optional[int]):

    """

    source_file_name: Optional[str] = field(
        default=None, metadata={"alias": "sourceFileName"}
    )

    file_content: Optional[int] = field(default=None, metadata={"alias": "fileContent"})


@dataclass(kw_only=True)
class GroupAdmin(OCIType):
    """The common Group Admin elements.

    Attributes:

        user_id (str):

        first_name (Optional[str]):

        last_name (Optional[str]):

        password (Optional[str]):

        language (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    first_name: Optional[str] = field(default=None, metadata={"alias": "firstName"})

    last_name: Optional[str] = field(default=None, metadata={"alias": "lastName"})

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    language: Optional[str] = field(default=None, metadata={"alias": "language"})


@dataclass(kw_only=True)
class GroupExtensionLengthSettings(OCIType):
    """Group extension length settings

    Attributes:

        min_extension_length (Optional[int]):

        max_extension_length (Optional[int]):

        default_extension_length (Optional[int]):

        use_enterprise_extension_length_setting (Optional[bool]):

    """

    min_extension_length: Optional[int] = field(
        default=None, metadata={"alias": "minExtensionLength"}
    )

    max_extension_length: Optional[int] = field(
        default=None, metadata={"alias": "maxExtensionLength"}
    )

    default_extension_length: Optional[int] = field(
        default=None, metadata={"alias": "defaultExtensionLength"}
    )

    use_enterprise_extension_length_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useEnterpriseExtensionLengthSetting"}
    )


@dataclass(kw_only=True)
class HolidaySchedule(OCIType):
    """Holiday Schedule.

    Attributes:

        type (str):

        name (str):

    """

    type: str = field(metadata={"alias": "type"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class HourMinute(OCIType):
    """Represents a specific time with hour and minute granularity

    Attributes:

        hour (int):

        minute (int):

    """

    hour: int = field(metadata={"alias": "hour"})

    minute: int = field(metadata={"alias": "minute"})


@dataclass(kw_only=True)
class HuntAgentWeight(OCIType):
    """The weighted call distribution weight for an agent.

    Attributes:

        agent_user_id (str):

        weight (int):

    """

    agent_user_id: str = field(metadata={"alias": "agentUserId"})

    weight: int = field(metadata={"alias": "weight"})


@dataclass(kw_only=True)
class IPAddressRange(OCIType):
    """IP Address Range.

    Attributes:

        min_ip_address (str):

        max_ip_address (str):

    """

    min_ip_address: str = field(metadata={"alias": "minIpAddress"})

    max_ip_address: str = field(metadata={"alias": "maxIpAddress"})


@dataclass(kw_only=True)
class LabeledFileNameResource(OCIType):
    """Represents an existing file for the application server to use, along with
        a description and mediaType.

    Attributes:

        description (str):

        media_type (str):

        source_file_name (str):

    """

    description: str = field(metadata={"alias": "description"})

    media_type: str = field(metadata={"alias": "mediaType"})

    source_file_name: str = field(metadata={"alias": "sourceFileName"})


@dataclass(kw_only=True)
class LabeledFileResource(OCIType):
    """Represents either an existing file for the application server to use, or
        the contents of a file to transfer with a description.

    Attributes:

        description (str):

        source_file_name (Optional[str]):

        content (Optional[int]):

    """

    description: str = field(metadata={"alias": "description"})

    source_file_name: Optional[str] = field(
        default=None, metadata={"alias": "sourceFileName"}
    )

    content: Optional[int] = field(default=None, metadata={"alias": "content"})


@dataclass(kw_only=True)
class LabeledMediaFileResource(OCIType):
    """Represents either an existing file for the application server to use, or
        the contents of a file to transfer with a description.

    Attributes:

        description (str):

        media_type (str):

        source_file_name (Optional[str]):

        content (Optional[int]):

    """

    description: str = field(metadata={"alias": "description"})

    media_type: str = field(metadata={"alias": "mediaType"})

    source_file_name: Optional[str] = field(
        default=None, metadata={"alias": "sourceFileName"}
    )

    content: Optional[int] = field(default=None, metadata={"alias": "content"})


@dataclass(kw_only=True)
class MeetMeConferencingConferenceKey(OCIType):
    """Identifier for conference.

    Attributes:

        bridge_id (str):

        conference_id (str):

    """

    bridge_id: str = field(metadata={"alias": "bridgeId"})

    conference_id: str = field(metadata={"alias": "conferenceId"})


@dataclass(kw_only=True)
class MeetMeConferencingConferencePorts(OCIType):
    """Number of conference ports. Can either be unlimited or limited to a value between 0 and 999999.

    Attributes:

        unlimited (Optional[bool]):

        quantity (Optional[int]):

    """

    unlimited: Optional[bool] = field(default=None, metadata={"alias": "unlimited"})

    quantity: Optional[int] = field(default=None, metadata={"alias": "quantity"})


@dataclass(kw_only=True)
class MixedCallLogsEntry(OCIType):
    """Call Log entry describing a placed, received, or missed call.

    Attributes:

        call_log_type (str):

        country_code (Optional[str]):

        call_log_id (str):

        phone_number (str):

        name (str):

        time (str):

    """

    call_log_type: str = field(metadata={"alias": "callLogType"})

    country_code: Optional[str] = field(default=None, metadata={"alias": "countryCode"})

    call_log_id: str = field(metadata={"alias": "callLogId"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    name: str = field(metadata={"alias": "name"})

    time: str = field(metadata={"alias": "time"})


@dataclass(kw_only=True)
class MusicOnHoldSourceAdd21(OCIType):
    """Contains the music on hold source configuration.
        The following elements are only used in HSS data mode and ignored in AS data mode:
          labeledMediaFiles
        The following elements are only used in AS data mode and ignored in HSS data mode:
          announcementMediaFiles

    Attributes:

        audio_file_preferred_codec (str):

        message_source_selection (str):

        labeled_custom_source_media_files (Optional[object]):

        announcement_custom_source_media_files (Optional[object]):

        external_source (Optional[object]):

    """

    audio_file_preferred_codec: str = field(
        metadata={"alias": "audioFilePreferredCodec"}
    )

    message_source_selection: str = field(metadata={"alias": "messageSourceSelection"})

    labeled_custom_source_media_files: Optional[object] = field(
        default=None, metadata={"alias": "labeledCustomSourceMediaFiles"}
    )

    announcement_custom_source_media_files: Optional[object] = field(
        default=None, metadata={"alias": "announcementCustomSourceMediaFiles"}
    )

    external_source: Optional[object] = field(
        default=None, metadata={"alias": "externalSource"}
    )


@dataclass(kw_only=True)
class MusicOnHoldSourceAdd22(OCIType):
    """Contains the music on hold source configuration.
        The following elements are only used in HSS data mode and ignored in AS data mode:
          labeledMediaFiles
        The following elements are only used in AS data mode and ignored in HSS data mode:
          announcementMediaFiles
          authenticationRequired
          authenticationUserName
          authenticationPassword

    Attributes:

        audio_file_preferred_codec (str):

        message_source_selection (str):

        labeled_custom_source_media_files (Optional[object]):

        announcement_custom_source_media_files (Optional[object]):

        external_source (Optional[object]):

    """

    audio_file_preferred_codec: str = field(
        metadata={"alias": "audioFilePreferredCodec"}
    )

    message_source_selection: str = field(metadata={"alias": "messageSourceSelection"})

    labeled_custom_source_media_files: Optional[object] = field(
        default=None, metadata={"alias": "labeledCustomSourceMediaFiles"}
    )

    announcement_custom_source_media_files: Optional[object] = field(
        default=None, metadata={"alias": "announcementCustomSourceMediaFiles"}
    )

    external_source: Optional[object] = field(
        default=None, metadata={"alias": "externalSource"}
    )


@dataclass(kw_only=True)
class MusicOnHoldSourceModify21(OCIType):
    """Contains the music on hold source configuration.
        The following elements are only used in HSS data mode and ignored in AS data mode:
          labeledMediaFiles
        The following elements are only used in AS data mode and ignored in HSS data mode:
          announcementMediaFiles

    Attributes:

        audio_file_preferred_codec (Optional[str]):

        message_source_selection (Optional[str]):

        labeled_custom_source_media_files (Optional[object]):

        announcement_custom_source_media_files (Optional[object]):

        external_source (Optional[object]):

    """

    audio_file_preferred_codec: Optional[str] = field(
        default=None, metadata={"alias": "audioFilePreferredCodec"}
    )

    message_source_selection: Optional[str] = field(
        default=None, metadata={"alias": "messageSourceSelection"}
    )

    labeled_custom_source_media_files: Optional[object] = field(
        default=None, metadata={"alias": "labeledCustomSourceMediaFiles"}
    )

    announcement_custom_source_media_files: Optional[object] = field(
        default=None, metadata={"alias": "announcementCustomSourceMediaFiles"}
    )

    external_source: Optional[object] = field(
        default=None, metadata={"alias": "externalSource"}
    )


@dataclass(kw_only=True)
class MusicOnHoldSourceModify22(OCIType):
    """Contains the music on hold source configuration.
        The following elements are only used in HSS data mode and ignored in AS data mode:
          labeledMediaFiles
        The following elements are only used in AS data mode and ignored in HSS data mode:
          announcementMediaFiles
          authenticationRequired
          authenticationUserName
          authenticationPassword

    Attributes:

        audio_file_preferred_codec (Optional[str]):

        message_source_selection (Optional[str]):

        labeled_custom_source_media_files (Optional[object]):

        announcement_custom_source_media_files (Optional[object]):

        external_source (Optional[object]):

    """

    audio_file_preferred_codec: Optional[str] = field(
        default=None, metadata={"alias": "audioFilePreferredCodec"}
    )

    message_source_selection: Optional[str] = field(
        default=None, metadata={"alias": "messageSourceSelection"}
    )

    labeled_custom_source_media_files: Optional[object] = field(
        default=None, metadata={"alias": "labeledCustomSourceMediaFiles"}
    )

    announcement_custom_source_media_files: Optional[object] = field(
        default=None, metadata={"alias": "announcementCustomSourceMediaFiles"}
    )

    external_source: Optional[object] = field(
        default=None, metadata={"alias": "externalSource"}
    )


@dataclass(kw_only=True)
class MusicOnHoldSourceRead21(OCIType):
    """Contains the music on hold source configuration.
        The following elements are only used in XS data mode and not returned in AS data mode:
          labeledCustomSourceMediaFiles
        The following elements are only used in AS data mode and not returned in XS data mode:
          announcementMediaFiles

    Attributes:

        audio_file_preferred_codec (str):

        message_source_selection (str):

        labeled_custom_source_media_files (Optional[object]):

        announcement_custom_source_media_files (Optional[object]):

        external_source (Optional[object]):

    """

    audio_file_preferred_codec: str = field(
        metadata={"alias": "audioFilePreferredCodec"}
    )

    message_source_selection: str = field(metadata={"alias": "messageSourceSelection"})

    labeled_custom_source_media_files: Optional[object] = field(
        default=None, metadata={"alias": "labeledCustomSourceMediaFiles"}
    )

    announcement_custom_source_media_files: Optional[object] = field(
        default=None, metadata={"alias": "announcementCustomSourceMediaFiles"}
    )

    external_source: Optional[object] = field(
        default=None, metadata={"alias": "externalSource"}
    )


@dataclass(kw_only=True)
class MusicOnHoldSourceRead22(OCIType):
    """Contains the music on hold source configuration.
        The following elements are only used in XS data mode and not returned in AS data mode:
          labeledCustomSourceMediaFiles
        The following elements are only used in AS data mode and not returned in XS data mode:
          announcementMediaFiles

    Attributes:

        audio_file_preferred_codec (str):

        message_source_selection (str):

        labeled_custom_source_media_files (Optional[object]):

        announcement_custom_source_media_files (Optional[object]):

        external_source (Optional[object]):

    """

    audio_file_preferred_codec: str = field(
        metadata={"alias": "audioFilePreferredCodec"}
    )

    message_source_selection: str = field(metadata={"alias": "messageSourceSelection"})

    labeled_custom_source_media_files: Optional[object] = field(
        default=None, metadata={"alias": "labeledCustomSourceMediaFiles"}
    )

    announcement_custom_source_media_files: Optional[object] = field(
        default=None, metadata={"alias": "announcementCustomSourceMediaFiles"}
    )

    external_source: Optional[object] = field(
        default=None, metadata={"alias": "externalSource"}
    )


@dataclass(kw_only=True)
class MusicOnHoldSourceRead22V2(OCIType):
    """Contains the music on hold source configuration.
        The following elements are only used in XS data mode and not returned in AS data mode:
          labeledCustomSourceMediaFiles
        The following elements are only used in AS data mode and not returned in XS data mode:
          announcementMediaFiles

    Attributes:

        audio_file_preferred_codec (str):

        message_source_selection (str):

        labeled_custom_source_media_files (Optional[object]):

        announcement_custom_source_media_files (Optional[object]):

        external_source (Optional[object]):

    """

    audio_file_preferred_codec: str = field(
        metadata={"alias": "audioFilePreferredCodec"}
    )

    message_source_selection: str = field(metadata={"alias": "messageSourceSelection"})

    labeled_custom_source_media_files: Optional[object] = field(
        default=None, metadata={"alias": "labeledCustomSourceMediaFiles"}
    )

    announcement_custom_source_media_files: Optional[object] = field(
        default=None, metadata={"alias": "announcementCustomSourceMediaFiles"}
    )

    external_source: Optional[object] = field(
        default=None, metadata={"alias": "externalSource"}
    )


@dataclass(kw_only=True)
class MusicOnHoldSourceRead22V3(OCIType):
    """Contains the music on hold source configuration.
        The following elements are only used in XS data mode and not returned in AS data mode:
          labeledCustomSourceMediaFiles
        The following elements are only used in AS data mode and not returned in XS data mode:
          announcementMediaFiles
          authenticationUserName
        The following element is only used in AS data mode:
          authenticationRequired, value \"false\" is returned in XS data mode

    Attributes:

        audio_file_preferred_codec (str):

        message_source_selection (str):

        labeled_custom_source_media_files (Optional[object]):

        announcement_custom_source_media_files (Optional[object]):

        external_source (Optional[object]):

    """

    audio_file_preferred_codec: str = field(
        metadata={"alias": "audioFilePreferredCodec"}
    )

    message_source_selection: str = field(metadata={"alias": "messageSourceSelection"})

    labeled_custom_source_media_files: Optional[object] = field(
        default=None, metadata={"alias": "labeledCustomSourceMediaFiles"}
    )

    announcement_custom_source_media_files: Optional[object] = field(
        default=None, metadata={"alias": "announcementCustomSourceMediaFiles"}
    )

    external_source: Optional[object] = field(
        default=None, metadata={"alias": "externalSource"}
    )


@dataclass(kw_only=True)
class MusicOnHoldUserSourceRead16(OCIType):
    """Contains the music on hold user source configuration.

    Attributes:

        message_source_selection (str):

        custom_source (Optional[object]):

    """

    message_source_selection: str = field(metadata={"alias": "messageSourceSelection"})

    custom_source: Optional[object] = field(
        default=None, metadata={"alias": "customSource"}
    )


@dataclass(kw_only=True)
class MWIDeliveryToMobileEndpointTemplateActivation(OCIType):
    """MWI Delivery To Mobile Endpoint enabled status indicator

    Attributes:

        language (str):

        type (str):

        is_enabled (bool):

    """

    language: str = field(metadata={"alias": "language"})

    type: str = field(metadata={"alias": "type"})

    is_enabled: bool = field(metadata={"alias": "isEnabled"})


@dataclass(kw_only=True)
class MWIDeliveryToMobileEndpointTemplateLine(OCIType):
    """MWI Delivery To Mobile Endpoint template section associated with a specific tag.

    Attributes:

        prefix (Optional[str]):

        tag (Optional[str]):

        postfix (Optional[str]):

    """

    prefix: Optional[str] = field(default=None, metadata={"alias": "prefix"})

    tag: Optional[str] = field(default=None, metadata={"alias": "tag"})

    postfix: Optional[str] = field(default=None, metadata={"alias": "postfix"})


@dataclass(kw_only=True)
class NameDialingName(OCIType):
    """Name dialing last and first names.

    Attributes:

        name_dialing_last_name (str):

        name_dialing_first_name (str):

    """

    name_dialing_last_name: str = field(metadata={"alias": "nameDialingLastName"})

    name_dialing_first_name: str = field(metadata={"alias": "nameDialingFirstName"})


@dataclass(kw_only=True)
class NetworkClassOfServiceCommunicationBarringProfile(OCIType):
    """Communication Barring Profile defined as part of the Network Class
        Of Service. There can be only one primary profile within a Network
        Class Of Service.

    Attributes:

        name (str):

        is_primary (bool):

    """

    name: str = field(metadata={"alias": "name"})

    is_primary: bool = field(metadata={"alias": "isPrimary"})


@dataclass(kw_only=True)
class PhoneListEntry(OCIType):
    """Phone list entry.

    Attributes:

        entry_name (str):

        phone_number (str):

    """

    entry_name: str = field(metadata={"alias": "entryName"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class PrimaryUserInfo(OCIType):
    """Primary user information.

    Attributes:

        user_id (Optional[str]):

        service_provider_id (Optional[str]):

        group_id (Optional[str]):

        user_first_name (Optional[str]):

        user_last_name (Optional[str]):

        user_phone_number (Optional[str]):

        user_extension (Optional[str]):

        end_point_type (Optional[str]):

    """

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    user_first_name: Optional[str] = field(
        default=None, metadata={"alias": "userFirstName"}
    )

    user_last_name: Optional[str] = field(
        default=None, metadata={"alias": "userLastName"}
    )

    user_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "userPhoneNumber"}
    )

    user_extension: Optional[str] = field(
        default=None, metadata={"alias": "userExtension"}
    )

    end_point_type: Optional[str] = field(
        default=None, metadata={"alias": "endPointType"}
    )


@dataclass(kw_only=True)
class PriorityAlertCriteriaFromDn(OCIType):
    """The from dn criteria used within an add/get request.

    Attributes:

        from_dn_criteria_selection (str):

        include_anonymous_callers (bool):

        include_unavailable_callers (bool):

        phone_number (Optional[List[str]]):

    """

    from_dn_criteria_selection: str = field(
        metadata={"alias": "fromDnCriteriaSelection"}
    )

    include_anonymous_callers: bool = field(
        metadata={"alias": "includeAnonymousCallers"}
    )

    include_unavailable_callers: bool = field(
        metadata={"alias": "includeUnavailableCallers"}
    )

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )


@dataclass(kw_only=True)
class PublicUserIdentity(OCIType):
    """Public User Identity

    Attributes:

        sip_uri (Optional[str]):

        tel_uri (Optional[str]):

    """

    sip_uri: Optional[str] = field(default=None, metadata={"alias": "sipURI"})

    tel_uri: Optional[str] = field(default=None, metadata={"alias": "telURI"})


@dataclass(kw_only=True)
class PushNotificationEventData23(OCIType):
    """The common push notification event elements.
        The mobileNumber element is only returned for MOBILE_CALL_INFO events.

    Attributes:

        event_name (str):

        silent (bool):

        mutable_content (bool):

        push_notification_event_parameters (Optional[str]):

        mobile_number (Optional[str]):

    """

    event_name: str = field(metadata={"alias": "eventName"})

    silent: bool = field(metadata={"alias": "silent"})

    mutable_content: bool = field(metadata={"alias": "mutableContent"})

    push_notification_event_parameters: Optional[str] = field(
        default=None, metadata={"alias": "pushNotificationEventParameters"}
    )

    mobile_number: Optional[str] = field(
        default=None, metadata={"alias": "mobileNumber"}
    )


@dataclass(kw_only=True)
class RandomPort(OCIType):
    """Represents either a random port number, or a specific port number.

    Attributes:

        random (Optional[str]):

        port (Optional[int]):

    """

    random: Optional[str] = field(default=None, metadata={"alias": "random"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})


@dataclass(kw_only=True)
class Recurrence(OCIType):
    """Defines recurrence.

    Attributes:

        recur_daily (Optional[object]):

        recur_weekly (Optional[object]):

        recur_monthly_by_day (Optional[object]):

        recur_monthly_by_week (Optional[object]):

        recur_yearly_by_day (Optional[object]):

        recur_yearly_by_week (Optional[object]):

        recur_for_ever (Optional[bool]):

        recur_end_date (Optional[int]):

        recur_end_occurrence (Optional[int]):

    """

    recur_daily: Optional[object] = field(
        default=None, metadata={"alias": "recurDaily"}
    )

    recur_weekly: Optional[object] = field(
        default=None, metadata={"alias": "recurWeekly"}
    )

    recur_monthly_by_day: Optional[object] = field(
        default=None, metadata={"alias": "recurMonthlyByDay"}
    )

    recur_monthly_by_week: Optional[object] = field(
        default=None, metadata={"alias": "recurMonthlyByWeek"}
    )

    recur_yearly_by_day: Optional[object] = field(
        default=None, metadata={"alias": "recurYearlyByDay"}
    )

    recur_yearly_by_week: Optional[object] = field(
        default=None, metadata={"alias": "recurYearlyByWeek"}
    )

    recur_for_ever: Optional[bool] = field(
        default=None, metadata={"alias": "recurForEver"}
    )

    recur_end_date: Optional[int] = field(
        default=None, metadata={"alias": "recurEndDate"}
    )

    recur_end_occurrence: Optional[int] = field(
        default=None, metadata={"alias": "recurEndOccurrence"}
    )


@dataclass(kw_only=True)
class ReplacementCallProcessingPolicyProfileSubscriberTypeList21(OCIType):
    """A list of CallProcessingPolicyProfileSubscriberType21. The list replaces a previously configured list.

    Attributes:

        subscriber_type (List[str]):

    """

    subscriber_type: List[str] = field(metadata={"alias": "subscriberType"})


@dataclass(kw_only=True)
class ReplacementCombinedNetworkClassOfServiceList(OCIType):
    """A list of network class of services that replaces a previously network class of services.

    Attributes:

        network_class_of_service (List[str]):

    """

    network_class_of_service: List[str] = field(
        metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class ReplacementCommunicationBarringAlternateCallIndicatorList(OCIType):
    """A list of Communication Barring Alternate Call Indicator that replaces
        a previously configured list. By convention, an element of this type
        may be set nill to clear the list.

    Attributes:

        alternate_call_indicator (List[str]):

    """

    alternate_call_indicator: List[str] = field(
        metadata={"alias": "alternateCallIndicator"}
    )


@dataclass(kw_only=True)
class ReplacementCommunicationBarringCallTypeList(OCIType):
    """A list of Communication Barring Call Types that replaces a previously
        configured list. By convention, an element of this type may be set
        nill to clear the list.

    Attributes:

        call_type (List[str]):

    """

    call_type: List[str] = field(metadata={"alias": "callType"})


@dataclass(kw_only=True)
class ReplacementContactList(OCIType):
    """A list of SIP contacts that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        contact (List[str]):

    """

    contact: List[str] = field(metadata={"alias": "contact"})


@dataclass(kw_only=True)
class ReplacementDeviceTypeList(OCIType):
    """A list of device types that replaces the previously assigned list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        device_type (List[str]):

    """

    device_type: List[str] = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class ReplacementNumberPortabilityStatusList(OCIType):
    """A list of Number Portability Query Statuses that replaces a previously
        configured list. By convention, an element of this type may be set
        to nill to clear the list.

    Attributes:

        status (List[str]):

    """

    status: List[str] = field(metadata={"alias": "status"})


@dataclass(kw_only=True)
class ReplacementOutgoingDNList(OCIType):
    """A list of outgoing dns that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        phone_number (List[str]):

    """

    phone_number: List[str] = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class ReplacementOutgoingDNorSIPURIList(OCIType):
    """A list of phone numbers or sipuris that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        phone_number (List[str]):

    """

    phone_number: List[str] = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class ReplacementServicePackNameList(OCIType):
    """A list of service packs that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        service_pack_name (List[str]):

    """

    service_pack_name: List[str] = field(metadata={"alias": "servicePackName"})


@dataclass(kw_only=True)
class ReplacementSIPAliasList(OCIType):
    """A list of SIP aliases that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        sip_alias (List[str]):

    """

    sip_alias: List[str] = field(metadata={"alias": "sipAlias"})


@dataclass(kw_only=True)
class ReplacementTagSetList(OCIType):
    """A list of tag sets that replaces the previously assigned list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        tag_set (List[str]):

    """

    tag_set: List[str] = field(metadata={"alias": "tagSet"})


@dataclass(kw_only=True)
class ReplacementUserIdList(OCIType):
    """A list of userIds that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        user_id (List[str]):

    """

    user_id: List[str] = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class ReplacementUserServiceList(OCIType):
    """A list of user services that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        service_name (List[str]):

    """

    service_name: List[str] = field(metadata={"alias": "serviceName"})


@dataclass(kw_only=True)
class ReplacementVirtualOnNetCallTypeNameList(OCIType):
    """A list of Virtual On-Net Call Types that replaces a previously
        configured list. By convention, an element of this type may be set
        to nill to clear the list.

    Attributes:

        virtual_on_net_call_type_name (List[str]):

    """

    virtual_on_net_call_type_name: List[str] = field(
        metadata={"alias": "virtualOnNetCallTypeName"}
    )


@dataclass(kw_only=True)
class ResponsePagingControl(OCIType):
    """Used in queries to restrict the set of result rows when making a request that can result in
        a large dataset. The client specifies the starting row and the number of rows requested.
        The server only provides those rows in results, if available.

    Attributes:

        response_start_index (int):

        response_page_size (int):

    """

    response_start_index: int = field(metadata={"alias": "responseStartIndex"})

    response_page_size: int = field(metadata={"alias": "responsePageSize"})


@dataclass(kw_only=True)
class ScheduleKey(OCIType):
    """Uniquely identifies Holiday and Time Schedules within a level(System, Service Provider, Group or User level).

    Attributes:

        schedule_name (str):

        schedule_type (str):

    """

    schedule_name: str = field(metadata={"alias": "scheduleName"})

    schedule_type: str = field(metadata={"alias": "scheduleType"})


@dataclass(kw_only=True)
class SelectiveCallRejectionCriteriaCallType(OCIType):
    """The call type criteria used within an add/get request.

    Attributes:

        from_dn_criteria_selection (str):

        include_anonymous_callers (bool):

        include_unavailable_callers (bool):

        phone_number (Optional[List[str]]):

    """

    from_dn_criteria_selection: str = field(
        metadata={"alias": "fromDnCriteriaSelection"}
    )

    include_anonymous_callers: bool = field(
        metadata={"alias": "includeAnonymousCallers"}
    )

    include_unavailable_callers: bool = field(
        metadata={"alias": "includeUnavailableCallers"}
    )

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )


@dataclass(kw_only=True)
class ServiceActivation(OCIType):
    """Service Instance active status indicator

    Attributes:

        service_user_id (str):

        is_active (bool):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class ServiceInstanceModifyProfile(OCIType):
    """Service Profile Information for group service used when modifying an existing service instance.

    Attributes:

        name (Optional[str]):

        calling_line_id_last_name (Optional[str]):

        calling_line_id_first_name (Optional[str]):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

        phone_number (Optional[Nillable[str]]):

        extension (Optional[Nillable[str]]):

        password (Optional[str]):

        department (Optional[Nillable[DepartmentKey]]):

        language (Optional[str]):

        time_zone (Optional[str]):

        sip_alias_list (Optional[Nillable[ReplacementSIPAliasList]]):

        public_user_identity (Optional[Nillable[str]]):

        calling_line_id_phone_number (Optional[Nillable[str]]):

    """

    name: Optional[str] = field(default=None, metadata={"alias": "name"})

    calling_line_id_last_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdLastName"}
    )

    calling_line_id_first_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdFirstName"}
    )

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )

    phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    extension: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "extension"}
    )

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    department: Optional[Nillable[DepartmentKey]] = field(
        default=None, metadata={"alias": "department"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    sip_alias_list: Optional[Nillable[ReplacementSIPAliasList]] = field(
        default=None, metadata={"alias": "sipAliasList"}
    )

    public_user_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "publicUserIdentity"}
    )

    calling_line_id_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )

    def __post_init__(self):
        nillable_fields = [
            "phone_number",
            "extension",
            "department",
            "sip_alias_list",
            "public_user_identity",
            "calling_line_id_phone_number",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceInstanceModifyProfileFlexibleSeatingHost(OCIType):
    """Service Profile Information for a flexible seating host

    Attributes:

        name (Optional[str]):

        calling_line_id_last_name (Optional[str]):

        calling_line_id_first_name (Optional[str]):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

        phone_number (Optional[Nillable[str]]):

        extension (Optional[Nillable[str]]):

        password (Optional[str]):

        department (Optional[Nillable[DepartmentKey]]):

        language (Optional[str]):

        time_zone (Optional[str]):

        calling_line_id_phone_number (Optional[Nillable[str]]):

    """

    name: Optional[str] = field(default=None, metadata={"alias": "name"})

    calling_line_id_last_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdLastName"}
    )

    calling_line_id_first_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdFirstName"}
    )

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )

    phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    extension: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "extension"}
    )

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    department: Optional[Nillable[DepartmentKey]] = field(
        default=None, metadata={"alias": "department"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    calling_line_id_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )

    def __post_init__(self):
        nillable_fields = [
            "phone_number",
            "extension",
            "department",
            "calling_line_id_phone_number",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderAdmin(OCIType):
    """The common Service Provider Admin elements.

    Attributes:

        user_id (str):

        first_name (Optional[str]):

        last_name (Optional[str]):

        password (Optional[str]):

        language (Optional[str]):

        administrator_type (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    first_name: Optional[str] = field(default=None, metadata={"alias": "firstName"})

    last_name: Optional[str] = field(default=None, metadata={"alias": "lastName"})

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    administrator_type: str = field(metadata={"alias": "administratorType"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringHierarchicalCallMeNowRule(OCIType):
    """Service Provider Communication Barring Hierarchical Call Me Now Rule

    Attributes:

        criteria (Optional[str]):

        digit_pattern_criteria (Optional[str]):

        action (str):

        call_timeout_seconds (Optional[int]):

        time_schedule (Optional[str]):

        holiday_schedule (Optional[str]):

        priority (float):

    """

    criteria: Optional[str] = field(default=None, metadata={"alias": "criteria"})

    digit_pattern_criteria: Optional[str] = field(
        default=None, metadata={"alias": "digitPatternCriteria"}
    )

    action: str = field(metadata={"alias": "action"})

    call_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "callTimeoutSeconds"}
    )

    time_schedule: Optional[str] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[str] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    priority: float = field(metadata={"alias": "priority"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringHierarchicalOriginatingRule(OCIType):
    """Service Provider Communication Barring Hierarchical Originating Rule

    Attributes:

        criteria (Optional[str]):

        digit_pattern_criteria (Optional[str]):

        action (str):

        treatment_id (Optional[Nillable[str]]):

        transfer_number (Optional[Nillable[str]]):

        call_timeout_seconds (Optional[int]):

        time_schedule (Optional[str]):

        holiday_schedule (Optional[str]):

        priority (float):

    """

    criteria: Optional[str] = field(default=None, metadata={"alias": "criteria"})

    digit_pattern_criteria: Optional[str] = field(
        default=None, metadata={"alias": "digitPatternCriteria"}
    )

    action: str = field(metadata={"alias": "action"})

    treatment_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "treatmentId"}
    )

    transfer_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "transferNumber"}
    )

    call_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "callTimeoutSeconds"}
    )

    time_schedule: Optional[str] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[str] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    priority: float = field(metadata={"alias": "priority"})

    def __post_init__(self):
        nillable_fields = ["treatment_id", "transfer_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringHierarchicalRedirectingRule(OCIType):
    """Service Provider Communication Barring Hierarchical Redirecting Rule

    Attributes:

        criteria (Optional[str]):

        digit_pattern_criteria (Optional[str]):

        action (str):

        call_timeout_seconds (Optional[int]):

        time_schedule (Optional[str]):

        holiday_schedule (Optional[str]):

        priority (float):

    """

    criteria: Optional[str] = field(default=None, metadata={"alias": "criteria"})

    digit_pattern_criteria: Optional[str] = field(
        default=None, metadata={"alias": "digitPatternCriteria"}
    )

    action: str = field(metadata={"alias": "action"})

    call_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "callTimeoutSeconds"}
    )

    time_schedule: Optional[str] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[str] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    priority: float = field(metadata={"alias": "priority"})


@dataclass(kw_only=True)
class SimultaneousRingNumber(OCIType):
    """Simultaneous Ring number entry.

    Attributes:

        phone_number (str):

        answer_confirmation_required (bool):

    """

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    answer_confirmation_required: bool = field(
        metadata={"alias": "answerConfirmationRequired"}
    )


@dataclass(kw_only=True)
class SIPAuthenticationUserNamePassword(OCIType):
    """User's authentication service information.

    Attributes:

        sip_authentication_user_name (str):

        sip_authentication_password (str):

    """

    sip_authentication_user_name: str = field(
        metadata={"alias": "sipAuthenticationUserName"}
    )

    sip_authentication_password: str = field(
        metadata={"alias": "sipAuthenticationPassword"}
    )


@dataclass(kw_only=True)
class SIPContactInfo(OCIType):
    """A SIP Contact info contains the SIP registration Contact and its associated Header path
        The following element is only used in AS data mode and ignored in XS data mode:
          pathHeader

    Attributes:

        sip_contact (str):

        path_header (Optional[str]):

    """

    sip_contact: str = field(metadata={"alias": "sipContact"})

    path_header: Optional[str] = field(default=None, metadata={"alias": "pathHeader"})


@dataclass(kw_only=True)
class SpeedDial100Entry(OCIType):
    """Modify the speed dial 100 prefix setting for a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        speed_code (int):

        phone_number (str):

        description (Optional[str]):

    """

    speed_code: int = field(metadata={"alias": "speedCode"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SpeedDial100EntryModify(OCIType):
    """Modify the speed dial 100 prefix setting for a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        speed_code (int):

        phone_number (Optional[str]):

        description (Optional[Nillable[str]]):

    """

    speed_code: int = field(metadata={"alias": "speedCode"})

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SpeedDial8Entry(OCIType):
    """Modify the speed dial 8 prefix setting for a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        speed_code (int):

        phone_number (Optional[Nillable[str]]):

        description (Optional[Nillable[str]]):

    """

    speed_code: int = field(metadata={"alias": "speedCode"})

    phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["phone_number", "description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class StreetAddress(OCIType):
    """Street address information.

    Attributes:

        address_line1 (Optional[Nillable[str]]):

        address_line2 (Optional[Nillable[str]]):

        city (Optional[Nillable[str]]):

        state_or_province (Optional[Nillable[str]]):

        state_or_province_display_name (Optional[str]):

        zip_or_postal_code (Optional[Nillable[str]]):

        country (Optional[Nillable[str]]):

    """

    address_line1: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "addressLine1"}
    )

    address_line2: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "addressLine2"}
    )

    city: Optional[Nillable[str]] = field(default=None, metadata={"alias": "city"})

    state_or_province: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "stateOrProvince"}
    )

    state_or_province_display_name: Optional[str] = field(
        default=None, metadata={"alias": "stateOrProvinceDisplayName"}
    )

    zip_or_postal_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "zipOrPostalCode"}
    )

    country: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "country"}
    )

    def __post_init__(self):
        nillable_fields = [
            "address_line1",
            "address_line2",
            "city",
            "state_or_province",
            "zip_or_postal_code",
            "country",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class TimeSchedule(OCIType):
    """The from dn criteria.

    Attributes:

        type (str):

        name (str):

    """

    type: str = field(metadata={"alias": "type"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class TrunkAddressingModify(OCIType):
    """Trunk group endpoint.

    Attributes:

        trunk_group_device_endpoint (Optional[Nillable[TrunkGroupDeviceEndpointModify]]):

        enterprise_trunk_name (Optional[Nillable[str]]):

        alternate_trunk_identity (Optional[Nillable[str]]):

    """

    trunk_group_device_endpoint: Optional[Nillable[TrunkGroupDeviceEndpointModify]] = (
        field(default=None, metadata={"alias": "trunkGroupDeviceEndpoint"})
    )

    enterprise_trunk_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "enterpriseTrunkName"}
    )

    alternate_trunk_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "alternateTrunkIdentity"}
    )

    def __post_init__(self):
        nillable_fields = [
            "trunk_group_device_endpoint",
            "enterprise_trunk_name",
            "alternate_trunk_identity",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class TrunkAddressingMultipleContactModify(OCIType):
    """Trunk group endpoint that can have multiple contacts.
        alternateTrunkIdentityDomain is only used in XS mode and the AS when deployed in IMS mode.
        Setting alternateTrunkIdentity or alternateTrunkIdentityDomain to nil in XS mode, the other one paremter should be set to nil at the same time.
        The following elements are only used in AS data mode and are ignored in XS data mode:
         physicalLocation

    Attributes:

        trunk_group_device_endpoint (Optional[Nillable[TrunkGroupDeviceMultipleContactEndpointModify]]):

        enterprise_trunk_name (Optional[Nillable[str]]):

        alternate_trunk_identity (Optional[Nillable[str]]):

        alternate_trunk_identity_domain (Optional[Nillable[str]]):

        physical_location (Optional[Nillable[str]]):

    """

    trunk_group_device_endpoint: Optional[
        Nillable[TrunkGroupDeviceMultipleContactEndpointModify]
    ] = field(default=None, metadata={"alias": "trunkGroupDeviceEndpoint"})

    enterprise_trunk_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "enterpriseTrunkName"}
    )

    alternate_trunk_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "alternateTrunkIdentity"}
    )

    alternate_trunk_identity_domain: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "alternateTrunkIdentityDomain"}
    )

    physical_location: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    def __post_init__(self):
        nillable_fields = [
            "trunk_group_device_endpoint",
            "enterprise_trunk_name",
            "alternate_trunk_identity",
            "alternate_trunk_identity_domain",
            "physical_location",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class TrunkAddressingMultipleContactModify22(OCIType):
    """Trunk group endpoint that can have multiple contacts.
        alternateTrunkIdentityDomain is only used in XS mode and the AS when deployed in IMS mode. .
        Setting alternateTrunkIdentity or alternateTrunkIdentityDomain to nil in XS mode, the other one paremter should be set to nil at the same time.
        The following elements are only used in AS data mode and are ignored in XS data mode:
         physicalLocation

    Attributes:

        trunk_group_device_endpoint (Optional[Nillable[TrunkGroupDeviceMultipleContactEndpointModify22]]):

        enterprise_trunk_name (Optional[Nillable[str]]):

        alternate_trunk_identity (Optional[Nillable[str]]):

        alternate_trunk_identity_domain (Optional[Nillable[str]]):

        physical_location (Optional[Nillable[str]]):

    """

    trunk_group_device_endpoint: Optional[
        Nillable[TrunkGroupDeviceMultipleContactEndpointModify22]
    ] = field(default=None, metadata={"alias": "trunkGroupDeviceEndpoint"})

    enterprise_trunk_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "enterpriseTrunkName"}
    )

    alternate_trunk_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "alternateTrunkIdentity"}
    )

    alternate_trunk_identity_domain: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "alternateTrunkIdentityDomain"}
    )

    physical_location: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    def __post_init__(self):
        nillable_fields = [
            "trunk_group_device_endpoint",
            "enterprise_trunk_name",
            "alternate_trunk_identity",
            "alternate_trunk_identity_domain",
            "physical_location",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class TrunkGroupDeviceEndpointAdd(OCIType):
    """Trunk group device endpoint used in the context of modify.

    Attributes:

        name (str):

        line_port (str):

        contact (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    line_port: str = field(metadata={"alias": "linePort"})

    contact: Optional[str] = field(default=None, metadata={"alias": "contact"})


@dataclass(kw_only=True)
class TrunkGroupDeviceEndpointModify(OCIType):
    """Trunk group device endpoint used in the context of modify.

    Attributes:

        name (str):

        line_port (str):

        contact (Optional[Nillable[str]]):

    """

    name: str = field(metadata={"alias": "name"})

    line_port: str = field(metadata={"alias": "linePort"})

    contact: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "contact"}
    )

    def __post_init__(self):
        nillable_fields = ["contact"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class TrunkGroupDeviceEndpointRead14sp4(OCIType):
    """Trunk group device endpoint.

    Attributes:

        name (str):

        line_port (str):

        contact (Optional[str]):

        static_registration_capable (bool):

        use_domain (bool):

        is_pilot_user (bool):

    """

    name: str = field(metadata={"alias": "name"})

    line_port: str = field(metadata={"alias": "linePort"})

    contact: Optional[str] = field(default=None, metadata={"alias": "contact"})

    static_registration_capable: bool = field(
        metadata={"alias": "staticRegistrationCapable"}
    )

    use_domain: bool = field(metadata={"alias": "useDomain"})

    is_pilot_user: bool = field(metadata={"alias": "isPilotUser"})


@dataclass(kw_only=True)
class TrunkGroupDeviceMultipleContactEndpointAdd(OCIType):
    """Trunk group device endpoint used in the context of modify that can have multiple contacts.

    Attributes:

        name (str):

        line_port (str):

        contact (Optional[List[str]]):

    """

    name: str = field(metadata={"alias": "name"})

    line_port: str = field(metadata={"alias": "linePort"})

    contact: Optional[List[str]] = field(default=None, metadata={"alias": "contact"})


@dataclass(kw_only=True)
class TrunkGroupDeviceMultipleContactEndpointModify(OCIType):
    """Trunk group device endpoint used in the context of modify that can have multiple contacts.

    Attributes:

        name (Optional[str]):

        line_port (Optional[str]):

        contact_list (Optional[Nillable[ReplacementContactList]]):

    """

    name: Optional[str] = field(default=None, metadata={"alias": "name"})

    line_port: Optional[str] = field(default=None, metadata={"alias": "linePort"})

    contact_list: Optional[Nillable[ReplacementContactList]] = field(
        default=None, metadata={"alias": "contactList"}
    )

    def __post_init__(self):
        nillable_fields = ["contact_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class TrunkGroupDeviceMultipleContactEndpointModify22(OCIType):
    """Trunk group device endpoint used in the context of modify that can have multiple contacts.

    Attributes:

        name (Optional[str]):

        line_port (Optional[str]):

        contact_list (Optional[Nillable[ReplacementContactList22]]):

    """

    name: Optional[str] = field(default=None, metadata={"alias": "name"})

    line_port: Optional[str] = field(default=None, metadata={"alias": "linePort"})

    contact_list: Optional[Nillable[ReplacementContactList22]] = field(
        default=None, metadata={"alias": "contactList"}
    )

    def __post_init__(self):
        nillable_fields = ["contact_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class TrunkGroupDeviceMultipleContactEndpointRead(OCIType):
    """Trunk group device endpoint that can have multiple contacts.

    Attributes:

        name (str):

        line_port (str):

        contact (Optional[List[str]]):

        static_registration_capable (bool):

        use_domain (bool):

        is_pilot_user (bool):

    """

    name: str = field(metadata={"alias": "name"})

    line_port: str = field(metadata={"alias": "linePort"})

    contact: Optional[List[str]] = field(default=None, metadata={"alias": "contact"})

    static_registration_capable: bool = field(
        metadata={"alias": "staticRegistrationCapable"}
    )

    use_domain: bool = field(metadata={"alias": "useDomain"})

    is_pilot_user: bool = field(metadata={"alias": "isPilotUser"})


@dataclass(kw_only=True)
class TrunkGroupKey(OCIType):
    """Uniquely identifies a Trunk Group system-wide.
        The trunkGroupName is unique within a group, but not unique system-wide.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class UnboundedNonNegativeInt(OCIType):
    """Unbounded Quantity. Can either be unlimited or a non-negative int quantity.

    Attributes:

        unlimited (Optional[bool]):

        quantity (Optional[int]):

    """

    unlimited: Optional[bool] = field(default=None, metadata={"alias": "unlimited"})

    quantity: Optional[int] = field(default=None, metadata={"alias": "quantity"})


@dataclass(kw_only=True)
class UnboundedPositiveInt(OCIType):
    """Unbounded Quantity. Can either be unlimited or a positive int quantity.

    Attributes:

        unlimited (Optional[bool]):

        quantity (Optional[int]):

    """

    unlimited: Optional[bool] = field(default=None, metadata={"alias": "unlimited"})

    quantity: Optional[int] = field(default=None, metadata={"alias": "quantity"})


@dataclass(kw_only=True)
class UserDisplayNames(OCIType):
    """The parts of a user's display name that a client can display in whatever way is appropriate
        for the client application.

    Attributes:

        last_name (str):

        first_name (str):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

    """

    last_name: str = field(metadata={"alias": "lastName"})

    first_name: str = field(metadata={"alias": "firstName"})

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )


@dataclass(kw_only=True)
class UserDNExtension(OCIType):
    """User's DN and extension. Used in SearchCriteriaComposedOrDnExtension when either a DN
         or an extension can be used as a search criteria.

    Attributes:

        dn (Optional[str]):

        extension (Optional[str]):

    """

    dn: Optional[str] = field(default=None, metadata={"alias": "dn"})

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})


@dataclass(kw_only=True)
class UserEndpointKey(OCIType):
    """Key to uniquely identify a user endpoint.

    Attributes:

        user_id (str):

        line_port (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    line_port: str = field(metadata={"alias": "linePort"})


@dataclass(kw_only=True)
class UserFeatureAccessCodeModifyEntry(OCIType):
    """Feature Access Code Entry to be used in all user modify command.

    Attributes:

        feature_access_code_name (str):

        enable_fac (Optional[bool]):

    """

    feature_access_code_name: str = field(metadata={"alias": "featureAccessCodeName"})

    enable_fac: Optional[bool] = field(default=None, metadata={"alias": "enableFAC"})


@dataclass(kw_only=True)
class VerifyTranslationAndRoutingOrigination(OCIType):
    """Verification Translation and Routing origination
        value.

         The following element is only used in AS mode:
          userId

    Attributes:

        line_port (Optional[str]):

        phone (Optional[str]):

        user_id (Optional[str]):

        url (Optional[str]):

    """

    line_port: Optional[str] = field(default=None, metadata={"alias": "linePort"})

    phone: Optional[str] = field(default=None, metadata={"alias": "phone"})

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})

    url: Optional[str] = field(default=None, metadata={"alias": "url"})


@dataclass(kw_only=True)
class VirtualOnNetUserKey(OCIType):
    """Virtual On-Net User identifier which is the Service Provider ID, Group ID,
        and phone number (in E.164 format).

    Attributes:

        service_provider_id (str):

        group_id (str):

        phone_number (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class VoiceMessagingAlternateNoAnswerGreetingRead16(OCIType):
    """The configuration of a alternate no answer greeting.
        It is used when geting a user's voice messaging greeting.

    Attributes:

        name (str):

        audio_file (Optional[str]):

        audio_media_type (Optional[str]):

        video_file (Optional[str]):

        video_media_type (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    audio_file: Optional[str] = field(default=None, metadata={"alias": "audioFile"})

    audio_media_type: Optional[str] = field(
        default=None, metadata={"alias": "audioMediaType"}
    )

    video_file: Optional[str] = field(default=None, metadata={"alias": "videoFile"})

    video_media_type: Optional[str] = field(
        default=None, metadata={"alias": "videoMediaType"}
    )


@dataclass(kw_only=True)
class XsiPolicyProfileAssignEntry(OCIType):
    """The Xsi policy profile assign entry contains multiple Xsi policy profile
        and one default xsi policy profile.

    Attributes:

        name (Optional[List[str]]):

        default (Optional[str]):

    """

    name: Optional[List[str]] = field(default=None, metadata={"alias": "name"})

    default: Optional[str] = field(default=None, metadata={"alias": "default"})


@dataclass(kw_only=True)
class XsiPolicyProfileKey(OCIType):
    """The system Xsi policy profile key.

    Attributes:

        name (str):

        level (str):

    """

    name: str = field(metadata={"alias": "name"})

    level: str = field(metadata={"alias": "level"})


@dataclass(kw_only=True)
class XsiPolicyProfileUnassignEntry(OCIType):
    """The Xsi policy profile unassign entry contains mutiltipe Xsi policy profile
        and a new replacement default xsi policy profile.

    Attributes:

        name (Optional[List[str]]):

        new_default (Optional[str]):

    """

    name: Optional[List[str]] = field(default=None, metadata={"alias": "name"})

    new_default: Optional[str] = field(default=None, metadata={"alias": "newDefault"})


@dataclass(kw_only=True)
class SearchCriteria(OCIType):
    """Abstract base type for specifying search criteria. A search criteria is an optional element
        used to restrict the number of rows returned when requesting a potentially large set of
        data from the provisioning server.

    Attributes:

    """


@dataclass(kw_only=True)
class SearchCriteriaComposedOr(OCIType):
    """Abstract base type for specifying search criteria where the search criteria params are OR'ed.
        A search criteria is an optional element
        used to restrict the number of rows returned when requesting a potentially large set of
        data from the provisioning server.

    Attributes:

    """


@dataclass(kw_only=True)
class EnterpriseVoiceVPNDigitManipulation(OCIType):
    """Enterprise Voice VPN Digit Manipulation Entry.

    Attributes:

    """


@dataclass(kw_only=True)
class EnterpriseVoiceVPNTreatmentEntry(OCIType):
    """Enterprise Voice VPN Treatment entry

    Attributes:

        id (str):

        description (Optional[Nillable[str]]):

    """

    id: str = field(metadata={"alias": "id"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SortCriteria(OCIType):
    """The sort criteria specifies whether sort is ascending or descending,
        and	whether the sort is case sensitive. Sort order defaults to
        ascending and case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortCriteriaNumeric(OCIType):
    """The sort criteria specifies whether sort is
        ascending or descending.
        Sort order defaults to ascending.

    Attributes:

        is_ascending (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})


@dataclass(kw_only=True)
class CustomContactDirectoryEntry(OCIType):
    """Represents either an existing user's Id or an existing Virtual
        On-Net user's DN. For a DN the groupId is used to make it unique
        within an Enterprise, however the groupId is not used with Service
        Providers.

    Attributes:

        user_id (Optional[str]):

        virtual_on_net_phone_number (Optional[str]):

        group_id (Optional[str]):

    """

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})

    virtual_on_net_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "virtualOnNetPhoneNumber"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class PasswordForAccessDevice(OCIType):
    """Passwords to be generated for an access device.
        The combination of serviceProviderId, groupId, and deviceName will be used
        to find the device if it exists. If the device doesn't exist yet, then
        the serviceProviderId and groupId will be used to choose the password
        rules with which to generate the device password.

    Attributes:

        service_provider_id (Optional[str]):

        group_id (Optional[str]):

        device_name (Optional[str]):

        generate_device_authentication_password (bool):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    device_name: Optional[str] = field(default=None, metadata={"alias": "deviceName"})

    generate_device_authentication_password: bool = field(
        metadata={"alias": "generateDeviceAuthenticationPassword"}
    )


@dataclass(kw_only=True)
class PasswordForGroupAdministrator(OCIType):
    """Password to be generated for a group administrator. If the administratorId is not included, or included but
        is not an exiting administrator for the group, a password will be generated based on only the rules applicable
        for a new user.

    Attributes:

        service_provider_id (str):

        group_id (str):

        administrator_id (Optional[str]):

        generate_password (bool):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    administrator_id: Optional[str] = field(
        default=None, metadata={"alias": "administratorId"}
    )

    generate_password: bool = field(metadata={"alias": "generatePassword"})


@dataclass(kw_only=True)
class PasswordForServiceProviderAdministrator(OCIType):
    """Password to be generated for a service provider administrator. If the administratorId is not included,
        or included but is not an exiting administrator for the service provider, a password will be generated
        based on only the rules applicable for a new user.

    Attributes:

        service_provider_id (str):

        administrator_id (Optional[str]):

        generate_password (bool):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    administrator_id: Optional[str] = field(
        default=None, metadata={"alias": "administratorId"}
    )

    generate_password: bool = field(metadata={"alias": "generatePassword"})


@dataclass(kw_only=True)
class PasswordForSystemAdministrator(OCIType):
    """Password to be generated for a System or Provisioning administrator. If the administratorId is
        not included, or included but is not an exiting administrator for the
        service provider, a password will be generated
        based on only the rules applicable for a new user.

    Attributes:

        administrator_id (Optional[str]):

        generate_password (bool):

    """

    administrator_id: Optional[str] = field(
        default=None, metadata={"alias": "administratorId"}
    )

    generate_password: bool = field(metadata={"alias": "generatePassword"})


@dataclass(kw_only=True)
class PasswordForTrunkGroup(OCIType):
    """Passwords to be generated for a trunk group.
        The combination of serviceProviderId, groupId, and name will be used to
        find the trunk group if it exists. If the trunk group doesn't exist yet,
        then the serviceProviderId and groupId will be used to choose the password
        rules with which to generate the trunk group password.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (Optional[str]):

        generate_trunk_group_authentication_password (bool):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: Optional[str] = field(default=None, metadata={"alias": "name"})

    generate_trunk_group_authentication_password: bool = field(
        metadata={"alias": "generateTrunkGroupAuthenticationPassword"}
    )


@dataclass(kw_only=True)
class PasswordForUser(OCIType):
    """Passwords, passcode and SIP authentication passwords to be generated for a user. If the userId is not
        included or included but is not an existing user in the group, a password will be generated based on only
        the rules applicable for a new user.

    Attributes:

        service_provider_id (str):

        group_id (str):

        user_id (Optional[str]):

        generate_password (Optional[bool]):

        generate_passcode (Optional[bool]):

        generate_sip_password (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})

    generate_password: Optional[bool] = field(
        default=None, metadata={"alias": "generatePassword"}
    )

    generate_passcode: Optional[bool] = field(
        default=None, metadata={"alias": "generatePasscode"}
    )

    generate_sip_password: Optional[bool] = field(
        default=None, metadata={"alias": "generateSipPassword"}
    )


@dataclass(kw_only=True)
class ServiceProviderVoiceMessagingGroupSettingsAdd(OCIType):
    """A service provider's or enterprise's voice messaging settings used in the context of add.

    Attributes:

        delivery_from_address (Optional[str]):

        notification_from_address (Optional[str]):

        voice_portal_lockout_from_address (Optional[str]):

        use_system_default_delivery_from_address (bool):

        use_system_default_notification_from_address (bool):

        use_system_default_voice_portal_lockout_from_address (bool):

    """

    delivery_from_address: Optional[str] = field(
        default=None, metadata={"alias": "deliveryFromAddress"}
    )

    notification_from_address: Optional[str] = field(
        default=None, metadata={"alias": "notificationFromAddress"}
    )

    voice_portal_lockout_from_address: Optional[str] = field(
        default=None, metadata={"alias": "voicePortalLockoutFromAddress"}
    )

    use_system_default_delivery_from_address: bool = field(
        metadata={"alias": "useSystemDefaultDeliveryFromAddress"}
    )

    use_system_default_notification_from_address: bool = field(
        metadata={"alias": "useSystemDefaultNotificationFromAddress"}
    )

    use_system_default_voice_portal_lockout_from_address: bool = field(
        metadata={"alias": "useSystemDefaultVoicePortalLockoutFromAddress"}
    )


@dataclass(kw_only=True)
class DeviceManagementAutoRebuildConfigEntry(OCIType):
    """Contains one automatic rebuild configuration list entry.

    Attributes:

        oci_request_prefix (str):

        auto_rebuild_enabled (Optional[bool]):

    """

    oci_request_prefix: str = field(metadata={"alias": "ociRequestPrefix"})

    auto_rebuild_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "autoRebuildEnabled"}
    )


@dataclass(kw_only=True)
class FileRepositoryProtocolWebDAV20(OCIType):
    """Attributes of the WebDav protocol when the file repository interface is using WebDav.

    Attributes:

        secure (bool):

        net_address (str):

        extended_file_capture_support (bool):

    """

    secure: bool = field(metadata={"alias": "secure"})

    net_address: str = field(metadata={"alias": "netAddress"})

    extended_file_capture_support: bool = field(
        metadata={"alias": "extendedFileCaptureSupport"}
    )


@dataclass(kw_only=True)
class ReplacementMediaNameList(OCIType):
    """A list of media that replaces a previously configured list.

    Attributes:

        media_name (List[str]):

    """

    media_name: List[str] = field(metadata={"alias": "mediaName"})


@dataclass(kw_only=True)
class ReplacementZoneList(OCIType):
    """Contains an ordered list of zones to use to replace the current list of zones in an Office Zone.

    Attributes:

        zone_name (List[str]):

    """

    zone_name: List[str] = field(metadata={"alias": "zoneName"})


@dataclass(kw_only=True)
class ServiceAttributeEntry(OCIType):
    """The service attributes name and value pair.

    Attributes:

        name (str):

        value (Nillable[str]):

    """

    name: str = field(metadata={"alias": "name"})

    value: Nillable[str] = field(metadata={"alias": "value"})

    def __post_init__(self):
        nillable_fields = ["value"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceAttributeEntryRead(OCIType):
    """The service attributes name and value pair.

    Attributes:

        name (str):

        value (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    value: Optional[str] = field(default=None, metadata={"alias": "value"})


@dataclass(kw_only=True)
class XsiApplicationIdEntry(OCIType):
    """The system application Id entry.

    Attributes:

        xsi_application_id (str):

        description (Optional[str]):

    """

    xsi_application_id: str = field(metadata={"alias": "xsiApplicationId"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class ProfileAndServiceAnonymousCallRejectionInfo(OCIType):
    """This is the configuration parameters for anonymous Call Rejection service

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class ProfileAndServiceAutomaticCallbackInfo(OCIType):
    """This is the configuration parameters for anonymous Call Rejection service

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class ProfileAndServiceCallForwardAlwaysInfo(OCIType):
    """This is the configuration parameters for Call Forward Always service

    Attributes:

        is_active (bool):

        forward_to_phone_number (Optional[str]):

        is_ring_splash_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    is_ring_splash_active: bool = field(metadata={"alias": "isRingSplashActive"})


@dataclass(kw_only=True)
class ProfileAndServiceCallForwardingBusyInfo(OCIType):
    """This is the configuration parameters for Call Forwarding Busy service

    Attributes:

        is_active (bool):

        forward_to_phone_number (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )


@dataclass(kw_only=True)
class ProfileAndServiceCallForwardingNoAnswerInfo(OCIType):
    """This is the configuration parameters for Call Forwarding No Answer service

    Attributes:

        is_active (bool):

        forward_to_phone_number (Optional[str]):

        number_of_rings (int):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    number_of_rings: int = field(metadata={"alias": "numberOfRings"})


@dataclass(kw_only=True)
class ProfileAndServiceCallingLineIDDeliveryBlockingInfo(OCIType):
    """This is the configuration parameters for Calling Line ID Delivery Blocking service

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class ProfileAndServiceCallTransferInfo(OCIType):
    """This is the configuration parameters for Call Transfer service

    Attributes:

        is_recall_active (bool):

        recall_number_of_rings (int):

        use_diversion_inhibitor_for_blind_transfer (bool):

        use_diversion_inhibitor_for_consultative_calls (bool):

        enable_busy_camp_on (bool):

        busy_camp_on_seconds (int):

    """

    is_recall_active: bool = field(metadata={"alias": "isRecallActive"})

    recall_number_of_rings: int = field(metadata={"alias": "recallNumberOfRings"})

    use_diversion_inhibitor_for_blind_transfer: bool = field(
        metadata={"alias": "useDiversionInhibitorForBlindTransfer"}
    )

    use_diversion_inhibitor_for_consultative_calls: bool = field(
        metadata={"alias": "useDiversionInhibitorForConsultativeCalls"}
    )

    enable_busy_camp_on: bool = field(metadata={"alias": "enableBusyCampOn"})

    busy_camp_on_seconds: int = field(metadata={"alias": "busyCampOnSeconds"})


@dataclass(kw_only=True)
class ProfileAndServiceCallWaitingInfo(OCIType):
    """This is the configuration parameters for Call Transfer service

    Attributes:

        is_active (bool):

        disable_calling_line_id_delivery (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    disable_calling_line_id_delivery: bool = field(
        metadata={"alias": "disableCallingLineIdDelivery"}
    )


@dataclass(kw_only=True)
class ProfileAndServiceDirectedCallPickupWithBargeInInfo(OCIType):
    """This is the configuration parameters for Directed Call Pickup With Barge In service

    Attributes:

        enable_barge_in_warning_tone (bool):

        enable_automatic_target_selection (bool):

    """

    enable_barge_in_warning_tone: bool = field(
        metadata={"alias": "enableBargeInWarningTone"}
    )

    enable_automatic_target_selection: bool = field(
        metadata={"alias": "enableAutomaticTargetSelection"}
    )


@dataclass(kw_only=True)
class ProfileAndServiceDoNotDisturbInfo(OCIType):
    """This is the configuration parameters for Do Not Disturb service

    Attributes:

        is_active (bool):

        ring_splash (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    ring_splash: bool = field(metadata={"alias": "ringSplash"})


@dataclass(kw_only=True)
class ProfileAndServiceExternalLineIDDeliveryInfo(OCIType):
    """This is the configuration parameters for External Line ID Delivery service

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class ProfileAndServiceInternalCallingLineIDDeliveryInfo(OCIType):
    """This is the configuration parameters for Internal Calling Line ID Delivery service

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class ProfileAndServiceThirdPartyVoiceMailInfo(OCIType):
    """This is the configuration parameters for Third Party Voice Mail service

    Attributes:

        is_active (bool):

        busy_redirect_to_voice_mail (bool):

        no_answer_redirect_to_voice_mail (bool):

        server_selection (str):

        user_server (Optional[str]):

        mailbox_id_type (str):

        mailbox_url (Optional[str]):

        no_answer_number_of_rings (int):

        always_redirect_to_voice_mail (bool):

        out_of_primary_zone_redirect_to_voice_mail (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    busy_redirect_to_voice_mail: bool = field(
        metadata={"alias": "busyRedirectToVoiceMail"}
    )

    no_answer_redirect_to_voice_mail: bool = field(
        metadata={"alias": "noAnswerRedirectToVoiceMail"}
    )

    server_selection: str = field(metadata={"alias": "serverSelection"})

    user_server: Optional[str] = field(default=None, metadata={"alias": "userServer"})

    mailbox_id_type: str = field(metadata={"alias": "mailboxIdType"})

    mailbox_url: Optional[str] = field(default=None, metadata={"alias": "mailboxURL"})

    no_answer_number_of_rings: int = field(metadata={"alias": "noAnswerNumberOfRings"})

    always_redirect_to_voice_mail: bool = field(
        metadata={"alias": "alwaysRedirectToVoiceMail"}
    )

    out_of_primary_zone_redirect_to_voice_mail: bool = field(
        metadata={"alias": "outOfPrimaryZoneRedirectToVoiceMail"}
    )


@dataclass(kw_only=True)
class ReplacementOCICallControlApplicationIdList(OCIType):
    """A list of applicationIds that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        application_id (List[str]):

    """

    application_id: List[str] = field(metadata={"alias": "applicationId"})


@dataclass(kw_only=True)
class UserMoveMessage(OCIType):
    """The message describes the impact made when moving a user from one group to another group within the enterprise. The message could also contain the error condition that prevents the user move.

    Attributes:

        message_code (int):

        summary (str):

        summary_english (str):

    """

    message_code: int = field(metadata={"alias": "messageCode"})

    summary: str = field(metadata={"alias": "summary"})

    summary_english: str = field(metadata={"alias": "summaryEnglish"})


@dataclass(kw_only=True)
class AccountAuthorizationCodeEntry(OCIType):
    """Account/Authorization Code.

    Attributes:

        code (str):

        description (Optional[str]):

    """

    code: str = field(metadata={"alias": "code"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class AutomaticCollectCallPrefixDigitsEntry(OCIType):
    """The Automatic Collect Call prefix digits entry.

    Attributes:

        country_code (str):

        prefix_digits (str):

    """

    country_code: str = field(metadata={"alias": "countryCode"})

    prefix_digits: str = field(metadata={"alias": "prefixDigits"})


@dataclass(kw_only=True)
class BroadWorksMobilityUserMobileIdentityModifyEntry(OCIType):
    """User's Mobile Identity Modify Entry

    Attributes:

        mobile_number (str):

        description (Optional[Nillable[str]]):

        is_primary (Optional[bool]):

        enable_alerting (Optional[bool]):

    """

    mobile_number: str = field(metadata={"alias": "mobileNumber"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    is_primary: Optional[bool] = field(default=None, metadata={"alias": "isPrimary"})

    enable_alerting: Optional[bool] = field(
        default=None, metadata={"alias": "enableAlerting"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class AgentStatistics(OCIType):
    """Contains Call Center Agent statistics for a given time frame.

    Attributes:

        number_of_calls_handled (int):

        number_of_calls_unanswered (int):

        average_call_seconds (int):

        total_talk_seconds (int):

        total_staffed_seconds (int):

    """

    number_of_calls_handled: int = field(metadata={"alias": "numberOfCallsHandled"})

    number_of_calls_unanswered: int = field(
        metadata={"alias": "numberOfCallsUnanswered"}
    )

    average_call_seconds: int = field(metadata={"alias": "averageCallSeconds"})

    total_talk_seconds: int = field(metadata={"alias": "totalTalkSeconds"})

    total_staffed_seconds: int = field(metadata={"alias": "totalStaffedSeconds"})


@dataclass(kw_only=True)
class CallCenterAgentThresholdProfileReplacementNotificationEmailList(OCIType):
    """List of email addresses to which the Agent Threshold Profile email is sent. The list replaces a previously configured list.

    Attributes:

        email_address (List[str]):

    """

    email_address: List[str] = field(metadata={"alias": "emailAddress"})


@dataclass(kw_only=True)
class CallCenterAgentUnavailableCodeStateModify(OCIType):
    """Contains a Call Center Agent Unavailable Code and its active state

    Attributes:

        code (str):

        is_active (bool):

    """

    code: str = field(metadata={"alias": "code"})

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class CallCenterQueueStatistics14sp9(OCIType):
    """Contains Call Center Queue statistics.

    Attributes:

        number_of_busy_overflows (int):

        number_of_calls_answered (int):

        number_of_calls_abandoned (int):

        number_of_calls_transferred (int):

        number_of_calls_timedout (int):

        average_number_of_agents_talking (float):

        average_number_of_agents_staffed (float):

        average_wait_seconds (int):

        average_abandonment_seconds (int):

    """

    number_of_busy_overflows: int = field(metadata={"alias": "numberOfBusyOverflows"})

    number_of_calls_answered: int = field(metadata={"alias": "numberOfCallsAnswered"})

    number_of_calls_abandoned: int = field(metadata={"alias": "numberOfCallsAbandoned"})

    number_of_calls_transferred: int = field(
        metadata={"alias": "numberOfCallsTransferred"}
    )

    number_of_calls_timedout: int = field(metadata={"alias": "numberOfCallsTimedout"})

    average_number_of_agents_talking: float = field(
        metadata={"alias": "averageNumberOfAgentsTalking"}
    )

    average_number_of_agents_staffed: float = field(
        metadata={"alias": "averageNumberOfAgentsStaffed"}
    )

    average_wait_seconds: int = field(metadata={"alias": "averageWaitSeconds"})

    average_abandonment_seconds: int = field(
        metadata={"alias": "averageAbandonmentSeconds"}
    )


@dataclass(kw_only=True)
class CallCenterQueueThresholdReplacementNotificationEmailList(OCIType):
    """List of email addresses to which the Call Center Queue Threshold email is sent. The list replaces a previously configured list.

    Attributes:

        email_address (List[str]):

    """

    email_address: List[str] = field(metadata={"alias": "emailAddress"})


@dataclass(kw_only=True)
class CallCenterReplacementSkilledAgents(OCIType):
    """A list of agents grouped by skill levels.

    Attributes:

        skill_level (int):

        agents (Nillable[ReplacementUserIdList]):

    """

    skill_level: int = field(metadata={"alias": "skillLevel"})

    agents: Nillable[ReplacementUserIdList] = field(metadata={"alias": "agents"})

    def __post_init__(self):
        nillable_fields = ["agents"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class CallCenterReportAbandonedCallThresholdReplacementList(OCIType):
    """A list of call center reporting abandoned call threshold seconds that replaces a previously configured list.

    Attributes:

        abandoned_call_threshold_seconds (List[int]):

    """

    abandoned_call_threshold_seconds: List[int] = field(
        metadata={"alias": "abandonedCallThresholdSeconds"}
    )


@dataclass(kw_only=True)
class CallCenterReportCurrentInterval(OCIType):
    """The call center enhanced reporting report current interval, for example, current week.

    Attributes:

        time_unit (str):

    """

    time_unit: str = field(metadata={"alias": "timeUnit"})


@dataclass(kw_only=True)
class CallCenterReportDataTemplateInfo(OCIType):
    """Call center reporting data template info.

    Attributes:

        data_template (str):

        report_type (str):

        is_realtime_report (bool):

        is_agent_param_required (str):

        is_call_center_param_required (str):

        is_call_center_dnis_param_required (str):

        is_sampling_period_param_required (str):

        is_call_completion_threshold_param_required (str):

        is_short_duration_threshold_param_required (str):

        is_service_level_threshold_param_required (str):

        is_service_level_inclusions_param_required (str):

        is_service_level_objective_threshold_param_required (str):

        is_abandoned_call_threshold_param_required (str):

    """

    data_template: str = field(metadata={"alias": "dataTemplate"})

    report_type: str = field(metadata={"alias": "reportType"})

    is_realtime_report: bool = field(metadata={"alias": "isRealtimeReport"})

    is_agent_param_required: str = field(metadata={"alias": "isAgentParamRequired"})

    is_call_center_param_required: str = field(
        metadata={"alias": "isCallCenterParamRequired"}
    )

    is_call_center_dnis_param_required: str = field(
        metadata={"alias": "isCallCenterDnisParamRequired"}
    )

    is_sampling_period_param_required: str = field(
        metadata={"alias": "isSamplingPeriodParamRequired"}
    )

    is_call_completion_threshold_param_required: str = field(
        metadata={"alias": "isCallCompletionThresholdParamRequired"}
    )

    is_short_duration_threshold_param_required: str = field(
        metadata={"alias": "isShortDurationThresholdParamRequired"}
    )

    is_service_level_threshold_param_required: str = field(
        metadata={"alias": "isServiceLevelThresholdParamRequired"}
    )

    is_service_level_inclusions_param_required: str = field(
        metadata={"alias": "isServiceLevelInclusionsParamRequired"}
    )

    is_service_level_objective_threshold_param_required: str = field(
        metadata={"alias": "isServiceLevelObjectiveThresholdParamRequired"}
    )

    is_abandoned_call_threshold_param_required: str = field(
        metadata={"alias": "isAbandonedCallThresholdParamRequired"}
    )


@dataclass(kw_only=True)
class CallCenterReportDataTemplateQueryFilterValueReplacementList(OCIType):
    """A list of call center reporting data template query filter values that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        filter_value (List[str]):

    """

    filter_value: List[str] = field(metadata={"alias": "filterValue"})


@dataclass(kw_only=True)
class CallCenterReportPastInterval(OCIType):
    """The call center enhanced reporting report past interval, for example, last 24 month.

    Attributes:

        number (int):

        time_unit (str):

    """

    number: int = field(metadata={"alias": "number"})

    time_unit: str = field(metadata={"alias": "timeUnit"})


@dataclass(kw_only=True)
class CallCenterReportReplacementEmailList(OCIType):
    """A list of call center reporting email addresses that replaces a previously configured list.

    Attributes:

        email_address (List[str]):

    """

    email_address: List[str] = field(metadata={"alias": "emailAddress"})


@dataclass(kw_only=True)
class CallCenterReportServiceLevelThresholdReplacementList(OCIType):
    """A list of call center reporting service level threshold seconds that replaces a previously configured list.

    Attributes:

        service_level_threshold_seconds (List[int]):

    """

    service_level_threshold_seconds: List[int] = field(
        metadata={"alias": "serviceLevelThresholdSeconds"}
    )


@dataclass(kw_only=True)
class CallCenterRoutingPriorityOrder(OCIType):
    """Call center routing order

    Attributes:

        service_user_id (str):

        priority (float):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    priority: float = field(metadata={"alias": "priority"})


@dataclass(kw_only=True)
class CallCenterScheduledReportAgentSelection(OCIType):
    """Either all agents or list of agents.

    Attributes:

        all_agent (Optional[bool]):

        agent_user_id (Optional[List[str]]):

    """

    all_agent: Optional[bool] = field(default=None, metadata={"alias": "allAgent"})

    agent_user_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "agentUserId"}
    )


@dataclass(kw_only=True)
class CallCenterScheduledReportCallCenterSelection(OCIType):
    """Either all call centers or list of call centers.

    Attributes:

        all_call_center (Optional[bool]):

        service_user_id (Optional[List[str]]):

    """

    all_call_center: Optional[bool] = field(
        default=None, metadata={"alias": "allCallCenter"}
    )

    service_user_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "serviceUserId"}
    )


@dataclass(kw_only=True)
class CallCenterScheduledReportCallCenterSelectionRead(OCIType):
    """User for admin read. Either all call centers or 2 lists of call centers: one for current and one for deleted call centers.

    Attributes:

        all_call_center (Optional[bool]):

        current_user_id (Optional[List[str]]):

        past_user_id (Optional[List[str]]):

    """

    all_call_center: Optional[bool] = field(
        default=None, metadata={"alias": "allCallCenter"}
    )

    current_user_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "currentUserId"}
    )

    past_user_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "pastUserId"}
    )


@dataclass(kw_only=True)
class CallCenterScheduledReportDNISSelection(OCIType):
    """Either all DNIS under the specified Call Center or list of DNIS.

    Attributes:

        service_user_id (str):

        all_dnis (Optional[bool]):

        name (Optional[List[str]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    all_dnis: Optional[bool] = field(default=None, metadata={"alias": "allDNIS"})

    name: Optional[List[str]] = field(default=None, metadata={"alias": "name"})


@dataclass(kw_only=True)
class CallCenterScheduledReportDNISSelectionRead(OCIType):
    """Either all DNIS under the specified Call Center or 2 lists of DNIS, one for current one for past (deleted).

    Attributes:

        service_user_id (str):

        deleted (Optional[bool]):

        all_dnis (Optional[bool]):

        current_name (Optional[List[str]]):

        past_name (Optional[List[str]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    deleted: Optional[bool] = field(default=None, metadata={"alias": "deleted"})

    all_dnis: Optional[bool] = field(default=None, metadata={"alias": "allDNIS"})

    current_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "currentName"}
    )

    past_name: Optional[List[str]] = field(default=None, metadata={"alias": "pastName"})


@dataclass(kw_only=True)
class CallCenterScheduledReportServiceLevelInclusions(OCIType):
    """The call center enhanced reporting scheduled report inclusions related to the Service Level thresholds

    Attributes:

        include_overflow_time_transfered_in_service_level (bool):

        include_other_transfers_in_service_level (bool):

        abandoned_calls_in_service_level (str):

        abandoned_call_interval_seconds (Optional[int]):

    """

    include_overflow_time_transfered_in_service_level: bool = field(
        metadata={"alias": "includeOverflowTimeTransferedInServiceLevel"}
    )

    include_other_transfers_in_service_level: bool = field(
        metadata={"alias": "includeOtherTransfersInServiceLevel"}
    )

    abandoned_calls_in_service_level: str = field(
        metadata={"alias": "abandonedCallsInServiceLevel"}
    )

    abandoned_call_interval_seconds: Optional[int] = field(
        default=None, metadata={"alias": "abandonedCallIntervalSeconds"}
    )


@dataclass(kw_only=True)
class CallCenterScheduledReportServiceLevelInclusionsModify(OCIType):
    """The call center enhanced reporting scheduled report modified inclusions related to the Service Level thresholds

    Attributes:

        include_overflow_time_transfered_in_service_level (Optional[bool]):

        include_other_transfers_in_service_level (Optional[bool]):

        abandoned_calls_in_service_level (Optional[str]):

        abandoned_call_interval_seconds (Optional[Nillable[int]]):

    """

    include_overflow_time_transfered_in_service_level: Optional[bool] = field(
        default=None, metadata={"alias": "includeOverflowTimeTransferedInServiceLevel"}
    )

    include_other_transfers_in_service_level: Optional[bool] = field(
        default=None, metadata={"alias": "includeOtherTransfersInServiceLevel"}
    )

    abandoned_calls_in_service_level: Optional[str] = field(
        default=None, metadata={"alias": "abandonedCallsInServiceLevel"}
    )

    abandoned_call_interval_seconds: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "abandonedCallIntervalSeconds"}
    )

    def __post_init__(self):
        nillable_fields = ["abandoned_call_interval_seconds"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class CallCenterSkillAgentList(OCIType):
    """A list of agents for a particular skill Level.

    Attributes:

        skill_level (int):

        agent (Optional[List[str]]):

    """

    skill_level: int = field(metadata={"alias": "skillLevel"})

    agent: Optional[List[str]] = field(default=None, metadata={"alias": "agent"})


@dataclass(kw_only=True)
class CallCenterStatisticsRange(OCIType):
    """Statistics Range

    Attributes:

        start (str):

        end (Optional[str]):

    """

    start: str = field(metadata={"alias": "start"})

    end: Optional[str] = field(default=None, metadata={"alias": "end"})


@dataclass(kw_only=True)
class CallDispositionCodeActivation(OCIType):
    """Contains a Call Center Call Disposition Code and its active state

    Attributes:

        code (str):

        is_active (bool):

    """

    code: str = field(metadata={"alias": "code"})

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class CallDispositionCodeWithLevel(OCIType):
    """Contains a Call Center Call Disposition Code and its Level

    Attributes:

        code (str):

        level (str):

    """

    code: str = field(metadata={"alias": "code"})

    level: str = field(metadata={"alias": "level"})


@dataclass(kw_only=True)
class CallMeNowToDnCriteria(OCIType):
    """The To dn criteria used on the call me now external number.

    Attributes:

        to_dn_criteria_selection (str):

        phone_number (Optional[List[str]]):

    """

    to_dn_criteria_selection: str = field(metadata={"alias": "toDnCriteriaSelection"})

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )


@dataclass(kw_only=True)
class CallMeNowToDnCriteriaModify(OCIType):
    """The To dn criteria used on the call me now external number to be modified.

    Attributes:

        to_dn_criteria_selection (Optional[str]):

        phone_number_list (Optional[Nillable[CriteriaReplacementDNList]]):

    """

    to_dn_criteria_selection: Optional[str] = field(
        default=None, metadata={"alias": "toDnCriteriaSelection"}
    )

    phone_number_list: Optional[Nillable[CriteriaReplacementDNList]] = field(
        default=None, metadata={"alias": "phoneNumberList"}
    )

    def __post_init__(self):
        nillable_fields = ["phone_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class CommPilotExpressEmailNotify(OCIType):
    """CommPilot Express Email Notify configuration used in the context of a get.

    Attributes:

        send_email (bool):

        email_address (Optional[str]):

    """

    send_email: bool = field(metadata={"alias": "sendEmail"})

    email_address: Optional[str] = field(
        default=None, metadata={"alias": "emailAddress"}
    )


@dataclass(kw_only=True)
class CommPilotExpressEmailNotifyModify(OCIType):
    """CommPilot Express Email Notify configuration used in the context of a modify.

    Attributes:

        send_email (Optional[bool]):

        email_address (Optional[Nillable[str]]):

    """

    send_email: Optional[bool] = field(default=None, metadata={"alias": "sendEmail"})

    email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "emailAddress"}
    )

    def __post_init__(self):
        nillable_fields = ["email_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class CommPilotExpressRedirection(OCIType):
    """CommPilot Express type to transfer to voice Mail or forward to a number
        used in the context of a get.

    Attributes:

        action (str):

        forwarding_phone_number (Optional[str]):

    """

    action: str = field(metadata={"alias": "action"})

    forwarding_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "forwardingPhoneNumber"}
    )


@dataclass(kw_only=True)
class CommPilotExpressRedirectionModify(OCIType):
    """CommPilot Express type to transfer to voice Mail or forward to a number
        used in the context of a modify.

    Attributes:

        action (Optional[str]):

        forwarding_phone_number (Optional[Nillable[str]]):

    """

    action: Optional[str] = field(default=None, metadata={"alias": "action"})

    forwarding_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "forwardingPhoneNumber"}
    )

    def __post_init__(self):
        nillable_fields = ["forwarding_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class CommPilotExpressRedirectionWithException(OCIType):
    """CommPilot Express type to transfer to voice mail or forward to a number
        with certain exceptions used in the context of a get.

    Attributes:

        send_calls_to_voice_mail_except_excluded_numbers (bool):

        excluded_phone_number01 (Optional[str]):

        excluded_phone_number02 (Optional[str]):

        excluded_phone_number03 (Optional[str]):

        forward_excluded_numbers_to (Optional[str]):

    """

    send_calls_to_voice_mail_except_excluded_numbers: bool = field(
        metadata={"alias": "sendCallsToVoiceMailExceptExcludedNumbers"}
    )

    excluded_phone_number01: Optional[str] = field(
        default=None, metadata={"alias": "excludedPhoneNumber01"}
    )

    excluded_phone_number02: Optional[str] = field(
        default=None, metadata={"alias": "excludedPhoneNumber02"}
    )

    excluded_phone_number03: Optional[str] = field(
        default=None, metadata={"alias": "excludedPhoneNumber03"}
    )

    forward_excluded_numbers_to: Optional[str] = field(
        default=None, metadata={"alias": "forwardExcludedNumbersTo"}
    )


@dataclass(kw_only=True)
class CommPilotExpressRedirectionWithExceptionModify(OCIType):
    """CommPilot Express type to transfer to voice mail or forward to a number
        with certain exceptions used in the context of a modify.

    Attributes:

        send_calls_to_voice_mail_except_excluded_numbers (Optional[bool]):

        excluded_phone_number01 (Optional[Nillable[str]]):

        excluded_phone_number02 (Optional[Nillable[str]]):

        excluded_phone_number03 (Optional[Nillable[str]]):

        forward_excluded_numbers_to (Optional[Nillable[str]]):

    """

    send_calls_to_voice_mail_except_excluded_numbers: Optional[bool] = field(
        default=None, metadata={"alias": "sendCallsToVoiceMailExceptExcludedNumbers"}
    )

    excluded_phone_number01: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "excludedPhoneNumber01"}
    )

    excluded_phone_number02: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "excludedPhoneNumber02"}
    )

    excluded_phone_number03: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "excludedPhoneNumber03"}
    )

    forward_excluded_numbers_to: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "forwardExcludedNumbersTo"}
    )

    def __post_init__(self):
        nillable_fields = [
            "excluded_phone_number01",
            "excluded_phone_number02",
            "excluded_phone_number03",
            "forward_excluded_numbers_to",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class DirectRouteIdentifiers(OCIType):
    """Direct Route identifiers.

    Attributes:

        dtg_identity (Optional[str]):

        trunk_identity (Optional[str]):

    """

    dtg_identity: Optional[str] = field(default=None, metadata={"alias": "dtgIdentity"})

    trunk_identity: Optional[str] = field(
        default=None, metadata={"alias": "trunkIdentity"}
    )


@dataclass(kw_only=True)
class DirectRouteReplacementIdentityList(OCIType):
    """A replacement list of direct route parameters.

    Attributes:

        dtg_identity (Optional[str]):

        trunk_identity (Optional[str]):

    """

    dtg_identity: Optional[str] = field(default=None, metadata={"alias": "dtgIdentity"})

    trunk_identity: Optional[str] = field(
        default=None, metadata={"alias": "trunkIdentity"}
    )


@dataclass(kw_only=True)
class EnhancedCallLogsRedirectedCallSelection23(OCIType):
    """Redirected call selection.
      When \" redirectedCall \" is set to true, all call logs with redirected call are returned. When it
      set to false, all call logs without redirected call are returned.
      The redirected call can be defined by including a subset of Service Invocation Disposition here.
      If none included, any call has a ServiceInvocationDisposition value defined in ServiceInvocationDisposition21sp1
      is considered as a redirected call.

    Attributes:

        redirected_call (bool):

        redirect_type (Optional[List[str]]):

    """

    redirected_call: bool = field(metadata={"alias": "redirectedCall"})

    redirect_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "redirectType"}
    )


@dataclass(kw_only=True)
class ExtendedMixedCallLogsEntry23(OCIType):
    """Extended Call Log entry describing a placed, received, or missed call.
        \"countryCode\" is the user's country code
        The following time elements are represented as timestamp, i.e., the number of milliseconds
        since January 1, 1970, 00:00:00 GMT.
        \"startTime\" represents the time when the system sends out a call invitation message (e.g. for
        placed calls) or receives a call invitation message (e.g. for missed/received calls).
        \"answerTime\" represents the time when the call is answered by the terminating party.
        \"detachedTime\" represents the time when the call is successfully redirected by the system.
        \"releaseTime\" represents the time when the call is released. This time corresponds to the
        moment the call is released by the system, and not necessarily when one party hangs up, since this
        does not always mean the call is released (e.g. Emergency/911 calls).
        The elements \"userGroupId\", \"userId\",\"userPrimaryDn\" and \"userPrimaryExtension\"
        are only returned when the enterprise or group level requests are used.
        The following elements are only used in AS data mode:
          callAuthorizationCode
          securityClassification

        ExtendedMixedCallLogsEntry21sp1 version: only the ServiceInvocationDisposition21sp1 name changed.

    Attributes:

        call_log_type (str):

        country_code (str):

        call_log_id (str):

        call_id (str):

        subscriber_type (str):

        dialed_number (Optional[str]):

        called_number (Optional[str]):

        network_translated_address (Optional[str]):

        calling_asserted_number (Optional[str]):

        calling_presentation_number (Optional[str]):

        calling_presentation_number_source (Optional[str]):

        calling_presentation_name (Optional[str]):

        calling_presentation_indicator (str):

        calling_group_id (Optional[str]):

        called_directory_name (Optional[str]):

        called_group_id (Optional[str]):

        connected_number (Optional[str]):

        connected_number_source (Optional[str]):

        connected_name (Optional[str]):

        connected_presentation_indicator (Optional[str]):

        type_of_network (Optional[str]):

        call_category (Optional[str]):

        basic_call_type (str):

        configurable_call_type (Optional[str]):

        alternate_call_indicator (Optional[str]):

        virtual_on_net_call_type (Optional[str]):

        time (str):

        start_time (int):

        answer_time (Optional[int]):

        release_time (Optional[int]):

        detached_time (Optional[int]):

        detached_answer_time (Optional[int]):

        outgoing_dnis (Optional[str]):

        service_invocation_disposition (Optional[str]):

        service_invocation_dialed_number (Optional[str]):

        service_invocation_called_number (Optional[str]):

        service_invocation_network_translated_address (Optional[str]):

        service_invocation_type_of_network (Optional[str]):

        service_invocation_call_category (Optional[str]):

        service_invocation_basic_call_type (Optional[str]):

        service_invocation_configurable_call_type (Optional[str]):

        service_invocation_alternate_call_indicator (Optional[str]):

        service_invocation_virtual_on_net_call_type (Optional[str]):

        service_invocation_called_directory_name (Optional[str]):

        service_invocation_called_group_id (Optional[str]):

        redirecting_number (Optional[str]):

        redirecting_name (Optional[str]):

        redirecting_presentation_indicator (Optional[str]):

        redirecting_reason (Optional[str]):

        account_authorization_code (Optional[str]):

        call_authorization_code (Optional[str]):

        user_group_id (Optional[str]):

        user_id (Optional[str]):

        user_primary_dn (Optional[str]):

        user_primary_extension (Optional[str]):

        security_classification (Optional[str]):

        direct_route_number (Optional[str]):

        route_list_dn (Optional[str]):

    """

    call_log_type: str = field(metadata={"alias": "callLogType"})

    country_code: str = field(metadata={"alias": "countryCode"})

    call_log_id: str = field(metadata={"alias": "callLogId"})

    call_id: str = field(metadata={"alias": "callId"})

    subscriber_type: str = field(metadata={"alias": "subscriberType"})

    dialed_number: Optional[str] = field(
        default=None, metadata={"alias": "dialedNumber"}
    )

    called_number: Optional[str] = field(
        default=None, metadata={"alias": "calledNumber"}
    )

    network_translated_address: Optional[str] = field(
        default=None, metadata={"alias": "networkTranslatedAddress"}
    )

    calling_asserted_number: Optional[str] = field(
        default=None, metadata={"alias": "callingAssertedNumber"}
    )

    calling_presentation_number: Optional[str] = field(
        default=None, metadata={"alias": "callingPresentationNumber"}
    )

    calling_presentation_number_source: Optional[str] = field(
        default=None, metadata={"alias": "callingPresentationNumberSource"}
    )

    calling_presentation_name: Optional[str] = field(
        default=None, metadata={"alias": "callingPresentationName"}
    )

    calling_presentation_indicator: str = field(
        metadata={"alias": "callingPresentationIndicator"}
    )

    calling_group_id: Optional[str] = field(
        default=None, metadata={"alias": "callingGroupId"}
    )

    called_directory_name: Optional[str] = field(
        default=None, metadata={"alias": "calledDirectoryName"}
    )

    called_group_id: Optional[str] = field(
        default=None, metadata={"alias": "calledGroupId"}
    )

    connected_number: Optional[str] = field(
        default=None, metadata={"alias": "connectedNumber"}
    )

    connected_number_source: Optional[str] = field(
        default=None, metadata={"alias": "connectedNumberSource"}
    )

    connected_name: Optional[str] = field(
        default=None, metadata={"alias": "connectedName"}
    )

    connected_presentation_indicator: Optional[str] = field(
        default=None, metadata={"alias": "connectedPresentationIndicator"}
    )

    type_of_network: Optional[str] = field(
        default=None, metadata={"alias": "typeOfNetwork"}
    )

    call_category: Optional[str] = field(
        default=None, metadata={"alias": "callCategory"}
    )

    basic_call_type: str = field(metadata={"alias": "basicCallType"})

    configurable_call_type: Optional[str] = field(
        default=None, metadata={"alias": "configurableCallType"}
    )

    alternate_call_indicator: Optional[str] = field(
        default=None, metadata={"alias": "alternateCallIndicator"}
    )

    virtual_on_net_call_type: Optional[str] = field(
        default=None, metadata={"alias": "virtualOnNetCallType"}
    )

    time: str = field(metadata={"alias": "time"})

    start_time: int = field(metadata={"alias": "startTime"})

    answer_time: Optional[int] = field(default=None, metadata={"alias": "answerTime"})

    release_time: Optional[int] = field(default=None, metadata={"alias": "releaseTime"})

    detached_time: Optional[int] = field(
        default=None, metadata={"alias": "detachedTime"}
    )

    detached_answer_time: Optional[int] = field(
        default=None, metadata={"alias": "detachedAnswerTime"}
    )

    outgoing_dnis: Optional[str] = field(
        default=None, metadata={"alias": "outgoingDnis"}
    )

    service_invocation_disposition: Optional[str] = field(
        default=None, metadata={"alias": "serviceInvocationDisposition"}
    )

    service_invocation_dialed_number: Optional[str] = field(
        default=None, metadata={"alias": "serviceInvocationDialedNumber"}
    )

    service_invocation_called_number: Optional[str] = field(
        default=None, metadata={"alias": "serviceInvocationCalledNumber"}
    )

    service_invocation_network_translated_address: Optional[str] = field(
        default=None, metadata={"alias": "serviceInvocationNetworkTranslatedAddress"}
    )

    service_invocation_type_of_network: Optional[str] = field(
        default=None, metadata={"alias": "serviceInvocationTypeOfNetwork"}
    )

    service_invocation_call_category: Optional[str] = field(
        default=None, metadata={"alias": "serviceInvocationCallCategory"}
    )

    service_invocation_basic_call_type: Optional[str] = field(
        default=None, metadata={"alias": "serviceInvocationBasicCallType"}
    )

    service_invocation_configurable_call_type: Optional[str] = field(
        default=None, metadata={"alias": "serviceInvocationConfigurableCallType"}
    )

    service_invocation_alternate_call_indicator: Optional[str] = field(
        default=None, metadata={"alias": "serviceInvocationAlternateCallIndicator"}
    )

    service_invocation_virtual_on_net_call_type: Optional[str] = field(
        default=None, metadata={"alias": "serviceInvocationVirtualOnNetCallType"}
    )

    service_invocation_called_directory_name: Optional[str] = field(
        default=None, metadata={"alias": "serviceInvocationCalledDirectoryName"}
    )

    service_invocation_called_group_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceInvocationCalledGroupId"}
    )

    redirecting_number: Optional[str] = field(
        default=None, metadata={"alias": "redirectingNumber"}
    )

    redirecting_name: Optional[str] = field(
        default=None, metadata={"alias": "redirectingName"}
    )

    redirecting_presentation_indicator: Optional[str] = field(
        default=None, metadata={"alias": "redirectingPresentationIndicator"}
    )

    redirecting_reason: Optional[str] = field(
        default=None, metadata={"alias": "RedirectingReason"}
    )

    account_authorization_code: Optional[str] = field(
        default=None, metadata={"alias": "accountAuthorizationCode"}
    )

    call_authorization_code: Optional[str] = field(
        default=None, metadata={"alias": "callAuthorizationCode"}
    )

    user_group_id: Optional[str] = field(
        default=None, metadata={"alias": "userGroupId"}
    )

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})

    user_primary_dn: Optional[str] = field(
        default=None, metadata={"alias": "userPrimaryDn"}
    )

    user_primary_extension: Optional[str] = field(
        default=None, metadata={"alias": "userPrimaryExtension"}
    )

    security_classification: Optional[str] = field(
        default=None, metadata={"alias": "securityClassification"}
    )

    direct_route_number: Optional[str] = field(
        default=None, metadata={"alias": "directRouteNumber"}
    )

    route_list_dn: Optional[str] = field(
        default=None, metadata={"alias": "routeListDN"}
    )


@dataclass(kw_only=True)
class ExecutiveCallFilteringCriteriaFromDnModify(OCIType):
    """The from dn criteria used within an executive call filtering criteria modify request.

    Attributes:

        from_dn_criteria_selection (Optional[str]):

        include_anonymous_callers (Optional[bool]):

        include_unavailable_callers (Optional[bool]):

        phone_number_list (Optional[Nillable[CriteriaReplacementDNList]]):

    """

    from_dn_criteria_selection: Optional[str] = field(
        default=None, metadata={"alias": "fromDnCriteriaSelection"}
    )

    include_anonymous_callers: Optional[bool] = field(
        default=None, metadata={"alias": "includeAnonymousCallers"}
    )

    include_unavailable_callers: Optional[bool] = field(
        default=None, metadata={"alias": "includeUnavailableCallers"}
    )

    phone_number_list: Optional[Nillable[CriteriaReplacementDNList]] = field(
        default=None, metadata={"alias": "phoneNumberList"}
    )

    def __post_init__(self):
        nillable_fields = ["phone_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ExecutiveAssistantOptInStatus(OCIType):
    """Executive assistant Opt-in status with executive.

    Attributes:

        executive_user_id (str):

        opt_in (bool):

    """

    executive_user_id: str = field(metadata={"alias": "executiveUserId"})

    opt_in: bool = field(metadata={"alias": "optIn"})


@dataclass(kw_only=True)
class FindMeFollowMeAlertingGroupReplacementOutgoingDNSIPURIorUserIdList(OCIType):
    """A list of phone numbers/sipuris or user ids that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        phone_number (Optional[str]):

        user_id (Optional[str]):

    """

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})


@dataclass(kw_only=True)
class IncomingCallingPlanDigitPatternPermission(OCIType):
    """Indicates whether calls from specified digit patterns are permitted.

    Attributes:

        digit_pattern_name (str):

        allow (bool):

    """

    digit_pattern_name: str = field(metadata={"alias": "digitPatternName"})

    allow: bool = field(metadata={"alias": "allow"})


@dataclass(kw_only=True)
class InterceptDNListEntry(OCIType):
    """Intercept User Entry containing the phone number and a Description.

    Attributes:

        phone_number (str):

        description (Optional[Nillable[str]]):

    """

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class MaliciousCallTraceTimePeriod(OCIType):
    """Modify the user level data associated with Malicious Call Trace.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        start_date_time (str):

        stop_date_time (str):

    """

    start_date_time: str = field(metadata={"alias": "startDateTime"})

    stop_date_time: str = field(metadata={"alias": "stopDateTime"})


@dataclass(kw_only=True)
class MeetMeConferencingConferenceDuration(OCIType):
    """Conference duration.

    Attributes:

        hours (int):

        minutes (int):

    """

    hours: int = field(metadata={"alias": "hours"})

    minutes: int = field(metadata={"alias": "minutes"})


@dataclass(kw_only=True)
class MeetMeConferencingConferenceRecordingKey(OCIType):
    """Identifier for conference recording. startTime is the recording start timestamp.

    Attributes:

        bridge_id (str):

        conference_id (str):

        start_time (str):

    """

    bridge_id: str = field(metadata={"alias": "bridgeId"})

    conference_id: str = field(metadata={"alias": "conferenceId"})

    start_time: str = field(metadata={"alias": "startTime"})


@dataclass(kw_only=True)
class MeetMeConferencingConferenceSchedule(OCIType):
    """Conference schedule.

    Attributes:

        schedule_reservationless (Optional[object]):

        schedule_one_time (Optional[object]):

        schedule_recurring (Optional[object]):

    """

    schedule_reservationless: Optional[object] = field(
        default=None, metadata={"alias": "scheduleReservationless"}
    )

    schedule_one_time: Optional[object] = field(
        default=None, metadata={"alias": "scheduleOneTime"}
    )

    schedule_recurring: Optional[object] = field(
        default=None, metadata={"alias": "scheduleRecurring"}
    )


@dataclass(kw_only=True)
class MusicOnHoldUserSourceModify20(OCIType):
    """Contains the music on hold user source configuration.

    Attributes:

        message_source_selection (Optional[str]):

        custom_source (Optional[object]):

    """

    message_source_selection: Optional[str] = field(
        default=None, metadata={"alias": "messageSourceSelection"}
    )

    custom_source: Optional[object] = field(
        default=None, metadata={"alias": "customSource"}
    )


@dataclass(kw_only=True)
class MusicOnHoldUserSourceRead20(OCIType):
    """Contains the music on hold user source configuration.

    Attributes:

        message_source_selection (str):

        custom_source (Optional[object]):

    """

    message_source_selection: str = field(metadata={"alias": "messageSourceSelection"})

    custom_source: Optional[object] = field(
        default=None, metadata={"alias": "customSource"}
    )


@dataclass(kw_only=True)
class MWIDeliveryToMobileEndpointTemplateActivation23(OCIType):
    """MWI Delivery To Mobile Endpoint enabled status indicator

    Attributes:

        language (str):

        type (str):

        is_enabled (bool):

    """

    language: str = field(metadata={"alias": "language"})

    type: str = field(metadata={"alias": "type"})

    is_enabled: bool = field(metadata={"alias": "isEnabled"})


@dataclass(kw_only=True)
class MWIDeliveryToMobileEndpointTemplateLine23(OCIType):
    """MWI Delivery To Mobile Endpoint template section associated with a specific tag.

    Attributes:

        prefix (Optional[str]):

        tag (Optional[str]):

        postfix (Optional[str]):

    """

    prefix: Optional[str] = field(default=None, metadata={"alias": "prefix"})

    tag: Optional[str] = field(default=None, metadata={"alias": "tag"})

    postfix: Optional[str] = field(default=None, metadata={"alias": "postfix"})


@dataclass(kw_only=True)
class OutgoingCallingPlanAuthorizationCodeEntry(OCIType):
    """Outgoing Calling Plan Authorization Code.

    Attributes:

        code (str):

        description (Optional[str]):

    """

    code: str = field(metadata={"alias": "code"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class OutgoingCallingPlanCallMeNowPermissions(OCIType):
    """Outgoing Calling Plan for Call Me Now call permissions.

    Attributes:

        group (bool):

        local (bool):

        toll_free (bool):

        toll (bool):

        international (bool):

        operator_assisted (bool):

        chargeable_directory_assisted (bool):

        special_services_i (bool):

        special_services_ii (bool):

        premium_services_i (bool):

        premium_services_ii (bool):

        casual (bool):

        url_dialing (bool):

        unknown (bool):

    """

    group: bool = field(metadata={"alias": "group"})

    local: bool = field(metadata={"alias": "local"})

    toll_free: bool = field(metadata={"alias": "tollFree"})

    toll: bool = field(metadata={"alias": "toll"})

    international: bool = field(metadata={"alias": "international"})

    operator_assisted: bool = field(metadata={"alias": "operatorAssisted"})

    chargeable_directory_assisted: bool = field(
        metadata={"alias": "chargeableDirectoryAssisted"}
    )

    special_services_i: bool = field(metadata={"alias": "specialServicesI"})

    special_services_ii: bool = field(metadata={"alias": "specialServicesII"})

    premium_services_i: bool = field(metadata={"alias": "premiumServicesI"})

    premium_services_ii: bool = field(metadata={"alias": "premiumServicesII"})

    casual: bool = field(metadata={"alias": "casual"})

    url_dialing: bool = field(metadata={"alias": "urlDialing"})

    unknown: bool = field(metadata={"alias": "unknown"})


@dataclass(kw_only=True)
class OutgoingCallingPlanCallMeNowPermissionsModify(OCIType):
    """Modify outgoing Calling Plan for Call Me Now call permissions.

    Attributes:

        group (Optional[bool]):

        local (Optional[bool]):

        toll_free (Optional[bool]):

        toll (Optional[bool]):

        international (Optional[bool]):

        operator_assisted (Optional[bool]):

        chargeable_directory_assisted (Optional[bool]):

        special_services_i (Optional[bool]):

        special_services_ii (Optional[bool]):

        premium_services_i (Optional[bool]):

        premium_services_ii (Optional[bool]):

        casual (Optional[bool]):

        url_dialing (Optional[bool]):

        unknown (Optional[bool]):

    """

    group: Optional[bool] = field(default=None, metadata={"alias": "group"})

    local: Optional[bool] = field(default=None, metadata={"alias": "local"})

    toll_free: Optional[bool] = field(default=None, metadata={"alias": "tollFree"})

    toll: Optional[bool] = field(default=None, metadata={"alias": "toll"})

    international: Optional[bool] = field(
        default=None, metadata={"alias": "international"}
    )

    operator_assisted: Optional[bool] = field(
        default=None, metadata={"alias": "operatorAssisted"}
    )

    chargeable_directory_assisted: Optional[bool] = field(
        default=None, metadata={"alias": "chargeableDirectoryAssisted"}
    )

    special_services_i: Optional[bool] = field(
        default=None, metadata={"alias": "specialServicesI"}
    )

    special_services_ii: Optional[bool] = field(
        default=None, metadata={"alias": "specialServicesII"}
    )

    premium_services_i: Optional[bool] = field(
        default=None, metadata={"alias": "premiumServicesI"}
    )

    premium_services_ii: Optional[bool] = field(
        default=None, metadata={"alias": "premiumServicesII"}
    )

    casual: Optional[bool] = field(default=None, metadata={"alias": "casual"})

    url_dialing: Optional[bool] = field(default=None, metadata={"alias": "urlDialing"})

    unknown: Optional[bool] = field(default=None, metadata={"alias": "unknown"})


@dataclass(kw_only=True)
class OutgoingCallingPlanDigitPatternCallMeNowPermission(OCIType):
    """Indicates whether Call Me Now calls using specified digit patterns are permitted.

    Attributes:

        digit_pattern_name (str):

        permission (bool):

    """

    digit_pattern_name: str = field(metadata={"alias": "digitPatternName"})

    permission: bool = field(metadata={"alias": "permission"})


@dataclass(kw_only=True)
class OutgoingCallingPlanDigitPatternOriginatingPermission(OCIType):
    """Indicates whether originating calls using specified digit patterns are permitted.

    Attributes:

        digit_pattern_name (str):

        permission (str):

    """

    digit_pattern_name: str = field(metadata={"alias": "digitPatternName"})

    permission: str = field(metadata={"alias": "permission"})


@dataclass(kw_only=True)
class OutgoingCallingPlanDigitPatternRedirectingPermission(OCIType):
    """Indicates whether redirecting calls using specified digit patterns are permitted.

    Attributes:

        digit_pattern_name (str):

        permission (bool):

    """

    digit_pattern_name: str = field(metadata={"alias": "digitPatternName"})

    permission: bool = field(metadata={"alias": "permission"})


@dataclass(kw_only=True)
class OutgoingCallingPlanOriginatingPermissions(OCIType):
    """Outgoing Calling Plan originating call permissions.

    Attributes:

        group (str):

        local (str):

        toll_free (str):

        toll (str):

        international (str):

        operator_assisted (str):

        chargeable_directory_assisted (str):

        special_services_i (str):

        special_services_ii (str):

        premium_services_i (str):

        premium_services_ii (str):

        casual (str):

        url_dialing (str):

        unknown (str):

    """

    group: str = field(metadata={"alias": "group"})

    local: str = field(metadata={"alias": "local"})

    toll_free: str = field(metadata={"alias": "tollFree"})

    toll: str = field(metadata={"alias": "toll"})

    international: str = field(metadata={"alias": "international"})

    operator_assisted: str = field(metadata={"alias": "operatorAssisted"})

    chargeable_directory_assisted: str = field(
        metadata={"alias": "chargeableDirectoryAssisted"}
    )

    special_services_i: str = field(metadata={"alias": "specialServicesI"})

    special_services_ii: str = field(metadata={"alias": "specialServicesII"})

    premium_services_i: str = field(metadata={"alias": "premiumServicesI"})

    premium_services_ii: str = field(metadata={"alias": "premiumServicesII"})

    casual: str = field(metadata={"alias": "casual"})

    url_dialing: str = field(metadata={"alias": "urlDialing"})

    unknown: str = field(metadata={"alias": "unknown"})


@dataclass(kw_only=True)
class OutgoingCallingPlanOriginatingPermissionsModify(OCIType):
    """Outgoing Calling Plan originating call permissions.

    Attributes:

        group (Optional[str]):

        local (Optional[str]):

        toll_free (Optional[str]):

        toll (Optional[str]):

        international (Optional[str]):

        operator_assisted (Optional[str]):

        chargeable_directory_assisted (Optional[str]):

        special_services_i (Optional[str]):

        special_services_ii (Optional[str]):

        premium_services_i (Optional[str]):

        premium_services_ii (Optional[str]):

        casual (Optional[str]):

        url_dialing (Optional[str]):

        unknown (Optional[str]):

    """

    group: Optional[str] = field(default=None, metadata={"alias": "group"})

    local: Optional[str] = field(default=None, metadata={"alias": "local"})

    toll_free: Optional[str] = field(default=None, metadata={"alias": "tollFree"})

    toll: Optional[str] = field(default=None, metadata={"alias": "toll"})

    international: Optional[str] = field(
        default=None, metadata={"alias": "international"}
    )

    operator_assisted: Optional[str] = field(
        default=None, metadata={"alias": "operatorAssisted"}
    )

    chargeable_directory_assisted: Optional[str] = field(
        default=None, metadata={"alias": "chargeableDirectoryAssisted"}
    )

    special_services_i: Optional[str] = field(
        default=None, metadata={"alias": "specialServicesI"}
    )

    special_services_ii: Optional[str] = field(
        default=None, metadata={"alias": "specialServicesII"}
    )

    premium_services_i: Optional[str] = field(
        default=None, metadata={"alias": "premiumServicesI"}
    )

    premium_services_ii: Optional[str] = field(
        default=None, metadata={"alias": "premiumServicesII"}
    )

    casual: Optional[str] = field(default=None, metadata={"alias": "casual"})

    url_dialing: Optional[str] = field(default=None, metadata={"alias": "urlDialing"})

    unknown: Optional[str] = field(default=None, metadata={"alias": "unknown"})


@dataclass(kw_only=True)
class OutgoingCallingPlanRedirectedPermissions(OCIType):
    """Outgoing Calling Plan being forwarded/transferred permissions.

    Attributes:

        outside_group (bool):

    """

    outside_group: bool = field(metadata={"alias": "outsideGroup"})


@dataclass(kw_only=True)
class OutgoingCallingPlanRedirectedPermissionsModify(OCIType):
    """Outgoing Calling Plan being forwarded/transferred permissions.

    Attributes:

        outside_group (Optional[bool]):

    """

    outside_group: Optional[bool] = field(
        default=None, metadata={"alias": "outsideGroup"}
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanRedirectingPermissions(OCIType):
    """Outgoing Calling Plan initiating call forwards/transfer permissions.

    Attributes:

        group (bool):

        local (bool):

        toll_free (bool):

        toll (bool):

        international (bool):

        operator_assisted (bool):

        chargeable_directory_assisted (bool):

        special_services_i (bool):

        special_services_ii (bool):

        premium_services_i (bool):

        premium_services_ii (bool):

        casual (bool):

        url_dialing (bool):

        unknown (bool):

    """

    group: bool = field(metadata={"alias": "group"})

    local: bool = field(metadata={"alias": "local"})

    toll_free: bool = field(metadata={"alias": "tollFree"})

    toll: bool = field(metadata={"alias": "toll"})

    international: bool = field(metadata={"alias": "international"})

    operator_assisted: bool = field(metadata={"alias": "operatorAssisted"})

    chargeable_directory_assisted: bool = field(
        metadata={"alias": "chargeableDirectoryAssisted"}
    )

    special_services_i: bool = field(metadata={"alias": "specialServicesI"})

    special_services_ii: bool = field(metadata={"alias": "specialServicesII"})

    premium_services_i: bool = field(metadata={"alias": "premiumServicesI"})

    premium_services_ii: bool = field(metadata={"alias": "premiumServicesII"})

    casual: bool = field(metadata={"alias": "casual"})

    url_dialing: bool = field(metadata={"alias": "urlDialing"})

    unknown: bool = field(metadata={"alias": "unknown"})


@dataclass(kw_only=True)
class OutgoingCallingPlanRedirectingPermissionsModify(OCIType):
    """Outgoing Calling Plan initiating call forwards/transfer permissions.

    Attributes:

        group (Optional[bool]):

        local (Optional[bool]):

        toll_free (Optional[bool]):

        toll (Optional[bool]):

        international (Optional[bool]):

        operator_assisted (Optional[bool]):

        chargeable_directory_assisted (Optional[bool]):

        special_services_i (Optional[bool]):

        special_services_ii (Optional[bool]):

        premium_services_i (Optional[bool]):

        premium_services_ii (Optional[bool]):

        casual (Optional[bool]):

        url_dialing (Optional[bool]):

        unknown (Optional[bool]):

    """

    group: Optional[bool] = field(default=None, metadata={"alias": "group"})

    local: Optional[bool] = field(default=None, metadata={"alias": "local"})

    toll_free: Optional[bool] = field(default=None, metadata={"alias": "tollFree"})

    toll: Optional[bool] = field(default=None, metadata={"alias": "toll"})

    international: Optional[bool] = field(
        default=None, metadata={"alias": "international"}
    )

    operator_assisted: Optional[bool] = field(
        default=None, metadata={"alias": "operatorAssisted"}
    )

    chargeable_directory_assisted: Optional[bool] = field(
        default=None, metadata={"alias": "chargeableDirectoryAssisted"}
    )

    special_services_i: Optional[bool] = field(
        default=None, metadata={"alias": "specialServicesI"}
    )

    special_services_ii: Optional[bool] = field(
        default=None, metadata={"alias": "specialServicesII"}
    )

    premium_services_i: Optional[bool] = field(
        default=None, metadata={"alias": "premiumServicesI"}
    )

    premium_services_ii: Optional[bool] = field(
        default=None, metadata={"alias": "premiumServicesII"}
    )

    casual: Optional[bool] = field(default=None, metadata={"alias": "casual"})

    url_dialing: Optional[bool] = field(default=None, metadata={"alias": "urlDialing"})

    unknown: Optional[bool] = field(default=None, metadata={"alias": "unknown"})


@dataclass(kw_only=True)
class OutgoingCallingPlanTransferNumbers(OCIType):
    """Outgoing Calling Plan transfer numbers.

    Attributes:

        phone_number01 (Optional[str]):

        phone_number02 (Optional[str]):

        phone_number03 (Optional[str]):

    """

    phone_number01: Optional[str] = field(
        default=None, metadata={"alias": "phoneNumber01"}
    )

    phone_number02: Optional[str] = field(
        default=None, metadata={"alias": "phoneNumber02"}
    )

    phone_number03: Optional[str] = field(
        default=None, metadata={"alias": "phoneNumber03"}
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanTransferNumbersModify(OCIType):
    """Outgoing Calling Plan transfer numbers.

    Attributes:

        phone_number01 (Optional[Nillable[str]]):

        phone_number02 (Optional[Nillable[str]]):

        phone_number03 (Optional[Nillable[str]]):

    """

    phone_number01: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "phoneNumber01"}
    )

    phone_number02: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "phoneNumber02"}
    )

    phone_number03: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "phoneNumber03"}
    )

    def __post_init__(self):
        nillable_fields = ["phone_number01", "phone_number02", "phone_number03"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class OutgoingPinholeDigitPlanDigitPatternCallMeNowPermission(OCIType):
    """Indicates whether Call Me Now calls using specified Pinhole digit patterns are permitted.

    Attributes:

        digit_pattern_name (str):

        permission (str):

    """

    digit_pattern_name: str = field(metadata={"alias": "digitPatternName"})

    permission: str = field(metadata={"alias": "permission"})


@dataclass(kw_only=True)
class OutgoingPinholeDigitPlanDigitPatternOriginatingPermission(OCIType):
    """Indicates whether originating calls using specified Pinhole digit patterns are permitted.

    Attributes:

        digit_pattern_name (str):

        permission (str):

    """

    digit_pattern_name: str = field(metadata={"alias": "digitPatternName"})

    permission: str = field(metadata={"alias": "permission"})


@dataclass(kw_only=True)
class OutgoingPinholeDigitPlanDigitPatternRedirectingPermission(OCIType):
    """Indicates whether redirecting calls using specified Pinhole digit patterns are permitted.

    Attributes:

        digit_pattern_name (str):

        permission (str):

    """

    digit_pattern_name: str = field(metadata={"alias": "digitPatternName"})

    permission: str = field(metadata={"alias": "permission"})


@dataclass(kw_only=True)
class OrderedCriteriaList(OCIType):
    """A list of criteria names that defines the order priority.

    Attributes:

        criteria_name (List[str]):

    """

    criteria_name: List[str] = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class GroupPreferredCarrierName(OCIType):
    """Group can either use it's service provider/enterprise's preferred carrier or use it's own.
        The group carrier name is exposed if it was previously configured.

    Attributes:

        use_service_provider_preferred_carrier (bool):

        carrier (Optional[str]):

    """

    use_service_provider_preferred_carrier: bool = field(
        metadata={"alias": "useServiceProviderPreferredCarrier"}
    )

    carrier: Optional[str] = field(default=None, metadata={"alias": "carrier"})


@dataclass(kw_only=True)
class GroupPreferredCarrierNameModify(OCIType):
    """Group can either use it's service provider/enterprise's preferred carrier or use it's own.
        You can use the Service Provider preferred carrier without clearing the group
        carrier name -- in this case, the group carrier name is retained.

    Attributes:

        use_service_provider_preferred_carrier (bool):

        carrier (Optional[Nillable[str]]):

    """

    use_service_provider_preferred_carrier: bool = field(
        metadata={"alias": "useServiceProviderPreferredCarrier"}
    )

    carrier: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "carrier"}
    )

    def __post_init__(self):
        nillable_fields = ["carrier"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserPreferredCarrierName(OCIType):
    """User can either use it's group's preferred carrier or use it's own.
        The user carrier name is exposed if it was previously configured.

    Attributes:

        use_group_preferred_carrier (bool):

        carrier (Optional[str]):

    """

    use_group_preferred_carrier: bool = field(
        metadata={"alias": "useGroupPreferredCarrier"}
    )

    carrier: Optional[str] = field(default=None, metadata={"alias": "carrier"})


@dataclass(kw_only=True)
class UserPreferredCarrierNameModify(OCIType):
    """User can either use it's group's preferred carrier or use it's own.
        You can use the group's preferred carrier without clearing the user carrier name --
        in this case, the user carrier name is retained.

    Attributes:

        use_group_preferred_carrier (bool):

        carrier (Optional[Nillable[str]]):

    """

    use_group_preferred_carrier: bool = field(
        metadata={"alias": "useGroupPreferredCarrier"}
    )

    carrier: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "carrier"}
    )

    def __post_init__(self):
        nillable_fields = ["carrier"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class PriorityAlertCriteriaFromDnModify(OCIType):
    """The from dn criteria used within a modify request.

    Attributes:

        from_dn_criteria_selection (Optional[str]):

        include_anonymous_callers (Optional[bool]):

        include_unavailable_callers (Optional[bool]):

        phone_number_list (Optional[Nillable[CriteriaReplacementDNList]]):

    """

    from_dn_criteria_selection: Optional[str] = field(
        default=None, metadata={"alias": "fromDnCriteriaSelection"}
    )

    include_anonymous_callers: Optional[bool] = field(
        default=None, metadata={"alias": "includeAnonymousCallers"}
    )

    include_unavailable_callers: Optional[bool] = field(
        default=None, metadata={"alias": "includeUnavailableCallers"}
    )

    phone_number_list: Optional[Nillable[CriteriaReplacementDNList]] = field(
        default=None, metadata={"alias": "phoneNumberList"}
    )

    def __post_init__(self):
        nillable_fields = ["phone_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class EnterpriseTrunkReplacementNumberPrefixList(OCIType):
    """A list of prefixes that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        number_prefix (List[str]):

    """

    number_prefix: List[str] = field(metadata={"alias": "numberPrefix"})


@dataclass(kw_only=True)
class ReplacementDNList(OCIType):
    """A list of dns that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        phone_number (List[str]):

    """

    phone_number: List[str] = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class SelectiveCallRejectionCriteriaCallTypeModify(OCIType):
    """The call type criteria used within a modify request.

    Attributes:

        from_dn_criteria_selection (Optional[str]):

        include_anonymous_callers (Optional[bool]):

        include_unavailable_callers (Optional[bool]):

        phone_number_list (Optional[Nillable[CriteriaReplacementDNList]]):

    """

    from_dn_criteria_selection: Optional[str] = field(
        default=None, metadata={"alias": "fromDnCriteriaSelection"}
    )

    include_anonymous_callers: Optional[bool] = field(
        default=None, metadata={"alias": "includeAnonymousCallers"}
    )

    include_unavailable_callers: Optional[bool] = field(
        default=None, metadata={"alias": "includeUnavailableCallers"}
    )

    phone_number_list: Optional[Nillable[CriteriaReplacementDNList]] = field(
        default=None, metadata={"alias": "phoneNumberList"}
    )

    def __post_init__(self):
        nillable_fields = ["phone_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SequentialRingLocation14sp4(OCIType):
    """Sequential Ring Location.

    Attributes:

        phone_number (Optional[str]):

        number_of_rings (int):

        answer_confirmation_required (bool):

    """

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    number_of_rings: int = field(metadata={"alias": "numberOfRings"})

    answer_confirmation_required: bool = field(
        metadata={"alias": "answerConfirmationRequired"}
    )


@dataclass(kw_only=True)
class SequentialRingLocationModify(OCIType):
    """Sequential Ring Location.

    Attributes:

        phone_number (Optional[Nillable[str]]):

        number_of_rings (Optional[int]):

        answer_confirmation_required (Optional[bool]):

    """

    phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    number_of_rings: Optional[int] = field(
        default=None, metadata={"alias": "numberOfRings"}
    )

    answer_confirmation_required: Optional[bool] = field(
        default=None, metadata={"alias": "answerConfirmationRequired"}
    )

    def __post_init__(self):
        nillable_fields = ["phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class EnterpriseTrunkTrunkGroupKey(OCIType):
    """Identifies a trunk group within an Enterprise Trunk where the service provider id is already known.

    Attributes:

        group_id (str):

        trunk_group_name (str):

    """

    group_id: str = field(metadata={"alias": "groupId"})

    trunk_group_name: str = field(metadata={"alias": "trunkGroupName"})


@dataclass(kw_only=True)
class GroupEnterpriseTrunkPriorityWeightedTrunkGroup(OCIType):
    """Trunk group details (order and weight) for each trunk group

    Attributes:

        trunk_group (str):

        priority (int):

        weight (int):

    """

    trunk_group: str = field(metadata={"alias": "trunkGroup"})

    priority: int = field(metadata={"alias": "priority"})

    weight: int = field(metadata={"alias": "weight"})


@dataclass(kw_only=True)
class ReplacementEnterpriseTrunkTrunkGroupList(OCIType):
    """A list of Group Trunk Krunk Group Names that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        trunk_group (List[str]):

    """

    trunk_group: List[str] = field(metadata={"alias": "trunkGroup"})


@dataclass(kw_only=True)
class ReplacementGroupEnterpriseTrunkTrunkGroupList(OCIType):
    """A list of Group Trunk Krunk Group Names that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        trunk_group (List[str]):

    """

    trunk_group: List[str] = field(metadata={"alias": "trunkGroup"})


@dataclass(kw_only=True)
class VirtualOnNetUser(OCIType):
    """Virtual On-Net User.

    Attributes:

        phone_number (str):

        extension (str):

        first_name (str):

        last_name (str):

        calling_line_id_first_name (str):

        calling_line_id_last_name (str):

        virtual_on_net_call_type_name (str):

    """

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    extension: str = field(metadata={"alias": "extension"})

    first_name: str = field(metadata={"alias": "firstName"})

    last_name: str = field(metadata={"alias": "lastName"})

    calling_line_id_first_name: str = field(
        metadata={"alias": "callingLineIdFirstName"}
    )

    calling_line_id_last_name: str = field(metadata={"alias": "callingLineIdLastName"})

    virtual_on_net_call_type_name: str = field(
        metadata={"alias": "virtualOnNetCallTypeName"}
    )


@dataclass(kw_only=True)
class AdditionalMessageOptionsMenuKeysModifyEntry(OCIType):
    """The voice portal additional message options modify entry.

    Attributes:

        save_message (Optional[Nillable[str]]):

        delete_message (Optional[Nillable[str]]):

        play_envelope (Optional[Nillable[str]]):

        callback_caller (Optional[Nillable[str]]):

        compose_message (Optional[Nillable[str]]):

        reply_message (Optional[Nillable[str]]):

        forward_message (Optional[Nillable[str]]):

        personalized_name (Optional[Nillable[str]]):

        passcode (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

    """

    save_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "saveMessage"}
    )

    delete_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deleteMessage"}
    )

    play_envelope: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "playEnvelope"}
    )

    callback_caller: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callbackCaller"}
    )

    compose_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "composeMessage"}
    )

    reply_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "replyMessage"}
    )

    forward_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "forwardMessage"}
    )

    personalized_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "personalizedName"}
    )

    passcode: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "passcode"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    def __post_init__(self):
        nillable_fields = [
            "save_message",
            "delete_message",
            "play_envelope",
            "callback_caller",
            "compose_message",
            "reply_message",
            "forward_message",
            "personalized_name",
            "passcode",
            "repeat_menu",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class AdditionalMessageOptionsMenuKeysReadEntry(OCIType):
    """The voice portal additional message options menu keys.

    Attributes:

        save_message (Optional[str]):

        delete_message (Optional[str]):

        play_envelope (Optional[str]):

        callback_caller (Optional[str]):

        compose_message (Optional[str]):

        reply_message (Optional[str]):

        forward_message (Optional[str]):

        personalized_name (Optional[str]):

        passcode (Optional[str]):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

    """

    save_message: Optional[str] = field(default=None, metadata={"alias": "saveMessage"})

    delete_message: Optional[str] = field(
        default=None, metadata={"alias": "deleteMessage"}
    )

    play_envelope: Optional[str] = field(
        default=None, metadata={"alias": "playEnvelope"}
    )

    callback_caller: Optional[str] = field(
        default=None, metadata={"alias": "callbackCaller"}
    )

    compose_message: Optional[str] = field(
        default=None, metadata={"alias": "composeMessage"}
    )

    reply_message: Optional[str] = field(
        default=None, metadata={"alias": "replyMessage"}
    )

    forward_message: Optional[str] = field(
        default=None, metadata={"alias": "forwardMessage"}
    )

    personalized_name: Optional[str] = field(
        default=None, metadata={"alias": "personalizedName"}
    )

    passcode: Optional[str] = field(default=None, metadata={"alias": "passcode"})

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})


@dataclass(kw_only=True)
class AnnouncementMenuKeysModifyEntry(OCIType):
    """The voice portal announcement menu keys modify entry.

    Attributes:

        record_audio (Optional[Nillable[str]]):

        record_audio_video (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

    """

    record_audio: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "recordAudio"}
    )

    record_audio_video: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "recordAudioVideo"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    def __post_init__(self):
        nillable_fields = ["record_audio", "record_audio_video", "repeat_menu"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class AnnouncementMenuKeysReadEntry(OCIType):
    """The voice portal announcement menu keys.

    Attributes:

        record_audio (Optional[str]):

        record_audio_video (Optional[str]):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

    """

    record_audio: Optional[str] = field(default=None, metadata={"alias": "recordAudio"})

    record_audio_video: Optional[str] = field(
        default=None, metadata={"alias": "recordAudioVideo"}
    )

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})


@dataclass(kw_only=True)
class AnnouncementRecordingMenuKeysModifyEntry(OCIType):
    """The voice portal announcement recording menu keys modify entry.

    Attributes:

        accept_recording (Optional[str]):

        reject_rerecord (Optional[str]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

        end (Optional[str]):

    """

    accept_recording: Optional[str] = field(
        default=None, metadata={"alias": "acceptRecording"}
    )

    reject_rerecord: Optional[str] = field(
        default=None, metadata={"alias": "rejectRerecord"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    end: Optional[str] = field(default=None, metadata={"alias": "end"})

    def __post_init__(self):
        nillable_fields = ["repeat_menu"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class AnnouncementRecordingMenuKeysReadEntry(OCIType):
    """The voice portal announcement recording menu keys.

    Attributes:

        accept_recording (str):

        reject_rerecord (str):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

        end (str):

    """

    accept_recording: str = field(metadata={"alias": "acceptRecording"})

    reject_rerecord: str = field(metadata={"alias": "rejectRerecord"})

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})

    end: str = field(metadata={"alias": "end"})


@dataclass(kw_only=True)
class CallForwardingOptionsMenuKeysModifyEntry(OCIType):
    """The voice portal call forwarding option menu keys modify entry.

    Attributes:

        activate_call_forwarding (Optional[Nillable[str]]):

        deactivate_call_forwarding (Optional[Nillable[str]]):

        change_call_forwarding_destination (Optional[Nillable[str]]):

        listen_to_call_forwarding_status (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

    """

    activate_call_forwarding: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "activateCallForwarding"}
    )

    deactivate_call_forwarding: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deactivateCallForwarding"}
    )

    change_call_forwarding_destination: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "changeCallForwardingDestination"}
    )

    listen_to_call_forwarding_status: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "listenToCallForwardingStatus"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    def __post_init__(self):
        nillable_fields = [
            "activate_call_forwarding",
            "deactivate_call_forwarding",
            "change_call_forwarding_destination",
            "listen_to_call_forwarding_status",
            "repeat_menu",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class CallForwardingOptionsMenuKeysReadEntry(OCIType):
    """

    Attributes:

        activate_call_forwarding (Optional[str]):

        deactivate_call_forwarding (Optional[str]):

        change_call_forwarding_destination (Optional[str]):

        listen_to_call_forwarding_status (Optional[str]):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

    """

    activate_call_forwarding: Optional[str] = field(
        default=None, metadata={"alias": "activateCallForwarding"}
    )

    deactivate_call_forwarding: Optional[str] = field(
        default=None, metadata={"alias": "deactivateCallForwarding"}
    )

    change_call_forwarding_destination: Optional[str] = field(
        default=None, metadata={"alias": "changeCallForwardingDestination"}
    )

    listen_to_call_forwarding_status: Optional[str] = field(
        default=None, metadata={"alias": "listenToCallForwardingStatus"}
    )

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})


@dataclass(kw_only=True)
class ChangeBusyOrNoAnswerGreetingMenuKeysModifyEntry(OCIType):
    """The voice portal change busy or not answer greeting menu keys modify entry.

    Attributes:

        record_new_greeting (Optional[Nillable[str]]):

        listen_to_current_greeting (Optional[Nillable[str]]):

        revert_to_system_default_greeting (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

    """

    record_new_greeting: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "recordNewGreeting"}
    )

    listen_to_current_greeting: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "listenToCurrentGreeting"}
    )

    revert_to_system_default_greeting: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "revertToSystemDefaultGreeting"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    def __post_init__(self):
        nillable_fields = [
            "record_new_greeting",
            "listen_to_current_greeting",
            "revert_to_system_default_greeting",
            "repeat_menu",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ChangeBusyOrNoAnswerGreetingMenuKeysReadEntry(OCIType):
    """The voice portal change busy or not answer greeting menu keys.

    Attributes:

        record_new_greeting (Optional[str]):

        listen_to_current_greeting (Optional[str]):

        revert_to_system_default_greeting (Optional[str]):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

    """

    record_new_greeting: Optional[str] = field(
        default=None, metadata={"alias": "recordNewGreeting"}
    )

    listen_to_current_greeting: Optional[str] = field(
        default=None, metadata={"alias": "listenToCurrentGreeting"}
    )

    revert_to_system_default_greeting: Optional[str] = field(
        default=None, metadata={"alias": "revertToSystemDefaultGreeting"}
    )

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})


@dataclass(kw_only=True)
class ChangeCallForwardingDestinationMenuKeysModifyEntry(OCIType):
    """The voice portal change call forwarding destination menu keys modify entry.

    Attributes:

        finish_entering_new_destination_number (Optional[str]):

    """

    finish_entering_new_destination_number: Optional[str] = field(
        default=None, metadata={"alias": "finishEnteringNewDestinationNumber"}
    )


@dataclass(kw_only=True)
class ChangeCallForwardingDestinationMenuKeysReadEntry(OCIType):
    """The voice portal change call forwarding destination menu keys.

    Attributes:

        finish_entering_new_destination_number (str):

    """

    finish_entering_new_destination_number: str = field(
        metadata={"alias": "finishEnteringNewDestinationNumber"}
    )


@dataclass(kw_only=True)
class ChangeCurrentIntroductionOrMessageOrReplyMenuKeysModifyEntry(OCIType):
    """The voice portal change current introduction or message or reply menu keys modify entry.

    Attributes:

        end_recording (Optional[str]):

    """

    end_recording: Optional[str] = field(
        default=None, metadata={"alias": "endRecording"}
    )


@dataclass(kw_only=True)
class ChangeCurrentIntroductionOrMessageOrReplyMenuKeysReadEntry(OCIType):
    """The voice portal change current introduction or message or reply menu keys.

    Attributes:

        end_recording (str):

    """

    end_recording: str = field(metadata={"alias": "endRecording"})


@dataclass(kw_only=True)
class ChangeExtendedAwayGreetingMenuKeysModifyEntry(OCIType):
    """The voice portal change extended away greeting menu keys modify entry.

    Attributes:

        activate_extended_away_greeting (Optional[Nillable[str]]):

        deactivate_extended_away_greeting (Optional[Nillable[str]]):

        record_new_greeting (Optional[Nillable[str]]):

        listen_to_current_greeting (Optional[Nillable[str]]):

        enable_message_deposit (Optional[Nillable[str]]):

        disable_message_deposit (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

    """

    activate_extended_away_greeting: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "activateExtendedAwayGreeting"}
    )

    deactivate_extended_away_greeting: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deactivateExtendedAwayGreeting"}
    )

    record_new_greeting: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "recordNewGreeting"}
    )

    listen_to_current_greeting: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "listenToCurrentGreeting"}
    )

    enable_message_deposit: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "enableMessageDeposit"}
    )

    disable_message_deposit: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "disableMessageDeposit"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    def __post_init__(self):
        nillable_fields = [
            "activate_extended_away_greeting",
            "deactivate_extended_away_greeting",
            "record_new_greeting",
            "listen_to_current_greeting",
            "enable_message_deposit",
            "disable_message_deposit",
            "repeat_menu",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ChangeExtendedAwayGreetingMenuKeysReadEntry(OCIType):
    """The voice portal change extended away greeting menu keys.

    Attributes:

        activate_extended_away_greeting (Optional[str]):

        deactivate_extended_away_greeting (Optional[str]):

        record_new_greeting (Optional[str]):

        listen_to_current_greeting (Optional[str]):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

    """

    activate_extended_away_greeting: Optional[str] = field(
        default=None, metadata={"alias": "activateExtendedAwayGreeting"}
    )

    deactivate_extended_away_greeting: Optional[str] = field(
        default=None, metadata={"alias": "deactivateExtendedAwayGreeting"}
    )

    record_new_greeting: Optional[str] = field(
        default=None, metadata={"alias": "recordNewGreeting"}
    )

    listen_to_current_greeting: Optional[str] = field(
        default=None, metadata={"alias": "listenToCurrentGreeting"}
    )

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})


@dataclass(kw_only=True)
class CommPilotExpressProfileMenuKeysModifyEntry(OCIType):
    """The voice portal commPilot express profile menu keys modify entry.

    Attributes:

        activate_available_in_office_profile (Optional[Nillable[str]]):

        activate_available_out_of_office_profile (Optional[Nillable[str]]):

        activate_busy_profile (Optional[Nillable[str]]):

        activate_unavailable_profile (Optional[Nillable[str]]):

        no_profile (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

    """

    activate_available_in_office_profile: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "activateAvailableInOfficeProfile"}
    )

    activate_available_out_of_office_profile: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "activateAvailableOutOfOfficeProfile"}
    )

    activate_busy_profile: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "activateBusyProfile"}
    )

    activate_unavailable_profile: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "activateUnavailableProfile"}
    )

    no_profile: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "noProfile"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    def __post_init__(self):
        nillable_fields = [
            "activate_available_in_office_profile",
            "activate_available_out_of_office_profile",
            "activate_busy_profile",
            "activate_unavailable_profile",
            "no_profile",
            "repeat_menu",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class CommPilotExpressProfileMenuKeysReadEntry(OCIType):
    """The voice portal commPilot express profile menu keys.

    Attributes:

        activate_available_in_office_profile (Optional[str]):

        activate_available_out_of_office_profile (Optional[str]):

        activate_busy_profile (Optional[str]):

        activate_unavailable_profile (Optional[str]):

        no_profile (Optional[str]):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

    """

    activate_available_in_office_profile: Optional[str] = field(
        default=None, metadata={"alias": "activateAvailableInOfficeProfile"}
    )

    activate_available_out_of_office_profile: Optional[str] = field(
        default=None, metadata={"alias": "activateAvailableOutOfOfficeProfile"}
    )

    activate_busy_profile: Optional[str] = field(
        default=None, metadata={"alias": "activateBusyProfile"}
    )

    activate_unavailable_profile: Optional[str] = field(
        default=None, metadata={"alias": "activateUnavailableProfile"}
    )

    no_profile: Optional[str] = field(default=None, metadata={"alias": "noProfile"})

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})


@dataclass(kw_only=True)
class ConferenceGreetingMenuKeysModifyEntry(OCIType):
    """The voice portal greeting menu keys modify entry.

    Attributes:

        activate_conf_greeting (Optional[Nillable[str]]):

        deactivate_conf_greeting (Optional[Nillable[str]]):

        record_new_conf_greeting (Optional[Nillable[str]]):

        listen_to_current_conf_greeting (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

    """

    activate_conf_greeting: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "activateConfGreeting"}
    )

    deactivate_conf_greeting: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deactivateConfGreeting"}
    )

    record_new_conf_greeting: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "recordNewConfGreeting"}
    )

    listen_to_current_conf_greeting: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "listenToCurrentConfGreeting"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    def __post_init__(self):
        nillable_fields = [
            "activate_conf_greeting",
            "deactivate_conf_greeting",
            "record_new_conf_greeting",
            "listen_to_current_conf_greeting",
            "repeat_menu",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ConferenceGreetingMenuKeysReadEntry(OCIType):
    """The voice portal conference greeting menu keys.

    Attributes:

        activate_conf_greeting (Optional[str]):

        deactivate_conf_greeting (Optional[str]):

        record_new_conf_greeting (Optional[str]):

        listen_to_current_conf_greeting (Optional[str]):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

    """

    activate_conf_greeting: Optional[str] = field(
        default=None, metadata={"alias": "activateConfGreeting"}
    )

    deactivate_conf_greeting: Optional[str] = field(
        default=None, metadata={"alias": "deactivateConfGreeting"}
    )

    record_new_conf_greeting: Optional[str] = field(
        default=None, metadata={"alias": "recordNewConfGreeting"}
    )

    listen_to_current_conf_greeting: Optional[str] = field(
        default=None, metadata={"alias": "listenToCurrentConfGreeting"}
    )

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})


@dataclass(kw_only=True)
class DeleteAllMessagesMenuKeysModifyEntry(OCIType):
    """The voice portal delete all messages menu keys modify entry modify entry.

    Attributes:

        confirm_deletion (Optional[str]):

        cancel_deletion (Optional[str]):

    """

    confirm_deletion: Optional[str] = field(
        default=None, metadata={"alias": "confirmDeletion"}
    )

    cancel_deletion: Optional[str] = field(
        default=None, metadata={"alias": "cancelDeletion"}
    )


@dataclass(kw_only=True)
class DeleteAllMessagesMenuKeysReadEntry(OCIType):
    """The voice portal delete all messages menu keys.

    Attributes:

        confirm_deletion (str):

        cancel_deletion (str):

    """

    confirm_deletion: str = field(metadata={"alias": "confirmDeletion"})

    cancel_deletion: str = field(metadata={"alias": "cancelDeletion"})


@dataclass(kw_only=True)
class DisableMessageDepositMenuKeysModifyEntry(OCIType):
    """The voice portal disable message deposit menu keys modify entry.

    Attributes:

        disconnect_after_greeting (Optional[Nillable[str]]):

        forward_after_greeting (Optional[Nillable[str]]):

        change_forwarding_destination (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

    """

    disconnect_after_greeting: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "disconnectAfterGreeting"}
    )

    forward_after_greeting: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "forwardAfterGreeting"}
    )

    change_forwarding_destination: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "changeForwardingDestination"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    def __post_init__(self):
        nillable_fields = [
            "disconnect_after_greeting",
            "forward_after_greeting",
            "change_forwarding_destination",
            "repeat_menu",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class DisableMessageDepositMenuKeysReadEntry(OCIType):
    """The voice portal disable message deposit menu keys.

    Attributes:

        disconnect_after_greeting (Optional[str]):

        forward_after_greeting (Optional[str]):

        change_forwarding_destination (Optional[str]):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

    """

    disconnect_after_greeting: Optional[str] = field(
        default=None, metadata={"alias": "disconnectAfterGreeting"}
    )

    forward_after_greeting: Optional[str] = field(
        default=None, metadata={"alias": "forwardAfterGreeting"}
    )

    change_forwarding_destination: Optional[str] = field(
        default=None, metadata={"alias": "changeForwardingDestination"}
    )

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})


@dataclass(kw_only=True)
class FaxMessagingMenuKeysModifyEntry(OCIType):
    """The voice portal fax messaging menu keys modify entry.

    Attributes:

        save_fax_message_and_skip_to_next (Optional[Nillable[str]]):

        previous_fax_message (Optional[Nillable[str]]):

        play_envelope (Optional[Nillable[str]]):

        next_fax_message (Optional[Nillable[str]]):

        delete_fax_message (Optional[Nillable[str]]):

        print_fax_message (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[Nillable[str]]):

    """

    save_fax_message_and_skip_to_next: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "saveFaxMessageAndSkipToNext"}
    )

    previous_fax_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "previousFaxMessage"}
    )

    play_envelope: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "playEnvelope"}
    )

    next_fax_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "nextFaxMessage"}
    )

    delete_fax_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deleteFaxMessage"}
    )

    print_fax_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "printFaxMessage"}
    )

    return_to_previous_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    def __post_init__(self):
        nillable_fields = [
            "save_fax_message_and_skip_to_next",
            "previous_fax_message",
            "play_envelope",
            "next_fax_message",
            "delete_fax_message",
            "print_fax_message",
            "return_to_previous_menu",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class FaxMessagingMenuKeysReadEntry(OCIType):
    """The voice portal fax messaging menu keys.

    Attributes:

        save_fax_message_and_skip_to_next (Optional[str]):

        previous_fax_message (Optional[str]):

        play_envelope (Optional[str]):

        next_fax_message (Optional[str]):

        delete_fax_message (Optional[str]):

        print_fax_message (Optional[str]):

        return_to_previous_menu (Optional[str]):

    """

    save_fax_message_and_skip_to_next: Optional[str] = field(
        default=None, metadata={"alias": "saveFaxMessageAndSkipToNext"}
    )

    previous_fax_message: Optional[str] = field(
        default=None, metadata={"alias": "previousFaxMessage"}
    )

    play_envelope: Optional[str] = field(
        default=None, metadata={"alias": "playEnvelope"}
    )

    next_fax_message: Optional[str] = field(
        default=None, metadata={"alias": "nextFaxMessage"}
    )

    delete_fax_message: Optional[str] = field(
        default=None, metadata={"alias": "deleteFaxMessage"}
    )

    print_fax_message: Optional[str] = field(
        default=None, metadata={"alias": "printFaxMessage"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )


@dataclass(kw_only=True)
class ForwardOrComposeMessageMenuKeysModifyEntry(OCIType):
    """The voice portal forward or compose message menu keys modify entry.

    Attributes:

        send_to_person (Optional[Nillable[str]]):

        send_to_all_group_members (Optional[Nillable[str]]):

        send_to_distribution_list (Optional[Nillable[str]]):

        change_current_introduction_or_message (Optional[Nillable[str]]):

        listen_to_current_introduction_or_message (Optional[Nillable[str]]):

        set_or_clear_urgent_indicator (Optional[Nillable[str]]):

        set_or_clear_confidential_indicator (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

    """

    send_to_person: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "sendToPerson"}
    )

    send_to_all_group_members: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "sendToAllGroupMembers"}
    )

    send_to_distribution_list: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "sendToDistributionList"}
    )

    change_current_introduction_or_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "changeCurrentIntroductionOrMessage"}
    )

    listen_to_current_introduction_or_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "listenToCurrentIntroductionOrMessage"}
    )

    set_or_clear_urgent_indicator: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "setOrClearUrgentIndicator"}
    )

    set_or_clear_confidential_indicator: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "setOrClearConfidentialIndicator"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    def __post_init__(self):
        nillable_fields = [
            "send_to_person",
            "send_to_all_group_members",
            "send_to_distribution_list",
            "change_current_introduction_or_message",
            "listen_to_current_introduction_or_message",
            "set_or_clear_urgent_indicator",
            "set_or_clear_confidential_indicator",
            "repeat_menu",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ForwardOrComposeMessageMenuKeysReadEntry(OCIType):
    """The voice portal forward or compose message menu keys.

    Attributes:

        send_to_person (Optional[str]):

        send_to_all_group_members (Optional[str]):

        send_to_distribution_list (Optional[str]):

        change_current_introduction_or_message (Optional[str]):

        listen_to_current_introduction_or_message (Optional[str]):

        set_or_clear_urgent_indicator (Optional[str]):

        set_or_clear_confidential_indicator (Optional[str]):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

    """

    send_to_person: Optional[str] = field(
        default=None, metadata={"alias": "sendToPerson"}
    )

    send_to_all_group_members: Optional[str] = field(
        default=None, metadata={"alias": "sendToAllGroupMembers"}
    )

    send_to_distribution_list: Optional[str] = field(
        default=None, metadata={"alias": "sendToDistributionList"}
    )

    change_current_introduction_or_message: Optional[str] = field(
        default=None, metadata={"alias": "changeCurrentIntroductionOrMessage"}
    )

    listen_to_current_introduction_or_message: Optional[str] = field(
        default=None, metadata={"alias": "listenToCurrentIntroductionOrMessage"}
    )

    set_or_clear_urgent_indicator: Optional[str] = field(
        default=None, metadata={"alias": "setOrClearUrgentIndicator"}
    )

    set_or_clear_confidential_indicator: Optional[str] = field(
        default=None, metadata={"alias": "setOrClearConfidentialIndicator"}
    )

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})


@dataclass(kw_only=True)
class GreetingOnlyForwardingDestinationMenuKeysModifyEntry(OCIType):
    """The voice portal greeting only forwarding destination menu keys modify entry.

    Attributes:

        greeting_only_forwarding_destination (Optional[Nillable[str]]):

    """

    greeting_only_forwarding_destination: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "greetingOnlyForwardingDestination"}
    )

    def __post_init__(self):
        nillable_fields = ["greeting_only_forwarding_destination"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GreetingOnlyForwardingDestinationMenuKeysReadEntry(OCIType):
    """The voice portal greeting only forwarding destination menu keys.

    Attributes:

        greeting_only_forwarding_destination (Optional[str]):

    """

    greeting_only_forwarding_destination: Optional[str] = field(
        default=None, metadata={"alias": "greetingOnlyForwardingDestination"}
    )


@dataclass(kw_only=True)
class GreetingsMenuKeysModifyEntry(OCIType):
    """The voice portal greeting menu keys modify entry.

    Attributes:

        personalized_name (Optional[Nillable[str]]):

        conference_greeting (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

    """

    personalized_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "personalizedName"}
    )

    conference_greeting: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "conferenceGreeting"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    def __post_init__(self):
        nillable_fields = ["personalized_name", "conference_greeting", "repeat_menu"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GreetingsMenuKeysReadEntry(OCIType):
    """The voice portal greeting menu keys.

    Attributes:

        personalized_name (Optional[str]):

        conference_greeting (Optional[str]):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

    """

    personalized_name: Optional[str] = field(
        default=None, metadata={"alias": "personalizedName"}
    )

    conference_greeting: Optional[str] = field(
        default=None, metadata={"alias": "conferenceGreeting"}
    )

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})


@dataclass(kw_only=True)
class HotelingMenuKeysModifyEntry(OCIType):
    """The voice portal hoteling menu keys modify entry.

    Attributes:

        check_host_status (Optional[Nillable[str]]):

        associate_with_host (Optional[Nillable[str]]):

        disassociate_from_host (Optional[Nillable[str]]):

        disassociate_from_remote_host (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

    """

    check_host_status: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "checkHostStatus"}
    )

    associate_with_host: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "associateWithHost"}
    )

    disassociate_from_host: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "disassociateFromHost"}
    )

    disassociate_from_remote_host: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "disassociateFromRemoteHost"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    def __post_init__(self):
        nillable_fields = [
            "check_host_status",
            "associate_with_host",
            "disassociate_from_host",
            "disassociate_from_remote_host",
            "repeat_menu",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class HotelingMenuKeysReadEntry(OCIType):
    """The voice portal hoteling menu keys.

    Attributes:

        check_host_status (Optional[str]):

        associate_with_host (Optional[str]):

        disassociate_from_host (Optional[str]):

        disassociate_from_remote_host (Optional[str]):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

    """

    check_host_status: Optional[str] = field(
        default=None, metadata={"alias": "checkHostStatus"}
    )

    associate_with_host: Optional[str] = field(
        default=None, metadata={"alias": "associateWithHost"}
    )

    disassociate_from_host: Optional[str] = field(
        default=None, metadata={"alias": "disassociateFromHost"}
    )

    disassociate_from_remote_host: Optional[str] = field(
        default=None, metadata={"alias": "disassociateFromRemoteHost"}
    )

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})


@dataclass(kw_only=True)
class MessageDepositMenuKeysModifyEntry(OCIType):
    """The voice portal message deposit menu keys modify entry.

    Attributes:

        enable_message_deposit (Optional[Nillable[str]]):

        disable_message_deposit (Optional[Nillable[str]]):

        listen_to_message_deposit_status (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

    """

    enable_message_deposit: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "enableMessageDeposit"}
    )

    disable_message_deposit: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "disableMessageDeposit"}
    )

    listen_to_message_deposit_status: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "listenToMessageDepositStatus"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    def __post_init__(self):
        nillable_fields = [
            "enable_message_deposit",
            "disable_message_deposit",
            "listen_to_message_deposit_status",
            "repeat_menu",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class MessageDepositMenuKeysReadEntry(OCIType):
    """The voice portal message deposit menu keys.

    Attributes:

        enable_message_deposit (Optional[str]):

        disable_message_deposit (Optional[str]):

        listen_to_message_deposit_status (Optional[str]):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

    """

    enable_message_deposit: Optional[str] = field(
        default=None, metadata={"alias": "enableMessageDeposit"}
    )

    disable_message_deposit: Optional[str] = field(
        default=None, metadata={"alias": "disableMessageDeposit"}
    )

    listen_to_message_deposit_status: Optional[str] = field(
        default=None, metadata={"alias": "listenToMessageDepositStatus"}
    )

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})


@dataclass(kw_only=True)
class PasscodeMenuKeysModifyEntry(OCIType):
    """The voice portal passcode menu keys modify entry.

    Attributes:

        finish_entering_or_reentering_passcode (Optional[str]):

        return_to_previous_menu (Optional[str]):

    """

    finish_entering_or_reentering_passcode: Optional[str] = field(
        default=None, metadata={"alias": "finishEnteringOrReenteringPasscode"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )


@dataclass(kw_only=True)
class PasscodeMenuKeysReadEntry(OCIType):
    """The voice portal passcode menu keys.

    Attributes:

        finish_entering_or_reentering_passcode (str):

        return_to_previous_menu (str):

    """

    finish_entering_or_reentering_passcode: str = field(
        metadata={"alias": "finishEnteringOrReenteringPasscode"}
    )

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})


@dataclass(kw_only=True)
class PersonalAssistantMenuKeysModifyEntry(OCIType):
    """The voice portal personal assistant menu keys modify entry.

    Attributes:

        set_presence_to_none (Optional[Nillable[str]]):

        set_presence_to_business_trip (Optional[Nillable[str]]):

        set_presence_to_gone_for_the_day (Optional[Nillable[str]]):

        set_presence_to_lunch (Optional[Nillable[str]]):

        set_presence_to_meeting (Optional[Nillable[str]]):

        set_presence_to_out_of_office (Optional[Nillable[str]]):

        set_presence_to_temporarily_out (Optional[Nillable[str]]):

        set_presence_to_training (Optional[Nillable[str]]):

        set_presence_to_unavailable (Optional[Nillable[str]]):

        set_presence_to_vacation (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

    """

    set_presence_to_none: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "setPresenceToNone"}
    )

    set_presence_to_business_trip: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "setPresenceToBusinessTrip"}
    )

    set_presence_to_gone_for_the_day: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "setPresenceToGoneForTheDay"}
    )

    set_presence_to_lunch: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "setPresenceToLunch"}
    )

    set_presence_to_meeting: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "setPresenceToMeeting"}
    )

    set_presence_to_out_of_office: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "setPresenceToOutOfOffice"}
    )

    set_presence_to_temporarily_out: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "setPresenceToTemporarilyOut"}
    )

    set_presence_to_training: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "setPresenceToTraining"}
    )

    set_presence_to_unavailable: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "setPresenceToUnavailable"}
    )

    set_presence_to_vacation: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "setPresenceToVacation"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    def __post_init__(self):
        nillable_fields = [
            "set_presence_to_none",
            "set_presence_to_business_trip",
            "set_presence_to_gone_for_the_day",
            "set_presence_to_lunch",
            "set_presence_to_meeting",
            "set_presence_to_out_of_office",
            "set_presence_to_temporarily_out",
            "set_presence_to_training",
            "set_presence_to_unavailable",
            "set_presence_to_vacation",
            "repeat_menu",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class PersonalAssistantMenuKeysReadEntry(OCIType):
    """The voice portal personal assistant menu keys.

    Attributes:

        set_presence_to_none (Optional[str]):

        set_presence_to_business_trip (Optional[str]):

        set_presence_to_gone_for_the_day (Optional[str]):

        set_presence_to_lunch (Optional[str]):

        set_presence_to_meeting (Optional[str]):

        set_presence_to_out_of_office (Optional[str]):

        set_presence_to_temporarily_out (Optional[str]):

        set_presence_to_training (Optional[str]):

        set_presence_to_unavailable (Optional[str]):

        set_presence_to_vacation (Optional[str]):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

    """

    set_presence_to_none: Optional[str] = field(
        default=None, metadata={"alias": "setPresenceToNone"}
    )

    set_presence_to_business_trip: Optional[str] = field(
        default=None, metadata={"alias": "setPresenceToBusinessTrip"}
    )

    set_presence_to_gone_for_the_day: Optional[str] = field(
        default=None, metadata={"alias": "setPresenceToGoneForTheDay"}
    )

    set_presence_to_lunch: Optional[str] = field(
        default=None, metadata={"alias": "setPresenceToLunch"}
    )

    set_presence_to_meeting: Optional[str] = field(
        default=None, metadata={"alias": "setPresenceToMeeting"}
    )

    set_presence_to_out_of_office: Optional[str] = field(
        default=None, metadata={"alias": "setPresenceToOutOfOffice"}
    )

    set_presence_to_temporarily_out: Optional[str] = field(
        default=None, metadata={"alias": "setPresenceToTemporarilyOut"}
    )

    set_presence_to_training: Optional[str] = field(
        default=None, metadata={"alias": "setPresenceToTraining"}
    )

    set_presence_to_unavailable: Optional[str] = field(
        default=None, metadata={"alias": "setPresenceToUnavailable"}
    )

    set_presence_to_vacation: Optional[str] = field(
        default=None, metadata={"alias": "setPresenceToVacation"}
    )

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})


@dataclass(kw_only=True)
class PersonalizedNameMenuKeysModifyEntry(OCIType):
    """The voice portal personalized name menu keys modify entry.

    Attributes:

        record_new_personalized_name (Optional[Nillable[str]]):

        listen_to_current_personalized_name (Optional[Nillable[str]]):

        delete_personalized_name (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

    """

    record_new_personalized_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "recordNewPersonalizedName"}
    )

    listen_to_current_personalized_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "listenToCurrentPersonalizedName"}
    )

    delete_personalized_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deletePersonalizedName"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    def __post_init__(self):
        nillable_fields = [
            "record_new_personalized_name",
            "listen_to_current_personalized_name",
            "delete_personalized_name",
            "repeat_menu",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class PersonalizedNameMenuKeysReadEntry(OCIType):
    """The voice portal personalized name menu keys.

    Attributes:

        record_new_personalized_name (Optional[str]):

        listen_to_current_personalized_name (Optional[str]):

        delete_personalized_name (Optional[str]):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

    """

    record_new_personalized_name: Optional[str] = field(
        default=None, metadata={"alias": "recordNewPersonalizedName"}
    )

    listen_to_current_personalized_name: Optional[str] = field(
        default=None, metadata={"alias": "listenToCurrentPersonalizedName"}
    )

    delete_personalized_name: Optional[str] = field(
        default=None, metadata={"alias": "deletePersonalizedName"}
    )

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})


@dataclass(kw_only=True)
class PlayGreetingMenuKeysModifyEntry(OCIType):
    """The voice portal play greeting menu keys modify entry.

    Attributes:

        skip_backward (Optional[Nillable[str]]):

        pause_or_resume (Optional[Nillable[str]]):

        skip_forward (Optional[Nillable[str]]):

        jump_to_begin (Optional[Nillable[str]]):

        jump_to_end (Optional[Nillable[str]]):

    """

    skip_backward: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "skipBackward"}
    )

    pause_or_resume: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "pauseOrResume"}
    )

    skip_forward: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "skipForward"}
    )

    jump_to_begin: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "jumpToBegin"}
    )

    jump_to_end: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "jumpToEnd"}
    )

    def __post_init__(self):
        nillable_fields = [
            "skip_backward",
            "pause_or_resume",
            "skip_forward",
            "jump_to_begin",
            "jump_to_end",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class PlayGreetingMenuKeysReadEntry(OCIType):
    """The voice portal play greeting menu keys.

    Attributes:

        skip_backward (Optional[str]):

        pause_or_resume (Optional[str]):

        skip_forward (Optional[str]):

        jump_to_begin (Optional[str]):

        jump_to_end (Optional[str]):

    """

    skip_backward: Optional[str] = field(
        default=None, metadata={"alias": "skipBackward"}
    )

    pause_or_resume: Optional[str] = field(
        default=None, metadata={"alias": "pauseOrResume"}
    )

    skip_forward: Optional[str] = field(default=None, metadata={"alias": "skipForward"})

    jump_to_begin: Optional[str] = field(
        default=None, metadata={"alias": "jumpToBegin"}
    )

    jump_to_end: Optional[str] = field(default=None, metadata={"alias": "jumpToEnd"})


@dataclass(kw_only=True)
class PlayMessageMenuKeysModifyEntry(OCIType):
    """The voice portal play message menu keys modify entry.

    Attributes:

        skip_backward (Optional[Nillable[str]]):

        pause_or_resume (Optional[Nillable[str]]):

        skip_forward (Optional[Nillable[str]]):

        jump_to_begin (Optional[Nillable[str]]):

        jump_to_end (Optional[Nillable[str]]):

    """

    skip_backward: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "skipBackward"}
    )

    pause_or_resume: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "pauseOrResume"}
    )

    skip_forward: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "skipForward"}
    )

    jump_to_begin: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "jumpToBegin"}
    )

    jump_to_end: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "jumpToEnd"}
    )

    def __post_init__(self):
        nillable_fields = [
            "skip_backward",
            "pause_or_resume",
            "skip_forward",
            "jump_to_begin",
            "jump_to_end",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class PlayMessageMenuKeysReadEntry(OCIType):
    """The voice portal play message menu keys.

    Attributes:

        skip_backward (Optional[str]):

        pause_or_resume (Optional[str]):

        skip_forward (Optional[str]):

        jump_to_begin (Optional[str]):

        jump_to_end (Optional[str]):

    """

    skip_backward: Optional[str] = field(
        default=None, metadata={"alias": "skipBackward"}
    )

    pause_or_resume: Optional[str] = field(
        default=None, metadata={"alias": "pauseOrResume"}
    )

    skip_forward: Optional[str] = field(default=None, metadata={"alias": "skipForward"})

    jump_to_begin: Optional[str] = field(
        default=None, metadata={"alias": "jumpToBegin"}
    )

    jump_to_end: Optional[str] = field(default=None, metadata={"alias": "jumpToEnd"})


@dataclass(kw_only=True)
class PlayMessagesMenuKeysModifyEntry(OCIType):
    """The voice portal play message menu keys modify entry.

    Attributes:

        save_message (Optional[Nillable[str]]):

        delete_message (Optional[Nillable[str]]):

        play_message (Optional[Nillable[str]]):

        previous_message (Optional[Nillable[str]]):

        play_envelope (Optional[Nillable[str]]):

        next_message (Optional[Nillable[str]]):

        callback_caller (Optional[Nillable[str]]):

        compose_message (Optional[Nillable[str]]):

        reply_message (Optional[Nillable[str]]):

        forward_message (Optional[Nillable[str]]):

        additional_message_options (Optional[Nillable[str]]):

        personalized_name (Optional[Nillable[str]]):

        passcode (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

    """

    save_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "saveMessage"}
    )

    delete_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deleteMessage"}
    )

    play_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "playMessage"}
    )

    previous_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "previousMessage"}
    )

    play_envelope: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "playEnvelope"}
    )

    next_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "nextMessage"}
    )

    callback_caller: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callbackCaller"}
    )

    compose_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "composeMessage"}
    )

    reply_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "replyMessage"}
    )

    forward_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "forwardMessage"}
    )

    additional_message_options: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "additionalMessageOptions"}
    )

    personalized_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "personalizedName"}
    )

    passcode: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "passcode"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    def __post_init__(self):
        nillable_fields = [
            "save_message",
            "delete_message",
            "play_message",
            "previous_message",
            "play_envelope",
            "next_message",
            "callback_caller",
            "compose_message",
            "reply_message",
            "forward_message",
            "additional_message_options",
            "personalized_name",
            "passcode",
            "repeat_menu",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class PlayMessagesMenuKeysReadEntry(OCIType):
    """The voice portal play message menu keys.

    Attributes:

        save_message (Optional[str]):

        delete_message (Optional[str]):

        play_message (Optional[str]):

        previous_message (Optional[str]):

        play_envelope (Optional[str]):

        next_message (Optional[str]):

        callback_caller (Optional[str]):

        compose_message (Optional[str]):

        reply_message (Optional[str]):

        forward_message (Optional[str]):

        additional_message_options (Optional[str]):

        personalized_name (Optional[str]):

        passcode (Optional[str]):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

    """

    save_message: Optional[str] = field(default=None, metadata={"alias": "saveMessage"})

    delete_message: Optional[str] = field(
        default=None, metadata={"alias": "deleteMessage"}
    )

    play_message: Optional[str] = field(default=None, metadata={"alias": "playMessage"})

    previous_message: Optional[str] = field(
        default=None, metadata={"alias": "previousMessage"}
    )

    play_envelope: Optional[str] = field(
        default=None, metadata={"alias": "playEnvelope"}
    )

    next_message: Optional[str] = field(default=None, metadata={"alias": "nextMessage"})

    callback_caller: Optional[str] = field(
        default=None, metadata={"alias": "callbackCaller"}
    )

    compose_message: Optional[str] = field(
        default=None, metadata={"alias": "composeMessage"}
    )

    reply_message: Optional[str] = field(
        default=None, metadata={"alias": "replyMessage"}
    )

    forward_message: Optional[str] = field(
        default=None, metadata={"alias": "forwardMessage"}
    )

    additional_message_options: Optional[str] = field(
        default=None, metadata={"alias": "additionalMessageOptions"}
    )

    personalized_name: Optional[str] = field(
        default=None, metadata={"alias": "personalizedName"}
    )

    passcode: Optional[str] = field(default=None, metadata={"alias": "passcode"})

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})


@dataclass(kw_only=True)
class RecordNewGreetingOrPersonalizedNameMenuKeysModifyEntry(OCIType):
    """The voice portal record new greeting or personalized name menu keys modify entry.

    Attributes:

        end_recording (Optional[str]):

    """

    end_recording: Optional[str] = field(
        default=None, metadata={"alias": "endRecording"}
    )


@dataclass(kw_only=True)
class RecordNewGreetingOrPersonalizedNameMenuKeysReadEntry(OCIType):
    """The voice portal record new greeting or personalized name menu keys.

    Attributes:

        end_recording (str):

    """

    end_recording: str = field(metadata={"alias": "endRecording"})


@dataclass(kw_only=True)
class ReplyMessageMenuKeysModifyEntry(OCIType):
    """The voice portal reply message menu keys modify entry.

    Attributes:

        send_reply_to_caller (Optional[str]):

        change_current_reply (Optional[Nillable[str]]):

        listen_to_current_reply (Optional[Nillable[str]]):

        set_or_clear_urgent_indicator (Optional[Nillable[str]]):

        set_or_clear_confidential_indicator (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

    """

    send_reply_to_caller: Optional[str] = field(
        default=None, metadata={"alias": "sendReplyToCaller"}
    )

    change_current_reply: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "changeCurrentReply"}
    )

    listen_to_current_reply: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "listenToCurrentReply"}
    )

    set_or_clear_urgent_indicator: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "setOrClearUrgentIndicator"}
    )

    set_or_clear_confidential_indicator: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "setOrClearConfidentialIndicator"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    def __post_init__(self):
        nillable_fields = [
            "change_current_reply",
            "listen_to_current_reply",
            "set_or_clear_urgent_indicator",
            "set_or_clear_confidential_indicator",
            "repeat_menu",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ReplyMessageMenuKeysReadEntry(OCIType):
    """The voice portal reply message menu keys.

    Attributes:

        send_reply_to_caller (str):

        change_current_reply (Optional[str]):

        listen_to_current_reply (Optional[str]):

        set_or_clear_urgent_indicator (Optional[str]):

        set_or_clear_confidential_indicator (Optional[str]):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

    """

    send_reply_to_caller: str = field(metadata={"alias": "sendReplyToCaller"})

    change_current_reply: Optional[str] = field(
        default=None, metadata={"alias": "changeCurrentReply"}
    )

    listen_to_current_reply: Optional[str] = field(
        default=None, metadata={"alias": "listenToCurrentReply"}
    )

    set_or_clear_urgent_indicator: Optional[str] = field(
        default=None, metadata={"alias": "setOrClearUrgentIndicator"}
    )

    set_or_clear_confidential_indicator: Optional[str] = field(
        default=None, metadata={"alias": "setOrClearConfidentialIndicator"}
    )

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})


@dataclass(kw_only=True)
class ReviewSelectedDistributionListMenuKeysModifyEntry(OCIType):
    """The voice portal review selected distribution list menu keys modify entry.

    Attributes:

        interrupt_playback_and_return_to_previous_menu (Optional[str]):

    """

    interrupt_playback_and_return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "interruptPlaybackAndReturnToPreviousMenu"}
    )


@dataclass(kw_only=True)
class ReviewSelectedDistributionListMenuKeysReadEntry(OCIType):
    """The voice portal review selected distribution list menu keys.

    Attributes:

        interrupt_playback_and_return_to_previous_menu (str):

    """

    interrupt_playback_and_return_to_previous_menu: str = field(
        metadata={"alias": "interruptPlaybackAndReturnToPreviousMenu"}
    )


@dataclass(kw_only=True)
class SelectDistributionListMenuKeysModifyEntry(OCIType):
    """The voice portal select distribution list menu keys modify entry.

    Attributes:

        return_to_previous_menu (Optional[str]):

        repeat_menu_or_finish_entering_distribution_list_number (Optional[Nillable[str]]):

    """

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu_or_finish_entering_distribution_list_number: Optional[Nillable[str]] = (
        field(
            default=None,
            metadata={"alias": "repeatMenuOrFinishEnteringDistributionListNumber"},
        )
    )

    def __post_init__(self):
        nillable_fields = ["repeat_menu_or_finish_entering_distribution_list_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SelectDistributionListMenuKeysReadEntry(OCIType):
    """The voice portal select distribution list menu keys.

    Attributes:

        return_to_previous_menu (str):

        repeat_menu_or_finish_entering_distribution_list_number (Optional[str]):

    """

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu_or_finish_entering_distribution_list_number: Optional[str] = field(
        default=None,
        metadata={"alias": "repeatMenuOrFinishEnteringDistributionListNumber"},
    )


@dataclass(kw_only=True)
class SendMessageToSelectedDistributionListMenuKeysModifyEntry(OCIType):
    """The voice portal send message to selected distribution list menu keys modify entry.

    Attributes:

        confirm_sending_to_distribution_list (Optional[Nillable[str]]):

        cancel_sending_to_distribution_list (Optional[str]):

    """

    confirm_sending_to_distribution_list: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "confirmSendingToDistributionList"}
    )

    cancel_sending_to_distribution_list: Optional[str] = field(
        default=None, metadata={"alias": "cancelSendingToDistributionList"}
    )

    def __post_init__(self):
        nillable_fields = ["confirm_sending_to_distribution_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SendMessageToSelectedDistributionListMenuKeysReadEntry(OCIType):
    """The voice portal send message to selected distribution list menu keys.

    Attributes:

        confirm_sending_to_distribution_list (Optional[str]):

        cancel_sending_to_distribution_list (str):

    """

    confirm_sending_to_distribution_list: Optional[str] = field(
        default=None, metadata={"alias": "confirmSendingToDistributionList"}
    )

    cancel_sending_to_distribution_list: str = field(
        metadata={"alias": "cancelSendingToDistributionList"}
    )


@dataclass(kw_only=True)
class SendToAllGroupMembersMenuKeysModifyEntry(OCIType):
    """The voice portal send to all group memeber menu keys modify entry.

    Attributes:

        confirm_sending_to_entire_group (Optional[str]):

        cancel_sending_to_entire_group (Optional[str]):

    """

    confirm_sending_to_entire_group: Optional[str] = field(
        default=None, metadata={"alias": "confirmSendingToEntireGroup"}
    )

    cancel_sending_to_entire_group: Optional[str] = field(
        default=None, metadata={"alias": "cancelSendingToEntireGroup"}
    )


@dataclass(kw_only=True)
class SendToAllGroupMembersMenuKeysReadEntry(OCIType):
    """The voice portal send to all group memeber menu keys.

    Attributes:

        confirm_sending_to_entire_group (str):

        cancel_sending_to_entire_group (str):

    """

    confirm_sending_to_entire_group: str = field(
        metadata={"alias": "confirmSendingToEntireGroup"}
    )

    cancel_sending_to_entire_group: str = field(
        metadata={"alias": "cancelSendingToEntireGroup"}
    )


@dataclass(kw_only=True)
class SendToDistributionListMenuKeysModifyEntry(OCIType):
    """The voice portal send to distribution list menu keys modify entry.

    Attributes:

        send_message_to_selected_distribution_list (Optional[str]):

        select_distribution_list (Optional[Nillable[str]]):

        review_selected_distribution_list (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

    """

    send_message_to_selected_distribution_list: Optional[str] = field(
        default=None, metadata={"alias": "sendMessageToSelectedDistributionList"}
    )

    select_distribution_list: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "selectDistributionList"}
    )

    review_selected_distribution_list: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "reviewSelectedDistributionList"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    def __post_init__(self):
        nillable_fields = [
            "select_distribution_list",
            "review_selected_distribution_list",
            "repeat_menu",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SendToDistributionListMenuKeysReadEntry(OCIType):
    """The voice portal send to distribution list menu keys.

    Attributes:

        send_message_to_selected_distribution_list (str):

        select_distribution_list (Optional[str]):

        review_selected_distribution_list (Optional[str]):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

    """

    send_message_to_selected_distribution_list: str = field(
        metadata={"alias": "sendMessageToSelectedDistributionList"}
    )

    select_distribution_list: Optional[str] = field(
        default=None, metadata={"alias": "selectDistributionList"}
    )

    review_selected_distribution_list: Optional[str] = field(
        default=None, metadata={"alias": "reviewSelectedDistributionList"}
    )

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})


@dataclass(kw_only=True)
class SendToPersonMenuKeysModifyEntry(OCIType):
    """The voice portal send to person menu keys modify entry.

    Attributes:

        confirm_sending_message (Optional[str]):

        cancel_sending_message (Optional[str]):

        finish_entering_number_where_to_send_message_to (Optional[str]):

        finish_forwarding_or_sending_message (Optional[str]):

    """

    confirm_sending_message: Optional[str] = field(
        default=None, metadata={"alias": "confirmSendingMessage"}
    )

    cancel_sending_message: Optional[str] = field(
        default=None, metadata={"alias": "cancelSendingMessage"}
    )

    finish_entering_number_where_to_send_message_to: Optional[str] = field(
        default=None, metadata={"alias": "finishEnteringNumberWhereToSendMessageTo"}
    )

    finish_forwarding_or_sending_message: Optional[str] = field(
        default=None, metadata={"alias": "finishForwardingOrSendingMessage"}
    )


@dataclass(kw_only=True)
class SendToPersonMenuKeysReadEntry(OCIType):
    """The voice portal send to person menu keys.

    Attributes:

        confirm_sending_message (str):

        cancel_sending_message (str):

        finish_entering_number_where_to_send_message_to (str):

        finish_forwarding_or_sending_message (str):

    """

    confirm_sending_message: str = field(metadata={"alias": "confirmSendingMessage"})

    cancel_sending_message: str = field(metadata={"alias": "cancelSendingMessage"})

    finish_entering_number_where_to_send_message_to: str = field(
        metadata={"alias": "finishEnteringNumberWhereToSendMessageTo"}
    )

    finish_forwarding_or_sending_message: str = field(
        metadata={"alias": "finishForwardingOrSendingMessage"}
    )


@dataclass(kw_only=True)
class VoiceMessagingAliasReplacementList(OCIType):
    """A list of dns that that replaces a previously configured list.
        By convention, an element of this type may be set nil to clear the list.

    Attributes:

        phone_number (List[str]):

    """

    phone_number: List[str] = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class VoiceMessagingAlternateNoAnswerGreetingModify20(OCIType):
    """The configuration of a alternate no answer greeting.
        It is used when modifying a user's voice messaging greeting.

    Attributes:

        name (Optional[Nillable[str]]):

        audio_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        video_file (Optional[Nillable[AnnouncementFileLevelKey]]):

    """

    name: Optional[Nillable[str]] = field(default=None, metadata={"alias": "name"})

    audio_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    def __post_init__(self):
        nillable_fields = ["name", "audio_file", "video_file"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class VoiceMessagingDistributionListModify(OCIType):
    """A list of voice mail distribution lists
        It is used when setting a user's voice messaging distribution lists

    Attributes:

        list_id (int):

        description (Optional[Nillable[str]]):

        phone_number_list (Optional[Nillable[ReplacementOutgoingDNorSIPURIList]]):

    """

    list_id: int = field(metadata={"alias": "listId"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    phone_number_list: Optional[Nillable[ReplacementOutgoingDNorSIPURIList]] = field(
        default=None, metadata={"alias": "phoneNumberList"}
    )

    def __post_init__(self):
        nillable_fields = ["description", "phone_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class VoiceMessagingMenuKeysModifyEntry(OCIType):
    """The voice portal voice messaging menu keys modify entry.

    Attributes:

        play_messages (Optional[Nillable[str]]):

        change_busy_greeting (Optional[Nillable[str]]):

        change_no_answer_greeting (Optional[Nillable[str]]):

        change_extended_away_greeting (Optional[Nillable[str]]):

        compose_message (Optional[Nillable[str]]):

        delete_all_messages (Optional[Nillable[str]]):

        passcode (Optional[Nillable[str]]):

        personalized_name (Optional[Nillable[str]]):

        message_deposit (Optional[Nillable[str]]):

        return_to_previous_menu (Optional[str]):

        repeat_menu (Optional[Nillable[str]]):

    """

    play_messages: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "playMessages"}
    )

    change_busy_greeting: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "changeBusyGreeting"}
    )

    change_no_answer_greeting: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "changeNoAnswerGreeting"}
    )

    change_extended_away_greeting: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "changeExtendedAwayGreeting"}
    )

    compose_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "composeMessage"}
    )

    delete_all_messages: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deleteAllMessages"}
    )

    passcode: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "passcode"}
    )

    personalized_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "personalizedName"}
    )

    message_deposit: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "messageDeposit"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    def __post_init__(self):
        nillable_fields = [
            "play_messages",
            "change_busy_greeting",
            "change_no_answer_greeting",
            "change_extended_away_greeting",
            "compose_message",
            "delete_all_messages",
            "passcode",
            "personalized_name",
            "message_deposit",
            "repeat_menu",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class VoiceMessagingMenuKeysReadEntry(OCIType):
    """The voice portal voice messaging menu keys.

    Attributes:

        play_messages (Optional[str]):

        change_busy_greeting (Optional[str]):

        change_no_answer_greeting (Optional[str]):

        change_extended_away_greeting (Optional[str]):

        compose_message (Optional[str]):

        delete_all_messages (Optional[str]):

        passcode (Optional[str]):

        personalized_name (Optional[str]):

        message_deposit (Optional[str]):

        return_to_previous_menu (str):

        repeat_menu (Optional[str]):

    """

    play_messages: Optional[str] = field(
        default=None, metadata={"alias": "playMessages"}
    )

    change_busy_greeting: Optional[str] = field(
        default=None, metadata={"alias": "changeBusyGreeting"}
    )

    change_no_answer_greeting: Optional[str] = field(
        default=None, metadata={"alias": "changeNoAnswerGreeting"}
    )

    change_extended_away_greeting: Optional[str] = field(
        default=None, metadata={"alias": "changeExtendedAwayGreeting"}
    )

    compose_message: Optional[str] = field(
        default=None, metadata={"alias": "composeMessage"}
    )

    delete_all_messages: Optional[str] = field(
        default=None, metadata={"alias": "deleteAllMessages"}
    )

    passcode: Optional[str] = field(default=None, metadata={"alias": "passcode"})

    personalized_name: Optional[str] = field(
        default=None, metadata={"alias": "personalizedName"}
    )

    message_deposit: Optional[str] = field(
        default=None, metadata={"alias": "messageDeposit"}
    )

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})


@dataclass(kw_only=True)
class VoicePortalCallingMenuKeysModifyEntry(OCIType):
    """The voice portal calling menu keys modify entry.

    Attributes:

        end_current_call_and_go_back_to_previous_menu (Optional[str]):

        return_to_previous_menu (Optional[str]):

    """

    end_current_call_and_go_back_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "endCurrentCallAndGoBackToPreviousMenu"}
    )

    return_to_previous_menu: Optional[str] = field(
        default=None, metadata={"alias": "returnToPreviousMenu"}
    )


@dataclass(kw_only=True)
class VoicePortalCallingMenuKeysReadEntry(OCIType):
    """The voice portal change calling menu keys.

    Attributes:

        end_current_call_and_go_back_to_previous_menu (str):

        return_to_previous_menu (str):

    """

    end_current_call_and_go_back_to_previous_menu: str = field(
        metadata={"alias": "endCurrentCallAndGoBackToPreviousMenu"}
    )

    return_to_previous_menu: str = field(metadata={"alias": "returnToPreviousMenu"})


@dataclass(kw_only=True)
class VoicePortalLoginMenuKeysModifyEntry(OCIType):
    """The voice portal voice portal login menu keys modify entry.

    Attributes:

        access_using_other_mailbox_id (Optional[Nillable[str]]):

    """

    access_using_other_mailbox_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "accessUsingOtherMailboxId"}
    )

    def __post_init__(self):
        nillable_fields = ["access_using_other_mailbox_id"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class VoicePortalLoginMenuKeysReadEntry(OCIType):
    """The voice portal login menu keys.

    Attributes:

        access_using_other_mailbox_id (Optional[str]):

    """

    access_using_other_mailbox_id: Optional[str] = field(
        default=None, metadata={"alias": "accessUsingOtherMailboxId"}
    )


@dataclass(kw_only=True)
class VoicePortalMainMenuKeysModifyEntry(OCIType):
    """The voice portal main menu keys modify entry.

    Attributes:

        voice_messaging (Optional[Nillable[str]]):

        comm_pilot_express_profile (Optional[Nillable[str]]):

        greetings (Optional[Nillable[str]]):

        call_forwarding_options (Optional[Nillable[str]]):

        voice_portal_calling (Optional[Nillable[str]]):

        hoteling (Optional[Nillable[str]]):

        passcode (Optional[Nillable[str]]):

        exit_voice_portal (Optional[Nillable[str]]):

        repeat_menu (Optional[Nillable[str]]):

        external_routing (Optional[Nillable[str]]):

        announcement (Optional[Nillable[str]]):

        personal_assistant (Optional[Nillable[str]]):

    """

    voice_messaging: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "voiceMessaging"}
    )

    comm_pilot_express_profile: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "commPilotExpressProfile"}
    )

    greetings: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "greetings"}
    )

    call_forwarding_options: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callForwardingOptions"}
    )

    voice_portal_calling: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "voicePortalCalling"}
    )

    hoteling: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "hoteling"}
    )

    passcode: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "passcode"}
    )

    exit_voice_portal: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "exitVoicePortal"}
    )

    repeat_menu: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repeatMenu"}
    )

    external_routing: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "externalRouting"}
    )

    announcement: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "announcement"}
    )

    personal_assistant: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "personalAssistant"}
    )

    def __post_init__(self):
        nillable_fields = [
            "voice_messaging",
            "comm_pilot_express_profile",
            "greetings",
            "call_forwarding_options",
            "voice_portal_calling",
            "hoteling",
            "passcode",
            "exit_voice_portal",
            "repeat_menu",
            "external_routing",
            "announcement",
            "personal_assistant",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class VoicePortalMainMenuKeysReadEntry(OCIType):
    """The voice portal main menu keys.

    Attributes:

        voice_messaging (Optional[str]):

        comm_pilot_express_profile (Optional[str]):

        greetings (Optional[str]):

        call_forwarding_options (Optional[str]):

        voice_portal_calling (Optional[str]):

        hoteling (Optional[str]):

        passcode (Optional[str]):

        exit_voice_portal (Optional[str]):

        repeat_menu (Optional[str]):

        external_routing (Optional[str]):

        announcement (Optional[str]):

        personal_assistant (Optional[str]):

    """

    voice_messaging: Optional[str] = field(
        default=None, metadata={"alias": "voiceMessaging"}
    )

    comm_pilot_express_profile: Optional[str] = field(
        default=None, metadata={"alias": "commPilotExpressProfile"}
    )

    greetings: Optional[str] = field(default=None, metadata={"alias": "greetings"})

    call_forwarding_options: Optional[str] = field(
        default=None, metadata={"alias": "callForwardingOptions"}
    )

    voice_portal_calling: Optional[str] = field(
        default=None, metadata={"alias": "voicePortalCalling"}
    )

    hoteling: Optional[str] = field(default=None, metadata={"alias": "hoteling"})

    passcode: Optional[str] = field(default=None, metadata={"alias": "passcode"})

    exit_voice_portal: Optional[str] = field(
        default=None, metadata={"alias": "exitVoicePortal"}
    )

    repeat_menu: Optional[str] = field(default=None, metadata={"alias": "repeatMenu"})

    external_routing: Optional[str] = field(
        default=None, metadata={"alias": "externalRouting"}
    )

    announcement: Optional[str] = field(
        default=None, metadata={"alias": "announcement"}
    )

    personal_assistant: Optional[str] = field(
        default=None, metadata={"alias": "personalAssistant"}
    )


@dataclass(kw_only=True)
class OCITableRow(OCIType):
    """The OCITableRow type is used in responses only, never in requests. It occurs
        inside the OCITable type. The OCITableRow consists columns of strings.
        Clients should not assume any particular column order as future
        revisions of the protocol may move or add columns. See the OCITable data type
        for more information.

    Attributes:

        col (List[str]):

    """

    col: List[str] = field(metadata={"alias": "col"})


@dataclass(kw_only=True)
class ExternalUserIdentity(OCIType):
    """External user identity id identifies pre-authenticated user/admin id performing a session-less OCI request.
        id can be a user/admin’s primary Id/alternate Id/external Id.
        organizationId identifies organization id the user/admin belongs to.

    Attributes:

        id (str): The ID of the user or administrator initiating the OCI-P request.
    # The ID must match a primary, alternate or external ID configured on the AS for
    # a user or administrator

        organization_id (str): The ID of the user or administrator's organization
    # The ID must match a service provider or enterprise external id

        role (str): The role of the external user identity.

    """

    id: str = field(metadata={"alias": "id"})

    organization_id: str = field(metadata={"alias": "organizationId"})

    role: str = field(metadata={"alias": "role"})


@dataclass(kw_only=True)
class GroupCallQueueAnnouncementDescriptionList(OCIType):
    """Contains a list of file descriptions for audio files.

    Attributes:

        file_description1 (Optional[str]):

        file_description2 (Optional[str]):

        file_description3 (Optional[str]):

        file_description4 (Optional[str]):

    """

    file_description1: Optional[str] = field(
        default=None, metadata={"alias": "fileDescription1"}
    )

    file_description2: Optional[str] = field(
        default=None, metadata={"alias": "fileDescription2"}
    )

    file_description3: Optional[str] = field(
        default=None, metadata={"alias": "fileDescription3"}
    )

    file_description4: Optional[str] = field(
        default=None, metadata={"alias": "fileDescription4"}
    )


@dataclass(kw_only=True)
class GroupCallQueueAnnouncementFileListModify(OCIType):
    """Contains a list of audio files to modify.

    Attributes:

        file1 (Optional[Nillable[LabeledMediaFileResource]]):

        file2 (Optional[Nillable[LabeledMediaFileResource]]):

        file3 (Optional[Nillable[LabeledMediaFileResource]]):

        file4 (Optional[Nillable[LabeledMediaFileResource]]):

    """

    file1: Optional[Nillable[LabeledMediaFileResource]] = field(
        default=None, metadata={"alias": "file1"}
    )

    file2: Optional[Nillable[LabeledMediaFileResource]] = field(
        default=None, metadata={"alias": "file2"}
    )

    file3: Optional[Nillable[LabeledMediaFileResource]] = field(
        default=None, metadata={"alias": "file3"}
    )

    file4: Optional[Nillable[LabeledMediaFileResource]] = field(
        default=None, metadata={"alias": "file4"}
    )

    def __post_init__(self):
        nillable_fields = ["file1", "file2", "file3", "file4"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallQueueAnnouncementMediaFileTypeList(OCIType):
    """Contains a list of file media types for audio files.

    Attributes:

        media_type1 (Optional[str]):

        media_type2 (Optional[str]):

        media_type3 (Optional[str]):

        media_type4 (Optional[str]):

    """

    media_type1: Optional[str] = field(default=None, metadata={"alias": "mediaType1"})

    media_type2: Optional[str] = field(default=None, metadata={"alias": "mediaType2"})

    media_type3: Optional[str] = field(default=None, metadata={"alias": "mediaType3"})

    media_type4: Optional[str] = field(default=None, metadata={"alias": "mediaType4"})


@dataclass(kw_only=True)
class GroupCallQueueMusicOnHoldSourceModify(OCIType):
    """Contains the Group Call Queue music on hold source configuration.

    Attributes:

        audio_message_source_selection (Optional[str]):

        audio_file (Optional[Nillable[LabeledMediaFileResource]]):

    """

    audio_message_source_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioMessageSourceSelection"}
    )

    audio_file: Optional[Nillable[LabeledMediaFileResource]] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    def __post_init__(self):
        nillable_fields = ["audio_file"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallQueueMusicOnHoldSourceRead(OCIType):
    """Contains the Group Call Queue music on hold source configuration.

    Attributes:

        audio_message_source_selection (str):

        audio_file_description (Optional[str]):

        audio_media_type (Optional[str]):

    """

    audio_message_source_selection: str = field(
        metadata={"alias": "audioMessageSourceSelection"}
    )

    audio_file_description: Optional[str] = field(
        default=None, metadata={"alias": "audioFileDescription"}
    )

    audio_media_type: Optional[str] = field(
        default=None, metadata={"alias": "audioMediaType"}
    )


@dataclass(kw_only=True)
class AccessDeviceEndpointWithPortNumberRead(OCIType):
    """Access device end point.
                Port numbers are only used by devices with static line ordering.

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        contact (Optional[str]):

        static_registration_capable (bool):

        use_domain (bool):

        port_number (Optional[int]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    contact: Optional[str] = field(default=None, metadata={"alias": "contact"})

    static_registration_capable: bool = field(
        metadata={"alias": "staticRegistrationCapable"}
    )

    use_domain: bool = field(metadata={"alias": "useDomain"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})


@dataclass(kw_only=True)
class AccessDeviceMultipleIdentityEndpointAdd(OCIType):
    """Access device end point used in the context of add.
        The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
        Port numbers are only used by devices with static line ordering.
        The following elements are only used in XS data mode and ignored in AS data mode:
          privateIdentity

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        private_identity (Optional[str]):

        contact (Optional[str]):

        port_number (Optional[int]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact: Optional[str] = field(default=None, metadata={"alias": "contact"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})


@dataclass(kw_only=True)
class AccessDeviceMultipleIdentityEndpointWithType(OCIType):
    """Access device end point that can have multiple contacts.
      The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
      Port numbers are only used by devices with static line ordering.

    Attributes:

        access_device (AccessDevice):

        device_type (str):

        line_port (str):

        private_identity (Optional[str]):

        contact (Optional[str]):

        port_number (Optional[int]):

        mac_address (Optional[str]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    device_type: str = field(metadata={"alias": "deviceType"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact: Optional[str] = field(default=None, metadata={"alias": "contact"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})


@dataclass(kw_only=True)
class AccessDeviceMultipleIdentityAndContactEndpointAdd(OCIType):
    """Access device end point used in the context of add that can have more than one contact defined.
          The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
          Only Static Registration capabable devices may have more than one contact defined.
          Port numbers are only used by devices with static line ordering.
          The following elements are only used in XS data mode and ignored in AS data mode:
            privateIdentity

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        private_identity (Optional[str]):

        contact (Optional[List[str]]):

        port_number (Optional[int]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact: Optional[List[str]] = field(default=None, metadata={"alias": "contact"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})


@dataclass(kw_only=True)
class ReplacementDeviceList(OCIType):
    """A list of devices that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        device (List[AccessDevice]):

    """

    device: List[AccessDevice] = field(metadata={"alias": "device"})


@dataclass(kw_only=True)
class AccessDeviceEndpointAdd(OCIType):
    """Access device end point used in the context of add.
        Port numbers are only used by devices with static line ordering.
        The following element is only used in AS data mode and ignored in XS data mode:
          pathHeader

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        contact (Optional[str]):

        path_header (Optional[str]):

        port_number (Optional[int]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    contact: Optional[str] = field(default=None, metadata={"alias": "contact"})

    path_header: Optional[str] = field(default=None, metadata={"alias": "pathHeader"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})


@dataclass(kw_only=True)
class AccessDeviceEndpointKey(OCIType):
    """Access device end point in the context of a modify or delete command.

    Attributes:

        access_device (AccessDevice):

        line_port (str):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})


@dataclass(kw_only=True)
class AccessDeviceEndpointWithPortNumberRead22V2(OCIType):
    """Access device end point.
        Port numbers are only used by devices with static line ordering.
        The following element is only used in AS data mode and ignored in XS data mode:
          pathHeader
          hotlineContact

        The following elements are only used in AS data mode and a value false is returned in the XS mode:
          useHotline

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        contact (Optional[str]):

        path_header (Optional[str]):

        static_registration_capable (bool):

        use_domain (bool):

        port_number (Optional[int]):

        use_hotline (bool):

        hotline_contact (Optional[str]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    contact: Optional[str] = field(default=None, metadata={"alias": "contact"})

    path_header: Optional[str] = field(default=None, metadata={"alias": "pathHeader"})

    static_registration_capable: bool = field(
        metadata={"alias": "staticRegistrationCapable"}
    )

    use_domain: bool = field(metadata={"alias": "useDomain"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    use_hotline: bool = field(metadata={"alias": "useHotline"})

    hotline_contact: Optional[str] = field(
        default=None, metadata={"alias": "hotlineContact"}
    )


@dataclass(kw_only=True)
class AccessDeviceEndpointModify(OCIType):
    """Access device end point used in the context of modify.
        Port numbers are only used by devices with static line ordering.
        The following element is only used in AS data mode and ignored in XS data mode:
          pathHeader

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        contact (Optional[Nillable[str]]):

        path_header (Optional[str]):

        port_number (Optional[int]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    contact: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "contact"}
    )

    path_header: Optional[str] = field(default=None, metadata={"alias": "pathHeader"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    def __post_init__(self):
        nillable_fields = ["contact"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class AccessDeviceMultipleIdentityAndContactEndpointModify(OCIType):
    """Access device end point used in the context of modify that can have more than one contact defined.
        The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
        Only Static Registration capabable devices may have more than one contact defined.
        Port numbers are only used by devices with static line ordering.
        The following elements are only used in XS data mode and ignored in AS data mode:
          privateIdentity

    Attributes:

        access_device (Optional[AccessDevice]):

        line_port (Optional[str]):

        private_identity (Optional[Nillable[str]]):

        contact_list (Optional[Nillable[ReplacementContactList]]):

        port_number (Optional[int]):

    """

    access_device: Optional[AccessDevice] = field(
        default=None, metadata={"alias": "accessDevice"}
    )

    line_port: Optional[str] = field(default=None, metadata={"alias": "linePort"})

    private_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact_list: Optional[Nillable[ReplacementContactList]] = field(
        default=None, metadata={"alias": "contactList"}
    )

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    def __post_init__(self):
        nillable_fields = ["private_identity", "contact_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class AccessDeviceMultipleContactEndpointModify(OCIType):
    """Access device end point used in the context of modify that can have more than one contact defined.
        Only Static Registration capable devices may have more than one contact defined.
        Port numbers are only used by devices with static line ordering.

    Attributes:

        access_device (Optional[AccessDevice]):

        line_port (Optional[str]):

        contact_list (Optional[Nillable[ReplacementContactList]]):

        port_number (Optional[int]):

    """

    access_device: Optional[AccessDevice] = field(
        default=None, metadata={"alias": "accessDevice"}
    )

    line_port: Optional[str] = field(default=None, metadata={"alias": "linePort"})

    contact_list: Optional[Nillable[ReplacementContactList]] = field(
        default=None, metadata={"alias": "contactList"}
    )

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    def __post_init__(self):
        nillable_fields = ["contact_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class AccessDeviceEndpointAndHotlineModify(OCIType):
    """Access device end point used in the context of modify.
        Port numbers are only used by devices with static line ordering.
        The following element is only used in AS data mode and ignored in XS data mode:
          pathHeader
          useHotline
          hotlineContact

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        contact (Optional[Nillable[str]]):

        path_header (Optional[str]):

        port_number (Optional[int]):

        use_hotline (Optional[bool]):

        hotline_contact (Optional[Nillable[str]]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    contact: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "contact"}
    )

    path_header: Optional[str] = field(default=None, metadata={"alias": "pathHeader"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    use_hotline: Optional[bool] = field(default=None, metadata={"alias": "useHotline"})

    hotline_contact: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "hotlineContact"}
    )

    def __post_init__(self):
        nillable_fields = ["contact", "hotline_contact"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class AccessDeviceMultipleIdentityEndpointKey(OCIType):
    """Access device end point in the context of a modify or delete command.
        The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
        The following elements are only used in XS data mode and ignored in AS data mode:
          privateIdentity

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        private_identity (Optional[str]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )


@dataclass(kw_only=True)
class AccessDeviceEndpointWithPortNumberRead22(OCIType):
    """Access device end point.
        Port numbers are only used by devices with static line ordering.
        The following element is only used in AS data mode and ignored in XS data mode:
          pathHeader

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        contact (Optional[str]):

        path_header (Optional[str]):

        static_registration_capable (bool):

        use_domain (bool):

        port_number (Optional[int]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    contact: Optional[str] = field(default=None, metadata={"alias": "contact"})

    path_header: Optional[str] = field(default=None, metadata={"alias": "pathHeader"})

    static_registration_capable: bool = field(
        metadata={"alias": "staticRegistrationCapable"}
    )

    use_domain: bool = field(metadata={"alias": "useDomain"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})


@dataclass(kw_only=True)
class AccessDeviceMultipleIdentityAndContactEndpointRead(OCIType):
    """Access device end point that can have multiple contacts.
        The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
              Port numbers are only used by devices with static line ordering.
        The following elements are only used in XS data mode and not returned in AS data mode:
          privateIdentity
        The following elements are only used in AS data mode and a value false is returned in the XS mode:
          supportVisualDeviceManagement

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        private_identity (Optional[str]):

        contact (Optional[List[str]]):

        static_registration_capable (bool):

        use_domain (bool):

        port_number (Optional[int]):

        support_visual_device_management (bool):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact: Optional[List[str]] = field(default=None, metadata={"alias": "contact"})

    static_registration_capable: bool = field(
        metadata={"alias": "staticRegistrationCapable"}
    )

    use_domain: bool = field(metadata={"alias": "useDomain"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    support_visual_device_management: bool = field(
        metadata={"alias": "supportVisualDeviceManagement"}
    )


@dataclass(kw_only=True)
class EnterpriseAccessDevice(OCIType):
    """Uniquely identifies an access device accessible for an enterprise. It could be a system level device, an enterprise level device or a group level device.

    Attributes:

        access_device (AccessDevice):

        group_id (Optional[str]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class AccessDeviceMultipleContactEndpointModify22(OCIType):
    """Access device end point used in the context of modify that can have more than one contact defined.
        Only Static Registration capable devices may have more than one contact defined.
        Port numbers are only used by devices with static line ordering.

    Attributes:

        access_device (Optional[AccessDevice]):

        line_port (Optional[str]):

        contact_list (Optional[Nillable[ReplacementContactList22]]):

        port_number (Optional[int]):

    """

    access_device: Optional[AccessDevice] = field(
        default=None, metadata={"alias": "accessDevice"}
    )

    line_port: Optional[str] = field(default=None, metadata={"alias": "linePort"})

    contact_list: Optional[Nillable[ReplacementContactList22]] = field(
        default=None, metadata={"alias": "contactList"}
    )

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    def __post_init__(self):
        nillable_fields = ["contact_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ProfileAndServiceDeviceEndpointInfo(OCIType):
    """Represents information about an endpoint device

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        private_identity (Optional[str]):

        access_device_mac_address (Optional[str]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    access_device_mac_address: Optional[str] = field(
        default=None, metadata={"alias": "accessDeviceMacAddress"}
    )


@dataclass(kw_only=True)
class AccessDeviceEndpointAndHotlineAdd(OCIType):
    """Access device end point used in the context of add.
        Port numbers are only used by devices with static line ordering.
        The following element is only used in AS data mode and ignored in XS data mode:
          pathHeader
          useHotline, use value false in XS data mode
          hotlineContact

        The following element is only used in XS data mode and ignored in AS data mode:
          privateIdentity

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        private_identity (Optional[str]):

        contact (Optional[str]):

        path_header (Optional[str]):

        port_number (Optional[int]):

        use_hotline (bool):

        hotline_contact (Optional[str]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact: Optional[str] = field(default=None, metadata={"alias": "contact"})

    path_header: Optional[str] = field(default=None, metadata={"alias": "pathHeader"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    use_hotline: bool = field(metadata={"alias": "useHotline"})

    hotline_contact: Optional[str] = field(
        default=None, metadata={"alias": "hotlineContact"}
    )


@dataclass(kw_only=True)
class AccessDeviceMultipleIdentityAndContactEndpointModify22(OCIType):
    """Access device end point used in the context of modify that can have more than one contact defined.
        The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
        Only Static Registration capable devices may have more than one contact defined.
        Port numbers are only used by devices with static line ordering.
        The following elements are only used in XS data mode and ignored in AS data mode:
          privateIdentity
        The following elements are only used in AS data mode and ignored in XS data mode:
          useHotline
          hotlineContact

    Attributes:

        access_device (Optional[AccessDevice]):

        line_port (Optional[str]):

        private_identity (Optional[Nillable[str]]):

        contact_list (Optional[Nillable[ReplacementContactList22]]):

        port_number (Optional[int]):

        use_hotline (Optional[bool]):

        hotline_contact (Optional[Nillable[str]]):

    """

    access_device: Optional[AccessDevice] = field(
        default=None, metadata={"alias": "accessDevice"}
    )

    line_port: Optional[str] = field(default=None, metadata={"alias": "linePort"})

    private_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact_list: Optional[Nillable[ReplacementContactList22]] = field(
        default=None, metadata={"alias": "contactList"}
    )

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    use_hotline: Optional[bool] = field(default=None, metadata={"alias": "useHotline"})

    hotline_contact: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "hotlineContact"}
    )

    def __post_init__(self):
        nillable_fields = ["private_identity", "contact_list", "hotline_contact"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class TreeDeviceInfo(OCIType):
    """Information related to a tree device.
        A tree device is a device associated with a device type that has the option
        supportLinks set to \"Support Links from Devices\"..  Many leaf devices can link to it.
        When a tree device is created, it is assigned a system-wide unique linkId.

    Attributes:

        tree_device_key (AccessDeviceKey):

        link_id (str):

    """

    tree_device_key: AccessDeviceKey = field(metadata={"alias": "treeDeviceKey"})

    link_id: str = field(metadata={"alias": "linkId"})


@dataclass(kw_only=True)
class ReplacementAlternateUserIdEntryList(OCIType):
    """A list of alternate user ids that that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        alternate_user_id (List[AlternateUserIdEntry]):

    """

    alternate_user_id: List[AlternateUserIdEntry] = field(
        metadata={"alias": "alternateUserId"}
    )


@dataclass(kw_only=True)
class CallCenterAnnouncementFileListRead20(OCIType):
    """Contains a list of announcement repository files

    Attributes:

        file1 (Optional[AnnouncementFileLevelKey]):

        file2 (Optional[AnnouncementFileLevelKey]):

        file3 (Optional[AnnouncementFileLevelKey]):

        file4 (Optional[AnnouncementFileLevelKey]):

    """

    file1: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "file1"}
    )

    file2: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "file2"}
    )

    file3: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "file3"}
    )

    file4: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "file4"}
    )


@dataclass(kw_only=True)
class AutoAttendantKeyConfigurationEntry20(OCIType):
    """The configuration entry of a key for Auto Attendant.
        The following data elements are only used in AS data mode:
          audioFile
          videoFile
          submenuId
        The following data elements are only valid for Standard Auto
        Attendants:
          submenuId

    Attributes:

        description (Optional[str]):

        action (str):

        phone_number (Optional[str]):

        audio_file (Optional[AnnouncementFileLevelKey]):

        video_file (Optional[AnnouncementFileLevelKey]):

        submenu_id (Optional[str]):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    action: str = field(metadata={"alias": "action"})

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    audio_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    submenu_id: Optional[str] = field(default=None, metadata={"alias": "submenuId"})


@dataclass(kw_only=True)
class VoiceMessagingAlternateNoAnswerGreetingRead20(OCIType):
    """The configuration of a alternate no answer greeting.
        It is used when geting a user's voice messaging greeting.

    Attributes:

        name (str):

        audio_file (Optional[AnnouncementFileLevelKey]):

        video_file (Optional[AnnouncementFileLevelKey]):

    """

    name: str = field(metadata={"alias": "name"})

    audio_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "videoFile"}
    )


@dataclass(kw_only=True)
class AutoAttendantKeyConfigurationReadEntry20(OCIType):
    """The read configuration entry of a key for Auto Attendant.
        The following data elements are only used in AS data mode:
          submenuId
        The following data elements are only valid for Standard Auto
        Attendants:
          submenuId

    Attributes:

        description (Optional[str]):

        action (str):

        phone_number (Optional[str]):

        audio_file (Optional[AnnouncementFileLevelKey]):

        video_file (Optional[AnnouncementFileLevelKey]):

        submenu_id (Optional[str]):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    action: str = field(metadata={"alias": "action"})

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    audio_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    submenu_id: Optional[str] = field(default=None, metadata={"alias": "submenuId"})


@dataclass(kw_only=True)
class AutoAttendantKeyReadConfiguration19(OCIType):
    """The read configuration of a key for Auto
        Attendant.

    Attributes:

        key (str):

        entry (AutoAttendantKeyConfigurationReadEntry19):

    """

    key: str = field(metadata={"alias": "key"})

    entry: AutoAttendantKeyConfigurationReadEntry19 = field(metadata={"alias": "entry"})


@dataclass(kw_only=True)
class AutoAttendantModifyMenu20(OCIType):
    """The configuration of the automated receptionist greeting
        prompt and dialing menu to be used during business hours.
        It is used when modifying an Auto Attendant group.

    Attributes:

        announcement_selection (Optional[str]):

        audio_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        video_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        enable_first_menu_level_extension_dialing (Optional[bool]):

        key_configuration (Optional[List[AutoAttendantKeyModifyConfiguration20]]):

    """

    announcement_selection: Optional[str] = field(
        default=None, metadata={"alias": "announcementSelection"}
    )

    audio_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    enable_first_menu_level_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableFirstMenuLevelExtensionDialing"}
    )

    key_configuration: Optional[List[AutoAttendantKeyModifyConfiguration20]] = field(
        default=None, metadata={"alias": "keyConfiguration"}
    )

    def __post_init__(self):
        nillable_fields = ["audio_file", "video_file"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class CallCenterMediaOnHoldSourceModify20(OCIType):
    """Contains the call center media on hold source configuration.

    Attributes:

        audio_message_source_selection (Optional[str]):

        audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        external_audio_source (Optional[Nillable[AccessDeviceEndpointModify]]):

        video_message_source_selection (Optional[str]):

        video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        external_video_source (Optional[Nillable[AccessDeviceEndpointModify]]):

    """

    audio_message_source_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioMessageSourceSelection"}
    )

    audio_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    external_audio_source: Optional[Nillable[AccessDeviceEndpointModify]] = field(
        default=None, metadata={"alias": "externalAudioSource"}
    )

    video_message_source_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoMessageSourceSelection"}
    )

    video_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )

    external_video_source: Optional[Nillable[AccessDeviceEndpointModify]] = field(
        default=None, metadata={"alias": "externalVideoSource"}
    )

    def __post_init__(self):
        nillable_fields = ["external_audio_source", "external_video_source"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ReplacementCallToNumberList(OCIType):
    """A list of Call to Numbers that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.
        For the callToNumbers, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.

    Attributes:

        call_to_number (List[CallToNumber]):

    """

    call_to_number: List[CallToNumber] = field(metadata={"alias": "callToNumber"})


@dataclass(kw_only=True)
class ReplacementCommunicationBarringCallMeNowRuleList(OCIType):
    """A list of Communication Barring CallMeNow Rules that replaces a
        previously configured list. By convention, an element of this type
        may be set nill to clear the list.

    Attributes:

        rule (List[CommunicationBarringCallMeNowRule]):

    """

    rule: List[CommunicationBarringCallMeNowRule] = field(metadata={"alias": "rule"})


@dataclass(kw_only=True)
class ReplacementCommunicationBarringIncomingRuleList19sp1(OCIType):
    """A list of Communication Barring Incoming Rules that replaces a
        previously configured list. By convention, an element of this type
        may be set nill to clear the list.

    Attributes:

        rule (List[CommunicationBarringIncomingRule19sp1]):

    """

    rule: List[CommunicationBarringIncomingRule19sp1] = field(
        metadata={"alias": "rule"}
    )


@dataclass(kw_only=True)
class ReplacementCommunicationBarringOriginatingRuleList(OCIType):
    """A list of Communication Barring Originating Rules that replaces a
        previously configured list. By convention, an element of this type
        may be set nill to clear the list.

    Attributes:

        rule (List[CommunicationBarringOriginatingRule]):

    """

    rule: List[CommunicationBarringOriginatingRule] = field(metadata={"alias": "rule"})


@dataclass(kw_only=True)
class ReplacementCommunicationBarringRedirectingRuleList(OCIType):
    """A list of Communication Barring Redirecting Rules that replaces a
        previously configured list. By convention, an element of this type
        may be set nill to clear the list.

    Attributes:

        rule (List[CommunicationBarringRedirectingRule]):

    """

    rule: List[CommunicationBarringRedirectingRule] = field(metadata={"alias": "rule"})


@dataclass(kw_only=True)
class EnterpriseDepartmentKey(DepartmentKey):
    """Uniquely identifies a department defined within an enterprise.
        To uniquely identify an enterprise department, we must know the department name and which
        enterprise contains the department.

    Attributes:

        service_provider_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class CombinedServiceInstanceAddProfile(OCIType):
    """Service Profile Information for group service.

      When name, callingLineIdLastName and callingLineIdFirstName are not included, the values
      in the corresponding service instance template (if this is used to add a Hunt Group, for
      example, the name will come from the Hunt Group template) will be used. Otherwise, the
      request will fail.

      If the phoneNumber has not been assigned to the group, it will be added to group and
      service provider if needed.

    Attributes:

        name (Optional[str]):

        calling_line_id_last_name (Optional[str]):

        calling_line_id_first_name (Optional[str]):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

        phone_number (Optional[str]):

        extension (Optional[str]):

        password (Optional[str]):

        department (Optional[DepartmentKey]):

        language (Optional[str]):

        time_zone (Optional[str]):

        alias (Optional[List[str]]):

        public_user_identity (Optional[str]):

        calling_line_id_phone_number (Optional[str]):

    """

    name: Optional[str] = field(default=None, metadata={"alias": "name"})

    calling_line_id_last_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdLastName"}
    )

    calling_line_id_first_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdFirstName"}
    )

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    department: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "department"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    alias: Optional[List[str]] = field(default=None, metadata={"alias": "alias"})

    public_user_identity: Optional[str] = field(
        default=None, metadata={"alias": "publicUserIdentity"}
    )

    calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )


@dataclass(kw_only=True)
class ServiceInstanceReadProfile17(OCIType):
    """Service Profile Information for group service.
        It is identical to the ServiceInstanceAddProfile, but without the password.

        Replaced by: ServiceInstanceReadProfile17sp4

    Attributes:

        name (str):

        calling_line_id_last_name (str):

        calling_line_id_first_name (str):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

        phone_number (Optional[str]):

        extension (Optional[str]):

        department (Optional[DepartmentKey]):

        language (Optional[str]):

        time_zone (Optional[str]):

        time_zone_display_name (Optional[str]):

        alias (Optional[List[str]]):

        public_user_identity (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    calling_line_id_last_name: str = field(metadata={"alias": "callingLineIdLastName"})

    calling_line_id_first_name: str = field(
        metadata={"alias": "callingLineIdFirstName"}
    )

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})

    department: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "department"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    time_zone_display_name: Optional[str] = field(
        default=None, metadata={"alias": "timeZoneDisplayName"}
    )

    alias: Optional[List[str]] = field(default=None, metadata={"alias": "alias"})

    public_user_identity: Optional[str] = field(
        default=None, metadata={"alias": "publicUserIdentity"}
    )


@dataclass(kw_only=True)
class ServiceInstanceAddProfile(OCIType):
    """Service Profile Information for group service.

    Attributes:

        name (str):

        calling_line_id_last_name (str):

        calling_line_id_first_name (str):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

        phone_number (Optional[str]):

        extension (Optional[str]):

        password (Optional[str]):

        department (Optional[DepartmentKey]):

        language (Optional[str]):

        time_zone (Optional[str]):

        alias (Optional[List[str]]):

        public_user_identity (Optional[str]):

        calling_line_id_phone_number (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    calling_line_id_last_name: str = field(metadata={"alias": "callingLineIdLastName"})

    calling_line_id_first_name: str = field(
        metadata={"alias": "callingLineIdFirstName"}
    )

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    department: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "department"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    alias: Optional[List[str]] = field(default=None, metadata={"alias": "alias"})

    public_user_identity: Optional[str] = field(
        default=None, metadata={"alias": "publicUserIdentity"}
    )

    calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )


@dataclass(kw_only=True)
class TrunkGroupPilotUser(OCIType):
    """Trunk Group pilot user information used when adding a Trunk Group.

    Attributes:

        user_id (str):

        last_name (str):

        first_name (str):

        calling_line_id_last_name (str):

        calling_line_id_first_name (str):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

        password (Optional[str]):

        department (Optional[DepartmentKey]):

        language (Optional[str]):

        time_zone (Optional[str]):

        line_port (str):

        contact (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    last_name: str = field(metadata={"alias": "lastName"})

    first_name: str = field(metadata={"alias": "firstName"})

    calling_line_id_last_name: str = field(metadata={"alias": "callingLineIdLastName"})

    calling_line_id_first_name: str = field(
        metadata={"alias": "callingLineIdFirstName"}
    )

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    department: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "department"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    line_port: str = field(metadata={"alias": "linePort"})

    contact: Optional[str] = field(default=None, metadata={"alias": "contact"})


@dataclass(kw_only=True)
class ServiceInstanceAddProfileFlexibleSeatingHost(OCIType):
    """Service Profile Information for a flexible seating host.

    Attributes:

        name (str):

        calling_line_id_last_name (str):

        calling_line_id_first_name (str):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

        phone_number (Optional[str]):

        extension (Optional[str]):

        password (Optional[str]):

        department (Optional[DepartmentKey]):

        language (Optional[str]):

        time_zone (Optional[str]):

        calling_line_id_phone_number (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    calling_line_id_last_name: str = field(metadata={"alias": "callingLineIdLastName"})

    calling_line_id_first_name: str = field(
        metadata={"alias": "callingLineIdFirstName"}
    )

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    department: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "department"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )


@dataclass(kw_only=True)
class ServiceInstanceReadProfile19sp1(OCIType):
    """Service Profile Information for group service.

        The callingLineIdPhoneNumber is no longer being formatted for display purpose. The value is returned exactly the same as being stored.

    Attributes:

        name (str):

        calling_line_id_last_name (str):

        calling_line_id_first_name (str):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

        phone_number (Optional[str]):

        extension (Optional[str]):

        country_code (Optional[str]):

        national_prefix (Optional[str]):

        department (Optional[DepartmentKey]):

        language (Optional[str]):

        time_zone (Optional[str]):

        time_zone_display_name (Optional[str]):

        alias (Optional[List[str]]):

        public_user_identity (Optional[str]):

        calling_line_id_phone_number (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    calling_line_id_last_name: str = field(metadata={"alias": "callingLineIdLastName"})

    calling_line_id_first_name: str = field(
        metadata={"alias": "callingLineIdFirstName"}
    )

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})

    country_code: Optional[str] = field(default=None, metadata={"alias": "countryCode"})

    national_prefix: Optional[str] = field(
        default=None, metadata={"alias": "nationalPrefix"}
    )

    department: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "department"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    time_zone_display_name: Optional[str] = field(
        default=None, metadata={"alias": "timeZoneDisplayName"}
    )

    alias: Optional[List[str]] = field(default=None, metadata={"alias": "alias"})

    public_user_identity: Optional[str] = field(
        default=None, metadata={"alias": "publicUserIdentity"}
    )

    calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )


@dataclass(kw_only=True)
class GroupDepartmentKey(DepartmentKey):
    """Uniquely identifies a department defined within a group.
        To uniquely identify a group department, we must know the department name and which
        group contains the department.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class ServiceInstanceReadProfile17sp4(OCIType):
    """Service Profile Information for group service.

        Replaced by: ServiceInstanceReadProfile19sp1

    Attributes:

        name (str):

        calling_line_id_last_name (str):

        calling_line_id_first_name (str):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

        phone_number (Optional[str]):

        extension (Optional[str]):

        country_code (Optional[str]):

        national_prefix (Optional[str]):

        department (Optional[DepartmentKey]):

        language (Optional[str]):

        time_zone (Optional[str]):

        time_zone_display_name (Optional[str]):

        alias (Optional[List[str]]):

        public_user_identity (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    calling_line_id_last_name: str = field(metadata={"alias": "callingLineIdLastName"})

    calling_line_id_first_name: str = field(
        metadata={"alias": "callingLineIdFirstName"}
    )

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})

    country_code: Optional[str] = field(default=None, metadata={"alias": "countryCode"})

    national_prefix: Optional[str] = field(
        default=None, metadata={"alias": "nationalPrefix"}
    )

    department: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "department"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    time_zone_display_name: Optional[str] = field(
        default=None, metadata={"alias": "timeZoneDisplayName"}
    )

    alias: Optional[List[str]] = field(default=None, metadata={"alias": "alias"})

    public_user_identity: Optional[str] = field(
        default=None, metadata={"alias": "publicUserIdentity"}
    )


@dataclass(kw_only=True)
class TrunkGroupMultipleContactPilotUser(OCIType):
    """Trunk Group pilot user information used when adding a Trunk Group.

    Attributes:

        user_id (str):

        last_name (str):

        first_name (str):

        calling_line_id_last_name (str):

        calling_line_id_first_name (str):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

        password (Optional[str]):

        department (Optional[DepartmentKey]):

        language (Optional[str]):

        time_zone (Optional[str]):

        line_port (str):

        contact (Optional[List[str]]):

        calling_line_id_phone_number (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    last_name: str = field(metadata={"alias": "lastName"})

    first_name: str = field(metadata={"alias": "firstName"})

    calling_line_id_last_name: str = field(metadata={"alias": "callingLineIdLastName"})

    calling_line_id_first_name: str = field(
        metadata={"alias": "callingLineIdFirstName"}
    )

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    department: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "department"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    line_port: str = field(metadata={"alias": "linePort"})

    contact: Optional[List[str]] = field(default=None, metadata={"alias": "contact"})

    calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )


@dataclass(kw_only=True)
class CPEDeviceModifyOptions22(OCIType):
    """CPE device's options when used with a modify request.
        The following options are not changeable:
          configType
          systemFileName
          deviceFileFormat

    Attributes:

        enable_monitoring (Optional[bool]):

        device_management_device_type_options (Optional[DeviceManagementDeviceTypeModifyOptions22]):

    """

    enable_monitoring: Optional[bool] = field(
        default=None, metadata={"alias": "enableMonitoring"}
    )

    device_management_device_type_options: Optional[
        DeviceManagementDeviceTypeModifyOptions22
    ] = field(default=None, metadata={"alias": "deviceManagementDeviceTypeOptions"})


@dataclass(kw_only=True)
class CPEDeviceModifyOptions22V2(OCIType):
    """CPE device's options when used with a modify request.
        The following options are not changeable:
          configType
          systemFileName
          deviceFileFormat

    Attributes:

        enable_monitoring (Optional[bool]):

        device_management_device_type_options (Optional[DeviceManagementDeviceTypeModifyOptions22V2]):

    """

    enable_monitoring: Optional[bool] = field(
        default=None, metadata={"alias": "enableMonitoring"}
    )

    device_management_device_type_options: Optional[
        DeviceManagementDeviceTypeModifyOptions22V2
    ] = field(default=None, metadata={"alias": "deviceManagementDeviceTypeOptions"})


@dataclass(kw_only=True)
class CPEDeviceModifyOptions22V3(OCIType):
    """CPE device's options when used with a modify request.
        The following options are not changeable:
          configType
          systemFileName
          deviceFileFormat

    Attributes:

        enable_monitoring (Optional[bool]):

        device_management_device_type_options (Optional[DeviceManagementDeviceTypeModifyOptions22V3]):

    """

    enable_monitoring: Optional[bool] = field(
        default=None, metadata={"alias": "enableMonitoring"}
    )

    device_management_device_type_options: Optional[
        DeviceManagementDeviceTypeModifyOptions22V3
    ] = field(default=None, metadata={"alias": "deviceManagementDeviceTypeOptions"})


@dataclass(kw_only=True)
class CPEDeviceOptionsRead22V2(OCIType):
    """CPE device's options.

    Attributes:

        enable_monitoring (bool):

        config_type (Optional[str]):

        system_file_name (Optional[str]):

        device_file_format (Optional[str]):

        device_management_device_type_options (Optional[DeviceManagementDeviceTypeOptionsRead22V2]):

    """

    enable_monitoring: bool = field(metadata={"alias": "enableMonitoring"})

    config_type: Optional[str] = field(default=None, metadata={"alias": "configType"})

    system_file_name: Optional[str] = field(
        default=None, metadata={"alias": "systemFileName"}
    )

    device_file_format: Optional[str] = field(
        default=None, metadata={"alias": "deviceFileFormat"}
    )

    device_management_device_type_options: Optional[
        DeviceManagementDeviceTypeOptionsRead22V2
    ] = field(default=None, metadata={"alias": "deviceManagementDeviceTypeOptions"})


@dataclass(kw_only=True)
class CPEDeviceOptionsRead22V3(OCIType):
    """CPE device's options.

    Attributes:

        enable_monitoring (bool):

        config_type (Optional[str]):

        system_file_name (Optional[str]):

        device_file_format (Optional[str]):

        device_management_device_type_options (Optional[DeviceManagementDeviceTypeOptionsRead22V3]):

    """

    enable_monitoring: bool = field(metadata={"alias": "enableMonitoring"})

    config_type: Optional[str] = field(default=None, metadata={"alias": "configType"})

    system_file_name: Optional[str] = field(
        default=None, metadata={"alias": "systemFileName"}
    )

    device_file_format: Optional[str] = field(
        default=None, metadata={"alias": "deviceFileFormat"}
    )

    device_management_device_type_options: Optional[
        DeviceManagementDeviceTypeOptionsRead22V3
    ] = field(default=None, metadata={"alias": "deviceManagementDeviceTypeOptions"})


@dataclass(kw_only=True)
class CPEDeviceOptionsRead22V4(OCIType):
    """CPE device's options.

    Attributes:

        enable_monitoring (bool):

        config_type (Optional[str]):

        system_file_name (Optional[str]):

        device_file_format (Optional[str]):

        device_management_device_type_options (Optional[DeviceManagementDeviceTypeOptionsRead22V4]):

    """

    enable_monitoring: bool = field(metadata={"alias": "enableMonitoring"})

    config_type: Optional[str] = field(default=None, metadata={"alias": "configType"})

    system_file_name: Optional[str] = field(
        default=None, metadata={"alias": "systemFileName"}
    )

    device_file_format: Optional[str] = field(
        default=None, metadata={"alias": "deviceFileFormat"}
    )

    device_management_device_type_options: Optional[
        DeviceManagementDeviceTypeOptionsRead22V4
    ] = field(default=None, metadata={"alias": "deviceManagementDeviceTypeOptions"})


@dataclass(kw_only=True)
class CPEDeviceOptionsRead22V5(OCIType):
    """CPE device's options.

    Attributes:

        enable_monitoring (bool):

        config_type (Optional[str]):

        system_file_name (Optional[str]):

        device_file_format (Optional[str]):

        device_management_device_type_options (Optional[DeviceManagementDeviceTypeOptionsRead22V5]):

    """

    enable_monitoring: bool = field(metadata={"alias": "enableMonitoring"})

    config_type: Optional[str] = field(default=None, metadata={"alias": "configType"})

    system_file_name: Optional[str] = field(
        default=None, metadata={"alias": "systemFileName"}
    )

    device_file_format: Optional[str] = field(
        default=None, metadata={"alias": "deviceFileFormat"}
    )

    device_management_device_type_options: Optional[
        DeviceManagementDeviceTypeOptionsRead22V5
    ] = field(default=None, metadata={"alias": "deviceManagementDeviceTypeOptions"})


@dataclass(kw_only=True)
class CPEDeviceOptionsRead22V6(OCIType):
    """CPE device's options.

    Attributes:

        enable_monitoring (bool):

        config_type (Optional[str]):

        system_file_name (Optional[str]):

        device_file_format (Optional[str]):

        device_management_device_type_options (Optional[DeviceManagementDeviceTypeOptionsRead22V6]):

    """

    enable_monitoring: bool = field(metadata={"alias": "enableMonitoring"})

    config_type: Optional[str] = field(default=None, metadata={"alias": "configType"})

    system_file_name: Optional[str] = field(
        default=None, metadata={"alias": "systemFileName"}
    )

    device_file_format: Optional[str] = field(
        default=None, metadata={"alias": "deviceFileFormat"}
    )

    device_management_device_type_options: Optional[
        DeviceManagementDeviceTypeOptionsRead22V6
    ] = field(default=None, metadata={"alias": "deviceManagementDeviceTypeOptions"})


@dataclass(kw_only=True)
class CombinedSharedCallAppearanceAccessDeviceMultipleIdentityEndpoint(OCIType):
    """Access device end point for Shared Call Appearance Service used in the context of add.
      The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
      Port numbers are only used by devices with static line ordering.

      In the case an access device referenced by accessDevice does not exist, the device will be added.

      When elements for isActive, allowOrigination, allowTermination and allowVideo are not included in the request,
      the values for them will come for the Shared Call Appearance endpoints template. If the template
      does not exist, the request using this data type will fail.

      The device attributes deviceType, protocol, netAddress, port, outboundProxyServerNetAddress,
      stunServerNetAddress, macAddress, serialNumber, description, physicalLocation, transportProtocol,
      useCustomUserNamePassword and accessDeviceCredentials will be ignored if the access device already
      exists.

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        private_identity (Optional[str]):

        contact (Optional[str]):

        port_number (Optional[int]):

        is_active (Optional[bool]):

        allow_origination (Optional[bool]):

        allow_termination (Optional[bool]):

        allow_video (Optional[bool]):

        device_type (Optional[str]):

        protocol (Optional[str]):

        net_address (Optional[str]):

        port (Optional[int]):

        outbound_proxy_server_net_address (Optional[str]):

        stun_server_net_address (Optional[str]):

        mac_address (Optional[str]):

        serial_number (Optional[str]):

        description (Optional[str]):

        physical_location (Optional[str]):

        transport_protocol (Optional[str]):

        use_custom_user_name_password (Optional[bool]):

        access_device_credentials (Optional[DeviceManagementUserNamePassword16]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact: Optional[str] = field(default=None, metadata={"alias": "contact"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    allow_origination: Optional[bool] = field(
        default=None, metadata={"alias": "allowOrigination"}
    )

    allow_termination: Optional[bool] = field(
        default=None, metadata={"alias": "allowTermination"}
    )

    allow_video: Optional[bool] = field(default=None, metadata={"alias": "allowVideo"})

    device_type: Optional[str] = field(default=None, metadata={"alias": "deviceType"})

    protocol: Optional[str] = field(default=None, metadata={"alias": "protocol"})

    net_address: Optional[str] = field(default=None, metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    outbound_proxy_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "outboundProxyServerNetAddress"}
    )

    stun_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "stunServerNetAddress"}
    )

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})

    serial_number: Optional[str] = field(
        default=None, metadata={"alias": "serialNumber"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    use_custom_user_name_password: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomUserNamePassword"}
    )

    access_device_credentials: Optional[DeviceManagementUserNamePassword16] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )


@dataclass(kw_only=True)
class ConsolidatedAccessDeviceMultipleIdentityEndpointAndContactModify(OCIType):
    """Access device end point used in the context of modify. .
        The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
        Only Static Registration capable devices may have more than one contact defined.
        Only the first contact in contactList is used in XS data mode.
        Port numbers are only used by devices with static line ordering.

        In the case an access device referenced by accessDevice does not exist, the device will be added.
        When the device needs to be added, if the linePort is not specified, the request will fail

        If the deviceType is included in the request a new device will be created using the type unless a
        device with the same name already exists.

        The device attributes protocol, netAddress, port, outboundProxyServerNetAddress,
        stunServerNetAddress, macAddress, serialNumber, description, physicalLocation, transportProtocol,
        useCustomUserNamePassword and accessDeviceCredentials will be ignored if the access device already
        exists.

        The following elements are only used in AS data mode and ignored in XS data mode:
          useHotline
          hotlineContact

    Attributes:

        access_device (Optional[AccessDevice]):

        line_port (Optional[str]):

        private_identity (Optional[Nillable[str]]):

        contact_list (Optional[Nillable[ReplacementContactList]]):

        port_number (Optional[int]):

        device_type (Optional[str]):

        protocol (Optional[str]):

        net_address (Optional[str]):

        port (Optional[int]):

        outbound_proxy_server_net_address (Optional[str]):

        stun_server_net_address (Optional[str]):

        mac_address (Optional[str]):

        serial_number (Optional[str]):

        description (Optional[str]):

        physical_location (Optional[str]):

        transport_protocol (Optional[str]):

        use_custom_user_name_password (Optional[bool]):

        access_device_credentials (Optional[DeviceManagementUserNamePassword16]):

        use_hotline (Optional[bool]):

        hotline_contact (Optional[Nillable[str]]):

    """

    access_device: Optional[AccessDevice] = field(
        default=None, metadata={"alias": "accessDevice"}
    )

    line_port: Optional[str] = field(default=None, metadata={"alias": "linePort"})

    private_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact_list: Optional[Nillable[ReplacementContactList]] = field(
        default=None, metadata={"alias": "contactList"}
    )

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    device_type: Optional[str] = field(default=None, metadata={"alias": "deviceType"})

    protocol: Optional[str] = field(default=None, metadata={"alias": "protocol"})

    net_address: Optional[str] = field(default=None, metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    outbound_proxy_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "outboundProxyServerNetAddress"}
    )

    stun_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "stunServerNetAddress"}
    )

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})

    serial_number: Optional[str] = field(
        default=None, metadata={"alias": "serialNumber"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    use_custom_user_name_password: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomUserNamePassword"}
    )

    access_device_credentials: Optional[DeviceManagementUserNamePassword16] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )

    use_hotline: Optional[bool] = field(default=None, metadata={"alias": "useHotline"})

    hotline_contact: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "hotlineContact"}
    )

    def __post_init__(self):
        nillable_fields = ["private_identity", "contact_list", "hotline_contact"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpointAdd22(
    OCIType
):
    """Access device end point for Shared Call Appearance Service used in the context of add.
        The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
        Port numbers are only used by devices with static line ordering.

        In the case an access device referenced by accessDevice does not exist, the device will be added.

        The device attributes deviceType, protocol, netAddress, port, outboundProxyServerNetAddress,
        stunServerNetAddress, macAddress, serialNumber, description, physicalLocation, transportProtocol,
        useCustomUserNamePassword and accessDeviceCredentials will be ignored if the access device already
        exists.

        The following elements are only used in XS data mode and ignored in AS data mode:
          privateIdentity

        The following elements are only used in AS data mode and ignored in XS data mode:
          useHotline, use value false in XS data mode
          hotlineContact

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        private_identity (Optional[str]):

        contact (Optional[str]):

        port_number (Optional[int]):

        is_active (bool):

        allow_origination (bool):

        allow_termination (bool):

        device_type (Optional[str]):

        protocol (Optional[str]):

        net_address (Optional[str]):

        port (Optional[int]):

        outbound_proxy_server_net_address (Optional[str]):

        stun_server_net_address (Optional[str]):

        mac_address (Optional[str]):

        serial_number (Optional[str]):

        description (Optional[str]):

        physical_location (Optional[str]):

        transport_protocol (Optional[str]):

        use_custom_user_name_password (Optional[bool]):

        access_device_credentials (Optional[DeviceManagementUserNamePassword16]):

        use_hotline (bool):

        hotline_contact (Optional[str]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact: Optional[str] = field(default=None, metadata={"alias": "contact"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    is_active: bool = field(metadata={"alias": "isActive"})

    allow_origination: bool = field(metadata={"alias": "allowOrigination"})

    allow_termination: bool = field(metadata={"alias": "allowTermination"})

    device_type: Optional[str] = field(default=None, metadata={"alias": "deviceType"})

    protocol: Optional[str] = field(default=None, metadata={"alias": "protocol"})

    net_address: Optional[str] = field(default=None, metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    outbound_proxy_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "outboundProxyServerNetAddress"}
    )

    stun_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "stunServerNetAddress"}
    )

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})

    serial_number: Optional[str] = field(
        default=None, metadata={"alias": "serialNumber"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    use_custom_user_name_password: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomUserNamePassword"}
    )

    access_device_credentials: Optional[DeviceManagementUserNamePassword16] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )

    use_hotline: bool = field(metadata={"alias": "useHotline"})

    hotline_contact: Optional[str] = field(
        default=None, metadata={"alias": "hotlineContact"}
    )


@dataclass(kw_only=True)
class DeviceManagementDeviceTypeOptions22V6(OCIType):
    """Device Management System device type options.

        Note: For the elements listed below, when device configuration is set to deviceManagement, those elements apply to the creation of the Polycom Phone Services directory file only.
              For all other files, they are not used. Those elements are instead configured on a per-file basis at the Device Type File level.
              When device configuration is set to legacy, those elements apply to all configuration files except bearerFileAuthentication which is not supported.

              useHttpDigestAuthentication
              macBasedFileAuthentication
              userNamePasswordFileAuthentication
              macInNonRequestURI
              macInCert
              macFormatInNonRequestURI
              bearerFileAuthentication

        The following data elements are only used in AS data mode and ignored in XS data mode:
              enableDeviceActivation
              deviceModel
              supportLinks
              autoLinkingDeviceType
              autoCreateDevicesLevel
              isActivationCodeThroughMessagingServer
              bearerFileAuthentication

    Attributes:

        device_access_protocol (str):

        tag_mode (str):

        tag_set (Optional[str]):

        allow_device_profile_custom_tag_set (bool):

        allow_group_custom_tag_set (bool):

        allow_sp_custom_tag_set (bool):

        send_email_upon_reset_failure (bool):

        device_access_net_address (Optional[str]):

        device_access_port (Optional[int]):

        device_access_context (Optional[str]):

        device_access_uri (Optional[str]):

        default_device_language (Optional[str]):

        default_device_encoding (Optional[str]):

        access_device_credentials (Optional[DeviceManagementUserNamePassword16]):

        use_http_digest_authentication (bool):

        mac_based_file_authentication (bool):

        user_name_password_file_authentication (bool):

        mac_in_non_request_uri (bool):

        mac_in_cert (bool):

        mac_format_in_non_request_uri (Optional[str]):

        enable_device_activation (bool):

        device_model (Optional[str]):

        support_links (str):

        auto_linking_device_type (Optional[str]):

        auto_create_devices_level (Optional[str]):

        is_activation_code_through_messaging_server (Optional[bool]):

        bearer_file_authentication (bool):

    """

    device_access_protocol: str = field(metadata={"alias": "deviceAccessProtocol"})

    tag_mode: str = field(metadata={"alias": "tagMode"})

    tag_set: Optional[str] = field(default=None, metadata={"alias": "tagSet"})

    allow_device_profile_custom_tag_set: bool = field(
        metadata={"alias": "allowDeviceProfileCustomTagSet"}
    )

    allow_group_custom_tag_set: bool = field(
        metadata={"alias": "allowGroupCustomTagSet"}
    )

    allow_sp_custom_tag_set: bool = field(metadata={"alias": "allowSpCustomTagSet"})

    send_email_upon_reset_failure: bool = field(
        metadata={"alias": "sendEmailUponResetFailure"}
    )

    device_access_net_address: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessNetAddress"}
    )

    device_access_port: Optional[int] = field(
        default=None, metadata={"alias": "deviceAccessPort"}
    )

    device_access_context: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessContext"}
    )

    device_access_uri: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessURI"}
    )

    default_device_language: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceLanguage"}
    )

    default_device_encoding: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceEncoding"}
    )

    access_device_credentials: Optional[DeviceManagementUserNamePassword16] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )

    use_http_digest_authentication: bool = field(
        metadata={"alias": "useHttpDigestAuthentication"}
    )

    mac_based_file_authentication: bool = field(
        metadata={"alias": "macBasedFileAuthentication"}
    )

    user_name_password_file_authentication: bool = field(
        metadata={"alias": "userNamePasswordFileAuthentication"}
    )

    mac_in_non_request_uri: bool = field(metadata={"alias": "macInNonRequestURI"})

    mac_in_cert: bool = field(metadata={"alias": "macInCert"})

    mac_format_in_non_request_uri: Optional[str] = field(
        default=None, metadata={"alias": "macFormatInNonRequestURI"}
    )

    enable_device_activation: bool = field(metadata={"alias": "enableDeviceActivation"})

    device_model: Optional[str] = field(default=None, metadata={"alias": "deviceModel"})

    support_links: str = field(metadata={"alias": "supportLinks"})

    auto_linking_device_type: Optional[str] = field(
        default=None, metadata={"alias": "autoLinkingDeviceType"}
    )

    auto_create_devices_level: Optional[str] = field(
        default=None, metadata={"alias": "autoCreateDevicesLevel"}
    )

    is_activation_code_through_messaging_server: Optional[bool] = field(
        default=None, metadata={"alias": "isActivationCodeThroughMessagingServer"}
    )

    bearer_file_authentication: bool = field(
        metadata={"alias": "bearerFileAuthentication"}
    )


@dataclass(kw_only=True)
class CombinedAccessDeviceMultipleIdentityEndpointModify(OCIType):
    """Access device end point used in the context of modify.
      The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
      Only Static Registration capable devices may have more than one contact defined.
      Port numbers are only used by devices with static line ordering.

      In the case an access device referenced by accessDevice does not exist, the device will be added.
      When the device needs to be added, if the linePort is not specified, the request will fail

      The device attributes deviceType, protocol, netAddress, port, outboundProxyServerNetAddress,
      stunServerNetAddress, macAddress, serialNumber, description, physicalLocation, transportProtocol,
      useCustomUserNamePassword and accessDeviceCredentials will be ignored if the access device already
      exists.

    Attributes:

        access_device (Optional[AccessDevice]):

        line_port (Optional[str]):

        private_identity (Optional[Nillable[str]]):

        contact (Optional[Nillable[str]]):

        port_number (Optional[int]):

        device_type (Optional[str]):

        protocol (Optional[str]):

        net_address (Optional[str]):

        port (Optional[int]):

        outbound_proxy_server_net_address (Optional[str]):

        stun_server_net_address (Optional[str]):

        mac_address (Optional[str]):

        serial_number (Optional[str]):

        description (Optional[str]):

        physical_location (Optional[str]):

        transport_protocol (Optional[str]):

        use_custom_user_name_password (Optional[bool]):

        access_device_credentials (Optional[DeviceManagementUserNamePassword16]):

    """

    access_device: Optional[AccessDevice] = field(
        default=None, metadata={"alias": "accessDevice"}
    )

    line_port: Optional[str] = field(default=None, metadata={"alias": "linePort"})

    private_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "contact"}
    )

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    device_type: Optional[str] = field(default=None, metadata={"alias": "deviceType"})

    protocol: Optional[str] = field(default=None, metadata={"alias": "protocol"})

    net_address: Optional[str] = field(default=None, metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    outbound_proxy_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "outboundProxyServerNetAddress"}
    )

    stun_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "stunServerNetAddress"}
    )

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})

    serial_number: Optional[str] = field(
        default=None, metadata={"alias": "serialNumber"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    use_custom_user_name_password: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomUserNamePassword"}
    )

    access_device_credentials: Optional[DeviceManagementUserNamePassword16] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )

    def __post_init__(self):
        nillable_fields = ["private_identity", "contact"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class DeviceManagementDeviceTypeOptions22V2(OCIType):
    """Device Management System device type options.

        Note: For the elements listed below, when device configuration is set to deviceManagement, those elements apply to the creation of the Polycom Phone Services directory file only.
              For all other files, they are not used. Those elements are instead configured on a per-file basis at the Device Type File level.
              When device configuration is set to legacy, those elements apply to all configuration files.

              useHttpDigestAuthentication
              macBasedFileAuthentication
              userNamePasswordFileAuthentication
              macInNonRequestURI
              macInCert
              macFormatInNonRequestURI

    Attributes:

        device_access_protocol (str):

        tag_mode (str):

        tag_set (Optional[str]):

        allow_device_profile_custom_tag_set (bool):

        allow_group_custom_tag_set (bool):

        allow_sp_custom_tag_set (bool):

        send_email_upon_reset_failure (bool):

        device_access_net_address (Optional[str]):

        device_access_port (Optional[int]):

        device_access_context (Optional[str]):

        device_access_uri (Optional[str]):

        default_device_language (Optional[str]):

        default_device_encoding (Optional[str]):

        access_device_credentials (Optional[DeviceManagementUserNamePassword16]):

        use_http_digest_authentication (bool):

        mac_based_file_authentication (bool):

        user_name_password_file_authentication (bool):

        mac_in_non_request_uri (bool):

        mac_in_cert (bool):

        mac_format_in_non_request_uri (Optional[str]):

    """

    device_access_protocol: str = field(metadata={"alias": "deviceAccessProtocol"})

    tag_mode: str = field(metadata={"alias": "tagMode"})

    tag_set: Optional[str] = field(default=None, metadata={"alias": "tagSet"})

    allow_device_profile_custom_tag_set: bool = field(
        metadata={"alias": "allowDeviceProfileCustomTagSet"}
    )

    allow_group_custom_tag_set: bool = field(
        metadata={"alias": "allowGroupCustomTagSet"}
    )

    allow_sp_custom_tag_set: bool = field(metadata={"alias": "allowSpCustomTagSet"})

    send_email_upon_reset_failure: bool = field(
        metadata={"alias": "sendEmailUponResetFailure"}
    )

    device_access_net_address: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessNetAddress"}
    )

    device_access_port: Optional[int] = field(
        default=None, metadata={"alias": "deviceAccessPort"}
    )

    device_access_context: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessContext"}
    )

    device_access_uri: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessURI"}
    )

    default_device_language: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceLanguage"}
    )

    default_device_encoding: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceEncoding"}
    )

    access_device_credentials: Optional[DeviceManagementUserNamePassword16] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )

    use_http_digest_authentication: bool = field(
        metadata={"alias": "useHttpDigestAuthentication"}
    )

    mac_based_file_authentication: bool = field(
        metadata={"alias": "macBasedFileAuthentication"}
    )

    user_name_password_file_authentication: bool = field(
        metadata={"alias": "userNamePasswordFileAuthentication"}
    )

    mac_in_non_request_uri: bool = field(metadata={"alias": "macInNonRequestURI"})

    mac_in_cert: bool = field(metadata={"alias": "macInCert"})

    mac_format_in_non_request_uri: Optional[str] = field(
        default=None, metadata={"alias": "macFormatInNonRequestURI"}
    )


@dataclass(kw_only=True)
class ConsolidatedAccessDeviceMultipleIdentityEndpointAndContactAdd22(OCIType):
    """Access device end point used in the context of add.
        The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
        In XS data mode, only one contact can be defined.
        Only Static Registration capable devices may have more than one contact defined.
        Port numbers are only used by devices with static line ordering.

        In the case an access device referenced by accessDevice does not exist, the device will be added.

        The device attributes deviceType, protocol, netAddress, port, outboundProxyServerNetAddress,
        stunServerNetAddress, macAddress, serialNumber, description, physicalLocation, transportProtocol,
        useCustomUserNamePassword and accessDeviceCredentials will be ignored if the access device already
        exists.

        The following elements are only used in AS data mode and ignored in XS data mode:
          useHotline, use value false in XS data mode
          hotlineContact

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        private_identity (Optional[str]):

        contact (Optional[List[str]]):

        port_number (Optional[int]):

        device_type (Optional[str]):

        protocol (Optional[str]):

        net_address (Optional[str]):

        port (Optional[int]):

        outbound_proxy_server_net_address (Optional[str]):

        stun_server_net_address (Optional[str]):

        mac_address (Optional[str]):

        serial_number (Optional[str]):

        description (Optional[str]):

        physical_location (Optional[str]):

        transport_protocol (Optional[str]):

        use_custom_user_name_password (Optional[bool]):

        access_device_credentials (Optional[DeviceManagementUserNamePassword16]):

        use_hotline (bool):

        hotline_contact (Optional[str]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact: Optional[List[str]] = field(default=None, metadata={"alias": "contact"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    device_type: Optional[str] = field(default=None, metadata={"alias": "deviceType"})

    protocol: Optional[str] = field(default=None, metadata={"alias": "protocol"})

    net_address: Optional[str] = field(default=None, metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    outbound_proxy_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "outboundProxyServerNetAddress"}
    )

    stun_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "stunServerNetAddress"}
    )

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})

    serial_number: Optional[str] = field(
        default=None, metadata={"alias": "serialNumber"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    use_custom_user_name_password: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomUserNamePassword"}
    )

    access_device_credentials: Optional[DeviceManagementUserNamePassword16] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )

    use_hotline: bool = field(metadata={"alias": "useHotline"})

    hotline_contact: Optional[str] = field(
        default=None, metadata={"alias": "hotlineContact"}
    )


@dataclass(kw_only=True)
class CombinedAccessDeviceMultipleIdentityEndpointAdd(OCIType):
    """Access device end point used in the context of add.
      The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
      Only Static Registration capable devices may have more than one contact defined.
      Port numbers are only used by devices with static line ordering.

      In the case an access device referenced by accessDevice does not exist, the device will be added.

      The device attributes deviceType, protocol, netAddress, port, outboundProxyServerNetAddress,
      stunServerNetAddress, macAddress, serialNumber, description, physicalLocation, transportProtocol,
      useCustomUserNamePassword and accessDeviceCredentials will be ignored if the access device already
      exists.

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        private_identity (Optional[str]):

        contact (Optional[str]):

        port_number (Optional[int]):

        device_type (Optional[str]):

        protocol (Optional[str]):

        net_address (Optional[str]):

        port (Optional[int]):

        outbound_proxy_server_net_address (Optional[str]):

        stun_server_net_address (Optional[str]):

        mac_address (Optional[str]):

        serial_number (Optional[str]):

        description (Optional[str]):

        physical_location (Optional[str]):

        transport_protocol (Optional[str]):

        use_custom_user_name_password (Optional[bool]):

        access_device_credentials (Optional[DeviceManagementUserNamePassword16]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact: Optional[str] = field(default=None, metadata={"alias": "contact"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    device_type: Optional[str] = field(default=None, metadata={"alias": "deviceType"})

    protocol: Optional[str] = field(default=None, metadata={"alias": "protocol"})

    net_address: Optional[str] = field(default=None, metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    outbound_proxy_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "outboundProxyServerNetAddress"}
    )

    stun_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "stunServerNetAddress"}
    )

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})

    serial_number: Optional[str] = field(
        default=None, metadata={"alias": "serialNumber"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    use_custom_user_name_password: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomUserNamePassword"}
    )

    access_device_credentials: Optional[DeviceManagementUserNamePassword16] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )


@dataclass(kw_only=True)
class ConsolidatedAccessDeviceMultipleIdentityEndpointAndContactAdd(OCIType):
    """Access device end point used in the context of add.
        The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
        In XS data mode, only one contact can be defined.
        Only Static Registration capable devices may have more than one contact defined.
        Port numbers are only used by devices with static line ordering.

        In the case an access device referenced by accessDevice does not exist, the device will be added.

        The device attributes deviceType, protocol, netAddress, port, outboundProxyServerNetAddress,
        stunServerNetAddress, macAddress, serialNumber, description, physicalLocation, transportProtocol,
        useCustomUserNamePassword and accessDeviceCredentials will be ignored if the access device already
        exists.

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        private_identity (Optional[str]):

        contact (Optional[List[str]]):

        port_number (Optional[int]):

        device_type (Optional[str]):

        protocol (Optional[str]):

        net_address (Optional[str]):

        port (Optional[int]):

        outbound_proxy_server_net_address (Optional[str]):

        stun_server_net_address (Optional[str]):

        mac_address (Optional[str]):

        serial_number (Optional[str]):

        description (Optional[str]):

        physical_location (Optional[str]):

        transport_protocol (Optional[str]):

        use_custom_user_name_password (Optional[bool]):

        access_device_credentials (Optional[DeviceManagementUserNamePassword16]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact: Optional[List[str]] = field(default=None, metadata={"alias": "contact"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    device_type: Optional[str] = field(default=None, metadata={"alias": "deviceType"})

    protocol: Optional[str] = field(default=None, metadata={"alias": "protocol"})

    net_address: Optional[str] = field(default=None, metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    outbound_proxy_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "outboundProxyServerNetAddress"}
    )

    stun_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "stunServerNetAddress"}
    )

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})

    serial_number: Optional[str] = field(
        default=None, metadata={"alias": "serialNumber"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    use_custom_user_name_password: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomUserNamePassword"}
    )

    access_device_credentials: Optional[DeviceManagementUserNamePassword16] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )


@dataclass(kw_only=True)
class ConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpoint(OCIType):
    """Access device end point for Shared Call Appearance Service used in the context of add.
        The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
        Port numbers are only used by devices with static line ordering.

        In the case an access device referenced by accessDevice does not exist, the device will be added.

        The device attributes deviceType, protocol, netAddress, port, outboundProxyServerNetAddress,
        stunServerNetAddress, macAddress, serialNumber, description, physicalLocation, transportProtocol,
        useCustomUserNamePassword and accessDeviceCredentials will be ignored if the access device already
        exists.

        The following elements are only used in XS data mode and ignored in AS data mode:
          privateIdentity

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        private_identity (Optional[str]):

        contact (Optional[str]):

        port_number (Optional[int]):

        is_active (bool):

        allow_origination (bool):

        allow_termination (bool):

        device_type (Optional[str]):

        protocol (Optional[str]):

        net_address (Optional[str]):

        port (Optional[int]):

        outbound_proxy_server_net_address (Optional[str]):

        stun_server_net_address (Optional[str]):

        mac_address (Optional[str]):

        serial_number (Optional[str]):

        description (Optional[str]):

        physical_location (Optional[str]):

        transport_protocol (Optional[str]):

        use_custom_user_name_password (Optional[bool]):

        access_device_credentials (Optional[DeviceManagementUserNamePassword16]):

        use_hotline (Optional[bool]):

        hotline_contact (Optional[Nillable[str]]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact: Optional[str] = field(default=None, metadata={"alias": "contact"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    is_active: bool = field(metadata={"alias": "isActive"})

    allow_origination: bool = field(metadata={"alias": "allowOrigination"})

    allow_termination: bool = field(metadata={"alias": "allowTermination"})

    device_type: Optional[str] = field(default=None, metadata={"alias": "deviceType"})

    protocol: Optional[str] = field(default=None, metadata={"alias": "protocol"})

    net_address: Optional[str] = field(default=None, metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    outbound_proxy_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "outboundProxyServerNetAddress"}
    )

    stun_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "stunServerNetAddress"}
    )

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})

    serial_number: Optional[str] = field(
        default=None, metadata={"alias": "serialNumber"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    use_custom_user_name_password: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomUserNamePassword"}
    )

    access_device_credentials: Optional[DeviceManagementUserNamePassword16] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )

    use_hotline: Optional[bool] = field(default=None, metadata={"alias": "useHotline"})

    hotline_contact: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "hotlineContact"}
    )

    def __post_init__(self):
        nillable_fields = ["hotline_contact"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class DeviceManagementDeviceTypeOptions22V5(OCIType):
    """Device Management System device type options.

        Note: For the elements listed below, when device configuration is set to deviceManagement, those elements apply to the creation of the Polycom Phone Services directory file only.
              For all other files, they are not used. Those elements are instead configured on a per-file basis at the Device Type File level.
              When device configuration is set to legacy, those elements apply to all configuration files.

              useHttpDigestAuthentication
              macBasedFileAuthentication
              userNamePasswordFileAuthentication
              macInNonRequestURI
              macInCert
              macFormatInNonRequestURI

        The following data elements are only used in AS data mode and ignored in XS data mode:
              enableDeviceActivation
              deviceModel
              supportLinks
              autoLinkingDeviceType
              autoCreateDevicesLevel

    Attributes:

        device_access_protocol (str):

        tag_mode (str):

        tag_set (Optional[str]):

        allow_device_profile_custom_tag_set (bool):

        allow_group_custom_tag_set (bool):

        allow_sp_custom_tag_set (bool):

        send_email_upon_reset_failure (bool):

        device_access_net_address (Optional[str]):

        device_access_port (Optional[int]):

        device_access_context (Optional[str]):

        device_access_uri (Optional[str]):

        default_device_language (Optional[str]):

        default_device_encoding (Optional[str]):

        access_device_credentials (Optional[DeviceManagementUserNamePassword16]):

        use_http_digest_authentication (bool):

        mac_based_file_authentication (bool):

        user_name_password_file_authentication (bool):

        mac_in_non_request_uri (bool):

        mac_in_cert (bool):

        mac_format_in_non_request_uri (Optional[str]):

        enable_device_activation (bool):

        device_model (Optional[str]):

        support_links (str):

        auto_linking_device_type (Optional[str]):

        auto_create_devices_level (Optional[str]):

    """

    device_access_protocol: str = field(metadata={"alias": "deviceAccessProtocol"})

    tag_mode: str = field(metadata={"alias": "tagMode"})

    tag_set: Optional[str] = field(default=None, metadata={"alias": "tagSet"})

    allow_device_profile_custom_tag_set: bool = field(
        metadata={"alias": "allowDeviceProfileCustomTagSet"}
    )

    allow_group_custom_tag_set: bool = field(
        metadata={"alias": "allowGroupCustomTagSet"}
    )

    allow_sp_custom_tag_set: bool = field(metadata={"alias": "allowSpCustomTagSet"})

    send_email_upon_reset_failure: bool = field(
        metadata={"alias": "sendEmailUponResetFailure"}
    )

    device_access_net_address: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessNetAddress"}
    )

    device_access_port: Optional[int] = field(
        default=None, metadata={"alias": "deviceAccessPort"}
    )

    device_access_context: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessContext"}
    )

    device_access_uri: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessURI"}
    )

    default_device_language: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceLanguage"}
    )

    default_device_encoding: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceEncoding"}
    )

    access_device_credentials: Optional[DeviceManagementUserNamePassword16] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )

    use_http_digest_authentication: bool = field(
        metadata={"alias": "useHttpDigestAuthentication"}
    )

    mac_based_file_authentication: bool = field(
        metadata={"alias": "macBasedFileAuthentication"}
    )

    user_name_password_file_authentication: bool = field(
        metadata={"alias": "userNamePasswordFileAuthentication"}
    )

    mac_in_non_request_uri: bool = field(metadata={"alias": "macInNonRequestURI"})

    mac_in_cert: bool = field(metadata={"alias": "macInCert"})

    mac_format_in_non_request_uri: Optional[str] = field(
        default=None, metadata={"alias": "macFormatInNonRequestURI"}
    )

    enable_device_activation: bool = field(metadata={"alias": "enableDeviceActivation"})

    device_model: Optional[str] = field(default=None, metadata={"alias": "deviceModel"})

    support_links: str = field(metadata={"alias": "supportLinks"})

    auto_linking_device_type: Optional[str] = field(
        default=None, metadata={"alias": "autoLinkingDeviceType"}
    )

    auto_create_devices_level: Optional[str] = field(
        default=None, metadata={"alias": "autoCreateDevicesLevel"}
    )


@dataclass(kw_only=True)
class DeviceManagementDeviceTypeOptions22V4(OCIType):
    """Device Management System device type options.

        Note: For the elements listed below, when device configuration is set to deviceManagement, those elements apply to the creation of the Polycom Phone Services directory file only.
              For all other files, they are not used. Those elements are instead configured on a per-file basis at the Device Type File level.
              When device configuration is set to legacy, those elements apply to all configuration files.

              useHttpDigestAuthentication
              macBasedFileAuthentication
              userNamePasswordFileAuthentication
              macInNonRequestURI
              macInCert
              macFormatInNonRequestURI

        The following data elements are only used in AS data mode and ignored in XS data mode:
              enableDeviceActivation
              deviceModel
              supportLinks

    Attributes:

        device_access_protocol (str):

        tag_mode (str):

        tag_set (Optional[str]):

        allow_device_profile_custom_tag_set (bool):

        allow_group_custom_tag_set (bool):

        allow_sp_custom_tag_set (bool):

        send_email_upon_reset_failure (bool):

        device_access_net_address (Optional[str]):

        device_access_port (Optional[int]):

        device_access_context (Optional[str]):

        device_access_uri (Optional[str]):

        default_device_language (Optional[str]):

        default_device_encoding (Optional[str]):

        access_device_credentials (Optional[DeviceManagementUserNamePassword16]):

        use_http_digest_authentication (bool):

        mac_based_file_authentication (bool):

        user_name_password_file_authentication (bool):

        mac_in_non_request_uri (bool):

        mac_in_cert (bool):

        mac_format_in_non_request_uri (Optional[str]):

        enable_device_activation (bool):

        device_model (Optional[str]):

        support_links (str):

    """

    device_access_protocol: str = field(metadata={"alias": "deviceAccessProtocol"})

    tag_mode: str = field(metadata={"alias": "tagMode"})

    tag_set: Optional[str] = field(default=None, metadata={"alias": "tagSet"})

    allow_device_profile_custom_tag_set: bool = field(
        metadata={"alias": "allowDeviceProfileCustomTagSet"}
    )

    allow_group_custom_tag_set: bool = field(
        metadata={"alias": "allowGroupCustomTagSet"}
    )

    allow_sp_custom_tag_set: bool = field(metadata={"alias": "allowSpCustomTagSet"})

    send_email_upon_reset_failure: bool = field(
        metadata={"alias": "sendEmailUponResetFailure"}
    )

    device_access_net_address: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessNetAddress"}
    )

    device_access_port: Optional[int] = field(
        default=None, metadata={"alias": "deviceAccessPort"}
    )

    device_access_context: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessContext"}
    )

    device_access_uri: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessURI"}
    )

    default_device_language: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceLanguage"}
    )

    default_device_encoding: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceEncoding"}
    )

    access_device_credentials: Optional[DeviceManagementUserNamePassword16] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )

    use_http_digest_authentication: bool = field(
        metadata={"alias": "useHttpDigestAuthentication"}
    )

    mac_based_file_authentication: bool = field(
        metadata={"alias": "macBasedFileAuthentication"}
    )

    user_name_password_file_authentication: bool = field(
        metadata={"alias": "userNamePasswordFileAuthentication"}
    )

    mac_in_non_request_uri: bool = field(metadata={"alias": "macInNonRequestURI"})

    mac_in_cert: bool = field(metadata={"alias": "macInCert"})

    mac_format_in_non_request_uri: Optional[str] = field(
        default=None, metadata={"alias": "macFormatInNonRequestURI"}
    )

    enable_device_activation: bool = field(metadata={"alias": "enableDeviceActivation"})

    device_model: Optional[str] = field(default=None, metadata={"alias": "deviceModel"})

    support_links: str = field(metadata={"alias": "supportLinks"})


@dataclass(kw_only=True)
class DeviceManagementDeviceTypeOptions22V3(OCIType):
    """Device Management System device type options.

        Note: For the elements listed below, when device configuration is set to deviceManagement, those elements apply to the creation of the Polycom Phone Services directory file only.
              For all other files, they are not used. Those elements are instead configured on a per-file basis at the Device Type File level.
              When device configuration is set to legacy, those elements apply to all configuration files.

              useHttpDigestAuthentication
              macBasedFileAuthentication
              userNamePasswordFileAuthentication
              macInNonRequestURI
              macInCert
              macFormatInNonRequestURI

        The following data elements are only used in AS data mode and ignored in XS data mode:
              enableDeviceActivation
              deviceModel

    Attributes:

        device_access_protocol (str):

        tag_mode (str):

        tag_set (Optional[str]):

        allow_device_profile_custom_tag_set (bool):

        allow_group_custom_tag_set (bool):

        allow_sp_custom_tag_set (bool):

        send_email_upon_reset_failure (bool):

        device_access_net_address (Optional[str]):

        device_access_port (Optional[int]):

        device_access_context (Optional[str]):

        device_access_uri (Optional[str]):

        default_device_language (Optional[str]):

        default_device_encoding (Optional[str]):

        access_device_credentials (Optional[DeviceManagementUserNamePassword16]):

        use_http_digest_authentication (bool):

        mac_based_file_authentication (bool):

        user_name_password_file_authentication (bool):

        mac_in_non_request_uri (bool):

        mac_in_cert (bool):

        mac_format_in_non_request_uri (Optional[str]):

        enable_device_activation (bool):

        device_model (Optional[str]):

    """

    device_access_protocol: str = field(metadata={"alias": "deviceAccessProtocol"})

    tag_mode: str = field(metadata={"alias": "tagMode"})

    tag_set: Optional[str] = field(default=None, metadata={"alias": "tagSet"})

    allow_device_profile_custom_tag_set: bool = field(
        metadata={"alias": "allowDeviceProfileCustomTagSet"}
    )

    allow_group_custom_tag_set: bool = field(
        metadata={"alias": "allowGroupCustomTagSet"}
    )

    allow_sp_custom_tag_set: bool = field(metadata={"alias": "allowSpCustomTagSet"})

    send_email_upon_reset_failure: bool = field(
        metadata={"alias": "sendEmailUponResetFailure"}
    )

    device_access_net_address: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessNetAddress"}
    )

    device_access_port: Optional[int] = field(
        default=None, metadata={"alias": "deviceAccessPort"}
    )

    device_access_context: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessContext"}
    )

    device_access_uri: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessURI"}
    )

    default_device_language: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceLanguage"}
    )

    default_device_encoding: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeviceEncoding"}
    )

    access_device_credentials: Optional[DeviceManagementUserNamePassword16] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )

    use_http_digest_authentication: bool = field(
        metadata={"alias": "useHttpDigestAuthentication"}
    )

    mac_based_file_authentication: bool = field(
        metadata={"alias": "macBasedFileAuthentication"}
    )

    user_name_password_file_authentication: bool = field(
        metadata={"alias": "userNamePasswordFileAuthentication"}
    )

    mac_in_non_request_uri: bool = field(metadata={"alias": "macInNonRequestURI"})

    mac_in_cert: bool = field(metadata={"alias": "macInCert"})

    mac_format_in_non_request_uri: Optional[str] = field(
        default=None, metadata={"alias": "macFormatInNonRequestURI"}
    )

    enable_device_activation: bool = field(metadata={"alias": "enableDeviceActivation"})

    device_model: Optional[str] = field(default=None, metadata={"alias": "deviceModel"})


@dataclass(kw_only=True)
class EnterpriseTrunkNumberRange(OCIType):
    """Directory number range. The minimum and maximum values are inclusive.

    Attributes:

        dn_range (DNRange):

        extension_length (Optional[int]):

    """

    dn_range: DNRange = field(metadata={"alias": "dnRange"})

    extension_length: Optional[int] = field(
        default=None, metadata={"alias": "extensionLength"}
    )


@dataclass(kw_only=True)
class EnterpriseTrunkNumberPrefix22(OCIType):
    """Enterprise Trunk Number Prefix

    Attributes:

        number_prefix (str):

        extension_range (Optional[ExtensionRange17]):

    """

    number_prefix: str = field(metadata={"alias": "numberPrefix"})

    extension_range: Optional[ExtensionRange17] = field(
        default=None, metadata={"alias": "extensionRange"}
    )


@dataclass(kw_only=True)
class VirtualOnNetUserRange(OCIType):
    """Virtual On-Net User Range.

    Attributes:

        dn_range (DNRange):

        extension_range (ExtensionRange17):

        first_name (str):

        last_name (str):

        calling_line_id_first_name (str):

        calling_line_id_last_name (str):

        virtual_on_net_call_type_name (str):

    """

    dn_range: DNRange = field(metadata={"alias": "dnRange"})

    extension_range: ExtensionRange17 = field(metadata={"alias": "extensionRange"})

    first_name: str = field(metadata={"alias": "firstName"})

    last_name: str = field(metadata={"alias": "lastName"})

    calling_line_id_first_name: str = field(
        metadata={"alias": "callingLineIdFirstName"}
    )

    calling_line_id_last_name: str = field(metadata={"alias": "callingLineIdLastName"})

    virtual_on_net_call_type_name: str = field(
        metadata={"alias": "virtualOnNetCallTypeName"}
    )


@dataclass(kw_only=True)
class CallCenterReportScheduleTime(OCIType):
    """A scheduled time for call center enhanced reporting scheduled report.

    Attributes:

        time_zone (str):

        schedule_date (int):

        schedule_time (HourMinute):

    """

    time_zone: str = field(metadata={"alias": "timeZone"})

    schedule_date: int = field(metadata={"alias": "scheduleDate"})

    schedule_time: HourMinute = field(metadata={"alias": "scheduleTime"})


@dataclass(kw_only=True)
class CallCenterReportIntervalDates(OCIType):
    """The call center enhanced reporting report interval, using dates.

    Attributes:

        start_date (int):

        start_time (HourMinute):

        end_date (int):

        end_time (HourMinute):

    """

    start_date: int = field(metadata={"alias": "startDate"})

    start_time: HourMinute = field(metadata={"alias": "startTime"})

    end_date: int = field(metadata={"alias": "endDate"})

    end_time: HourMinute = field(metadata={"alias": "endTime"})


@dataclass(kw_only=True)
class ReplacementAgentWeightList(OCIType):
    """A list of agent userIds and hunt agent weights that replaces the previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        agent_weight (List[HuntAgentWeight]):

    """

    agent_weight: List[HuntAgentWeight] = field(metadata={"alias": "agentWeight"})


@dataclass(kw_only=True)
class AutoAttendantModifyMenuExecutionServer(OCIType):
    """The configuration of an auto attendant menu greeting prompt.
        Engineering Note: This command can only be executed from the Execution Server

    Attributes:

        announcement_selection (Optional[str]):

        audio_file (Optional[LabeledFileNameResource]):

        video_file (Optional[LabeledFileNameResource]):

    """

    announcement_selection: Optional[str] = field(
        default=None, metadata={"alias": "announcementSelection"}
    )

    audio_file: Optional[LabeledFileNameResource] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[LabeledFileNameResource] = field(
        default=None, metadata={"alias": "videoFile"}
    )


@dataclass(kw_only=True)
class ExtendedFileResource(OCIType):
    """Represents either an existing file for the application server to use, or
          the contents of a file to transfer and an URL.

    Attributes:

        file (Optional[LabeledFileResource]):

        url (Optional[Nillable[str]]):

    """

    file: Optional[LabeledFileResource] = field(
        default=None, metadata={"alias": "file"}
    )

    url: Optional[Nillable[str]] = field(default=None, metadata={"alias": "url"})

    def __post_init__(self):
        nillable_fields = ["url"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class AutoAttendantModifyMenu16(OCIType):
    """The configuration of the automated receptionist
        greeting
        prompt and dialing menu to be used during
        business
        hours.
        It is used when modifying an Auto Attendant group.

    Attributes:

        announcement_selection (Optional[str]):

        audio_file (Optional[LabeledMediaFileResource]):

        video_file (Optional[LabeledMediaFileResource]):

        enable_first_menu_level_extension_dialing (Optional[bool]):

        key_configuration (Optional[List[AutoAttendantKeyModifyConfiguration]]):

    """

    announcement_selection: Optional[str] = field(
        default=None, metadata={"alias": "announcementSelection"}
    )

    audio_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    enable_first_menu_level_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableFirstMenuLevelExtensionDialing"}
    )

    key_configuration: Optional[List[AutoAttendantKeyModifyConfiguration]] = field(
        default=None, metadata={"alias": "keyConfiguration"}
    )


@dataclass(kw_only=True)
class VoiceMessagingAlternateNoAnswerGreetingModify16(OCIType):
    """The configuration of a alternate no answer
        greeting.
        It is used when modifying a user's voice
        messaging
        greeting.

    Attributes:

        name (Optional[Nillable[str]]):

        audio_file (Optional[LabeledMediaFileResource]):

        video_file (Optional[LabeledMediaFileResource]):

    """

    name: Optional[Nillable[str]] = field(default=None, metadata={"alias": "name"})

    audio_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    def __post_init__(self):
        nillable_fields = ["name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class AutoAttendantKeyConfigurationEntry19(OCIType):
    """The configuration entry of a key for Auto
        Attendant.
        The following data elements are only valid for Standard Auto
        Attendants:
        submenuId

    Attributes:

        description (Optional[str]):

        action (str):

        phone_number (Optional[str]):

        audio_file (Optional[LabeledMediaFileResource]):

        video_file (Optional[LabeledMediaFileResource]):

        submenu_id (Optional[str]):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    action: str = field(metadata={"alias": "action"})

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    audio_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    submenu_id: Optional[str] = field(default=None, metadata={"alias": "submenuId"})


@dataclass(kw_only=True)
class ExtendedMediaFileResource(OCIType):
    """Represents either an existing file for the application server to use, or
          the contents of a file to transfer and an URL.

    Attributes:

        file (Optional[LabeledMediaFileResource]):

        url (Optional[Nillable[str]]):

    """

    file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "file"}
    )

    url: Optional[Nillable[str]] = field(default=None, metadata={"alias": "url"})

    def __post_init__(self):
        nillable_fields = ["url"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ProfileAndServiceMusicOnHoldInfo(OCIType):
    """This is the configuration parameters for Music On Hold service

    Attributes:

        enable_video (bool):

        source (MusicOnHoldUserSourceRead16):

        use_alternate_source_for_internal_calls (bool):

        internal_source (Optional[MusicOnHoldUserSourceRead16]):

    """

    enable_video: bool = field(metadata={"alias": "enableVideo"})

    source: MusicOnHoldUserSourceRead16 = field(metadata={"alias": "source"})

    use_alternate_source_for_internal_calls: bool = field(
        metadata={"alias": "useAlternateSourceForInternalCalls"}
    )

    internal_source: Optional[MusicOnHoldUserSourceRead16] = field(
        default=None, metadata={"alias": "internalSource"}
    )


@dataclass(kw_only=True)
class MWIDeliveryToMobileEndpointTemplateBody(OCIType):
    """MWI Delivery To Mobile Endpoint template body.

    Attributes:

        line (List[MWIDeliveryToMobileEndpointTemplateLine]):

    """

    line: List[MWIDeliveryToMobileEndpointTemplateLine] = field(
        metadata={"alias": "line"}
    )


@dataclass(kw_only=True)
class ShInterfaceUserListEntry21sp1(OCIType):
    """ShInterface User List Entry.

    Attributes:

        user_id (str):

        user_type (str):

        public_user_identity (PublicUserIdentity):

        endpoint_type (str):

        scscf_name (Optional[str]):

        ims_user_state (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    user_type: str = field(metadata={"alias": "userType"})

    public_user_identity: PublicUserIdentity = field(
        metadata={"alias": "publicUserIdentity"}
    )

    endpoint_type: str = field(metadata={"alias": "endpointType"})

    scscf_name: Optional[str] = field(default=None, metadata={"alias": "SCSCFName"})

    ims_user_state: str = field(metadata={"alias": "IMSUserState"})


@dataclass(kw_only=True)
class ShInterfaceUserIdDataEntry(OCIType):
    """ShInterface User Id Data Entry.

    Attributes:

        user_type (str):

        public_user_identity (PublicUserIdentity):

        endpoint_type (str):

        scscf_name (Optional[str]):

        ims_user_state (str):

    """

    user_type: str = field(metadata={"alias": "userType"})

    public_user_identity: PublicUserIdentity = field(
        metadata={"alias": "publicUserIdentity"}
    )

    endpoint_type: str = field(metadata={"alias": "endpointType"})

    scscf_name: Optional[str] = field(default=None, metadata={"alias": "SCSCFName"})

    ims_user_state: str = field(metadata={"alias": "IMSUserState"})


@dataclass(kw_only=True)
class ShInterfaceUserIdDataEntry21sp1(OCIType):
    """ShInterface User Id Data Entry.

    Attributes:

        user_type (str):

        public_user_identity (PublicUserIdentity):

        endpoint_type (str):

        scscf_name (Optional[str]):

        ims_user_state (str):

    """

    user_type: str = field(metadata={"alias": "userType"})

    public_user_identity: PublicUserIdentity = field(
        metadata={"alias": "publicUserIdentity"}
    )

    endpoint_type: str = field(metadata={"alias": "endpointType"})

    scscf_name: Optional[str] = field(default=None, metadata={"alias": "SCSCFName"})

    ims_user_state: str = field(metadata={"alias": "IMSUserState"})


@dataclass(kw_only=True)
class ShInterfaceUserListEntry(OCIType):
    """ShInterface User List Entry.

    Attributes:

        user_id (str):

        user_type (str):

        public_user_identity (PublicUserIdentity):

        endpoint_type (str):

        scscf_name (Optional[str]):

        ims_user_state (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    user_type: str = field(metadata={"alias": "userType"})

    public_user_identity: PublicUserIdentity = field(
        metadata={"alias": "publicUserIdentity"}
    )

    endpoint_type: str = field(metadata={"alias": "endpointType"})

    scscf_name: Optional[str] = field(default=None, metadata={"alias": "SCSCFName"})

    ims_user_state: str = field(metadata={"alias": "IMSUserState"})


@dataclass(kw_only=True)
class PushNotificationTokenData23(OCIType):
    """The common push notification token elements.

    Attributes:

        push_notification_token (str):

        push_notification_type (str):

        push_notification_event_data (Optional[List[PushNotificationEventData23]]):

    """

    push_notification_token: str = field(metadata={"alias": "pushNotificationToken"})

    push_notification_type: str = field(metadata={"alias": "pushNotificationType"})

    push_notification_event_data: Optional[List[PushNotificationEventData23]] = field(
        default=None, metadata={"alias": "pushNotificationEventData"}
    )


@dataclass(kw_only=True)
class CallCenterReportScheduleRecurrence(OCIType):
    """A recurring schedule for call center enhanced reporting scheduled report.

    Attributes:

        time_zone (str):

        start_date (int):

        schedule_time (HourMinute):

        recurrence (Recurrence):

    """

    time_zone: str = field(metadata={"alias": "timeZone"})

    start_date: int = field(metadata={"alias": "startDate"})

    schedule_time: HourMinute = field(metadata={"alias": "scheduleTime"})

    recurrence: Recurrence = field(metadata={"alias": "recurrence"})


@dataclass(kw_only=True)
class ScheduleEvents(OCIType):
    """Retrives all Holiday or Time Event details for a given schedulel Level.

    Attributes:

        eventname (str):

        start_date (int):

        all_day_event (Optional[bool]):

        start_time (Optional[HourMinute]):

        end_time (Optional[HourMinute]):

        end_date (int):

        recurrence (Optional[Recurrence]):

    """

    eventname: str = field(metadata={"alias": "eventname"})

    start_date: int = field(metadata={"alias": "startDate"})

    all_day_event: Optional[bool] = field(
        default=None, metadata={"alias": "allDayEvent"}
    )

    start_time: Optional[HourMinute] = field(
        default=None, metadata={"alias": "startTime"}
    )

    end_time: Optional[HourMinute] = field(default=None, metadata={"alias": "endTime"})

    end_date: int = field(metadata={"alias": "endDate"})

    recurrence: Optional[Recurrence] = field(
        default=None, metadata={"alias": "recurrence"}
    )


@dataclass(kw_only=True)
class ScheduleGlobalKey(OCIType):
    """Uniquely identifies Holiday and Time Schedules throughout all System, Service Provider, Group and User level.

    Attributes:

        schedule_key (ScheduleKey):

        schedule_level (str):

    """

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    schedule_level: str = field(metadata={"alias": "scheduleLevel"})


@dataclass(kw_only=True)
class ServiceProviderReplacementCommunicationBarringHierarchicalCallMeNowRuleList(
    OCIType
):
    """A list of Service Provider Communication Barring Hierarchical Call Me Now Rules that replaces a previously configured list. By convention, an element of this type
        may be set nill to clear the list.

    Attributes:

        rule (List[ServiceProviderCommunicationBarringHierarchicalCallMeNowRule]):

    """

    rule: List[ServiceProviderCommunicationBarringHierarchicalCallMeNowRule] = field(
        metadata={"alias": "rule"}
    )


@dataclass(kw_only=True)
class ServiceProviderReplacementCommunicationBarringHierarchicalOriginatingRuleList(
    OCIType
):
    """A list of Service Provider Communication Barring Hierarchical Originating Rules that replaces a previously configured list. By convention, an element of this type
        may be set nill to clear the list.

    Attributes:

        rule (List[ServiceProviderCommunicationBarringHierarchicalOriginatingRule]):

    """

    rule: List[ServiceProviderCommunicationBarringHierarchicalOriginatingRule] = field(
        metadata={"alias": "rule"}
    )


@dataclass(kw_only=True)
class ServiceProviderReplacementCommunicationBarringHierarchicalRedirectingRuleList(
    OCIType
):
    """A list of Service Provider Communication Barring Hierarchical Redirecting Rules that replaces a previously configured list. By convention, an element of this type
        may be set nill to clear the list.

    Attributes:

        rule (List[ServiceProviderCommunicationBarringHierarchicalRedirectingRule]):

    """

    rule: List[ServiceProviderCommunicationBarringHierarchicalRedirectingRule] = field(
        metadata={"alias": "rule"}
    )


@dataclass(kw_only=True)
class SimultaneousRingReplacementNumberList(OCIType):
    """A list of Simultaneous Ring numbers that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        simultaneous_ring_number (List[SimultaneousRingNumber]):

    """

    simultaneous_ring_number: List[SimultaneousRingNumber] = field(
        metadata={"alias": "simultaneousRingNumber"}
    )


@dataclass(kw_only=True)
class AccessDeviceMultipleIdentityAndContactEndpointRead22(OCIType):
    """Access device end point that can have multiple contacts.
        The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
              Port numbers are only used by devices with static line ordering.
        The following elements are only used in XS data mode and not returned in AS data mode:
          privateIdentity
        The following elements are only used in AS data mode and a value false is returned in the XS mode:
          supportVisualDeviceManagement

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        private_identity (Optional[str]):

        contact (Optional[List[SIPContactInfo]]):

        static_registration_capable (bool):

        use_domain (bool):

        port_number (Optional[int]):

        support_visual_device_management (bool):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact: Optional[List[SIPContactInfo]] = field(
        default=None, metadata={"alias": "contact"}
    )

    static_registration_capable: bool = field(
        metadata={"alias": "staticRegistrationCapable"}
    )

    use_domain: bool = field(metadata={"alias": "useDomain"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    support_visual_device_management: bool = field(
        metadata={"alias": "supportVisualDeviceManagement"}
    )


@dataclass(kw_only=True)
class AccessDeviceMultipleContactEndpointRead22(OCIType):
    """Access device end point that can have multiple contacts.
        Port numbers are only used by devices with static line ordering.

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        contact (Optional[List[SIPContactInfo]]):

        static_registration_capable (bool):

        use_domain (bool):

        port_number (Optional[int]):

        support_visual_device_management (bool):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    contact: Optional[List[SIPContactInfo]] = field(
        default=None, metadata={"alias": "contact"}
    )

    static_registration_capable: bool = field(
        metadata={"alias": "staticRegistrationCapable"}
    )

    use_domain: bool = field(metadata={"alias": "useDomain"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    support_visual_device_management: bool = field(
        metadata={"alias": "supportVisualDeviceManagement"}
    )


@dataclass(kw_only=True)
class AccessDeviceMultipleIdentityAndContactEndpointRead22V2(OCIType):
    """Access device end point that can have multiple contacts.
        The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
          Port numbers are only used by devices with static line ordering.
        The following elements are only used in XS data mode and not returned in AS data mode:
          privateIdentity
        The following elements are only used in AS data mode and a value false is returned in the XS mode:
          supportVisualDeviceManagement
          useHotline
        The following elements are only used in AS data mode and not returned in XS data mode:
          hotlineContact

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        private_identity (Optional[str]):

        contact (Optional[List[SIPContactInfo]]):

        static_registration_capable (bool):

        use_domain (bool):

        port_number (Optional[int]):

        support_visual_device_management (bool):

        use_hotline (bool):

        hotline_contact (Optional[str]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact: Optional[List[SIPContactInfo]] = field(
        default=None, metadata={"alias": "contact"}
    )

    static_registration_capable: bool = field(
        metadata={"alias": "staticRegistrationCapable"}
    )

    use_domain: bool = field(metadata={"alias": "useDomain"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    support_visual_device_management: bool = field(
        metadata={"alias": "supportVisualDeviceManagement"}
    )

    use_hotline: bool = field(metadata={"alias": "useHotline"})

    hotline_contact: Optional[str] = field(
        default=None, metadata={"alias": "hotlineContact"}
    )


@dataclass(kw_only=True)
class TrunkGroupDeviceMultipleContactEndpointAdd22(OCIType):
    """Trunk group device endpoint used in the context of modify that can have multiple contacts.

    Attributes:

        name (str):

        line_port (str):

        contact (Optional[List[SIPContactInfo]]):

    """

    name: str = field(metadata={"alias": "name"})

    line_port: str = field(metadata={"alias": "linePort"})

    contact: Optional[List[SIPContactInfo]] = field(
        default=None, metadata={"alias": "contact"}
    )


@dataclass(kw_only=True)
class TrunkGroupDeviceMultipleContactEndpointRead22(OCIType):
    """Trunk group device endpoint that can have multiple contacts.

    Attributes:

        name (str):

        line_port (str):

        contact (Optional[List[SIPContactInfo]]):

        static_registration_capable (bool):

        use_domain (bool):

        is_pilot_user (bool):

    """

    name: str = field(metadata={"alias": "name"})

    line_port: str = field(metadata={"alias": "linePort"})

    contact: Optional[List[SIPContactInfo]] = field(
        default=None, metadata={"alias": "contact"}
    )

    static_registration_capable: bool = field(
        metadata={"alias": "staticRegistrationCapable"}
    )

    use_domain: bool = field(metadata={"alias": "useDomain"})

    is_pilot_user: bool = field(metadata={"alias": "isPilotUser"})


@dataclass(kw_only=True)
class TrunkGroupMultipleContactPilotUser22(OCIType):
    """Trunk Group pilot user information used when adding a Trunk Group.

    Attributes:

        user_id (str):

        last_name (str):

        first_name (str):

        calling_line_id_last_name (str):

        calling_line_id_first_name (str):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

        password (Optional[str]):

        department (Optional[DepartmentKey]):

        language (Optional[str]):

        time_zone (Optional[str]):

        line_port (str):

        contact (Optional[List[SIPContactInfo]]):

        calling_line_id_phone_number (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    last_name: str = field(metadata={"alias": "lastName"})

    first_name: str = field(metadata={"alias": "firstName"})

    calling_line_id_last_name: str = field(metadata={"alias": "callingLineIdLastName"})

    calling_line_id_first_name: str = field(
        metadata={"alias": "callingLineIdFirstName"}
    )

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    department: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "department"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    line_port: str = field(metadata={"alias": "linePort"})

    contact: Optional[List[SIPContactInfo]] = field(
        default=None, metadata={"alias": "contact"}
    )

    calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )


@dataclass(kw_only=True)
class AccessDeviceMultipleIdentityAndContactEndpointAdd22(OCIType):
    """Access device end point used in the context of add that can have more than one contact defined.
        The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
        Only Static Registration capabable devices may have more than one contact defined.
        Port numbers are only used by devices with static line ordering.
        The following elements are only used in XS data mode and ignored in AS data mode:
          privateIdentity

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        private_identity (Optional[str]):

        contact (Optional[List[SIPContactInfo]]):

        port_number (Optional[int]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact: Optional[List[SIPContactInfo]] = field(
        default=None, metadata={"alias": "contact"}
    )

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})


@dataclass(kw_only=True)
class AccessDeviceMultipleIdentityAndContactEndpointAdd22V2(OCIType):
    """Access device end point used in the context of add that can have more than one contact defined.
        The endpoint is identified by its linePort (public Identity) and possibly a private Identity.
        Only Static Registration capabable devices may have more than one contact defined.
        Port numbers are only used by devices with static line ordering.
        The following elements are only used in XS data mode and ignored in AS data mode:
          privateIdentity

        The following elements are only used in AS data mode and ignored in XS data mode:
          useHotline, use value false in XS data mode
          hotlineContact

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        private_identity (Optional[str]):

        contact (Optional[List[SIPContactInfo]]):

        port_number (Optional[int]):

        use_hotline (bool):

        hotline_contact (Optional[str]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    contact: Optional[List[SIPContactInfo]] = field(
        default=None, metadata={"alias": "contact"}
    )

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    use_hotline: bool = field(metadata={"alias": "useHotline"})

    hotline_contact: Optional[str] = field(
        default=None, metadata={"alias": "hotlineContact"}
    )


@dataclass(kw_only=True)
class ReplacementContactList22(OCIType):
    """A list of SIP contacts that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        contact (List[SIPContactInfo]):

    """

    contact: List[SIPContactInfo] = field(metadata={"alias": "contact"})


@dataclass(kw_only=True)
class AccessDeviceMultipleContactEndpointAdd22(OCIType):
    """Access device end point used in the context of add that can have more than one contact defined.
        Only Static Registration capabable devices may have more than one contact defined.
                    Port numbers are only used by devices with static line ordering.

    Attributes:

        access_device (AccessDevice):

        line_port (str):

        contact (Optional[List[SIPContactInfo]]):

        port_number (Optional[int]):

    """

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    line_port: str = field(metadata={"alias": "linePort"})

    contact: Optional[List[SIPContactInfo]] = field(
        default=None, metadata={"alias": "contact"}
    )

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})


@dataclass(kw_only=True)
class ProfileAndServiceSpeedDial100Info(OCIType):
    """This is the configuration parameters for Speed Dial 100 service

    Attributes:

        prefix (Optional[str]):

        speed_dial_entry (Optional[List[SpeedDial100Entry]]):

    """

    prefix: Optional[str] = field(default=None, metadata={"alias": "prefix"})

    speed_dial_entry: Optional[List[SpeedDial100Entry]] = field(
        default=None, metadata={"alias": "speedDialEntry"}
    )


@dataclass(kw_only=True)
class ProfileAndServiceSpeedDial8Info(OCIType):
    """This is the configuration parameters for Speed Dial 8 service

    Attributes:

        speed_dial_entry (Optional[List[SpeedDial8Entry]]):

    """

    speed_dial_entry: Optional[List[SpeedDial8Entry]] = field(
        default=None, metadata={"alias": "speedDialEntry"}
    )


@dataclass(kw_only=True)
class TrunkAddressingAdd(OCIType):
    """Trunk group endpoint.

    Attributes:

        trunk_group_device_endpoint (Optional[TrunkGroupDeviceEndpointAdd]):

        enterprise_trunk_name (Optional[str]):

        alternate_trunk_identity (Optional[str]):

    """

    trunk_group_device_endpoint: Optional[TrunkGroupDeviceEndpointAdd] = field(
        default=None, metadata={"alias": "trunkGroupDeviceEndpoint"}
    )

    enterprise_trunk_name: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseTrunkName"}
    )

    alternate_trunk_identity: Optional[str] = field(
        default=None, metadata={"alias": "alternateTrunkIdentity"}
    )


@dataclass(kw_only=True)
class TrunkAddressingRead(OCIType):
    """Trunk group endpoint.

    Attributes:

        trunk_group_device_endpoint (Optional[TrunkGroupDeviceEndpointRead14sp4]):

        enterprise_trunk_name (Optional[str]):

        alternate_trunk_identity (Optional[str]):

    """

    trunk_group_device_endpoint: Optional[TrunkGroupDeviceEndpointRead14sp4] = field(
        default=None, metadata={"alias": "trunkGroupDeviceEndpoint"}
    )

    enterprise_trunk_name: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseTrunkName"}
    )

    alternate_trunk_identity: Optional[str] = field(
        default=None, metadata={"alias": "alternateTrunkIdentity"}
    )


@dataclass(kw_only=True)
class TrunkAddressingMultipleContactAdd(OCIType):
    """Trunk group endpoint that can have multiple contacts.
        alternateTrunkIdentityDomain is only used in XS mode and the AS when deployed in IMS mode.
        Both alternateTrunkIdentity and AlternateTrunkIdentityDomain should be set at the same time if one is set in XS mode.
        The following elements are only used in AS data mode and are ignored in XS data mode:
         physicalLocation

    Attributes:

        trunk_group_device_endpoint (Optional[TrunkGroupDeviceMultipleContactEndpointAdd]):

        enterprise_trunk_name (Optional[str]):

        alternate_trunk_identity (Optional[str]):

        alternate_trunk_identity_domain (Optional[str]):

        physical_location (Optional[str]):

    """

    trunk_group_device_endpoint: Optional[
        TrunkGroupDeviceMultipleContactEndpointAdd
    ] = field(default=None, metadata={"alias": "trunkGroupDeviceEndpoint"})

    enterprise_trunk_name: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseTrunkName"}
    )

    alternate_trunk_identity: Optional[str] = field(
        default=None, metadata={"alias": "alternateTrunkIdentity"}
    )

    alternate_trunk_identity_domain: Optional[str] = field(
        default=None, metadata={"alias": "alternateTrunkIdentityDomain"}
    )

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )


@dataclass(kw_only=True)
class TrunkAddressingMultipleContactRead21sp1(OCIType):
    """Trunk group endpoint that can have multiple contacts.
        alternateTrunkIdentityDomain is only used in XS mode and the AS when deployed in IMS mode.
        The following elements are only used in AS data mode and are ignored in XS data mode:
          physicalLocation

    Attributes:

        trunk_group_device_endpoint (Optional[TrunkGroupDeviceMultipleContactEndpointRead]):

        enterprise_trunk_name (Optional[str]):

        alternate_trunk_identity (Optional[str]):

        alternate_trunk_identity_domain (Optional[str]):

        physical_location (Optional[str]):

    """

    trunk_group_device_endpoint: Optional[
        TrunkGroupDeviceMultipleContactEndpointRead
    ] = field(default=None, metadata={"alias": "trunkGroupDeviceEndpoint"})

    enterprise_trunk_name: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseTrunkName"}
    )

    alternate_trunk_identity: Optional[str] = field(
        default=None, metadata={"alias": "alternateTrunkIdentity"}
    )

    alternate_trunk_identity_domain: Optional[str] = field(
        default=None, metadata={"alias": "alternateTrunkIdentityDomain"}
    )

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )


@dataclass(kw_only=True)
class TrunkAddressingMultipleContactRead21(OCIType):
    """Trunk group endpoint that can have multiple contacts.
        alternateTrunkIdentityDomain is only used in XS mode and the AS when deployed in IMS mode.
        The following elements are only used in AS data mode and ignored in XS data mode:
          alternateTrunkIdentityDomain

    Attributes:

        trunk_group_device_endpoint (Optional[TrunkGroupDeviceMultipleContactEndpointRead]):

        enterprise_trunk_name (Optional[str]):

        alternate_trunk_identity (Optional[str]):

        alternate_trunk_identity_domain (Optional[str]):

    """

    trunk_group_device_endpoint: Optional[
        TrunkGroupDeviceMultipleContactEndpointRead
    ] = field(default=None, metadata={"alias": "trunkGroupDeviceEndpoint"})

    enterprise_trunk_name: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseTrunkName"}
    )

    alternate_trunk_identity: Optional[str] = field(
        default=None, metadata={"alias": "alternateTrunkIdentity"}
    )

    alternate_trunk_identity_domain: Optional[str] = field(
        default=None, metadata={"alias": "alternateTrunkIdentityDomain"}
    )


@dataclass(kw_only=True)
class UserServiceAuthorization(OCIType):
    """Authorize (with quantity) or unauthorize a user service.

    Attributes:

        service_name (str):

        authorized_quantity (Optional[UnboundedPositiveInt]):

        unauthorized (Optional[bool]):

    """

    service_name: str = field(metadata={"alias": "serviceName"})

    authorized_quantity: Optional[UnboundedPositiveInt] = field(
        default=None, metadata={"alias": "authorizedQuantity"}
    )

    unauthorized: Optional[bool] = field(
        default=None, metadata={"alias": "unauthorized"}
    )


@dataclass(kw_only=True)
class ServicePack(OCIType):
    """The common Service Pack elements.

    Attributes:

        service_pack_name (str):

        service_pack_description (Optional[str]):

        is_available_for_use (bool):

        service_pack_quantity (UnboundedPositiveInt):

        service_name (Optional[List[str]]):

    """

    service_pack_name: str = field(metadata={"alias": "servicePackName"})

    service_pack_description: Optional[str] = field(
        default=None, metadata={"alias": "servicePackDescription"}
    )

    is_available_for_use: bool = field(metadata={"alias": "isAvailableForUse"})

    service_pack_quantity: UnboundedPositiveInt = field(
        metadata={"alias": "servicePackQuantity"}
    )

    service_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "serviceName"}
    )


@dataclass(kw_only=True)
class GroupServiceAuthorization(OCIType):
    """Authorize (with quantity) or unauthorize a group service.

    Attributes:

        service_name (str):

        authorized_quantity (Optional[UnboundedPositiveInt]):

        unauthorized (Optional[bool]):

    """

    service_name: str = field(metadata={"alias": "serviceName"})

    authorized_quantity: Optional[UnboundedPositiveInt] = field(
        default=None, metadata={"alias": "authorizedQuantity"}
    )

    unauthorized: Optional[bool] = field(
        default=None, metadata={"alias": "unauthorized"}
    )


@dataclass(kw_only=True)
class CombinedGroupServiceAuthorization(OCIType):
    """Authorize a group service.

    Attributes:

        service_name (str):

        authorized_quantity (Optional[UnboundedPositiveInt]):

    """

    service_name: str = field(metadata={"alias": "serviceName"})

    authorized_quantity: Optional[UnboundedPositiveInt] = field(
        default=None, metadata={"alias": "authorizedQuantity"}
    )


@dataclass(kw_only=True)
class CombinedUserServiceAssignment(OCIType):
    """Assign a service user. If the service has not been authorized to service provider or group, it will
      be authorized.

      If the service needs to be authorized at group/service provider levels, the authorizedQuantity
      will be used. Otherwise, it will be ignored. If the authorizedQuantity is not included, the
      quantity will come from the group template for the service. If a template does
      not exist, the service quantity will be set to unlimited.

    Attributes:

        user_service (str):

        authorized_quantity (Optional[UnboundedPositiveInt]):

    """

    user_service: str = field(metadata={"alias": "userService"})

    authorized_quantity: Optional[UnboundedPositiveInt] = field(
        default=None, metadata={"alias": "authorizedQuantity"}
    )


@dataclass(kw_only=True)
class ConsolidatedUserServiceAssignment(OCIType):
    """Assign a user service. If the service has not been authorized to the group, it will be authorized.
        The authorizedQuantity will be used at the group level if provided; otherwise, the service quantity will be set to unlimited.
        The command will fail if the authorized quantity set at the service provider level is insufficient.

    Attributes:

        user_service_name (str):

        authorized_quantity (Optional[UnboundedPositiveInt]):

    """

    user_service_name: str = field(metadata={"alias": "userServiceName"})

    authorized_quantity: Optional[UnboundedPositiveInt] = field(
        default=None, metadata={"alias": "authorizedQuantity"}
    )


@dataclass(kw_only=True)
class GroupServiceAuthorizationAndAssignment(OCIType):
    """Authorize (with quantity) a group service, and optionally
        assign the service.

    Attributes:

        service_name (str):

        authorized_quantity (Optional[UnboundedPositiveInt]):

        assign (Optional[bool]):

    """

    service_name: str = field(metadata={"alias": "serviceName"})

    authorized_quantity: Optional[UnboundedPositiveInt] = field(
        default=None, metadata={"alias": "authorizedQuantity"}
    )

    assign: Optional[bool] = field(default=None, metadata={"alias": "assign"})


@dataclass(kw_only=True)
class ServicePackAuthorization(OCIType):
    """Authorize (with quantity) or unauthorize a service pack.

    Attributes:

        service_pack_name (str):

        authorized_quantity (Optional[UnboundedPositiveInt]):

        unauthorized (Optional[bool]):

    """

    service_pack_name: str = field(metadata={"alias": "servicePackName"})

    authorized_quantity: Optional[UnboundedPositiveInt] = field(
        default=None, metadata={"alias": "authorizedQuantity"}
    )

    unauthorized: Optional[bool] = field(
        default=None, metadata={"alias": "unauthorized"}
    )


@dataclass(kw_only=True)
class CombinedUserServiceAuthorization(OCIType):
    """Authorize a user service.

    Attributes:

        service_name (str):

        authorized_quantity (Optional[UnboundedPositiveInt]):

    """

    service_name: str = field(metadata={"alias": "serviceName"})

    authorized_quantity: Optional[UnboundedPositiveInt] = field(
        default=None, metadata={"alias": "authorizedQuantity"}
    )


@dataclass(kw_only=True)
class ConsolidatedGroupServiceAssignment(OCIType):
    """Authorize and assign a group service.

        The authorizedQuantity will be used at the group level if provided; otherwise, the service quantity will be set to unlimited.
        The command will fail if the authorized quantity set at the service provider level is insufficient.

    Attributes:

        group_service_name (str):

        authorized_quantity (Optional[UnboundedPositiveInt]):

    """

    group_service_name: str = field(metadata={"alias": "groupServiceName"})

    authorized_quantity: Optional[UnboundedPositiveInt] = field(
        default=None, metadata={"alias": "authorizedQuantity"}
    )


@dataclass(kw_only=True)
class ConsolidatedServicePackAssignment(OCIType):
    """Assign a service pack to user. If the service pack has not been authorized to
        the group, it will be authorized.
        The authorizedQuantity will be used at the group level if provided; otherwise, the service quantity will be set to unlimited.
        The command will fail if the authorized quantity set at the service provider level is insufficient.

    Attributes:

        service_pack_name (str):

        authorized_quantity (Optional[UnboundedPositiveInt]):

    """

    service_pack_name: str = field(metadata={"alias": "servicePackName"})

    authorized_quantity: Optional[UnboundedPositiveInt] = field(
        default=None, metadata={"alias": "authorizedQuantity"}
    )


@dataclass(kw_only=True)
class CombinedServicePackAssignment(OCIType):
    """Assign a service pack to user. If the service pack has not been authorized to service provider or
      group, it will be authorized.

      If the service pack needs to be authorized at group/service provider levels, the authorizedQuantity
      will be used. Otherwise, it will be ignored. If the authorizedQuantity is not included, the
      quantity will come from the group template for the service pack. If a template does
      not exist, the service quantity will be set to unlimited.

    Attributes:

        service_pack_name (str):

        authorized_quantity (Optional[UnboundedPositiveInt]):

    """

    service_pack_name: str = field(metadata={"alias": "servicePackName"})

    authorized_quantity: Optional[UnboundedPositiveInt] = field(
        default=None, metadata={"alias": "authorizedQuantity"}
    )


@dataclass(kw_only=True)
class CombinedServicePackAuthorization(OCIType):
    """Authorize a service pack.

    Attributes:

        service_pack_name (str):

        authorized_quantity (Optional[UnboundedPositiveInt]):

    """

    service_pack_name: str = field(metadata={"alias": "servicePackName"})

    authorized_quantity: Optional[UnboundedPositiveInt] = field(
        default=None, metadata={"alias": "authorizedQuantity"}
    )


@dataclass(kw_only=True)
class VerifyTranslationAndRoutingParameters(OCIType):
    """Verification Translation and Routing parameters
        for creating a Verify Translation and Routing request from
        parameters.

        The following data elements are only used in AS data mode and ignored in XS data mode:
          contact
          diversion

        The following data elements are only used in XS data mode and ignored in AS data mode:
          imsCallType
          sipInstance
          viaAddress

    Attributes:

        origination (VerifyTranslationAndRoutingOrigination):

        destination (str):

        contact (Optional[str]):

        diversion (Optional[str]):

        ims_call_type (Optional[str]):

        sip_instance (Optional[str]):

        via_address (Optional[str]):

    """

    origination: VerifyTranslationAndRoutingOrigination = field(
        metadata={"alias": "origination"}
    )

    destination: str = field(metadata={"alias": "destination"})

    contact: Optional[str] = field(default=None, metadata={"alias": "contact"})

    diversion: Optional[str] = field(default=None, metadata={"alias": "diversion"})

    ims_call_type: Optional[str] = field(
        default=None, metadata={"alias": "imsCallType"}
    )

    sip_instance: Optional[str] = field(default=None, metadata={"alias": "sipInstance"})

    via_address: Optional[str] = field(default=None, metadata={"alias": "viaAddress"})


@dataclass(kw_only=True)
class ReceptionistContactUserAndNote(OCIType):
    """The Receptionist User (or VON User) and Receptionist Notes.

    Attributes:

        contact_user_id (Optional[str]):

        von_user (Optional[VirtualOnNetUserKey]):

        note (Nillable[str]):

    """

    contact_user_id: Optional[str] = field(
        default=None, metadata={"alias": "contactUserId"}
    )

    von_user: Optional[VirtualOnNetUserKey] = field(
        default=None, metadata={"alias": "vonUser"}
    )

    note: Nillable[str] = field(metadata={"alias": "note"})

    def __post_init__(self):
        nillable_fields = ["note"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SearchCriteriaDeviceNetAddress(SearchCriteria):
    """Criteria for searching for device network address.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaAlternateUserId(SearchCriteria):
    """Criteria for searching for a user's alternate userId.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactDnDepartment(SearchCriteria):
    """Criteria for searching for a particular fully specified DN's department.

    Attributes:

        department_key (DepartmentKey):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})


@dataclass(kw_only=True)
class SearchCriteriaDeviceType(SearchCriteria):
    """Criteria for searching for device type.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaPersonalAssistantExclusionNumberDescription(SearchCriteria):
    """Criteria for searching Personal Assistant Exclusion Number's Description.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaNetworkClassOfServiceName(SearchCriteria):
    """Criteria for searching for a Network Class of Service name.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactServiceType(SearchCriteria):
    """Criteria for searching for a particular fully specified service type.

    Attributes:

        service_type (str):

    """

    service_type: str = field(metadata={"alias": "serviceType"})


@dataclass(kw_only=True)
class SearchCriteriaPhysicalLocation(SearchCriteria):
    """Criteria for searching for a Physical Location.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaLinePortUserPart(SearchCriteria):
    """Criteria for searching for device line/port, or SIPURI user part.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaReceptionistNote(SearchCriteria):
    """Criteria for searching for Receptionist Notes.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaGroupLocationCode(SearchCriteria):
    """Criteria for searching for a group location dialing code.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaLinePortDomain(SearchCriteria):
    """Criteria for searching for device line/port, or SIPURI domain part.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaLanguage(SearchCriteria):
    """Criteria for searching for a language.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaUserPersonalPhoneListNumber(SearchCriteria):
    """Criteria for searching for a phone number in a user personal phone list.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaDeviceManagementEventRequest(SearchCriteria):
    """Criteria for searching for a particular OCI request name.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactGroupAdminType(SearchCriteria):
    """Criteria for searching for a particular group administrator type.

    Attributes:

        type (str):

    """

    type: str = field(metadata={"alias": "type"})


@dataclass(kw_only=True)
class SearchCriteriaExactDeviceManagementEventType(SearchCriteria):
    """Criteria for searching for a particular fully specified DeviceManagement event type.

    Attributes:

        dm_event_type (str):

    """

    dm_event_type: str = field(metadata={"alias": "dmEventType"})


@dataclass(kw_only=True)
class SearchCriteriaEnterpriseCommonPhoneListName(SearchCriteria):
    """Criteria for searching for a name in an enterprise common phone list.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaGroupId(SearchCriteria):
    """Criteria for searching for a group ID.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaServiceProviderId(SearchCriteria):
    """Criteria for searching for a service provider ID.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactHuntPolicy(SearchCriteria):
    """Criteria for searching for a particular fully specified hunt policy.

    Attributes:

        hunt_policy (str):

    """

    hunt_policy: str = field(metadata={"alias": "huntPolicy"})


@dataclass(kw_only=True)
class SearchCriteriaExactCallCenterType(SearchCriteria):
    """Criteria for searching for a particular fully specified call center type.

    Attributes:

        call_center_type (str):

    """

    call_center_type: str = field(metadata={"alias": "callCenterType"})


@dataclass(kw_only=True)
class SearchCriteriaDeviceManagementEventLoginId(SearchCriteria):
    """Criteria for searching for a particular login id.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaDepartmentName(SearchCriteria):
    """Criteria for searching for a user's department.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactMobileNetwork(SearchCriteria):
    """Criteria for searching for a particular BroadWorks Mobility Mobile Network.

    Attributes:

        mobile_network_name (str):

    """

    mobile_network_name: str = field(metadata={"alias": "mobileNetworkName"})


@dataclass(kw_only=True)
class SearchCriteriaSystemServiceDn(SearchCriteria):
    """Criteria for searching for a system service DN.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaUserPersonalMultiPartPhoneListName(SearchCriteria):
    """Criteria for searching for a name in a user personal phone list.
        Note: For this search criterion, the searchMode is always ‘Contains’ and the multi-part search criteria are always AND’ed.

    Attributes:

        value (List[str]):

        is_case_insensitive (bool):

    """

    value: List[str] = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaGroupCommonPhoneListName(SearchCriteria):
    """Criteria for searching for a name in a group common phone list.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaDn(SearchCriteria):
    """Criteria for searching for a DN.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaUserName(SearchCriteria):
    """Criteria for searching for a user's full name.
        This search criterion will be compared against multiple combinations of first name and last name:

        First Name + ' ' + Last Name
        Last Name + ' ' + First Name
        Last Name + ', ' + First Name
        Hiragana Last Name + ' ' + Hiragana First Name

        Note that when specific conditions are met, VON users will be included in the search results.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaDeviceManagementEventAdditionalInfo(SearchCriteria):
    """Criteria for searching for a particular additional info of a DeviceManagement event.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaCommunicationBarringAuthorizationCode(SearchCriteria):
    """Criteria for searching for a Communication Barring Authorization Code.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactScheduleType(SearchCriteria):
    """Criteria for searching for a particular schedule type.

    Attributes:

        type (str):

    """

    type: str = field(metadata={"alias": "type"})


@dataclass(kw_only=True)
class SearchCriteriaExactPortNumber(SearchCriteria):
    """Criteria for searching for a port number.

    Attributes:

        port (int):

    """

    port: int = field(metadata={"alias": "port"})


@dataclass(kw_only=True)
class SearchCriteriaZoneIPAddress(SearchCriteria):
    """Criteria for searching for a system zone's IP Address.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactCallCenterScheduledReportGroup(SearchCriteria):
    """Criteria for searching for a particular fully specified call center scheduled
        report's group.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class SearchCriteriaExtension(SearchCriteria):
    """Criteria for searching for an extension.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactVirtualOnNetCallTypeName(SearchCriteria):
    """Criteria for searching for a particular fully specified Virtual On-Net Call Type Name.

    Attributes:

        virtual_on_net_call_type_name (str):

    """

    virtual_on_net_call_type_name: str = field(
        metadata={"alias": "virtualOnNetCallTypeName"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactUserGroup(SearchCriteria):
    """Criteria for searching for a particular fully specified user's group.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class SearchCriteriaUserHotlineContact(SearchCriteria):
    """Criteria for searching for a user's hotline contact.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaForwardedToNumber(SearchCriteria):
    """Criteria for searching for a forwarded to number.
        This search criteria data type is only intended to be used by the commands
        introduced by BW-2301.
        The commands are EnterpriseUserCallForwardingSettingsGetListRequest
        and GroupUserCallForwardingSettingsGetListRequest.
        The following Call Forwarding services are compatible for this search:
        Call Forwarding Always, Call Forwarding Always Secondary, Call Forwarding Busy,
        Call Forwarding No Answer, Call Forwarding Not Reachable, Call Forwarding Selective.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaAccessDeviceVersion(SearchCriteria):
    """Criteria for searching for an Access Device Version.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactCustomContactDirectory(SearchCriteria):
    """Criteria for searching for a particular fully specified custom contact directory.

    Attributes:

        custom_contact_directory_name (str):

    """

    custom_contact_directory_name: str = field(
        metadata={"alias": "customContactDirectoryName"}
    )


@dataclass(kw_only=True)
class SearchCriteriaUserId(SearchCriteria):
    """Criteria for searching for a user's userId.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactSkillLevel(SearchCriteria):
    """Criteria for searching for a skill Level.

    Attributes:

        skill_level (int):

    """

    skill_level: int = field(metadata={"alias": "skillLevel"})


@dataclass(kw_only=True)
class SearchCriteriaExactDeviceManagementEventStatusCompleted(SearchCriteria):
    """Criteria for searching for a particular fully specified Device Management completed event status.

    Attributes:

        dm_event_status_completed (str):

    """

    dm_event_status_completed: str = field(metadata={"alias": "dmEventStatusCompleted"})


@dataclass(kw_only=True)
class SearchCriteriaHomeMscAddress(SearchCriteria):
    """Criteria for searching for a system Home Network Msc Address.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor(SearchCriteria):
    """Criteria for searching for call center scheduled report created by a
        supervisor or administrator.

    Attributes:

        created_by_supervisor (bool):

    """

    created_by_supervisor: bool = field(metadata={"alias": "createdBySupervisor"})


@dataclass(kw_only=True)
class SearchCriteriaScheduleName(SearchCriteria):
    """Criteria for searching for a schedule name.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaServiceInstanceName(SearchCriteria):
    """Criteria for searching for a service instance name.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactDeviceTypeConfigurationOptionType(SearchCriteria):
    """Criteria for searching for a particular fully specified DeviceTypeConfigurationOptionType.

    Attributes:

        device_config_options (str):

    """

    device_config_options: str = field(metadata={"alias": "deviceConfigOptions"})


@dataclass(kw_only=True)
class SearchCriteriaExactUserType(SearchCriteria):
    """Criteria for searching for a particular User Type.

    Attributes:

        user_type (str):

    """

    user_type: str = field(metadata={"alias": "userType"})


@dataclass(kw_only=True)
class SearchCriteriaCallCenterReportTemplateName(SearchCriteria):
    """Criteria for searching for a particular call center enhanced reporting report template.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaServiceCodeDescription(SearchCriteria):
    """Criteria for searching for a Service Code description.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactUserPersonId(SearchCriteria):
    """Criteria for searching for a particular user's personId.

    Attributes:

        user_person_id (str):

    """

    user_person_id: str = field(metadata={"alias": "userPersonId"})


@dataclass(kw_only=True)
class SearchCriteriaGroupName(SearchCriteria):
    """Criteria for searching for a group name.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaNumberPortabilityQueryDigitPattern(SearchCriteria):
    """Criteria for searching for digit pattern.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaDeviceManagementEventRequestTrackingId(SearchCriteria):
    """Criteria for searching for a particular OCI tracking id.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaEmailAddress(SearchCriteria):
    """Criteria for searching for a email address.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactLocationEnabled(SearchCriteria):
    """Criteria for searching for a particular Location enabled state.

    Attributes:

        enabled (bool):

    """

    enabled: bool = field(metadata={"alias": "enabled"})


@dataclass(kw_only=True)
class SearchCriteriaExactDeviceManagementEventStatusInProgressOrPending(SearchCriteria):
    """Criteria for searching for a particular fully specified Device Management event in progress or pending status.

    Attributes:

        dm_event_status_in_progress_or_pending (str):

    """

    dm_event_status_in_progress_or_pending: str = field(
        metadata={"alias": "dmEventStatusInProgressOrPending"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactDeviceType(SearchCriteria):
    """Criteria for searching for a particular fully specified device type.

    Attributes:

        device_type (str):

    """

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class SearchCriteriaExactOrganizationType(SearchCriteria):
    """Criteria for searching for an organization type.

    Attributes:

        organization_type (str):

    """

    organization_type: str = field(metadata={"alias": "organizationType"})


@dataclass(kw_only=True)
class SearchCriteriaPersonalAssistantExclusionNumber(SearchCriteria):
    """Criteria for searching for Personal Assistant Exclusion Number.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactDeviceManagementEventLevel(SearchCriteria):
    """Criteria for searching for a particular fully specified DeviceManagement event level.

    Attributes:

        dm_event_level (str):

    """

    dm_event_level: str = field(metadata={"alias": "dmEventLevel"})


@dataclass(kw_only=True)
class SearchCriteriaExactDnAvailability(SearchCriteria):
    """Criteria for searching for a particular dn availability.

    Attributes:

        available (bool):

    """

    available: bool = field(metadata={"alias": "available"})


@dataclass(kw_only=True)
class SearchCriteriaExactUserRouteListAssigned(SearchCriteria):
    """Criteria for searching for users with/without Route List feature assigned.

    Attributes:

        route_list_assigned (bool):

    """

    route_list_assigned: bool = field(metadata={"alias": "routeListAssigned"})


@dataclass(kw_only=True)
class SearchCriteriaServiceProviderName(SearchCriteria):
    """Criteria for searching for a service provider name.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactUserRouteListAssignment(SearchCriteria):
    """Criteria for searching for users with Route List feature assignment.

    Attributes:

        assigned (bool):

    """

    assigned: bool = field(metadata={"alias": "assigned"})


@dataclass(kw_only=True)
class SearchCriteriaServiceCode(SearchCriteria):
    """Criteria for searching for a Service Code.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactServiceProvider(SearchCriteria):
    """Criteria for searching for a particular fully specified service provider.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class SearchCriteriaSIPContact(SearchCriteria):
    """Criteria for searching for a SIP Contact.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactUserInTrunkGroup(SearchCriteria):
    """Criteria for searching for user in/not in a trunk group.

    Attributes:

        user_in_trunk_group (bool):

    """

    user_in_trunk_group: bool = field(metadata={"alias": "userInTrunkGroup"})


@dataclass(kw_only=True)
class SearchCriteriaUserFirstName(SearchCriteria):
    """Criteria for searching for a user's first name.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaUserExternalId(SearchCriteria):
    """Criteria for searching for a user's externalId.

    Attributes:

        mode (str):

        value (str):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})


@dataclass(kw_only=True)
class SearchCriteriaExactMediaFileType(SearchCriteria):
    """Criteria for searching for a particular media file type.

    Attributes:

        type (str):

    """

    type: str = field(metadata={"alias": "type"})


@dataclass(kw_only=True)
class SearchCriteriaYahooId(SearchCriteria):
    """Criteria for searching for a user's yahoo id.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaCommunicationBarringAuthorizationCodeDescription(SearchCriteria):
    """Criteria for searching for a Communication Barring Authorization Code description.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaServiceProviderNumberPortabilityQueryDigitPattern(SearchCriteria):
    """Criteria for searching for digit pattern.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaCallPickupName(SearchCriteria):
    """Criteria for searching for a call pickup by name

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactMobileDnAvailability(SearchCriteria):
    """Criteria for searching for a particular mobile dn availability.

    Attributes:

        available (bool):

    """

    available: bool = field(metadata={"alias": "available"})


@dataclass(kw_only=True)
class SearchCriteriaExactAutoAttendantType(SearchCriteria):
    """Criteria for searching for a particular auto-attendant type.

    Attributes:

        type (str):

    """

    type: str = field(metadata={"alias": "type"})


@dataclass(kw_only=True)
class SearchCriteriaMobileSubscriberDirectoryNumber(SearchCriteria):
    """Criteria for searching for a BroadWorks Mobility Mobile Subscriber Directory Number.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaEnterpriseCommonMultiPartPhoneListName(SearchCriteria):
    """Criteria for searching for a multi-part name in an enterprise common phone list.\
        Note: For this search criterion, the searchMode is always ‘Contains’ and the multi-part search criteria are always AND’ed.

    Attributes:

        value (List[str]):

        is_case_insensitive (bool):

    """

    value: List[str] = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaAdminFirstName(SearchCriteria):
    """Criteria for searching for an administrator's first name.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaGroupExternalId(SearchCriteria):
    """Criteria for searching by a group's externalId.

    Attributes:

        mode (str):

        value (str):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})


@dataclass(kw_only=True)
class SearchCriteriaLocation(SearchCriteria):
    """Criteria for searching for a Location.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaUserLastName(SearchCriteria):
    """Criteria for searching for a user's last name.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaEnterpriseCommonPhoneListNumber(SearchCriteria):
    """Criteria for searching for a phone number in an enterprise common phone list.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaCallCenterScheduledReportName(SearchCriteria):
    """Criteria for searching for a call center enhanced reporting scheduled report name.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactUserNetworkClassOfService(SearchCriteria):
    """Criteria for searching for users with a specified network class of service.

    Attributes:

        network_class_of_service (str):

    """

    network_class_of_service: str = field(metadata={"alias": "networkClassOfService"})


@dataclass(kw_only=True)
class SearchCriteriaUserPlaceType(SearchCriteria):
    """Criteria for searching based on a user type – \"User\" or \"Place\".

    Attributes:

        value (str):

    """

    value: str = field(metadata={"alias": "value"})


@dataclass(kw_only=True)
class SearchCriteriaDigitPattern(SearchCriteria):
    """Criteria for searching for digit pattern.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaDeviceMACAddress(SearchCriteria):
    """Criteria for searching for device MAC address.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaCallCenterName(SearchCriteria):
    """Criteria for searching for a call center

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaLoginId(SearchCriteria):
    """Criteria for searching for a Login Id.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaGroupCommonMultiPartPhoneListName(SearchCriteria):
    """Criteria for searching for a multi-value name in a group common phone list.
        Note: For this search criterion, the searchMode is always ‘Contains’ and the multi-part search criteria are always AND’ed.

    Attributes:

        value (List[str]):

        is_case_insensitive (bool):

    """

    value: List[str] = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaRoamingMscAddress(SearchCriteria):
    """Criteria for searching for a system Roaming Network Msc Address.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaServiceStatus(SearchCriteria):
    """Criteria for searching for services that are active or not.
        This search criteria data type is only intended to be used by the commands
        introduced by BW-2301.
        The commands are EnterpriseUserCallWaitingSettingsGetListRequest
        and GroupUserCallWaitingSettingsGetListRequest.

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class SearchCriteriaResellerName(SearchCriteria):
    """Criteria for searching for a reseller name.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactPolicySelection(SearchCriteria):
    """Criteria for searching for a particular Voice VPN policy selection.

    Attributes:

        policy_selection (str):

    """

    policy_selection: str = field(metadata={"alias": "policySelection"})


@dataclass(kw_only=True)
class SearchCriteriaGroupCommonPhoneListNumber(SearchCriteria):
    """Criteria for searching for a phone number in a group common phone list.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaImpId(SearchCriteria):
    """Criteria for searching for a user's IMP Id.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactScheduleLevel(SearchCriteria):
    """Criteria for searching for a particular schedule level.

    Attributes:

        level (str):

    """

    level: str = field(metadata={"alias": "level"})


@dataclass(kw_only=True)
class SearchCriteriaExactDnActivation(SearchCriteria):
    """Criteria for searching for a particular Dn activation state.

    Attributes:

        activated (bool):

    """

    activated: bool = field(metadata={"alias": "activated"})


@dataclass(kw_only=True)
class SearchCriteriaTrunkGroupName(SearchCriteria):
    """Criteria for searching for a trunk group

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaNumberPortabilityStatus(SearchCriteria):
    """Criteria for searching for number portability status.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactDeviceServiceProvider(SearchCriteria):
    """Criteria for searching for a particular fully specified service provider associated with a device.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class SearchCriteriaAlternateTrunkIdentityDomain(SearchCriteria):
    """Criteria for searching for alternate trunk identity domain part.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaAdminLastName(SearchCriteria):
    """Criteria for searching for an administrator's last name.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaAlternateTrunkIdentity(SearchCriteria):
    """Criteria for searching for a particular fully specified alternate trunk identity.
        In IMS mode, it only applies to the user part of alternate trunk identity.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactCallCenterReportTemplateKey(SearchCriteria):
    """Criteria for searching for a particular call center enhanced reporting report template.

    Attributes:

        report_template (CallCenterReportTemplateKey):

    """

    report_template: CallCenterReportTemplateKey = field(
        metadata={"alias": "reportTemplate"}
    )


@dataclass(kw_only=True)
class SearchCriteriaUserPersonalPhoneListName(SearchCriteria):
    """Criteria for searching for a name in a user personal phone list.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactDeviceLevel(SearchCriteria):
    """Criteria for searching for a particular device level.

    Attributes:

        device_level (str):

    """

    device_level: str = field(metadata={"alias": "deviceLevel"})


@dataclass(kw_only=True)
class SearchCriteriaExactSubscriberType(SearchCriteria):
    """Criteria for searching for a particular Subscriber Type.

    Attributes:

        subscriber_type (str):

    """

    subscriber_type: str = field(metadata={"alias": "subscriberType"})


@dataclass(kw_only=True)
class SearchCriteriaDeviceName(SearchCriteria):
    """Criteria for searching for device name.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactEndpointType21sp1(SearchCriteria):
    """Criteria for searching for a particular endpoint type.

    Attributes:

        endpoint_type (str):

    """

    endpoint_type: str = field(metadata={"alias": "endpointType"})


@dataclass(kw_only=True)
class SearchCriteriaExactSignalingAddressType(SearchCriteria):
    """Criteria for searching for a particular fully specified SignalingAddressType.

    Attributes:

        profile (str):

    """

    profile: str = field(metadata={"alias": "profile"})


@dataclass(kw_only=True)
class SearchCriteriaEnterpriseTrunkName(SearchCriteria):
    """Criteria for searching for an Enterprise Trunk name.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaDomainName(SearchCriteria):
    """Criteria for searching for Domain Names.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaMobilePhoneNumber(SearchCriteria):
    """Criteria for searching for a user's mobile phone number.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaTitle(SearchCriteria):
    """Criteria for searching for a user's title.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaAnnouncementFileName(SearchCriteria):
    """Criteria for searching for an Announcement File Name.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactUserDepartment(SearchCriteria):
    """Criteria for searching for a particular fully specified user's department.

    Attributes:

        department_key (DepartmentKey):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})


@dataclass(kw_only=True)
class SearchCriteriaResellerId(SearchCriteria):
    """Criteria for searching for a reseller ID.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaRoutePointName(SearchCriteria):
    """Criteria for searching for a route point

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaMultiPartUserName(SearchCriteria):
    """Criteria for searching for a user's full name.
        This search criterion will be compared against multiple combinations of first name and last name:

        First Name + ‘ ‘ + Last Name
        Last Name + ‘ ‘ + First Name
        Last Name + ‘, ‘ + First Name
        Hiragana Last Name + Hiragana First Name

        Note that when specific conditions are met, VON users will be included in the search results.
        Note: For this search criterion, the searchMode is always ‘Contains’ and the multi-part search criteria are always AND’ed.

    Attributes:

        value (List[str]):

        is_case_insensitive (bool):

    """

    value: List[str] = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactServiceProviderAdminType(SearchCriteria):
    """Criteria for searching for a particular service provider administrator type.

    Attributes:

        type (str):

    """

    type: str = field(metadata={"alias": "type"})


@dataclass(kw_only=True)
class SearchCriteriaExactCallCenterScheduledReportServiceProvider(SearchCriteria):
    """Criteria for searching for a particular call center scheduled report's service provider.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class SearchCriteriaOutgoingDNorSIPURI(SearchCriteria):
    """Criteria for searching for a phone number or SIPURI.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(metadata={"alias": "isCaseInsensitive"})


@dataclass(kw_only=True)
class SearchCriteriaExactAnnouncementFileType(SearchCriteria):
    """Criteria for searching for a particular announcement file type.

    Attributes:

        type (str):

    """

    type: str = field(metadata={"alias": "type"})


@dataclass(kw_only=True)
class SearchCriteriaIMRN(SearchCriteria):
    """Criteria for searching for an IMRN Number.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaAccessDeviceEndpointPrivateIdentity(SearchCriteria):
    """Criteria for searching for a private identity.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaDeviceSerialNumber(SearchCriteria):
    """Criteria for searching for device serial number.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaCallParkName(SearchCriteria):
    """Criteria for searching for a call park by name

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactDomainLevel(SearchCriteria):
    """Criteria for searching for a particular domain level.

    Attributes:

        domain_level (str):

    """

    domain_level: str = field(metadata={"alias": "domainLevel"})


@dataclass(kw_only=True)
class SearchCriteriaRegistrationURI(SearchCriteria):
    """Criteria for searching for a RegistrationURI.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaAdminId(SearchCriteria):
    """Criteria for searching for an administrator's adminId.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaAgentThresholdProfile(SearchCriteria):
    """Criteria for searching a Call Center Agent Threshold Profile.

    Attributes:

        mode (str):

        value (str):

        is_case_insensitive (bool):

    """

    mode: str = field(metadata={"alias": "mode"})

    value: str = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class SearchCriteriaExactDeviceManagementEventAction(SearchCriteria):
    """Criteria for searching for a particular fully specified DeviceManagement event action.

    Attributes:

        dm_event_action (str):

    """

    dm_event_action: str = field(metadata={"alias": "dmEventAction"})


@dataclass(kw_only=True)
class SearchCriteriaComposedOrDnExtension(SearchCriteriaComposedOr):
    """Criteria for searching for a DN OR an extension.
        Note: For this search criterion, the searchMode is always ‘Contains’ and the search criteria are always OR’ed.

    Attributes:

        value (UserDNExtension):

    """

    value: UserDNExtension = field(metadata={"alias": "value"})


@dataclass(kw_only=True)
class SearchCriteriaComposedOrUserName(SearchCriteriaComposedOr):
    """Criteria for searching for a user's full name.
        This search criterion will be compared against multiple combinations of first name and last name:

        First Name + ‘ ‘ + Last Name
        Last Name + ‘ ‘ + First Name
        Hiragana Last Name + ' ' + Hiragana First Name

        Note: For this search criterion, the searchMode is always ‘Contains’ and the search criteria are always OR’ed.

    Attributes:

        value (List[str]):

        is_case_insensitive (bool):

    """

    value: List[str] = field(metadata={"alias": "value"})

    is_case_insensitive: bool = field(
        default=True, metadata={"alias": "isCaseInsensitive"}
    )


@dataclass(kw_only=True)
class EnterpriseVoiceVPNDigitManipulationNoValue(EnterpriseVoiceVPNDigitManipulation):
    """Enterprise Voice VPN Digit Manipulation Entry that has no value.

    Attributes:

        operation (str):

    """

    operation: str = field(metadata={"alias": "operation"})


@dataclass(kw_only=True)
class EnterpriseVoiceVPNDigitManipulationRequiredValue(
    EnterpriseVoiceVPNDigitManipulation
):
    """Enterprise Voice VPN Digit Manipulation Entry that has a value.

    Attributes:

        operation (str):

        value (str):

    """

    operation: str = field(metadata={"alias": "operation"})

    value: str = field(metadata={"alias": "value"})


@dataclass(kw_only=True)
class EnterpriseVoiceVPNDigitManipulationOptionalValue(
    EnterpriseVoiceVPNDigitManipulation
):
    """Enterprise Voice VPN Digit Manipulation Entry that optionally has a value.

    Attributes:

        operation (str):

        value (Optional[Nillable[str]]):

    """

    operation: str = field(metadata={"alias": "operation"})

    value: Optional[Nillable[str]] = field(default=None, metadata={"alias": "value"})

    def __post_init__(self):
        nillable_fields = ["value"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SortByEnterpriseCommonPhoneListNumber(SortCriteria):
    """The sort criteria specifies the enterprise common phone list number as as the column
        for the sort, whether sort is ascending or descending, and whether the sort is
        case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByUserPersonalPhoneListNumber(SortCriteria):
    """The sort criteria specifies the user personal phone list number as the column for
                                the sort, whether the sort is ascending or descending, and whether the
                                sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByAnnouncementFileName(SortCriteria):
    """The sort criteria specifies the file name as the column for the sort,
        whether the sort is ascending or descending, and whether the sort is
        case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByEmailAddress(SortCriteria):
    """The sort criteria specifies the email as the column for the sort, whether
        the sort is ascending or descending, and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByEnabled(SortCriteria):
    """The sort criteria specifies the Broadworks Enabled Flag as the column for
        the sort, whether the sort is ascending or descending, and whether the
        sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByDnActivated(SortCriteria):
    """The sort criteria specifies the dn activation status as the column for the sort,
        whether the sort is ascending or descending, and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByAdminFirstName(SortCriteria):
    """The sort criteria specifies the administrator first name
        as the column for the
        sort, whether the
        sort is ascending or
        descending, and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByDeviceMACAddress(SortCriteria):
    """The sort criteria specifies the device MAC address as the column for
        the sort, whether the sort is ascending or descending, and whether the
        sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByUserPersonalPhoneListName(SortCriteria):
    """The sort criteria specifies the user personal phone list name as the column for the sort, whether
        sort is ascending or descending, and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByMobilePhoneNumber(SortCriteria):
    """The sort criteria specifies the mobile phone number as the column for
        the sort, whether the sort is ascending or descending, and whether the
        sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByDepartmentName(SortCriteria):
    """The sort criteria specifies the department name as the column for the sort, whether the
        sort is ascending or descending, and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByGroupCommonPhoneListNumber(SortCriteria):
    """The sort criteria specifies the group common phone list number as the column for the sort, whether
                                sort is ascending or descending, and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByAdminId(SortCriteria):
    """The sort criteria specifies the administrator id as the
        column for the sort,
        whether the
        sort is ascending or descending,
        and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByServiceProviderName(SortCriteria):
    """The sort criteria specifies the service provider name as the column for
        the sort, whether the sort is ascending or descending, and whether the
        sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByAdminLastName(SortCriteria):
    """The sort criteria specifies the administrator last name
        as the column for the
        sort, whether the
        sort is ascending or
        descending, and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByExtension(SortCriteria):
    """The sort criteria specifies the extension as the column for
                the sort, whether the sort is ascending or descending, and whether the
                sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByServiceStatus(SortCriteria):
    """The sort criteria specifies the service status as the column for
            the sort, whether the sort is ascending or descending, and whether the
            sort is case sensitive.
            This sort criteria data type is only intended to be used by the commands
            introduced by BW-2301.
            The commands are EnterpriseUserCallWaitingSettingsGetListRequest, GroupUserCallWaitingSettingsGetListRequest,
            EnterpriseUserHotelingGuestSettingsGetListRequest, and GroupUserHotelingGuestSettingsGetListRequest.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByForwardedToNumber(SortCriteria):
    """The sort criteria specifies the forwarded to phone number as the column for
                the sort, whether the sort is ascending or descending, and whether the
                sort is case sensitive.
                This sort criteria data type is only intended to be used by the commands
                introduced by BW-2301.
                The commands are EnterpriseUserCallForwardingSettingsGetListRequest
                and GroupUserCallForwardingSettingsGetListRequest.
                The following Call Forwarding services are compatible for this search:
                Call Forwarding Always, Call Forwarding Always Secondary, Call Forwarding Busy,
                Call Forwarding No Answer, Call Forwarding Not Reachable, Call Forwarding Selective.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByUserDepartment(SortCriteria):
    """The sort criteria specifies the user department name as the column for the sort, whether the
                                sort is ascending or descending, and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByUserFirstName(SortCriteria):
    """The sort criteria specifies the user first name as the column for the sort, whether the
                                sort is ascending or descending, and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByHuntPolicy(SortCriteria):
    """The sort criteria specifies the call center hunt policy as the column for
        the sort, whether the sort is ascending or descending, and whether the
        sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByGroupName(SortCriteria):
    """The sort criteria specifies the group name as the column for
          the sort, whether the sort is ascending or descending, and whether the
          sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByGroupId(SortCriteria):
    """The sort criteria specifies the group id as the column for
        the sort, whether the sort is ascending or descending, and whether the
        sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByDn(SortCriteria):
    """The sort criteria specifies the DN as the column for
        the sort, whether the sort is ascending or descending, and whether the
        sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByYahooId(SortCriteria):
    """The sort criteria specifies the yahoo id as the column for
        the sort, whether the sort is ascending or descending, and whether the
        sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByServiceProviderId(SortCriteria):
    """The sort criteria specifies the service provider id as the column for
        the sort, whether the sort is ascending or descending, and whether the
        sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByDeviceNetAddress(SortCriteria):
    """The sort criteria specifies the device net address as the column for
        the sort, whether the sort is ascending or descending, and whether the
        sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByDeviceName(SortCriteria):
    """The sort criteria specifies the device name as the column for
        the sort, whether the sort is ascending or descending, and whether the
        sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByTrunkGroupName(SortCriteria):
    """The sort criteria specifies the trunk group name as the column for the sort, whether the
        sort is ascending or descending, and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByUserLastName(SortCriteria):
    """The sort criteria specifies the user last name as the column for the sort, whether the
                                sort is ascending or descending, and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByDeviceType(SortCriteria):
    """The sort criteria specifies the device type as the column for
        the sort, whether the sort is ascending or descending, and whether the
        sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByScheduleName(SortCriteria):
    """The sort criteria specifies the schedule name as the column for
          the sort, whether the sort is ascending or descending, and whether the
          sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByGroupCommonPhoneListName(SortCriteria):
    """The sort criteria specifies the group common phone list name as the column for the sort, whether
                                the sort is ascending or descending, and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByDnAvailable(SortCriteria):
    """The sort criteria specifies the dn availability as the column for the sort, whether the
        sort is ascending or descending, and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByGroupLocationCode(SortCriteria):
    """The sort criteria specifies the group location code as the column for
        the sort, whether the sort is ascending or descending, and whether the
        sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByUserId(SortCriteria):
    """The sort criteria specifies the user id as the column for the sort,
        whether the sort is ascending or descending, and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByCallCenterName(SortCriteria):
    """The sort criteria specifies the call center name as the column for the sort, whether the
        sort is ascending or descending, and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByCallParkName(SortCriteria):
    """The sort criteria specifies the call park name as the column for the sort, whether the
        sort is ascending or descending, and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByEnterpriseCommonPhoneListName(SortCriteria):
    """The sort criteria specifies the enterprise common phone list name as the
        column for the sort, whether sort is ascending or descending, and
        whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByMobileDirectoryNumber(SortCriteria):
    """The sort criteria specifies the Mobile dn availability as the column for the
          sort, whether the sort is ascending or descending, and whether the sort
          is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByReceptionistNote(SortCriteria):
    """The sort criteria specifies the Receptionist Notes as the column for the sort, whether
        the sort is ascending or descending, and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByImpId(SortCriteria):
    """The sort criteria specifies the imp id as the column for
        the sort, whether the sort is ascending or descending, and whether the
        sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByLocation(SortCriteria):
    """The sort criteria specifies the Broadworks Location as the column for
        the sort, whether the sort is ascending or descending, and whether the
        sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByAgentThresholdProfile(SortCriteria):
    """The sort criteria specifies the call center agent threshold profile as the column for
        the sort, whether the sort is ascending or descending, and whether the
        sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByCallCenterType(SortCriteria):
    """The sort criteria specifies the call center type as the column for
        the sort, whether the sort is ascending or descending, and whether the
        sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByCallPickupName(SortCriteria):
    """The sort criteria specifies the call pickup name as the column for the sort, whether the
        sort is ascending or descending, and whether the sort is case sensitive.

    Attributes:

        is_ascending (bool):

        is_case_sensitive (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})

    is_case_sensitive: bool = field(default=True, metadata={"alias": "isCaseSensitive"})


@dataclass(kw_only=True)
class SortByAnnouncementFileSize(SortCriteriaNumeric):
    """The sort criteria specifies the file size as the column for the sort,
        whether the sort is ascending or descending, and whether the sort is
        case sensitive.

    Attributes:

        is_ascending (bool):

    """

    is_ascending: bool = field(default=True, metadata={"alias": "isAscending"})


@dataclass(kw_only=True)
class ReplacementCustomContactDirectoryEntryList(OCIType):
    """A list of userIds and/or Virtual On-Net user DNs that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        entry (List[CustomContactDirectoryEntry]):

    """

    entry: List[CustomContactDirectoryEntry] = field(metadata={"alias": "entry"})


@dataclass(kw_only=True)
class CallCenterAgentStatistics14sp9(OCIType):
    """Contains Call Center statistics for a specified agent.

    Attributes:

        agent_user_id (str):

        agent_display_names (UserDisplayNames):

        available (bool):

        statistics (AgentStatistics):

    """

    agent_user_id: str = field(metadata={"alias": "agentUserId"})

    agent_display_names: UserDisplayNames = field(
        metadata={"alias": "agentDisplayNames"}
    )

    available: bool = field(metadata={"alias": "available"})

    statistics: AgentStatistics = field(metadata={"alias": "statistics"})


@dataclass(kw_only=True)
class CommPilotExpressAvailableOutOfOffice(OCIType):
    """CommPilot Express Available Out Of Office Configuration used in the context of a get.

    Attributes:

        incoming_calls (CommPilotExpressRedirection):

        incoming_call_notify (CommPilotExpressEmailNotify):

    """

    incoming_calls: CommPilotExpressRedirection = field(
        metadata={"alias": "incomingCalls"}
    )

    incoming_call_notify: CommPilotExpressEmailNotify = field(
        metadata={"alias": "incomingCallNotify"}
    )


@dataclass(kw_only=True)
class CommPilotExpressAvailableInOffice(OCIType):
    """CommPilot Express Available In Office Settings.

    Attributes:

        additional_phone_number_to_ring (Optional[str]):

        busy_setting (CommPilotExpressRedirection):

        no_answer_setting (CommPilotExpressRedirection):

    """

    additional_phone_number_to_ring: Optional[str] = field(
        default=None, metadata={"alias": "additionalPhoneNumberToRing"}
    )

    busy_setting: CommPilotExpressRedirection = field(metadata={"alias": "busySetting"})

    no_answer_setting: CommPilotExpressRedirection = field(
        metadata={"alias": "noAnswerSetting"}
    )


@dataclass(kw_only=True)
class CommPilotExpressAvailableOutOfOfficeModify(OCIType):
    """CommPilot Express Available Out Of Office Configuration used in the context of a modify.

    Attributes:

        incoming_calls (Optional[CommPilotExpressRedirectionModify]):

        incoming_call_notify (Optional[CommPilotExpressEmailNotifyModify]):

    """

    incoming_calls: Optional[CommPilotExpressRedirectionModify] = field(
        default=None, metadata={"alias": "incomingCalls"}
    )

    incoming_call_notify: Optional[CommPilotExpressEmailNotifyModify] = field(
        default=None, metadata={"alias": "incomingCallNotify"}
    )


@dataclass(kw_only=True)
class CommPilotExpressAvailableInOfficeModify(OCIType):
    """CommPilot Express Available In Office Settings.

    Attributes:

        additional_phone_number_to_ring (Optional[Nillable[str]]):

        busy_setting (Optional[CommPilotExpressRedirectionModify]):

        no_answer_setting (Optional[CommPilotExpressRedirectionModify]):

    """

    additional_phone_number_to_ring: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "additionalPhoneNumberToRing"}
    )

    busy_setting: Optional[CommPilotExpressRedirectionModify] = field(
        default=None, metadata={"alias": "busySetting"}
    )

    no_answer_setting: Optional[CommPilotExpressRedirectionModify] = field(
        default=None, metadata={"alias": "noAnswerSetting"}
    )

    def __post_init__(self):
        nillable_fields = ["additional_phone_number_to_ring"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class CommPilotExpressBusy(OCIType):
    """CommPilot Express Available In Office Configuration used in the context of a get.

    Attributes:

        incoming_calls (CommPilotExpressRedirectionWithException):

        voice_mail_notify (CommPilotExpressEmailNotify):

    """

    incoming_calls: CommPilotExpressRedirectionWithException = field(
        metadata={"alias": "incomingCalls"}
    )

    voice_mail_notify: CommPilotExpressEmailNotify = field(
        metadata={"alias": "voiceMailNotify"}
    )


@dataclass(kw_only=True)
class CommPilotExpressUnavailable(OCIType):
    """CommPilot Express Unavailable Configuration used in the context of a get.

    Attributes:

        incoming_calls (CommPilotExpressRedirectionWithException):

        voice_mail_greeting (str):

    """

    incoming_calls: CommPilotExpressRedirectionWithException = field(
        metadata={"alias": "incomingCalls"}
    )

    voice_mail_greeting: str = field(metadata={"alias": "voiceMailGreeting"})


@dataclass(kw_only=True)
class CommPilotExpressUnavailableModify(OCIType):
    """CommPilot Express Unavailable Configuration used in the context of a modify.

    Attributes:

        incoming_calls (Optional[CommPilotExpressRedirectionWithExceptionModify]):

        voice_mail_greeting (Optional[str]):

    """

    incoming_calls: Optional[CommPilotExpressRedirectionWithExceptionModify] = field(
        default=None, metadata={"alias": "incomingCalls"}
    )

    voice_mail_greeting: Optional[str] = field(
        default=None, metadata={"alias": "voiceMailGreeting"}
    )


@dataclass(kw_only=True)
class CommPilotExpressBusyModify(OCIType):
    """CommPilot Express Available In Office Configuration used in the context of a modify.

    Attributes:

        incoming_calls (Optional[CommPilotExpressRedirectionWithExceptionModify]):

        voice_mail_notify (Optional[CommPilotExpressEmailNotifyModify]):

    """

    incoming_calls: Optional[CommPilotExpressRedirectionWithExceptionModify] = field(
        default=None, metadata={"alias": "incomingCalls"}
    )

    voice_mail_notify: Optional[CommPilotExpressEmailNotifyModify] = field(
        default=None, metadata={"alias": "voiceMailNotify"}
    )


@dataclass(kw_only=True)
class IncomingCallingPlanDepartmentPermissionsModify(OCIType):
    """Allows or disallows various types of incoming calls for a specified department.
        For use when modifing settings.

    Attributes:

        department_key (DepartmentKey):

        allow_from_within_group (Optional[bool]):

        allow_from_outside_group (Optional[str]):

        allow_collect_calls (Optional[bool]):

        digit_pattern_permission (Optional[List[IncomingCallingPlanDigitPatternPermission]]):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    allow_from_within_group: Optional[bool] = field(
        default=None, metadata={"alias": "allowFromWithinGroup"}
    )

    allow_from_outside_group: Optional[str] = field(
        default=None, metadata={"alias": "allowFromOutsideGroup"}
    )

    allow_collect_calls: Optional[bool] = field(
        default=None, metadata={"alias": "allowCollectCalls"}
    )

    digit_pattern_permission: Optional[
        List[IncomingCallingPlanDigitPatternPermission]
    ] = field(default=None, metadata={"alias": "digitPatternPermission"})


@dataclass(kw_only=True)
class IncomingCallingPlanDepartmentPermissions(OCIType):
    """Allows or disallows various types of incoming calls for a specified department.

    Attributes:

        department_key (DepartmentKey):

        department_full_path_name (str):

        allow_from_within_group (bool):

        allow_from_outside_group (str):

        allow_collect_calls (bool):

        digit_pattern_permission (Optional[List[IncomingCallingPlanDigitPatternPermission]]):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    department_full_path_name: str = field(metadata={"alias": "departmentFullPathName"})

    allow_from_within_group: bool = field(metadata={"alias": "allowFromWithinGroup"})

    allow_from_outside_group: str = field(metadata={"alias": "allowFromOutsideGroup"})

    allow_collect_calls: bool = field(metadata={"alias": "allowCollectCalls"})

    digit_pattern_permission: Optional[
        List[IncomingCallingPlanDigitPatternPermission]
    ] = field(default=None, metadata={"alias": "digitPatternPermission"})


@dataclass(kw_only=True)
class IncomingCallingPlanPermissionsModify(OCIType):
    """Allows or disallows various types of incoming calls for a user or group -- not any particular department.
        For use when modifing settings.

    Attributes:

        allow_from_within_group (Optional[bool]):

        allow_from_outside_group (Optional[str]):

        allow_collect_calls (Optional[bool]):

        digit_pattern_permission (Optional[List[IncomingCallingPlanDigitPatternPermission]]):

    """

    allow_from_within_group: Optional[bool] = field(
        default=None, metadata={"alias": "allowFromWithinGroup"}
    )

    allow_from_outside_group: Optional[str] = field(
        default=None, metadata={"alias": "allowFromOutsideGroup"}
    )

    allow_collect_calls: Optional[bool] = field(
        default=None, metadata={"alias": "allowCollectCalls"}
    )

    digit_pattern_permission: Optional[
        List[IncomingCallingPlanDigitPatternPermission]
    ] = field(default=None, metadata={"alias": "digitPatternPermission"})


@dataclass(kw_only=True)
class IncomingCallingPlanPermissions(OCIType):
    """Allows or disallows various types of incoming calls for a user or group -- not any particular department.

    Attributes:

        allow_from_within_group (bool):

        allow_from_outside_group (str):

        allow_collect_calls (bool):

        digit_pattern_permission (Optional[List[IncomingCallingPlanDigitPatternPermission]]):

    """

    allow_from_within_group: bool = field(metadata={"alias": "allowFromWithinGroup"})

    allow_from_outside_group: str = field(metadata={"alias": "allowFromOutsideGroup"})

    allow_collect_calls: bool = field(metadata={"alias": "allowCollectCalls"})

    digit_pattern_permission: Optional[
        List[IncomingCallingPlanDigitPatternPermission]
    ] = field(default=None, metadata={"alias": "digitPatternPermission"})


@dataclass(kw_only=True)
class MWIDeliveryToMobileEndpointTemplateBody23(OCIType):
    """MWI Delivery To Mobile Endpoint template body.

    Attributes:

        line (List[MWIDeliveryToMobileEndpointTemplateLine23]):

    """

    line: List[MWIDeliveryToMobileEndpointTemplateLine23] = field(
        metadata={"alias": "line"}
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanGroupAuthorizationCodes(OCIType):
    """Outgoing Calling Plan Authorization Code for the group default.

    Attributes:

        code_entry (Optional[List[OutgoingCallingPlanAuthorizationCodeEntry]]):

    """

    code_entry: Optional[List[OutgoingCallingPlanAuthorizationCodeEntry]] = field(
        default=None, metadata={"alias": "codeEntry"}
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanDepartmentAuthorizationCodes(OCIType):
    """Outgoing Calling Plan Authorization Code for a department.

    Attributes:

        department_key (DepartmentKey):

        department_name (str):

        code_entry (Optional[List[OutgoingCallingPlanAuthorizationCodeEntry]]):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    department_name: str = field(metadata={"alias": "departmentName"})

    code_entry: Optional[List[OutgoingCallingPlanAuthorizationCodeEntry]] = field(
        default=None, metadata={"alias": "codeEntry"}
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanCallMeNowDepartmentPermissions(OCIType):
    """Outgoing Calling Plan for Call Me Now call permissions for a department.

    Attributes:

        department_key (DepartmentKey):

        department_name (str):

        permissions (OutgoingCallingPlanCallMeNowPermissions):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    department_name: str = field(metadata={"alias": "departmentName"})

    permissions: OutgoingCallingPlanCallMeNowPermissions = field(
        metadata={"alias": "permissions"}
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanCallMeNowDepartmentPermissionsModify(OCIType):
    """Modify outgoing Calling Plan for Call Me Now call permissions for a department.

    Attributes:

        department_key (DepartmentKey):

        permissions (OutgoingCallingPlanCallMeNowPermissionsModify):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    permissions: OutgoingCallingPlanCallMeNowPermissionsModify = field(
        metadata={"alias": "permissions"}
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanDigitPatternCallMeNowPermissions(OCIType):
    """Outgoing Calling Plan Call Me Now call permissions for specified digit patterns.

    Attributes:

        digit_pattern_permissions (List[OutgoingCallingPlanDigitPatternCallMeNowPermission]):

    """

    digit_pattern_permissions: List[
        OutgoingCallingPlanDigitPatternCallMeNowPermission
    ] = field(metadata={"alias": "digitPatternPermissions"})


@dataclass(kw_only=True)
class OutgoingCallingPlanDigitPatternOriginatingPermissions(OCIType):
    """Outgoing Calling Plan originating call permissions for specified digit patterns.

    Attributes:

        digit_pattern_permissions (List[OutgoingCallingPlanDigitPatternOriginatingPermission]):

    """

    digit_pattern_permissions: List[
        OutgoingCallingPlanDigitPatternOriginatingPermission
    ] = field(metadata={"alias": "digitPatternPermissions"})


@dataclass(kw_only=True)
class OutgoingCallingPlanDigitPatternRedirectingPermissions(OCIType):
    """Outgoing Calling Plan redirecting call permissions for specified digit patterns.

    Attributes:

        digit_pattern_permissions (List[OutgoingCallingPlanDigitPatternRedirectingPermission]):

    """

    digit_pattern_permissions: List[
        OutgoingCallingPlanDigitPatternRedirectingPermission
    ] = field(metadata={"alias": "digitPatternPermissions"})


@dataclass(kw_only=True)
class OutgoingCallingPlanOriginatingDepartmentPermissions(OCIType):
    """Outgoing Calling Plan originating call permissions for a department.

    Attributes:

        department_key (DepartmentKey):

        department_name (str):

        permissions (OutgoingCallingPlanOriginatingPermissions):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    department_name: str = field(metadata={"alias": "departmentName"})

    permissions: OutgoingCallingPlanOriginatingPermissions = field(
        metadata={"alias": "permissions"}
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanOriginatingDepartmentPermissionsModify(OCIType):
    """Outgoing Calling Plan originating call permissions for a department.

    Attributes:

        department_key (DepartmentKey):

        permissions (Optional[OutgoingCallingPlanOriginatingPermissionsModify]):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    permissions: Optional[OutgoingCallingPlanOriginatingPermissionsModify] = field(
        default=None, metadata={"alias": "permissions"}
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanRedirectedDepartmentPermissions(OCIType):
    """Outgoing Calling Plan being forwarded/transferred permissions for a department.

    Attributes:

        department_key (DepartmentKey):

        department_name (str):

        permissions (OutgoingCallingPlanRedirectedPermissions):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    department_name: str = field(metadata={"alias": "departmentName"})

    permissions: OutgoingCallingPlanRedirectedPermissions = field(
        metadata={"alias": "permissions"}
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanRedirectedDepartmentPermissionsModify(OCIType):
    """Outgoing Calling Plan being forwarded/transferred permissions for a department.

    Attributes:

        department_key (DepartmentKey):

        permissions (OutgoingCallingPlanRedirectedPermissionsModify):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    permissions: OutgoingCallingPlanRedirectedPermissionsModify = field(
        metadata={"alias": "permissions"}
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanRedirectingDepartmentPermissions(OCIType):
    """Outgoing Calling Plan initiating call forwards/transfer permissions for a department.

    Attributes:

        department_key (DepartmentKey):

        department_name (str):

        permissions (OutgoingCallingPlanRedirectingPermissions):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    department_name: str = field(metadata={"alias": "departmentName"})

    permissions: OutgoingCallingPlanRedirectingPermissions = field(
        metadata={"alias": "permissions"}
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanRedirectingDepartmentPermissionsModify(OCIType):
    """Outgoing Calling Plan initiating call forwards/transfer permissions for a department.

    Attributes:

        department_key (DepartmentKey):

        permissions (OutgoingCallingPlanRedirectingPermissionsModify):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    permissions: OutgoingCallingPlanRedirectingPermissionsModify = field(
        metadata={"alias": "permissions"}
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanDepartmentTransferNumbers(OCIType):
    """Outgoing Calling Plan transfer numbers for a department.

    Attributes:

        department_key (DepartmentKey):

        department_name (str):

        transfer_numbers (OutgoingCallingPlanTransferNumbers):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    department_name: str = field(metadata={"alias": "departmentName"})

    transfer_numbers: OutgoingCallingPlanTransferNumbers = field(
        metadata={"alias": "transferNumbers"}
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanDepartmentTransferNumbersModify(OCIType):
    """Outgoing Calling Plan transfer numbers for a department.

    Attributes:

        department_key (DepartmentKey):

        transfer_numbers (Optional[OutgoingCallingPlanTransferNumbersModify]):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    transfer_numbers: Optional[OutgoingCallingPlanTransferNumbersModify] = field(
        default=None, metadata={"alias": "transferNumbers"}
    )


@dataclass(kw_only=True)
class OutgoingPinholeDigitPlanDigitPatternCallMeNowPermissions(OCIType):
    """Outgoing Pinhole Digit Plan Call Me Now call permissions for specified digit patterns.

    Attributes:

        digit_pattern_permissions (List[OutgoingPinholeDigitPlanDigitPatternCallMeNowPermission]):

    """

    digit_pattern_permissions: List[
        OutgoingPinholeDigitPlanDigitPatternCallMeNowPermission
    ] = field(metadata={"alias": "digitPatternPermissions"})


@dataclass(kw_only=True)
class OutgoingPinholeDigitPlanDigitPatternOriginatingPermissions(OCIType):
    """Outgoing Pinhole Digit Plan originating call permissions for specified digit patterns.

    Attributes:

        digit_pattern_permissions (List[OutgoingPinholeDigitPlanDigitPatternOriginatingPermission]):

    """

    digit_pattern_permissions: List[
        OutgoingPinholeDigitPlanDigitPatternOriginatingPermission
    ] = field(metadata={"alias": "digitPatternPermissions"})


@dataclass(kw_only=True)
class OutgoingPinholeDigitPlanDigitPatternRedirectingPermissions(OCIType):
    """Outgoing Pinhole Digit Plan redirecting call permissions for specified digit patterns.

    Attributes:

        digit_pattern_permissions (List[OutgoingPinholeDigitPlanDigitPatternRedirectingPermission]):

    """

    digit_pattern_permissions: List[
        OutgoingPinholeDigitPlanDigitPatternRedirectingPermission
    ] = field(metadata={"alias": "digitPatternPermissions"})


@dataclass(kw_only=True)
class ReplacementEnterpriseEnterpriseTrunkTrunkGroupKeyList(OCIType):
    """A list of Enterprise Trunk Krunk Group Keys that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        trunk_group (List[EnterpriseTrunkTrunkGroupKey]):

    """

    trunk_group: List[EnterpriseTrunkTrunkGroupKey] = field(
        metadata={"alias": "trunkGroup"}
    )


@dataclass(kw_only=True)
class ReplacementEnterpriseTrunkTrunkGroupKeyList(OCIType):
    """A list of Enterprise Trunk Krunk Group Keys that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        trunk_group_list (List[EnterpriseTrunkTrunkGroupKey]):

    """

    trunk_group_list: List[EnterpriseTrunkTrunkGroupKey] = field(
        metadata={"alias": "trunkGroupList"}
    )


@dataclass(kw_only=True)
class EnterpriseEnterpriseTrunkPriorityWeightedTrunkGroup(OCIType):
    """Trunk group details (order and weight) for each trunk group

    Attributes:

        trunk_group (EnterpriseTrunkTrunkGroupKey):

        priority (int):

        weight (int):

    """

    trunk_group: EnterpriseTrunkTrunkGroupKey = field(metadata={"alias": "trunkGroup"})

    priority: int = field(metadata={"alias": "priority"})

    weight: int = field(metadata={"alias": "weight"})


@dataclass(kw_only=True)
class EnterpriseTrunkPriorityWeightedTrunkGroup(OCIType):
    """Trunk group details (order and weight) for each trunk group

    Attributes:

        trunk_group (EnterpriseTrunkTrunkGroupKey):

        priority (int):

        weight (int):

    """

    trunk_group: EnterpriseTrunkTrunkGroupKey = field(metadata={"alias": "trunkGroup"})

    priority: int = field(metadata={"alias": "priority"})

    weight: int = field(metadata={"alias": "weight"})


@dataclass(kw_only=True)
class ReplacementGroupEnterpriseTrunkPriorityWeightedTrunkGroupList(OCIType):
    """A list of enterprise trunk priority weighted trunk groups in a group that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        trunk_group (List[GroupEnterpriseTrunkPriorityWeightedTrunkGroup]):

    """

    trunk_group: List[GroupEnterpriseTrunkPriorityWeightedTrunkGroup] = field(
        metadata={"alias": "trunkGroup"}
    )


@dataclass(kw_only=True)
class OCIMessage(OCIType):
    """A message contains a list of requests or responses. The server processes all the requests
        and returns a message with a corresponding list of responses.

    Attributes:

        session_id (Optional[str]): The session id identifies a logged-in user. The client is responsible to ensure the uniqueness of the session id.

        user_id (Optional[str]): The user id identifies a preauthenticated user performing a session-less OCI request. The source of the request
    # must be in the external authentication access control list.

        phone_number (Optional[str]): The phone number identifies a preauthenticated user performing a session-less OCI request. The source of the request
    # must be in the external authentication access control list.
    # The phone number must be in E.164 format.  Any DN associated with the user may be used.
    # BroadSoft recommends only using this element in the rare case when the userId is not known.

        line_port (Optional[str]): The lineport identifies a preauthenticated user performing a session-less OCI request. The source of the request must be in the external authentication access control list.
    # The lineport may be any lineport associated with a user.
    # BroadSoft recommends only using this element in the rare case when the userId is not known.

        external_user_identity (Optional[ExternalUserIdentity]): The external user identity identifies a preauthenticated user/admin performing a session-less OCI request. The source of the request must have a valid CI access token.

        tracking_id (Optional[str]): The client can send the trackingId attribute in any request and the server will return the trackingId attribute in the response.

        command (List[OCICommand]): List of requests or responses.

    """

    session_id: Optional[str] = field(default=None, metadata={"alias": "sessionId"})

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    line_port: Optional[str] = field(default=None, metadata={"alias": "linePort"})

    external_user_identity: Optional[ExternalUserIdentity] = field(
        default=None, metadata={"alias": "externalUserIdentity"}
    )

    tracking_id: Optional[str] = field(default=None, metadata={"alias": "trackingId"})

    command: List[OCICommand] = field(metadata={"alias": "command"})


@dataclass(kw_only=True)
class ReplacementEnterpriseDeviceList(OCIType):
    """A list of enterprise accessible devices that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        device (List[EnterpriseAccessDevice]):

    """

    device: List[EnterpriseAccessDevice] = field(metadata={"alias": "device"})


@dataclass(kw_only=True)
class CallCenterMediaOnHoldSourceRead22(OCIType):
    """Contains the call center media on hold source configuration.

    Attributes:

        audio_message_source_selection (str):

        audio_url_list (Optional[CallCenterAnnouncementURLList]):

        audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        external_audio_source (Optional[AccessDeviceEndpointWithPortNumberRead22]):

        video_message_source_selection (Optional[str]):

        video_url_list (Optional[CallCenterAnnouncementURLList]):

        video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        external_video_source (Optional[AccessDeviceEndpointWithPortNumberRead22]):

    """

    audio_message_source_selection: str = field(
        metadata={"alias": "audioMessageSourceSelection"}
    )

    audio_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    external_audio_source: Optional[AccessDeviceEndpointWithPortNumberRead22] = field(
        default=None, metadata={"alias": "externalAudioSource"}
    )

    video_message_source_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoMessageSourceSelection"}
    )

    video_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )

    external_video_source: Optional[AccessDeviceEndpointWithPortNumberRead22] = field(
        default=None, metadata={"alias": "externalVideoSource"}
    )


@dataclass(kw_only=True)
class AutoAttendantKeyConfiguration20(OCIType):
    """The configuration of a key for Auto Attendant.

    Attributes:

        key (str):

        entry (AutoAttendantKeyConfigurationEntry20):

    """

    key: str = field(metadata={"alias": "key"})

    entry: AutoAttendantKeyConfigurationEntry20 = field(metadata={"alias": "entry"})


@dataclass(kw_only=True)
class AutoAttendantKeyReadConfiguration20(OCIType):
    """The read configuration of a key for Auto Attendant.

    Attributes:

        key (str):

        entry (AutoAttendantKeyConfigurationReadEntry20):

    """

    key: str = field(metadata={"alias": "key"})

    entry: AutoAttendantKeyConfigurationReadEntry20 = field(metadata={"alias": "entry"})


@dataclass(kw_only=True)
class AutoAttendantReadMenu19(OCIType):
    """The configuration of the automated receptionist
        greeting
        prompt and dialing menu to be used during
        after business
        hours.

    Attributes:

        announcement_selection (str):

        audio_file_description (Optional[str]):

        audio_media_type (Optional[str]):

        video_file_description (Optional[str]):

        video_media_type (Optional[str]):

        enable_first_menu_level_extension_dialing (bool):

        key_configuration (Optional[List[AutoAttendantKeyReadConfiguration19]]):

    """

    announcement_selection: str = field(metadata={"alias": "announcementSelection"})

    audio_file_description: Optional[str] = field(
        default=None, metadata={"alias": "audioFileDescription"}
    )

    audio_media_type: Optional[str] = field(
        default=None, metadata={"alias": "audioMediaType"}
    )

    video_file_description: Optional[str] = field(
        default=None, metadata={"alias": "videoFileDescription"}
    )

    video_media_type: Optional[str] = field(
        default=None, metadata={"alias": "videoMediaType"}
    )

    enable_first_menu_level_extension_dialing: bool = field(
        metadata={"alias": "enableFirstMenuLevelExtensionDialing"}
    )

    key_configuration: Optional[List[AutoAttendantKeyReadConfiguration19]] = field(
        default=None, metadata={"alias": "keyConfiguration"}
    )


@dataclass(kw_only=True)
class ServiceInstanceAddProfileCallCenter(ServiceInstanceAddProfile):
    """Service Profile Information for a call center.
        Password is required.

    Attributes:

        name (str):

        calling_line_id_last_name (str):

        calling_line_id_first_name (str):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

        phone_number (Optional[str]):

        extension (Optional[str]):

        password (str):

        department (Optional[DepartmentKey]):

        language (Optional[str]):

        time_zone (Optional[str]):

        alias (Optional[List[str]]):

        public_user_identity (Optional[str]):

        calling_line_id_phone_number (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    calling_line_id_last_name: str = field(metadata={"alias": "callingLineIdLastName"})

    calling_line_id_first_name: str = field(
        metadata={"alias": "callingLineIdFirstName"}
    )

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})

    password: str = field(metadata={"alias": "password"})

    department: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "department"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    alias: Optional[List[str]] = field(default=None, metadata={"alias": "alias"})

    public_user_identity: Optional[str] = field(
        default=None, metadata={"alias": "publicUserIdentity"}
    )

    calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )


@dataclass(kw_only=True)
class ServiceInstanceAddProfileTrunkGroup(ServiceInstanceAddProfile):
    """Service Profile Information for a trunk group.
        The publicUserIdentity element is not part of ServiceInstanceAddProfileTrunkGroup.

    Attributes:

        name (str):

        calling_line_id_last_name (str):

        calling_line_id_first_name (str):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

        phone_number (Optional[str]):

        extension (Optional[str]):

        password (Optional[str]):

        department (Optional[DepartmentKey]):

        language (Optional[str]):

        time_zone (Optional[str]):

        alias (Optional[List[str]]):

        calling_line_id_phone_number (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    calling_line_id_last_name: str = field(metadata={"alias": "callingLineIdLastName"})

    calling_line_id_first_name: str = field(
        metadata={"alias": "callingLineIdFirstName"}
    )

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    department: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "department"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    alias: Optional[List[str]] = field(default=None, metadata={"alias": "alias"})

    calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )


@dataclass(kw_only=True)
class ReplacementCombinedSharedCallAppearanceAccessDeviceMultipleIdentityEndpointList(
    OCIType
):
    """A list of shared call appearance endpoints that replaces existing endpoints.

    Attributes:

        shared_call_appearance_access_device_endpoint (List[CombinedSharedCallAppearanceAccessDeviceMultipleIdentityEndpoint]):

    """

    shared_call_appearance_access_device_endpoint: List[
        CombinedSharedCallAppearanceAccessDeviceMultipleIdentityEndpoint
    ] = field(metadata={"alias": "sharedCallAppearanceAccessDeviceEndpoint"})


@dataclass(kw_only=True)
class ReplacementConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpointList22(
    OCIType
):
    """A list of shared call appearance endpoints that replaces existing endpoints.

    Attributes:

        shared_call_appearance_access_device_endpoint (List[ConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpointAdd22]):

    """

    shared_call_appearance_access_device_endpoint: List[
        ConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpointAdd22
    ] = field(metadata={"alias": "sharedCallAppearanceAccessDeviceEndpoint"})


@dataclass(kw_only=True)
class CPEDeviceOptions22V6(OCIType):
    """CPE device's options.

    The field configType is optional to allow the use of field enableMonitoring for all device types being managed or not
    ie. device configuration option equals to DeviceManagement, or Legacy, or Not Supported).

    If the device configuration option is set to \"Not Supported\", the value of configType is forced set to \"None\" regardless
    of its current value.

    It is not allowed to add a device type with device configuration option set to Device Management or Legacy when the configType
    is not set.

    Attributes:

        enable_monitoring (bool):

        config_type (Optional[str]):

        system_file_name (Optional[str]):

        device_file_format (Optional[str]):

        device_management_device_type_options (Optional[DeviceManagementDeviceTypeOptions22V6]):

    """

    enable_monitoring: bool = field(metadata={"alias": "enableMonitoring"})

    config_type: Optional[str] = field(default=None, metadata={"alias": "configType"})

    system_file_name: Optional[str] = field(
        default=None, metadata={"alias": "systemFileName"}
    )

    device_file_format: Optional[str] = field(
        default=None, metadata={"alias": "deviceFileFormat"}
    )

    device_management_device_type_options: Optional[
        DeviceManagementDeviceTypeOptions22V6
    ] = field(default=None, metadata={"alias": "deviceManagementDeviceTypeOptions"})


@dataclass(kw_only=True)
class CPEDeviceOptions22V2(OCIType):
    """CPE device's options.

                The field configType is optional to allow the use of field enableMonitoring for all device types being managed or not
                ie. device configuration option equals to DeviceManagement, or Legacy, or Not Supported).

                If the device configuration option is set to \"Not Supported\", the value of configType is forced set to \"None\" regardless
                of its current value.

                It is not allowed to add a device type with device configuration option set to Device Management or Legacy when the configType
                is not set.

    Attributes:

        enable_monitoring (bool):

        config_type (Optional[str]):

        system_file_name (Optional[str]):

        device_file_format (Optional[str]):

        device_management_device_type_options (Optional[DeviceManagementDeviceTypeOptions22V2]):

    """

    enable_monitoring: bool = field(metadata={"alias": "enableMonitoring"})

    config_type: Optional[str] = field(default=None, metadata={"alias": "configType"})

    system_file_name: Optional[str] = field(
        default=None, metadata={"alias": "systemFileName"}
    )

    device_file_format: Optional[str] = field(
        default=None, metadata={"alias": "deviceFileFormat"}
    )

    device_management_device_type_options: Optional[
        DeviceManagementDeviceTypeOptions22V2
    ] = field(default=None, metadata={"alias": "deviceManagementDeviceTypeOptions"})


@dataclass(kw_only=True)
class ReplacementConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpointList(
    OCIType
):
    """A list of shared call appearance endpoints that replaces existing endpoints.

    Attributes:

        shared_call_appearance_access_device_endpoint (List[ConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpoint]):

    """

    shared_call_appearance_access_device_endpoint: List[
        ConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpoint
    ] = field(metadata={"alias": "sharedCallAppearanceAccessDeviceEndpoint"})


@dataclass(kw_only=True)
class CPEDeviceOptions22V5(OCIType):
    """CPE device's options.

    The field configType is optional to allow the use of field enableMonitoring for all device types being managed or not
    ie. device configuration option equals to DeviceManagement, or Legacy, or Not Supported).

    If the device configuration option is set to \"Not Supported\", the value of configType is forced set to \"None\" regardless
    of its current value.

    It is not allowed to add a device type with device configuration option set to Device Management or Legacy when the configType
    is not set.

    Attributes:

        enable_monitoring (bool):

        config_type (Optional[str]):

        system_file_name (Optional[str]):

        device_file_format (Optional[str]):

        device_management_device_type_options (Optional[DeviceManagementDeviceTypeOptions22V5]):

    """

    enable_monitoring: bool = field(metadata={"alias": "enableMonitoring"})

    config_type: Optional[str] = field(default=None, metadata={"alias": "configType"})

    system_file_name: Optional[str] = field(
        default=None, metadata={"alias": "systemFileName"}
    )

    device_file_format: Optional[str] = field(
        default=None, metadata={"alias": "deviceFileFormat"}
    )

    device_management_device_type_options: Optional[
        DeviceManagementDeviceTypeOptions22V5
    ] = field(default=None, metadata={"alias": "deviceManagementDeviceTypeOptions"})


@dataclass(kw_only=True)
class CPEDeviceOptions22V4(OCIType):
    """CPE device's options.

    The field configType is optional to allow the use of field enableMonitoring for all device types being managed or not
    ie. device configuration option equals to DeviceManagement, or Legacy, or Not Supported).

    If the device configuration option is set to \"Not Supported\", the value of configType is forced set to \"None\" regardless
    of its current value.

    It is not allowed to add a device type with device configuration option set to Device Management or Legacy when the configType
    is not set.

    Attributes:

        enable_monitoring (bool):

        config_type (Optional[str]):

        system_file_name (Optional[str]):

        device_file_format (Optional[str]):

        device_management_device_type_options (Optional[DeviceManagementDeviceTypeOptions22V4]):

    """

    enable_monitoring: bool = field(metadata={"alias": "enableMonitoring"})

    config_type: Optional[str] = field(default=None, metadata={"alias": "configType"})

    system_file_name: Optional[str] = field(
        default=None, metadata={"alias": "systemFileName"}
    )

    device_file_format: Optional[str] = field(
        default=None, metadata={"alias": "deviceFileFormat"}
    )

    device_management_device_type_options: Optional[
        DeviceManagementDeviceTypeOptions22V4
    ] = field(default=None, metadata={"alias": "deviceManagementDeviceTypeOptions"})


@dataclass(kw_only=True)
class CPEDeviceOptions22V3(OCIType):
    """CPE device's options.

    The field configType is optional to allow the use of field enableMonitoring for all device types being managed or not
    ie. device configuration option equals to DeviceManagement, or Legacy, or Not Supported).

    If the device configuration option is set to \"Not Supported\", the value of configType is forced set to \"None\" regardless
    of its current value.

    It is not allowed to add a device type with device configuration option set to Device Management or Legacy when the configType
    is not set.

    Attributes:

        enable_monitoring (bool):

        config_type (Optional[str]):

        system_file_name (Optional[str]):

        device_file_format (Optional[str]):

        device_management_device_type_options (Optional[DeviceManagementDeviceTypeOptions22V3]):

    """

    enable_monitoring: bool = field(metadata={"alias": "enableMonitoring"})

    config_type: Optional[str] = field(default=None, metadata={"alias": "configType"})

    system_file_name: Optional[str] = field(
        default=None, metadata={"alias": "systemFileName"}
    )

    device_file_format: Optional[str] = field(
        default=None, metadata={"alias": "deviceFileFormat"}
    )

    device_management_device_type_options: Optional[
        DeviceManagementDeviceTypeOptions22V3
    ] = field(default=None, metadata={"alias": "deviceManagementDeviceTypeOptions"})


@dataclass(kw_only=True)
class CallCenterReportInterval(OCIType):
    """Report interval for call center enhanced reporting scheduled reports.

    Attributes:

        dates (Optional[CallCenterReportIntervalDates]):

        current (Optional[CallCenterReportCurrentInterval]):

        past (Optional[CallCenterReportPastInterval]):

    """

    dates: Optional[CallCenterReportIntervalDates] = field(
        default=None, metadata={"alias": "dates"}
    )

    current: Optional[CallCenterReportCurrentInterval] = field(
        default=None, metadata={"alias": "current"}
    )

    past: Optional[CallCenterReportPastInterval] = field(
        default=None, metadata={"alias": "past"}
    )


@dataclass(kw_only=True)
class AutoAttendantKeyConfiguration19(OCIType):
    """The configuration of a key for Auto Attendant.

    Attributes:

        key (str):

        entry (AutoAttendantKeyConfigurationEntry19):

    """

    key: str = field(metadata={"alias": "key"})

    entry: AutoAttendantKeyConfigurationEntry19 = field(metadata={"alias": "entry"})


@dataclass(kw_only=True)
class PushNotificationRegistrationData23(OCIType):
    """The common push notification registration elements which supports encryption, if required.
        Elements encryptionKeyIdentifier, encryptionAlgorithm and channel are provided only when registration supports encryption.
        Their absence indicates that encryption is not supported.

    Attributes:

        registration_id (str):

        application_id (str):

        application_version (str):

        device_os_type (str):

        device_version (str):

        timestamp (str):

        push_notification_client_version (str):

        push_notification_token_data (Optional[List[PushNotificationTokenData23]]):

        encryption_key_identifier (Optional[str]):

        encryption_algorithm (Optional[str]):

        channel (Optional[str]):

    """

    registration_id: str = field(metadata={"alias": "registrationId"})

    application_id: str = field(metadata={"alias": "applicationId"})

    application_version: str = field(metadata={"alias": "applicationVersion"})

    device_os_type: str = field(metadata={"alias": "deviceOsType"})

    device_version: str = field(metadata={"alias": "deviceVersion"})

    timestamp: str = field(metadata={"alias": "timestamp"})

    push_notification_client_version: str = field(
        metadata={"alias": "pushNotificationClientVersion"}
    )

    push_notification_token_data: Optional[List[PushNotificationTokenData23]] = field(
        default=None, metadata={"alias": "pushNotificationTokenData"}
    )

    encryption_key_identifier: Optional[str] = field(
        default=None, metadata={"alias": "encryptionKeyIdentifier"}
    )

    encryption_algorithm: Optional[str] = field(
        default=None, metadata={"alias": "encryptionAlgorithm"}
    )

    channel: Optional[str] = field(default=None, metadata={"alias": "channel"})


@dataclass(kw_only=True)
class CallCenterReportSchedule(OCIType):
    """A schedule for call center enhanced reporting scheduled report. It can either be a fixed time schedule
        or recurring schedule

    Attributes:

        schedule_time (Optional[CallCenterReportScheduleTime]):

        recurrence (Optional[CallCenterReportScheduleRecurrence]):

    """

    schedule_time: Optional[CallCenterReportScheduleTime] = field(
        default=None, metadata={"alias": "scheduleTime"}
    )

    recurrence: Optional[CallCenterReportScheduleRecurrence] = field(
        default=None, metadata={"alias": "recurrence"}
    )


@dataclass(kw_only=True)
class TrunkAddressingMultipleContactAdd22(OCIType):
    """Trunk group endpoint that can have multiple contacts.
        alternateTrunkIdentityDomain is only used in XS mode and the AS when deployed in IMS mode.
        Both alternateTrunkIdentity and AlternateTrunkIdentityDomain should be set at the same time if one is set in XS mode.
        The following elements are only used in AS data mode and are ignored in XS data mode:
         physicalLocation

    Attributes:

        trunk_group_device_endpoint (Optional[TrunkGroupDeviceMultipleContactEndpointAdd22]):

        enterprise_trunk_name (Optional[str]):

        alternate_trunk_identity (Optional[str]):

        alternate_trunk_identity_domain (Optional[str]):

        physical_location (Optional[str]):

    """

    trunk_group_device_endpoint: Optional[
        TrunkGroupDeviceMultipleContactEndpointAdd22
    ] = field(default=None, metadata={"alias": "trunkGroupDeviceEndpoint"})

    enterprise_trunk_name: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseTrunkName"}
    )

    alternate_trunk_identity: Optional[str] = field(
        default=None, metadata={"alias": "alternateTrunkIdentity"}
    )

    alternate_trunk_identity_domain: Optional[str] = field(
        default=None, metadata={"alias": "alternateTrunkIdentityDomain"}
    )

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )


@dataclass(kw_only=True)
class TrunkAddressingMultipleContactRead22(OCIType):
    """Trunk group endpoint that can have multiple contacts.
        alternateTrunkIdentityDomain is only used in XS mode and the AS when deployed in IMS mode.
        The following elements are only used in AS data mode and are ignored in XS data mode:
          physicalLocation

    Attributes:

        trunk_group_device_endpoint (Optional[TrunkGroupDeviceMultipleContactEndpointRead22]):

        enterprise_trunk_name (Optional[str]):

        alternate_trunk_identity (Optional[str]):

        alternate_trunk_identity_domain (Optional[str]):

        physical_location (Optional[str]):

    """

    trunk_group_device_endpoint: Optional[
        TrunkGroupDeviceMultipleContactEndpointRead22
    ] = field(default=None, metadata={"alias": "trunkGroupDeviceEndpoint"})

    enterprise_trunk_name: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseTrunkName"}
    )

    alternate_trunk_identity: Optional[str] = field(
        default=None, metadata={"alias": "alternateTrunkIdentity"}
    )

    alternate_trunk_identity_domain: Optional[str] = field(
        default=None, metadata={"alias": "alternateTrunkIdentityDomain"}
    )

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )


@dataclass(kw_only=True)
class ReplacementCombinedGroupServiceAuthorizationList(OCIType):
    """A list of group services that replaces a previously authorized group services.

    Attributes:

        group_service_authorization (List[CombinedGroupServiceAuthorization]):

    """

    group_service_authorization: List[CombinedGroupServiceAuthorization] = field(
        metadata={"alias": "groupServiceAuthorization"}
    )


@dataclass(kw_only=True)
class ReplacementCombinedUserServiceAssignmentList(OCIType):
    """A list of user services that replaces existing user services assgined to the user.

      If a service is already assigned to the user, the service quantitiy will be updated if included.

    Attributes:

        service_name (List[CombinedUserServiceAssignment]):

    """

    service_name: List[CombinedUserServiceAssignment] = field(
        metadata={"alias": "serviceName"}
    )


@dataclass(kw_only=True)
class ReplacementConsolidatedUserServiceAssignmentList(OCIType):
    """A list of user services that replaces existing user services assigned to the user.
        If a service is not authorized to the group, the service will be authorized. The authorizedQuantity will be used if provided; otherwise, the service quantity will be set to unlimited. The command will fail if the authorized Quantity set at the service provider is insufficient.
        If a service is already authorized to the group, the service quantity will be ignored if included.

    Attributes:

        user_service_service_name (List[ConsolidatedUserServiceAssignment]):

    """

    user_service_service_name: List[ConsolidatedUserServiceAssignment] = field(
        metadata={"alias": "userServiceServiceName"}
    )


@dataclass(kw_only=True)
class ReplacementCombinedUserServiceAuthorizationList(OCIType):
    """A list of user services that replaces a previously authorized user services.

    Attributes:

        user_service_authorization (List[CombinedUserServiceAuthorization]):

    """

    user_service_authorization: List[CombinedUserServiceAuthorization] = field(
        metadata={"alias": "userServiceAuthorization"}
    )


@dataclass(kw_only=True)
class ConsolidatedGroupProperties(OCIType):
    """

    Attributes:

        default_domain (str):

        user_limit (int):

        group_name (Optional[str]):

        calling_line_id_name (Optional[str]):

        time_zone (Optional[str]):

        location_dialing_code (Optional[str]):

        contact (Optional[Contact]):

        address (Optional[StreetAddress]):

        network_class_of_service (Optional[List[str]]):

        default_network_class_of_service (Optional[DefaultNetworkClassOfService]):

        group_service (Optional[List[ConsolidatedGroupServiceAssignment]]):

        service_policy (Optional[str]):

    """

    default_domain: str = field(metadata={"alias": "defaultDomain"})

    user_limit: int = field(metadata={"alias": "userLimit"})

    group_name: Optional[str] = field(default=None, metadata={"alias": "groupName"})

    calling_line_id_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdName"}
    )

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    location_dialing_code: Optional[str] = field(
        default=None, metadata={"alias": "locationDialingCode"}
    )

    contact: Optional[Contact] = field(default=None, metadata={"alias": "contact"})

    address: Optional[StreetAddress] = field(
        default=None, metadata={"alias": "address"}
    )

    network_class_of_service: Optional[List[str]] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    default_network_class_of_service: Optional[DefaultNetworkClassOfService] = field(
        default=None, metadata={"alias": "defaultNetworkClassOfService"}
    )

    group_service: Optional[List[ConsolidatedGroupServiceAssignment]] = field(
        default=None, metadata={"alias": "groupService"}
    )

    service_policy: Optional[str] = field(
        default=None, metadata={"alias": "servicePolicy"}
    )


@dataclass(kw_only=True)
class ReplacementConsolidatedServicePackAssignmentList(OCIType):
    """A list of service packs that replaces existing service packs assigned to the user.
        If a service pack is not authorized to the group, the service will be authorized. The authorizedQuantity will be used if provided; otherwise, the service quantity will be set to unlimited. The command will fail if the authorized Quantity set at the service provider is insufficient
        If a service pack is already authorized to the group, the service quantity will be ignored if included.

    Attributes:

        service_pack (List[ConsolidatedServicePackAssignment]):

    """

    service_pack: List[ConsolidatedServicePackAssignment] = field(
        metadata={"alias": "servicePack"}
    )


@dataclass(kw_only=True)
class ReplacementCombinedServicePackAssignmentList(OCIType):
    """A list of service packs that replaces existing service packs assgined to the user.

      If a service pack is already assigned to the user, the service quantitiy will be updated if included.

    Attributes:

        service_pack (List[CombinedServicePackAssignment]):

    """

    service_pack: List[CombinedServicePackAssignment] = field(
        metadata={"alias": "servicePack"}
    )


@dataclass(kw_only=True)
class ReplacementCombinedServicePackAuthorizationList(OCIType):
    """A list of service packs that replaces previously authorized service packs.

    Attributes:

        service_pack_authorization (List[CombinedServicePackAuthorization]):

    """

    service_pack_authorization: List[CombinedServicePackAuthorization] = field(
        metadata={"alias": "servicePackAuthorization"}
    )


@dataclass(kw_only=True)
class EnhancedCallLogsNumberFilter(OCIType):
    """Filter criteria based on the called number or number called.

    Attributes:

        include_basic_call_type (Optional[List[str]]):

        include_call_category (Optional[List[str]]):

        include_configurable_call_type (Optional[List[str]]):

        search_criteria_dialed_number (Optional[List[SearchCriteriaOutgoingDNorSIPURI]]):

        search_criteria_called_number (Optional[List[SearchCriteriaOutgoingDNorSIPURI]]):

        search_criteria_network_translated_number (Optional[List[SearchCriteriaOutgoingDNorSIPURI]]):

        search_criteria_calling_presentation_number (Optional[List[SearchCriteriaOutgoingDNorSIPURI]]):

    """

    include_basic_call_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "includeBasicCallType"}
    )

    include_call_category: Optional[List[str]] = field(
        default=None, metadata={"alias": "includeCallCategory"}
    )

    include_configurable_call_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "includeConfigurableCallType"}
    )

    search_criteria_dialed_number: Optional[List[SearchCriteriaOutgoingDNorSIPURI]] = (
        field(default=None, metadata={"alias": "searchCriteriaDialedNumber"})
    )

    search_criteria_called_number: Optional[List[SearchCriteriaOutgoingDNorSIPURI]] = (
        field(default=None, metadata={"alias": "searchCriteriaCalledNumber"})
    )

    search_criteria_network_translated_number: Optional[
        List[SearchCriteriaOutgoingDNorSIPURI]
    ] = field(default=None, metadata={"alias": "searchCriteriaNetworkTranslatedNumber"})

    search_criteria_calling_presentation_number: Optional[
        List[SearchCriteriaOutgoingDNorSIPURI]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaCallingPresentationNumber"}
    )


@dataclass(kw_only=True)
class EnhancedCallLogsRedirectedNumberFilter23(OCIType):
    """Filter criteria based on the transferred/forwarded number.

    Attributes:

        redirected_call (Optional[EnhancedCallLogsRedirectedCallSelection23]):

        include_service_invocation_basic_call_type (Optional[List[str]]):

        include_service_invocation_call_category (Optional[List[str]]):

        include_service_invocation_configurable_call_type (Optional[List[str]]):

        search_criteria_service_invocation_dialed_number (Optional[List[SearchCriteriaOutgoingDNorSIPURI]]):

        search_criteria_service_invocation_called_number (Optional[List[SearchCriteriaOutgoingDNorSIPURI]]):

        search_criteria_service_invocation_network_translated_number (Optional[List[SearchCriteriaOutgoingDNorSIPURI]]):

    """

    redirected_call: Optional[EnhancedCallLogsRedirectedCallSelection23] = field(
        default=None, metadata={"alias": "redirectedCall"}
    )

    include_service_invocation_basic_call_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "includeServiceInvocationBasicCallType"}
    )

    include_service_invocation_call_category: Optional[List[str]] = field(
        default=None, metadata={"alias": "includeServiceInvocationCallCategory"}
    )

    include_service_invocation_configurable_call_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "includeServiceInvocationConfigurableCallType"}
    )

    search_criteria_service_invocation_dialed_number: Optional[
        List[SearchCriteriaOutgoingDNorSIPURI]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaServiceInvocationDialedNumber"}
    )

    search_criteria_service_invocation_called_number: Optional[
        List[SearchCriteriaOutgoingDNorSIPURI]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaServiceInvocationCalledNumber"}
    )

    search_criteria_service_invocation_network_translated_number: Optional[
        List[SearchCriteriaOutgoingDNorSIPURI]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaServiceInvocationNetworkTranslatedNumber"},
    )


@dataclass(kw_only=True)
class SortOrderServiceProviderAdminGetPagedSortedList(OCIType):
    """Used to sort the ServiceProviderAdminGetPagedSortedListRequest request.

    Attributes:

        sort_by_admin_id (Optional[SortByAdminId]):

        sort_by_admin_last_name (Optional[SortByAdminLastName]):

        sort_by_admin_first_name (Optional[SortByAdminFirstName]):

    """

    sort_by_admin_id: Optional[SortByAdminId] = field(
        default=None, metadata={"alias": "sortByAdminId"}
    )

    sort_by_admin_last_name: Optional[SortByAdminLastName] = field(
        default=None, metadata={"alias": "sortByAdminLastName"}
    )

    sort_by_admin_first_name: Optional[SortByAdminFirstName] = field(
        default=None, metadata={"alias": "sortByAdminFirstName"}
    )


@dataclass(kw_only=True)
class SortOrderGroupAdminGetPagedSortedList(OCIType):
    """Used to sort the GroupAdminGetPagedSortedListRequest request.

    Attributes:

        sort_by_admin_id (Optional[SortByAdminId]):

        sort_by_admin_last_name (Optional[SortByAdminLastName]):

        sort_by_admin_first_name (Optional[SortByAdminFirstName]):

    """

    sort_by_admin_id: Optional[SortByAdminId] = field(
        default=None, metadata={"alias": "sortByAdminId"}
    )

    sort_by_admin_last_name: Optional[SortByAdminLastName] = field(
        default=None, metadata={"alias": "sortByAdminLastName"}
    )

    sort_by_admin_first_name: Optional[SortByAdminFirstName] = field(
        default=None, metadata={"alias": "sortByAdminFirstName"}
    )


@dataclass(kw_only=True)
class SortOrderGroupGetListInServiceProviderPagedSortedList(OCIType):
    """Used to sort the GroupGetListInServiceProviderPagedSortedListRequest request.

    Attributes:

        sort_by_group_id (Optional[SortByGroupId]):

        sort_by_group_name (Optional[SortByGroupName]):

    """

    sort_by_group_id: Optional[SortByGroupId] = field(
        default=None, metadata={"alias": "sortByGroupId"}
    )

    sort_by_group_name: Optional[SortByGroupName] = field(
        default=None, metadata={"alias": "sortByGroupName"}
    )


@dataclass(kw_only=True)
class SortOrderServiceProviderGetPagedSortedList(OCIType):
    """Used to sort the ServiceProviderGetPagedSortedListRequest request.

    Attributes:

        sort_by_service_provider_id (Optional[SortByServiceProviderId]):

        sort_by_service_provider_name (Optional[SortByServiceProviderName]):

    """

    sort_by_service_provider_id: Optional[SortByServiceProviderId] = field(
        default=None, metadata={"alias": "sortByServiceProviderId"}
    )

    sort_by_service_provider_name: Optional[SortByServiceProviderName] = field(
        default=None, metadata={"alias": "sortByServiceProviderName"}
    )


@dataclass(kw_only=True)
class SortOrderGroupAccessDeviceGetPagedSortedList(OCIType):
    """Used to sort the GroupAccessDeviceGetPagedSortedListRequest request.

    Attributes:

        sort_by_device_name (Optional[SortByDeviceName]):

        sort_by_device_type (Optional[SortByDeviceType]):

        sort_by_device_net_address (Optional[SortByDeviceNetAddress]):

        sort_by_device_mac_address (Optional[SortByDeviceMACAddress]):

    """

    sort_by_device_name: Optional[SortByDeviceName] = field(
        default=None, metadata={"alias": "sortByDeviceName"}
    )

    sort_by_device_type: Optional[SortByDeviceType] = field(
        default=None, metadata={"alias": "sortByDeviceType"}
    )

    sort_by_device_net_address: Optional[SortByDeviceNetAddress] = field(
        default=None, metadata={"alias": "sortByDeviceNetAddress"}
    )

    sort_by_device_mac_address: Optional[SortByDeviceMACAddress] = field(
        default=None, metadata={"alias": "sortByDeviceMACAddress"}
    )


@dataclass(kw_only=True)
class SortOrderGroupCollaborateBridgeGetAvailableUserPagedSortedList(OCIType):
    """Used to sort the GroupCollaborateBridgeGetAvailableUserPagedSortedListRequest request.

    Attributes:

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

    """

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )


@dataclass(kw_only=True)
class SortOrderGroupCallParkGetAvailableAlternateRecallUserPagedSortedList(OCIType):
    """Used to sort the GroupCallParkGetAvailableAlternateRecallUserPagedSortedListRequest request.

    Attributes:

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_department_name (Optional[SortByDepartmentName]):

    """

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_department_name: Optional[SortByDepartmentName] = field(
        default=None, metadata={"alias": "sortByDepartmentName"}
    )


@dataclass(kw_only=True)
class SortOrderGroupAutoAttendantGetInstancePagedSortedList(OCIType):
    """Used to sort the GroupAutoAttendantGetInstancePagedSortedListRequest request.

    Attributes:

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

    """

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )


@dataclass(kw_only=True)
class SortOrderGroupHuntGroupGetAvailableUserPagedSortedList(OCIType):
    """Used to sort the GroupHuntGroupGetAvailableUserPagedSortedListRequest request.

    Attributes:

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

    """

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )


@dataclass(kw_only=True)
class SortOrderGroupDnGetAssignmentPagedSortedList(OCIType):
    """Used to sort the GroupDnGetAssignmentPagedSortedListRequest request.

    Attributes:

        sort_by_dn (Optional[SortByDn]):

        sort_by_department_name (Optional[SortByDepartmentName]):

        sort_by_dn_activated (Optional[SortByDnActivated]):

        sort_by_dn_available (Optional[SortByDnAvailable]):

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_email_address (Optional[SortByEmailAddress]):

    """

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_department_name: Optional[SortByDepartmentName] = field(
        default=None, metadata={"alias": "sortByDepartmentName"}
    )

    sort_by_dn_activated: Optional[SortByDnActivated] = field(
        default=None, metadata={"alias": "sortByDnActivated"}
    )

    sort_by_dn_available: Optional[SortByDnAvailable] = field(
        default=None, metadata={"alias": "sortByDnAvailable"}
    )

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_email_address: Optional[SortByEmailAddress] = field(
        default=None, metadata={"alias": "sortByEmailAddress"}
    )


@dataclass(kw_only=True)
class SortOrderGroupCallPickupGetInstancePagedSorted(OCIType):
    """Used to sort the GroupCallPickupGetInstancePagedSortedRequest request.

    Attributes:

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_department_name (Optional[SortByDepartmentName]):

        sort_by_email_address (Optional[SortByEmailAddress]):

    """

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_department_name: Optional[SortByDepartmentName] = field(
        default=None, metadata={"alias": "sortByDepartmentName"}
    )

    sort_by_email_address: Optional[SortByEmailAddress] = field(
        default=None, metadata={"alias": "sortByEmailAddress"}
    )


@dataclass(kw_only=True)
class SortOrderGroupCollaborateBridgeGetInstancePagedSortedList(OCIType):
    """Used to sort the GroupCollaborateBridgeGetInstancePagedSortedListRequest.

    Attributes:

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

    """

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )


@dataclass(kw_only=True)
class SortOrderEnterpriseCallCenterAgentThresholdProfileGetPagedSorted(OCIType):
    """Used to sort the EnterpriseCallCenterAgentThresholdProfileGetPagedSortedRequest request.

    Attributes:

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_department_name (Optional[SortByDepartmentName]):

        sort_by_email_address (Optional[SortByEmailAddress]):

    """

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_department_name: Optional[SortByDepartmentName] = field(
        default=None, metadata={"alias": "sortByDepartmentName"}
    )

    sort_by_email_address: Optional[SortByEmailAddress] = field(
        default=None, metadata={"alias": "sortByEmailAddress"}
    )


@dataclass(kw_only=True)
class SortOrderGroupCallCenterAgentThresholdProfileGetPagedSorted(OCIType):
    """Used to sort the GroupCallCenterAgentThresholdProfileGetPagedSortedRequest request.

    Attributes:

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_department_name (Optional[SortByDepartmentName]):

        sort_by_email_address (Optional[SortByEmailAddress]):

    """

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_department_name: Optional[SortByDepartmentName] = field(
        default=None, metadata={"alias": "sortByDepartmentName"}
    )

    sort_by_email_address: Optional[SortByEmailAddress] = field(
        default=None, metadata={"alias": "sortByEmailAddress"}
    )


@dataclass(kw_only=True)
class SortOrderGroupCallParkGetAvailableUserPagedSortedList(OCIType):
    """Used to sort the GroupCallParkGetAvailableUserPagedSortedListRequest request.

    Attributes:

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_department_name (Optional[SortByDepartmentName]):

        sort_by_email_address (Optional[SortByEmailAddress]):

    """

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_department_name: Optional[SortByDepartmentName] = field(
        default=None, metadata={"alias": "sortByDepartmentName"}
    )

    sort_by_email_address: Optional[SortByEmailAddress] = field(
        default=None, metadata={"alias": "sortByEmailAddress"}
    )


@dataclass(kw_only=True)
class SortOrderGroupCallCenterGetAvailableAgentPagedSortedList(OCIType):
    """Used to sort the GroupCallCenterGetAvailableAgentPagedSortedListRequest request.

    Attributes:

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_department_name (Optional[SortByDepartmentName]):

        sort_by_email_address (Optional[SortByEmailAddress]):

    """

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_department_name: Optional[SortByDepartmentName] = field(
        default=None, metadata={"alias": "sortByDepartmentName"}
    )

    sort_by_email_address: Optional[SortByEmailAddress] = field(
        default=None, metadata={"alias": "sortByEmailAddress"}
    )


@dataclass(kw_only=True)
class SortOrderGroupCallPickupGetAvailableUserPagedSortedList(OCIType):
    """Used to sort the GroupCallPickupGetAvailableUserPagedSortedListRequest request.

    Attributes:

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_department_name (Optional[SortByDepartmentName]):

        sort_by_email_address (Optional[SortByEmailAddress]):

    """

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_department_name: Optional[SortByDepartmentName] = field(
        default=None, metadata={"alias": "sortByDepartmentName"}
    )

    sort_by_email_address: Optional[SortByEmailAddress] = field(
        default=None, metadata={"alias": "sortByEmailAddress"}
    )


@dataclass(kw_only=True)
class SortOrderGroupHuntGroupGetInstancePagedSortedList(OCIType):
    """Used to sort the GroupHuntGroupGetInstancePagedSortedListRequest request.

    Attributes:

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

    """

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )


@dataclass(kw_only=True)
class SortOrderUserGetListInGroupPagedSortedList(OCIType):
    """Used to sort the UserGetListInGroupPagedSortedListRequest request.

    Attributes:

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_department_name (Optional[SortByDepartmentName]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_email_address (Optional[SortByEmailAddress]):

    """

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_department_name: Optional[SortByDepartmentName] = field(
        default=None, metadata={"alias": "sortByDepartmentName"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_email_address: Optional[SortByEmailAddress] = field(
        default=None, metadata={"alias": "sortByEmailAddress"}
    )


@dataclass(kw_only=True)
class SortOrderEnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentPagedSortedList(
    OCIType
):
    """Used to sort the SortOrderEnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentPagedSortedListRequest.

    Attributes:

        sort_by_mobile_directory_number (Optional[SortByMobileDirectoryNumber]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_department_name (Optional[SortByDepartmentName]):

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_dn_available (Optional[SortByDnAvailable]):

    """

    sort_by_mobile_directory_number: Optional[SortByMobileDirectoryNumber] = field(
        default=None, metadata={"alias": "sortByMobileDirectoryNumber"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_department_name: Optional[SortByDepartmentName] = field(
        default=None, metadata={"alias": "sortByDepartmentName"}
    )

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_dn_available: Optional[SortByDnAvailable] = field(
        default=None, metadata={"alias": "sortByDnAvailable"}
    )


@dataclass(kw_only=True)
class SortOrderEnterprisePhoneDirectoryGetPagedSortedList(OCIType):
    """Used to sort the EnterprisePhoneDirectoryGetPagedSortedListRequest request.

    Attributes:

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_group_location_code (Optional[SortByGroupLocationCode]):

        sort_by_mobile_phone_number (Optional[SortByMobilePhoneNumber]):

        sort_by_email_address (Optional[SortByEmailAddress]):

        sort_by_department_name (Optional[SortByDepartmentName]):

        sort_by_group_name (Optional[SortByGroupName]):

        sort_by_yahoo_id (Optional[SortByYahooId]):

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_imp_id (Optional[SortByImpId]):

    """

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_group_location_code: Optional[SortByGroupLocationCode] = field(
        default=None, metadata={"alias": "sortByGroupLocationCode"}
    )

    sort_by_mobile_phone_number: Optional[SortByMobilePhoneNumber] = field(
        default=None, metadata={"alias": "sortByMobilePhoneNumber"}
    )

    sort_by_email_address: Optional[SortByEmailAddress] = field(
        default=None, metadata={"alias": "sortByEmailAddress"}
    )

    sort_by_department_name: Optional[SortByDepartmentName] = field(
        default=None, metadata={"alias": "sortByDepartmentName"}
    )

    sort_by_group_name: Optional[SortByGroupName] = field(
        default=None, metadata={"alias": "sortByGroupName"}
    )

    sort_by_yahoo_id: Optional[SortByYahooId] = field(
        default=None, metadata={"alias": "sortByYahooId"}
    )

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_imp_id: Optional[SortByImpId] = field(
        default=None, metadata={"alias": "sortByImpId"}
    )


@dataclass(kw_only=True)
class SortOrderGroupPhoneDirectoryGetPagedSortedList(OCIType):
    """Used to sort the GroupPhoneDirectoryGetPagedSortedListRequest request.

    Attributes:

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_mobile_phone_number (Optional[SortByMobilePhoneNumber]):

        sort_by_email_address (Optional[SortByEmailAddress]):

        sort_by_department_name (Optional[SortByDepartmentName]):

        sort_by_yahoo_id (Optional[SortByYahooId]):

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_imp_id (Optional[SortByImpId]):

    """

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_mobile_phone_number: Optional[SortByMobilePhoneNumber] = field(
        default=None, metadata={"alias": "sortByMobilePhoneNumber"}
    )

    sort_by_email_address: Optional[SortByEmailAddress] = field(
        default=None, metadata={"alias": "sortByEmailAddress"}
    )

    sort_by_department_name: Optional[SortByDepartmentName] = field(
        default=None, metadata={"alias": "sortByDepartmentName"}
    )

    sort_by_yahoo_id: Optional[SortByYahooId] = field(
        default=None, metadata={"alias": "sortByYahooId"}
    )

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_imp_id: Optional[SortByImpId] = field(
        default=None, metadata={"alias": "sortByImpId"}
    )


@dataclass(kw_only=True)
class SortOrderEnterpriseCallCenterAgentThresholdProfileGetAvailableAgentPagedSortedList(
    OCIType
):
    """Used to sort the EnterpriseCallCenterAgentThresholdProfileGetAvailableAgentPagedSortedListRequest request.

    Attributes:

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_department_name (Optional[SortByDepartmentName]):

        sort_by_email_address (Optional[SortByEmailAddress]):

        sort_by_agent_threshold_profile (Optional[SortByAgentThresholdProfile]):

    """

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_department_name: Optional[SortByDepartmentName] = field(
        default=None, metadata={"alias": "sortByDepartmentName"}
    )

    sort_by_email_address: Optional[SortByEmailAddress] = field(
        default=None, metadata={"alias": "sortByEmailAddress"}
    )

    sort_by_agent_threshold_profile: Optional[SortByAgentThresholdProfile] = field(
        default=None, metadata={"alias": "sortByAgentThresholdProfile"}
    )


@dataclass(kw_only=True)
class SortOrderGroupCallCenterAgentThresholdProfileGetAvailableAgentPagedSortedList(
    OCIType
):
    """Used to sort the GroupCallCenterAgentThresholdProfileGetAvailableAgentPagedSortedListRequest request.

    Attributes:

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_department_name (Optional[SortByDepartmentName]):

        sort_by_email_address (Optional[SortByEmailAddress]):

        sort_by_agent_threshold_profile (Optional[SortByAgentThresholdProfile]):

    """

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_department_name: Optional[SortByDepartmentName] = field(
        default=None, metadata={"alias": "sortByDepartmentName"}
    )

    sort_by_email_address: Optional[SortByEmailAddress] = field(
        default=None, metadata={"alias": "sortByEmailAddress"}
    )

    sort_by_agent_threshold_profile: Optional[SortByAgentThresholdProfile] = field(
        default=None, metadata={"alias": "sortByAgentThresholdProfile"}
    )


@dataclass(kw_only=True)
class SortOrderGroupCallCenterGetInstancePagedSortedList(OCIType):
    """Used to sort the GroupCallCenterGetInstancePagedSortedListRequest request.

    Attributes:

        sort_by_user_id (Optional[SortByUserId]):

        sort_by_call_center_name (Optional[SortByCallCenterName]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_department_name (Optional[SortByDepartmentName]):

        sort_by_hunt_policy (Optional[SortByHuntPolicy]):

        sort_by_call_center_type (Optional[SortByCallCenterType]):

    """

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    sort_by_call_center_name: Optional[SortByCallCenterName] = field(
        default=None, metadata={"alias": "sortByCallCenterName"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_department_name: Optional[SortByDepartmentName] = field(
        default=None, metadata={"alias": "sortByDepartmentName"}
    )

    sort_by_hunt_policy: Optional[SortByHuntPolicy] = field(
        default=None, metadata={"alias": "sortByHuntPolicy"}
    )

    sort_by_call_center_type: Optional[SortByCallCenterType] = field(
        default=None, metadata={"alias": "sortByCallCenterType"}
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanDigitPatternCallMeNowDepartmentPermissions(OCIType):
    """Outgoing Calling Plan Call Me Now call permissions for specified digit patterns.

    Attributes:

        department_key (DepartmentKey):

        department_name (str):

        digit_pattern_permissions (OutgoingCallingPlanDigitPatternCallMeNowPermissions):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    department_name: str = field(metadata={"alias": "departmentName"})

    digit_pattern_permissions: OutgoingCallingPlanDigitPatternCallMeNowPermissions = (
        field(metadata={"alias": "digitPatternPermissions"})
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanDigitPatternCallMeNowDepartmentPermissionsModify(OCIType):
    """Modify outgoing Calling Plan Call Me Now call permissions for specified digit patterns.

    Attributes:

        department_key (DepartmentKey):

        digit_pattern_permissions (OutgoingCallingPlanDigitPatternCallMeNowPermissions):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    digit_pattern_permissions: OutgoingCallingPlanDigitPatternCallMeNowPermissions = (
        field(metadata={"alias": "digitPatternPermissions"})
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanDigitPatternOriginatingDepartmentPermissions(OCIType):
    """Outgoing Calling Plan originating call permissions for specified digit patterns.

    Attributes:

        department_key (DepartmentKey):

        department_name (str):

        digit_pattern_permissions (OutgoingCallingPlanDigitPatternOriginatingPermissions):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    department_name: str = field(metadata={"alias": "departmentName"})

    digit_pattern_permissions: OutgoingCallingPlanDigitPatternOriginatingPermissions = (
        field(metadata={"alias": "digitPatternPermissions"})
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanDigitPatternOriginatingDepartmentPermissionsModify(OCIType):
    """Modify outgoing Calling Plan originating call permissions for specified digit patterns.

    Attributes:

        department_key (DepartmentKey):

        digit_pattern_permissions (OutgoingCallingPlanDigitPatternOriginatingPermissions):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    digit_pattern_permissions: OutgoingCallingPlanDigitPatternOriginatingPermissions = (
        field(metadata={"alias": "digitPatternPermissions"})
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanDigitPatternRedirectingDepartmentPermissionsModify(OCIType):
    """Modify outgoing Calling Plan redirecting call permissions for specified digit patterns.

    Attributes:

        department_key (DepartmentKey):

        digit_pattern_permissions (OutgoingCallingPlanDigitPatternRedirectingPermissions):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    digit_pattern_permissions: OutgoingCallingPlanDigitPatternRedirectingPermissions = (
        field(metadata={"alias": "digitPatternPermissions"})
    )


@dataclass(kw_only=True)
class OutgoingCallingPlanDigitPatternRedirectingDepartmentPermissions(OCIType):
    """Outgoing Calling Plan redirecting call permissions for specified digit patterns.

    Attributes:

        department_key (DepartmentKey):

        department_name (str):

        digit_pattern_permissions (OutgoingCallingPlanDigitPatternRedirectingPermissions):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    department_name: str = field(metadata={"alias": "departmentName"})

    digit_pattern_permissions: OutgoingCallingPlanDigitPatternRedirectingPermissions = (
        field(metadata={"alias": "digitPatternPermissions"})
    )


@dataclass(kw_only=True)
class OutgoingPinholeDigitPlanDigitPatternCallMeNowDepartmentPermissions(OCIType):
    """Outgoing Pinhole Digit Plan Call Me Now call permissions for a department.

    Attributes:

        department_key (DepartmentKey):

        department_name (str):

        permissions (OutgoingPinholeDigitPlanDigitPatternCallMeNowPermissions):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    department_name: str = field(metadata={"alias": "departmentName"})

    permissions: OutgoingPinholeDigitPlanDigitPatternCallMeNowPermissions = field(
        metadata={"alias": "permissions"}
    )


@dataclass(kw_only=True)
class OutgoingPinholeDigitPlanDigitPatternCallMeNowDepartmentPermissionsModify(OCIType):
    """Modify Outgoing Pinhole Digit Plan Call Me Now call permissions for specified digit patterns.

    Attributes:

        department_key (DepartmentKey):

        digit_pattern_permissions (OutgoingPinholeDigitPlanDigitPatternCallMeNowPermissions):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    digit_pattern_permissions: OutgoingPinholeDigitPlanDigitPatternCallMeNowPermissions = field(
        metadata={"alias": "digitPatternPermissions"}
    )


@dataclass(kw_only=True)
class OutgoingPinholeDigitPlanDigitPatternOriginatingDepartmentPermissions(OCIType):
    """Outgoing Pinhole Digit Plan department originating call permissions for specified digit patterns.

    Attributes:

        department_key (DepartmentKey):

        department_name (str):

        digit_pattern_permissions (OutgoingPinholeDigitPlanDigitPatternOriginatingPermissions):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    department_name: str = field(metadata={"alias": "departmentName"})

    digit_pattern_permissions: OutgoingPinholeDigitPlanDigitPatternOriginatingPermissions = field(
        metadata={"alias": "digitPatternPermissions"}
    )


@dataclass(kw_only=True)
class OutgoingPinholeDigitPlanDigitPatternOriginatingDepartmentPermissionsModify(
    OCIType
):
    """Modify Outgoing Pinhole Digit Plan originating call permissions for specified digit patterns.

    Attributes:

        department_key (DepartmentKey):

        digit_pattern_permissions (OutgoingPinholeDigitPlanDigitPatternOriginatingPermissions):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    digit_pattern_permissions: OutgoingPinholeDigitPlanDigitPatternOriginatingPermissions = field(
        metadata={"alias": "digitPatternPermissions"}
    )


@dataclass(kw_only=True)
class OutgoingPinholeDigitPlanDigitPatternRedirectingDepartmentPermissionsModify(
    OCIType
):
    """Modify Outgoing Pinhole Digit Plan redirecting call permissions for specified digit patterns.

    Attributes:

        department_key (DepartmentKey):

        digit_pattern_permissions (OutgoingPinholeDigitPlanDigitPatternRedirectingPermissions):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    digit_pattern_permissions: OutgoingPinholeDigitPlanDigitPatternRedirectingPermissions = field(
        metadata={"alias": "digitPatternPermissions"}
    )


@dataclass(kw_only=True)
class OutgoingPinholeDigitPlanDigitPatternRedirectingDepartmentPermissions(OCIType):
    """Outgoing Pinhole Digit Plan initiating call forwards/transfer permissions for a department.

    Attributes:

        department_key (DepartmentKey):

        department_name (str):

        permissions (OutgoingPinholeDigitPlanDigitPatternRedirectingPermissions):

    """

    department_key: DepartmentKey = field(metadata={"alias": "departmentKey"})

    department_name: str = field(metadata={"alias": "departmentName"})

    permissions: OutgoingPinholeDigitPlanDigitPatternRedirectingPermissions = field(
        metadata={"alias": "permissions"}
    )


@dataclass(kw_only=True)
class ReplacementEnterpriseEnterpriseTrunkPriorityWeightedTrunkGroupList(OCIType):
    """A list of enterprise trunk priority weighted trunk groups that replaces a previously configured list.
        By convention, an element of this type may be set nill to clear the list.

    Attributes:

        trunk_group (List[EnterpriseEnterpriseTrunkPriorityWeightedTrunkGroup]):

    """

    trunk_group: List[EnterpriseEnterpriseTrunkPriorityWeightedTrunkGroup] = field(
        metadata={"alias": "trunkGroup"}
    )


@dataclass(kw_only=True)
class ProfileAndServicePreAlertingAnnouncementInfo(OCIType):
    """This is the configuration parameters for Pre Alerting Announcement service

                The criteria table's column headings are: \"Is Active\", \"Criteria Name\",
                \"Blacklisted\", and \"Calls From\".

                The \"Calls From\" column is a string containing call numbers

    Attributes:

        is_active (bool):

        audio_selection (str):

        audio_file_description (Optional[str]):

        audio_media_type (Optional[str]):

        audio_file_url (Optional[str]):

        video_selection (str):

        video_file_description (Optional[str]):

        video_media_type (Optional[str]):

        video_file_url (Optional[str]):

        criteria_table (OCITable):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    audio_selection: str = field(metadata={"alias": "audioSelection"})

    audio_file_description: Optional[str] = field(
        default=None, metadata={"alias": "audioFileDescription"}
    )

    audio_media_type: Optional[str] = field(
        default=None, metadata={"alias": "audioMediaType"}
    )

    audio_file_url: Optional[str] = field(
        default=None, metadata={"alias": "audioFileUrl"}
    )

    video_selection: str = field(metadata={"alias": "videoSelection"})

    video_file_description: Optional[str] = field(
        default=None, metadata={"alias": "videoFileDescription"}
    )

    video_media_type: Optional[str] = field(
        default=None, metadata={"alias": "videoMediaType"}
    )

    video_file_url: Optional[str] = field(
        default=None, metadata={"alias": "videoFileUrl"}
    )

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class ProfileAndServiceCommunicationBarringUserControlInfo(OCIType):
    """This is the configuration parameters for Communication Barring User Control service

                profileTable has column headings: \"Name\", \"Code\", \"Activated\" and \"Primary\".

    Attributes:

        lockout_status (bool):

        profile_table (OCITable):

    """

    lockout_status: bool = field(metadata={"alias": "lockoutStatus"})

    profile_table: OCITable = field(metadata={"alias": "profileTable"})


@dataclass(kw_only=True)
class CallCenterScheduledReportAgentSelectionAdminRead(OCIType):
    """Either all agents or 2 list of agents: one for current and one for past (deleted) agents.
         This is used when an admin reads a Scheduled Report.
         Each agent table has the following column headings:
         \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\" and \"Hiragana First Name\".

    Attributes:

        all_agent (Optional[bool]):

        current_agent_table (Optional[OCITable]):

        past_agent_table (Optional[OCITable]):

    """

    all_agent: Optional[bool] = field(default=None, metadata={"alias": "allAgent"})

    current_agent_table: Optional[OCITable] = field(
        default=None, metadata={"alias": "currentAgentTable"}
    )

    past_agent_table: Optional[OCITable] = field(
        default=None, metadata={"alias": "pastAgentTable"}
    )


@dataclass(kw_only=True)
class CallCenterScheduledReportAgentSelectionRead(OCIType):
    """Either all agents or list of agents.
        The agent table has the following column headings:
        \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\" and \"Hiragana First Name\".

    Attributes:

        all_agent (Optional[bool]):

        agent_table (Optional[OCITable]):

    """

    all_agent: Optional[bool] = field(default=None, metadata={"alias": "allAgent"})

    agent_table: Optional[OCITable] = field(
        default=None, metadata={"alias": "agentTable"}
    )


@dataclass(kw_only=True)
class ProfileAndServiceCallForwardingSelectiveInfo(OCIType):
    """This is the configuration parameters for Call Forwarding Selective service

                The criteria table's column headings are:
                        \"Is Active\", \"Criteria Name\", \"Time Schedule\", \"Calls From\", \"Forward To\", \"Blacklisted\", \"Holiday Schedule\"

                        The \"Calls From\" column is a string containing call numbers

    Attributes:

        is_active (bool):

        default_forward_to_phone_number (Optional[str]):

        play_ring_reminder (bool):

        criteria_table (OCITable):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    default_forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "defaultForwardToPhoneNumber"}
    )

    play_ring_reminder: bool = field(metadata={"alias": "playRingReminder"})

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class ProfileAndServiceSelectiveCallRejectionInfo(OCIType):
    """This is the configuration parameters for Selective Call Rejection service

                The criteria table's column headings are:
                \"Is Active\", \"Criteria Name\", \"Time Schedule\", \"Calls From\", \"Blacklisted\", \"Holiday Schedule\"

                The \"Calls From\" column is a string containing call numbers

    Attributes:

        criteria_table (OCITable):

    """

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class ProfileAndServiceSharedCallAppearanceInfo(OCIType):
    """This is the configuration parameters for shared call appearance service
        The endpointTable contains columns:
          \"Device Level\", \"Device Name\", \"Device Type\", \"Line/Port\", \"SIP Contact\", \"Port Number\". \"Private Identity\" .

        The \"Device Level\" column contains one of the AccessDeviceLevel enumerated constants.
        Port numbers are only used by devices with static line ordering.

    Attributes:

        alert_all_appearances_for_click_to_dial_calls (bool):

        alert_all_appearances_for_group_paging_calls (bool):

        max_appearances (int):

        allow_sca_call_retrieve (bool):

        enable_multiple_call_arrangement (bool):

        multiple_call_arrangement_is_active (bool):

        endpoint_table (OCITable):

        allow_bridging_between_locations (bool):

        bridge_warning_tone (str):

        enable_call_park_notification (bool):

        use_user_primary_with_alternate_calls_setting (bool):

        allow_simultaneous_primary_and_alternate (bool):

        restrict_call_retrieve_of_primary (bool):

        restrict_call_bridging_of_primary (bool):

    """

    alert_all_appearances_for_click_to_dial_calls: bool = field(
        metadata={"alias": "alertAllAppearancesForClickToDialCalls"}
    )

    alert_all_appearances_for_group_paging_calls: bool = field(
        metadata={"alias": "alertAllAppearancesForGroupPagingCalls"}
    )

    max_appearances: int = field(metadata={"alias": "maxAppearances"})

    allow_sca_call_retrieve: bool = field(metadata={"alias": "allowSCACallRetrieve"})

    enable_multiple_call_arrangement: bool = field(
        metadata={"alias": "enableMultipleCallArrangement"}
    )

    multiple_call_arrangement_is_active: bool = field(
        metadata={"alias": "multipleCallArrangementIsActive"}
    )

    endpoint_table: OCITable = field(metadata={"alias": "endpointTable"})

    allow_bridging_between_locations: bool = field(
        metadata={"alias": "allowBridgingBetweenLocations"}
    )

    bridge_warning_tone: str = field(metadata={"alias": "bridgeWarningTone"})

    enable_call_park_notification: bool = field(
        metadata={"alias": "enableCallParkNotification"}
    )

    use_user_primary_with_alternate_calls_setting: bool = field(
        metadata={"alias": "useUserPrimaryWithAlternateCallsSetting"}
    )

    allow_simultaneous_primary_and_alternate: bool = field(
        metadata={"alias": "allowSimultaneousPrimaryAndAlternate"}
    )

    restrict_call_retrieve_of_primary: bool = field(
        metadata={"alias": "restrictCallRetrieveOfPrimary"}
    )

    restrict_call_bridging_of_primary: bool = field(
        metadata={"alias": "restrictCallBridgingOfPrimary"}
    )


@dataclass(kw_only=True)
class ProfileAndServiceCustomRingbackInfo(OCIType):
    """This is the configuration parameters for Custom Ringback service

                        The criteria table's column headings are: \"Is Active\", \"Criteria Name\",
                        \"Time Schedule\", \"Calls From\", \"Blacklisted\", \"Holiday Schedule\".

                        The \"Calls From\" column is a string containing call numbers

    Attributes:

        criteria_table (OCITable):

    """

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class ProfileAndServiceCallNotifyInfo(OCIType):
    """This is the configuration parameters for Call Notify service

                The criteria table's column headings are: \"Is Active\",
                \"Criteria Name\", \"Time Schedule\", \"Calls From\", \"Blacklisted\" ,\"Holiday Schedule\"

                The \"Calls From\" column is a string containing call numbers

    Attributes:

        call_notify_email_address (Optional[str]):

        criteria_table (OCITable):

    """

    call_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "callNotifyEmailAddress"}
    )

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class ProfileAndServiceBusyLampFieldInfo(OCIType):
    """This is the configuration parameters for Busy Lamp Field service
                The monitoredUserTable has column headings:
                \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
                \"Phone Number\", \"Extension\", \"Department\", \"Email Address\", \"IMP Id\".

    Attributes:

        list_uri (Optional[str]):

        enable_call_park_notification (bool):

        monitored_user_table (OCITable):

    """

    list_uri: Optional[str] = field(default=None, metadata={"alias": "listURI"})

    enable_call_park_notification: bool = field(
        metadata={"alias": "enableCallParkNotification"}
    )

    monitored_user_table: OCITable = field(metadata={"alias": "monitoredUserTable"})


@dataclass(kw_only=True)
class ProfileAndServiceSimultaneousRingPersonalInfo(OCIType):
    """This is the configuration parameters for Simultaneous Ring Personal  service

                Contains a criteria table with column heading: \"Is Active\", \"Criteria Name\", \"Time Schedule\", \"Holiday Schedule\", \"Calls From\" and \"Blacklisted\".

                The \"Calls From\" column is a string containing call numbers

    Attributes:

        is_active (bool):

        do_not_ring_if_on_call (bool):

        simultaneous_ring_number (Optional[List[SimultaneousRingNumber]]):

        criteria_table (OCITable):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    do_not_ring_if_on_call: bool = field(metadata={"alias": "doNotRingIfOnCall"})

    simultaneous_ring_number: Optional[List[SimultaneousRingNumber]] = field(
        default=None, metadata={"alias": "simultaneousRingNumber"}
    )

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class AutoAttendantAddMenu20(OCIType):
    """The configuration of the automated receptionist greeting
        prompt and dialing menu to be used during after business hours.

    Attributes:

        announcement_selection (str):

        audio_file (Optional[AnnouncementFileLevelKey]):

        video_file (Optional[AnnouncementFileLevelKey]):

        enable_first_menu_level_extension_dialing (bool):

        key_configuration (Optional[List[AutoAttendantKeyConfiguration20]]):

    """

    announcement_selection: str = field(metadata={"alias": "announcementSelection"})

    audio_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    enable_first_menu_level_extension_dialing: bool = field(
        metadata={"alias": "enableFirstMenuLevelExtensionDialing"}
    )

    key_configuration: Optional[List[AutoAttendantKeyConfiguration20]] = field(
        default=None, metadata={"alias": "keyConfiguration"}
    )


@dataclass(kw_only=True)
class AutoAttendantReadMenu20(OCIType):
    """The configuration of the automated receptionist greeting
        prompt and dialing menu to be used during after business hours.

    Attributes:

        announcement_selection (str):

        audio_file (Optional[AnnouncementFileLevelKey]):

        video_file (Optional[AnnouncementFileLevelKey]):

        enable_first_menu_level_extension_dialing (bool):

        key_configuration (Optional[List[AutoAttendantKeyReadConfiguration20]]):

    """

    announcement_selection: str = field(metadata={"alias": "announcementSelection"})

    audio_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    enable_first_menu_level_extension_dialing: bool = field(
        metadata={"alias": "enableFirstMenuLevelExtensionDialing"}
    )

    key_configuration: Optional[List[AutoAttendantKeyReadConfiguration20]] = field(
        default=None, metadata={"alias": "keyConfiguration"}
    )


@dataclass(kw_only=True)
class AutoAttendantAddMenu19(OCIType):
    """The configuration of the automated receptionist
        greeting
        prompt and dialing menu to be used during
        after business
        hours.

    Attributes:

        announcement_selection (str):

        audio_file (Optional[LabeledMediaFileResource]):

        video_file (Optional[LabeledMediaFileResource]):

        enable_first_menu_level_extension_dialing (bool):

        key_configuration (Optional[List[AutoAttendantKeyConfiguration19]]):

    """

    announcement_selection: str = field(metadata={"alias": "announcementSelection"})

    audio_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    enable_first_menu_level_extension_dialing: bool = field(
        metadata={"alias": "enableFirstMenuLevelExtensionDialing"}
    )

    key_configuration: Optional[List[AutoAttendantKeyConfiguration19]] = field(
        default=None, metadata={"alias": "keyConfiguration"}
    )


@dataclass(kw_only=True)
class AuthenticationVerifyRequest22V4(OCIRequest):
    """AuthenticationVerifyRequest22V4 is used to authenticate a user either by userId/password, userId/sip username/sip password,
        dn/passcode, lineport/password or a token previously authorized with the ExternalAuthenticationAuthorizeTokenRequest.
        The phone number may be any DN associated with a user.
        The lineport may be any lineport associated with a user.
        The password used for the lineport is the user's password associated with userId.

        The response is a AuthenticationVerifyResponse22V4 or an ErrorResponse

    Attributes:

        user_id (Optional[str]):

        password (Optional[str]):

        phone_number (Optional[str]):

        passcode (Optional[str]):

        line_port (Optional[str]):

        password (Optional[str]):

        login_token (Optional[str]):

        sip_authentication_user_name (Optional[str]):

        sip_authentication_password (Optional[str]):

        user_id (Optional[str]):

    """

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    passcode: Optional[str] = field(default=None, metadata={"alias": "passcode"})

    line_port: Optional[str] = field(default=None, metadata={"alias": "linePort"})

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    login_token: Optional[str] = field(default=None, metadata={"alias": "loginToken"})

    sip_authentication_user_name: Optional[str] = field(
        default=None, metadata={"alias": "sipAuthenticationUserName"}
    )

    sip_authentication_password: Optional[str] = field(
        default=None, metadata={"alias": "sipAuthenticationPassword"}
    )

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})


@dataclass(kw_only=True)
class AvailabilityTestRequest(OCIRequest):
    """AvailabilityTestRequest is for high-availability support. Response is either SuccessResponse
        or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class CallCenterAgentAvailability(OCIRequest):
    """Specifies an agent's login state (availability) for a particular Call Center.

    Attributes:

        service_user_id (str):

        available (bool):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    available: bool = field(metadata={"alias": "available"})


@dataclass(kw_only=True)
class CallCenterAgentSettings(OCIRequest):
    """Specifies an agent's settings for a particular Call Center.
        The skillLevel only applies to Premium agents.

    Attributes:

        service_user_id (str):

        available (Optional[bool]):

        skill_level (Optional[int]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    available: Optional[bool] = field(default=None, metadata={"alias": "available"})

    skill_level: Optional[int] = field(default=None, metadata={"alias": "skillLevel"})


@dataclass(kw_only=True)
class DeviceManagementFileAuthLocationGetRequest22V4(OCIRequest):
    """Get the address and credentials of the File Repository hosting the requested access device file.
        Also get the file name and path on the File Repository.
        The response is either DeviceManagementFileAuthLocationGetResponse22V4 or ErrorResponse.
        The following elements are only used in AS data mode and will fail in XS data mode:
          deviceToken
        The following elements are only used in XS data mode and will be ignored in AS data mode:
          fileNameLookup
          fileNameOnDisk

    Attributes:

        device_access_protocol (str):

        device_access_method (str):

        device_access_uri (str):

        access_device_user_name (Optional[str]):

        access_device_user_password (Optional[str]):

        device_token (Optional[str]):

        signed_password (Optional[str]):

        mac_address (Optional[str]):

        realm_name (Optional[str]):

        digest_ha1_complement (Optional[str]):

        digest_response (Optional[str]):

        file_name_lookup (Optional[bool]):

        file_name_on_disk (Optional[str]):

    """

    device_access_protocol: str = field(metadata={"alias": "deviceAccessProtocol"})

    device_access_method: str = field(metadata={"alias": "deviceAccessMethod"})

    device_access_uri: str = field(metadata={"alias": "deviceAccessURI"})

    access_device_user_name: Optional[str] = field(
        default=None, metadata={"alias": "accessDeviceUserName"}
    )

    access_device_user_password: Optional[str] = field(
        default=None, metadata={"alias": "accessDeviceUserPassword"}
    )

    device_token: Optional[str] = field(default=None, metadata={"alias": "deviceToken"})

    signed_password: Optional[str] = field(
        default=None, metadata={"alias": "signedPassword"}
    )

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})

    realm_name: Optional[str] = field(default=None, metadata={"alias": "realmName"})

    digest_ha1_complement: Optional[str] = field(
        default=None, metadata={"alias": "digestHa1Complement"}
    )

    digest_response: Optional[str] = field(
        default=None, metadata={"alias": "digestResponse"}
    )

    file_name_lookup: Optional[bool] = field(
        default=None, metadata={"alias": "fileNameLookup"}
    )

    file_name_on_disk: Optional[str] = field(
        default=None, metadata={"alias": "fileNameOnDisk"}
    )


@dataclass(kw_only=True)
class DeviceManagementPutFileRequest(OCIRequest):
    """Informs BroadWorks that a file was uploaded to the repository. The response is always a SuccessResponse.

    Attributes:

        device_access_uri (str):

        ip_address (str):

    """

    device_access_uri: str = field(metadata={"alias": "deviceAccessURI"})

    ip_address: str = field(metadata={"alias": "ipAddress"})


@dataclass(kw_only=True)
class EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentListRequest(
    OCIRequest
):
    """Request a summary table of all Mobile Subscriber Directory Numbers in an enterprise.
        The response is either EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_mobile_subscriber_directory_number (Optional[List[SearchCriteriaMobileSubscriberDirectoryNumber]]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_mobile_network (Optional[SearchCriteriaExactMobileNetwork]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_mobile_subscriber_directory_number: Optional[
        List[SearchCriteriaMobileSubscriberDirectoryNumber]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaMobileSubscriberDirectoryNumber"},
    )

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_mobile_network: Optional[SearchCriteriaExactMobileNetwork] = (
        field(default=None, metadata={"alias": "searchCriteriaExactMobileNetwork"})
    )


@dataclass(kw_only=True)
class EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentPagedSortedListRequest22(
    OCIRequest
):
    """Request a summary table of all Mobile Subscriber Directory Numbers in an enterprise.
        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the  responsePageSize will be set to  the maximum ResponsePageSize by default.
        If no sortOrder is included the response is sorted by Mobile Number ascending by default.
        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.
        The department in both the search criteria and sort by fields refer to the department of the user.
        The response is either EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentPagedSortedListResponse22 or ErrorResponse.

    Attributes:

        service_provider_id (str):

        include_total_number_of_rows (Optional[bool]):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderEnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentPagedSortedList]]):

        search_criteria_mobile_subscriber_directory_number (Optional[List[SearchCriteriaMobileSubscriberDirectoryNumber]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_exact_mobile_network (Optional[List[SearchCriteriaExactMobileNetwork]]):

        search_criteria_exact_mobile_dn_availability (Optional[SearchCriteriaExactMobileDnAvailability]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    include_total_number_of_rows: Optional[bool] = field(
        default=None, metadata={"alias": "includeTotalNumberOfRows"}
    )

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[
        List[
            SortOrderEnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentPagedSortedList
        ]
    ] = field(default=None, metadata={"alias": "sortOrder"})

    search_criteria_mobile_subscriber_directory_number: Optional[
        List[SearchCriteriaMobileSubscriberDirectoryNumber]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaMobileSubscriberDirectoryNumber"},
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_exact_mobile_network: Optional[
        List[SearchCriteriaExactMobileNetwork]
    ] = field(default=None, metadata={"alias": "searchCriteriaExactMobileNetwork"})

    search_criteria_exact_mobile_dn_availability: Optional[
        SearchCriteriaExactMobileDnAvailability
    ] = field(
        default=None, metadata={"alias": "searchCriteriaExactMobileDnAvailability"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailableListRequest22(
    OCIRequest
):
    """Request a list of available Mobile Subscriber Directory Numbers not yet assigned to any user.
        The response is either EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailableListResponse22 or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailablePagedSortedListRequest22(
    OCIRequest
):
    """Request a list of available Mobile Subscriber Directory Numbers not yet assigned to any user.
        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        If no sortOrder is included the response is sorted by Mobile Number ascending by default.
        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.
        The response is either EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailablePagedSortedListResponse22 or ErrorResponse.

    Attributes:

        service_provider_id (str):

        include_total_number_of_rows (Optional[bool]):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_by_mobile_directory_number (Optional[SortByMobileDirectoryNumber]):

        search_criteria_mobile_subscriber_directory_number (Optional[List[SearchCriteriaMobileSubscriberDirectoryNumber]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    include_total_number_of_rows: Optional[bool] = field(
        default=None, metadata={"alias": "includeTotalNumberOfRows"}
    )

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_by_mobile_directory_number: Optional[SortByMobileDirectoryNumber] = field(
        default=None, metadata={"alias": "sortByMobileDirectoryNumber"}
    )

    search_criteria_mobile_subscriber_directory_number: Optional[
        List[SearchCriteriaMobileSubscriberDirectoryNumber]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaMobileSubscriberDirectoryNumber"},
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentThresholdDefaultProfileGetRequest(OCIRequest):
    """Gets an existing default Call Center Agent Threshold Profile in an Enterprise.
        If includeAgentsTable is set to true, a table with the list of agents assigned to
        the profile is included in the response. The search criteria is used to filter the
        list of agents to be included in the table.
        The response is either a EnterpriseCallCenterAgentThresholdDefaultProfileGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        include_agents_table (bool):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    include_agents_table: bool = field(metadata={"alias": "includeAgentsTable"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentThresholdProfileAddAgentListRequest(OCIRequest):
    """Add agent(s) to a Agent Threshold Profile.
        When an agent is assigned (added) to a profile, it is automatically unassigned (deleted) from the previous profile it was assigned to.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        profile_name (str):

        agent_user_id (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    profile_name: str = field(metadata={"alias": "profileName"})

    agent_user_id: List[str] = field(metadata={"alias": "agentUserId"})


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentThresholdProfileAddRequest(OCIRequest):
    """Add a new Call Center Agent Threshold Profile in an Enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        profile_name (str):

        profile_description (Optional[str]):

        threshold_current_call_state_idle_time_yellow (Optional[int]):

        threshold_current_call_state_idle_time_red (Optional[int]):

        threshold_current_call_state_on_call_time_yellow (Optional[int]):

        threshold_current_call_state_on_call_time_red (Optional[int]):

        threshold_current_agent_state_unavailable_time_yellow (Optional[int]):

        threshold_current_agent_state_unavailable_time_red (Optional[int]):

        threshold_average_busy_in_time_yellow (Optional[int]):

        threshold_average_busy_in_time_red (Optional[int]):

        threshold_average_busy_out_time_yellow (Optional[int]):

        threshold_average_busy_out_time_red (Optional[int]):

        threshold_average_wrap_up_time_yellow (Optional[int]):

        threshold_average_wrap_up_time_red (Optional[int]):

        enable_notification_email (bool):

        notification_email_address (Optional[List[str]]):

        agent_user_id (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    profile_name: str = field(metadata={"alias": "profileName"})

    profile_description: Optional[str] = field(
        default=None, metadata={"alias": "profileDescription"}
    )

    threshold_current_call_state_idle_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeYellow"}
    )

    threshold_current_call_state_idle_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeRed"}
    )

    threshold_current_call_state_on_call_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeYellow"}
    )

    threshold_current_call_state_on_call_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeRed"}
    )

    threshold_current_agent_state_unavailable_time_yellow: Optional[int] = field(
        default=None,
        metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeYellow"},
    )

    threshold_current_agent_state_unavailable_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeRed"}
    )

    threshold_average_busy_in_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeYellow"}
    )

    threshold_average_busy_in_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeRed"}
    )

    threshold_average_busy_out_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeYellow"}
    )

    threshold_average_busy_out_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeRed"}
    )

    threshold_average_wrap_up_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeYellow"}
    )

    threshold_average_wrap_up_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeRed"}
    )

    enable_notification_email: bool = field(
        metadata={"alias": "enableNotificationEmail"}
    )

    notification_email_address: Optional[List[str]] = field(
        default=None, metadata={"alias": "notificationEmailAddress"}
    )

    agent_user_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "agentUserId"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentThresholdProfileDeleteAgentListRequest(OCIRequest):
    """Delete agent(s) from a Agent Threshold Profile.
        Agents cannot be unassigned (deleted) directly from the default profile, they need to be assigned (added) to a different profile.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        profile_name (str):

        agent_user_id (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    profile_name: str = field(metadata={"alias": "profileName"})

    agent_user_id: List[str] = field(metadata={"alias": "agentUserId"})


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentThresholdProfileDeleteRequest(OCIRequest):
    """Deletes an existing Call Center Agent Threshold Profile in an Enterprise.
        The default profile cannot be deleted.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        profile_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    profile_name: str = field(metadata={"alias": "profileName"})


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentThresholdProfileGetAvailableAgentListRequest(OCIRequest):
    """Get the list of all Agents in the Enterprise that can be assigned to a given Call Center Agent Threshold Profile in an Enterprise.
        An agent is available to be assigned to a given Agent Threshold Profile if it is a Call Center Standard or Call Center Premium agent
        and the agent is not yet assigned to the profile.
        The available agent list for a new Call Center Agent Threshold profile can be obtained by not setting the excludeAgentsAssignedToProfileName.
        When the excludeAgentsAssignedToProfileName is specified, all agents already assigned to the specified profile are not included in the response, even if the search
        criterion element searchCriteriaAgentThresholdProfile is specified using the same profile name.
        The response is either a EnterpriseCallCenterAgentThresholdProfileGetAvailableAgentListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        exclude_agents_assigned_to_profile_name (Optional[str]):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_agent_threshold_profile (Optional[List[SearchCriteriaAgentThresholdProfile]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    exclude_agents_assigned_to_profile_name: Optional[str] = field(
        default=None, metadata={"alias": "excludeAgentsAssignedToProfileName"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_agent_threshold_profile: Optional[
        List[SearchCriteriaAgentThresholdProfile]
    ] = field(default=None, metadata={"alias": "searchCriteriaAgentThresholdProfile"})


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentThresholdProfileGetAvailableAgentPagedSortedListRequest(
    OCIRequest
):
    """Get the list of all Agents in the Enterprise that can be assigned to a given Call Center Agent Threshold Profile in an Enterprise.
        An agent is available to be assigned to a given Agent Threshold Profile if it is a Call Center Standard or Call Center Premium agent
        and the agent is not yet assigned to the profile.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        It is possible to search by various criteria to restrict the number of rows returned.

        The available agent list for a new Call Center Agent Threshold profile can be obtained by not setting the excludeAgentsAssignedToProfileName.
        When the excludeAgentsAssignedToProfileName is specified, all agents already assigned to the specified profile are not included in the response, even if the search
        criterion element searchCriteriaAgentThresholdProfile is specified using the same profile name.

        If no sortOrder is included the response is sorted by User Id ascending by default.

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        ErrorResponse is returned if searchCriteriaExactUserGroup has multiple entries and searchCriteriaModeOr is not included.

        The response is either a EnterpriseCallCenterAgentThresholdProfileGetAvailableAgentPagedSortedListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        exclude_agents_assigned_to_profile_name (Optional[str]):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderEnterpriseCallCenterAgentThresholdProfileGetAvailableAgentPagedSortedList]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_agent_threshold_profile (Optional[List[SearchCriteriaAgentThresholdProfile]]):

        search_criteria_exact_user_group (Optional[List[SearchCriteriaExactUserGroup]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    exclude_agents_assigned_to_profile_name: Optional[str] = field(
        default=None, metadata={"alias": "excludeAgentsAssignedToProfileName"}
    )

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[
        List[
            SortOrderEnterpriseCallCenterAgentThresholdProfileGetAvailableAgentPagedSortedList
        ]
    ] = field(default=None, metadata={"alias": "sortOrder"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_agent_threshold_profile: Optional[
        List[SearchCriteriaAgentThresholdProfile]
    ] = field(default=None, metadata={"alias": "searchCriteriaAgentThresholdProfile"})

    search_criteria_exact_user_group: Optional[List[SearchCriteriaExactUserGroup]] = (
        field(default=None, metadata={"alias": "searchCriteriaExactUserGroup"})
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentThresholdProfileGetListRequest(OCIRequest):
    """Get the list of Call Center Agent Threshold Profiles in the Enterprise.
        The response is either EnterpriseCallCenterAgentThresholdProfileGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentThresholdProfileGetPagedSortedRequest(OCIRequest):
    """Gets an existing specified Call Center Agent Threshold Profile in an Enterprise.

        The agentTable is what the search, sort, and pagination fields apply to.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        It is possible to search by various criteria to restrict the number of rows returned.

        If no sortOrder is included the response is sorted by User Id ascending by default.

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        ErrorResponse is returned if searchCriteriaExactUserGroup has multiple entries and searchCriteriaModeOr is not included.

        The response is either a EnterpriseCallCenterAgentThresholdProfileGetPagedSortedResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        profile_name (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderEnterpriseCallCenterAgentThresholdProfileGetPagedSorted]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_exact_user_group (Optional[List[SearchCriteriaExactUserGroup]]):

        search_criteria_group_name (Optional[List[SearchCriteriaGroupName]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    profile_name: str = field(metadata={"alias": "profileName"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[
        List[SortOrderEnterpriseCallCenterAgentThresholdProfileGetPagedSorted]
    ] = field(default=None, metadata={"alias": "sortOrder"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_exact_user_group: Optional[List[SearchCriteriaExactUserGroup]] = (
        field(default=None, metadata={"alias": "searchCriteriaExactUserGroup"})
    )

    search_criteria_group_name: Optional[List[SearchCriteriaGroupName]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupName"}
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentThresholdProfileGetRequest(OCIRequest):
    """Gets an existing non-default Call Center Agent Threshold Profile in an Enterprise.
        The response is either a EnterpriseCallCenterAgentThresholdProfileGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        profile_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    profile_name: str = field(metadata={"alias": "profileName"})


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentThresholdProfileModifyRequest(OCIRequest):
    """Modifies an existing Call Center Agent Threshold Profile in the Enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        profile_name (str):

        new_profile_name (Optional[str]):

        profile_description (Optional[Nillable[str]]):

        threshold_current_call_state_idle_time_yellow (Optional[Nillable[int]]):

        threshold_current_call_state_idle_time_red (Optional[Nillable[int]]):

        threshold_current_call_state_on_call_time_yellow (Optional[Nillable[int]]):

        threshold_current_call_state_on_call_time_red (Optional[Nillable[int]]):

        threshold_current_agent_state_unavailable_time_yellow (Optional[Nillable[int]]):

        threshold_current_agent_state_unavailable_time_red (Optional[Nillable[int]]):

        threshold_average_busy_in_time_yellow (Optional[Nillable[int]]):

        threshold_average_busy_in_time_red (Optional[Nillable[int]]):

        threshold_average_busy_out_time_yellow (Optional[Nillable[int]]):

        threshold_average_busy_out_time_red (Optional[Nillable[int]]):

        threshold_average_wrap_up_time_yellow (Optional[Nillable[int]]):

        threshold_average_wrap_up_time_red (Optional[Nillable[int]]):

        enable_notification_email (Optional[bool]):

        notification_email_address_list (Optional[Nillable[CallCenterAgentThresholdProfileReplacementNotificationEmailList]]):

        agent_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    profile_name: str = field(metadata={"alias": "profileName"})

    new_profile_name: Optional[str] = field(
        default=None, metadata={"alias": "newProfileName"}
    )

    profile_description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "profileDescription"}
    )

    threshold_current_call_state_idle_time_yellow: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeYellow"}
    )

    threshold_current_call_state_idle_time_red: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeRed"}
    )

    threshold_current_call_state_on_call_time_yellow: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeYellow"}
    )

    threshold_current_call_state_on_call_time_red: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeRed"}
    )

    threshold_current_agent_state_unavailable_time_yellow: Optional[Nillable[int]] = (
        field(
            default=None,
            metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeYellow"},
        )
    )

    threshold_current_agent_state_unavailable_time_red: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeRed"}
    )

    threshold_average_busy_in_time_yellow: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeYellow"}
    )

    threshold_average_busy_in_time_red: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeRed"}
    )

    threshold_average_busy_out_time_yellow: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeYellow"}
    )

    threshold_average_busy_out_time_red: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeRed"}
    )

    threshold_average_wrap_up_time_yellow: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeYellow"}
    )

    threshold_average_wrap_up_time_red: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeRed"}
    )

    enable_notification_email: Optional[bool] = field(
        default=None, metadata={"alias": "enableNotificationEmail"}
    )

    notification_email_address_list: Optional[
        Nillable[CallCenterAgentThresholdProfileReplacementNotificationEmailList]
    ] = field(default=None, metadata={"alias": "notificationEmailAddressList"})

    agent_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "agentUserIdList"}
    )

    def __post_init__(self):
        nillable_fields = [
            "profile_description",
            "threshold_current_call_state_idle_time_yellow",
            "threshold_current_call_state_idle_time_red",
            "threshold_current_call_state_on_call_time_yellow",
            "threshold_current_call_state_on_call_time_red",
            "threshold_current_agent_state_unavailable_time_yellow",
            "threshold_current_agent_state_unavailable_time_red",
            "threshold_average_busy_in_time_yellow",
            "threshold_average_busy_in_time_red",
            "threshold_average_busy_out_time_yellow",
            "threshold_average_busy_out_time_red",
            "threshold_average_wrap_up_time_yellow",
            "threshold_average_wrap_up_time_red",
            "notification_email_address_list",
            "agent_user_id_list",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentUnavailableCodeAddRequest(OCIRequest):
    """Add a Call Center Agent Unavailable Code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        is_active (bool):

        code (str):

        description (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    is_active: bool = field(metadata={"alias": "isActive"})

    code: str = field(metadata={"alias": "code"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentUnavailableCodeDeleteRequest(OCIRequest):
    """Delete a Call Center Agent Unavailable Code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    code: str = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentUnavailableCodeGetListRequest(OCIRequest):
    """Get the list of Call Center Agent Unavailable Codes.
        The response is either EnterpriseCallCenterAgentUnavailableCodeGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentUnavailableCodeGetRequest(OCIRequest):
    """Get a Call Center Agent Unavailable Code.
        The response is either EnterpriseCallCenterAgentUnavailableCodeGetResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    code: str = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentUnavailableCodeModifyRequest(OCIRequest):
    """Modify a Call Center Agent Unavailable Code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        code (str):

        is_active (Optional[bool]):

        description (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    code: str = field(metadata={"alias": "code"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentUnavailableCodeSettingsGetRequest17sp4(OCIRequest):
    """Request the enterprise level data associated with Call Center Agents Unavailable Code Settings.
        The response is either an EnterpriseCallCenterAgentUnavailableCodeSettingsGetResponse17sp4 or an
        ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentUnavailableCodeSettingsModifyRequest(OCIRequest):
    """Modify the enterprise level data associated with Call Center Agents Unavailable Code Settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        enable_agent_unavailable_codes (Optional[bool]):

        default_agent_unavailable_code_on_dnd (Optional[Nillable[str]]):

        default_agent_unavailable_code_on_personal_calls (Optional[Nillable[str]]):

        default_agent_unavailable_code_on_consecutive_bounces (Optional[Nillable[str]]):

        default_agent_unavailable_code_on_not_reachable (Optional[Nillable[str]]):

        force_use_of_agent_unavailable_codes (Optional[bool]):

        default_agent_unavailable_code (Optional[Nillable[str]]):

        code_state_list (Optional[List[CallCenterAgentUnavailableCodeStateModify]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    enable_agent_unavailable_codes: Optional[bool] = field(
        default=None, metadata={"alias": "enableAgentUnavailableCodes"}
    )

    default_agent_unavailable_code_on_dnd: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultAgentUnavailableCodeOnDND"}
    )

    default_agent_unavailable_code_on_personal_calls: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultAgentUnavailableCodeOnPersonalCalls"}
    )

    default_agent_unavailable_code_on_consecutive_bounces: Optional[Nillable[str]] = (
        field(
            default=None,
            metadata={"alias": "defaultAgentUnavailableCodeOnConsecutiveBounces"},
        )
    )

    default_agent_unavailable_code_on_not_reachable: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultAgentUnavailableCodeOnNotReachable"}
    )

    force_use_of_agent_unavailable_codes: Optional[bool] = field(
        default=None, metadata={"alias": "forceUseOfAgentUnavailableCodes"}
    )

    default_agent_unavailable_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultAgentUnavailableCode"}
    )

    code_state_list: Optional[List[CallCenterAgentUnavailableCodeStateModify]] = field(
        default=None, metadata={"alias": "codeStateList"}
    )

    def __post_init__(self):
        nillable_fields = [
            "default_agent_unavailable_code_on_dnd",
            "default_agent_unavailable_code_on_personal_calls",
            "default_agent_unavailable_code_on_consecutive_bounces",
            "default_agent_unavailable_code_on_not_reachable",
            "default_agent_unavailable_code",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class EnterpriseCallCenterCallDispositionCodeAddRequest(OCIRequest):
    """Add a Call Center Call Disposition Code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        code (str):

        is_active (bool):

        description (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    code: str = field(metadata={"alias": "code"})

    is_active: bool = field(metadata={"alias": "isActive"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class EnterpriseCallCenterCallDispositionCodeDeleteRequest(OCIRequest):
    """Delete a Call Center Call Disposition Code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    code: str = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class EnterpriseCallCenterCallDispositionCodeGetListRequest(OCIRequest):
    """Get the list of Call Center Call Disposition Codes.
        The response is either EnterpriseCallCenterCallDispositionCodeGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseCallCenterCallDispositionCodeGetRequest(OCIRequest):
    """Get a Call Center Call Disposition Code.
        The response is either EnterpriseCallCenterCallDispositionCodeGetResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    code: str = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class EnterpriseCallCenterCallDispositionCodeGetUsageListRequest(OCIRequest):
    """Get the list of Call Centers and Route Points using the specified disposition code.
        The response is either EnterpriseCallCenterCallDispositionCodeGetUsageListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    code: str = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class EnterpriseCallCenterCallDispositionCodeModifyActiveListRequest(OCIRequest):
    """Request to set the active status of Call Center Call Disposition Codes.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        call_disposition_code_activation (Optional[List[CallDispositionCodeActivation]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    call_disposition_code_activation: Optional[List[CallDispositionCodeActivation]] = (
        field(default=None, metadata={"alias": "callDispositionCodeActivation"})
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterCallDispositionCodeModifyRequest(OCIRequest):
    """Modify a Call Center Call Disposition Code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        code (str):

        is_active (Optional[bool]):

        description (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    code: str = field(metadata={"alias": "code"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class EnterpriseCallCenterCurrentAndPastAgentGetListRequest(OCIRequest):
    """Request to all the current and past agents in the enterprise.
        The searchCriteriaExactUserGroup does not apply to past agents.
        The response is either EnterpriseCallCenterCurrentAndPastAgentGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterCurrentAndPastCallCenterGetListRequest(OCIRequest):
    """Request to get all the current and past call centers for the enterprise.
        The searchCriteriaExactUserGroup does not apply to past call centers.
        The response is either EnterpriseCallCenterCurrentAndPastCallCenterGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        is_premium_only (Optional[bool]):

        response_size_limit (Optional[int]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_call_center_name (Optional[SearchCriteriaCallCenterName]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    is_premium_only: Optional[bool] = field(
        default=None, metadata={"alias": "isPremiumOnly"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_call_center_name: Optional[SearchCriteriaCallCenterName] = field(
        default=None, metadata={"alias": "searchCriteriaCallCenterName"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterCurrentAndPastDNISGetListRequest(OCIRequest):
    """Request to get all the past and current DNIS for the Call Center for the enterprise.
        The response is either EnterpriseCallCenterCurrentAndPastDNISGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        service_user_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingBrandingGetRequest(OCIRequest):
    """Request to get the enterprise branding information.
        The response is either EnterpriseCallCenterEnhancedReportingBrandingGetResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingBrandingModifyRequest(OCIRequest):
    """Request to modify the enterprise branding configuration.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        branding_choice (Optional[str]):

        branding_file (Optional[LabeledFileResource]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    branding_choice: Optional[str] = field(
        default=None, metadata={"alias": "brandingChoice"}
    )

    branding_file: Optional[LabeledFileResource] = field(
        default=None, metadata={"alias": "brandingFile"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingGetAvailableReportTemplateListRequest(
    OCIRequest
):
    """Request to get all enabled call center report template for an enterprise.
        The response is either an EnterpriseCallCenterEnhancedReportingGetAvailableReportTemplateListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingGetRequest19(OCIRequest):
    """Request to get an enterprise level call center enhanced reporting setting.
        The response is either an EnterpriseCallCenterEnhancedReportingGetResponse19 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingModifyRequest19(OCIRequest):
    """Request to modify enterprise level call center enhanced reporting settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        reporting_server (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    reporting_server: Optional[str] = field(
        default=None, metadata={"alias": "reportingServer"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingReportTemplateAddRequest(OCIRequest):
    """Request to add an Enterprise level call center report template.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

        description (Optional[str]):

        data_template (str):

        filter_number (Optional[int]):

        xslt_template (LabeledFileResource):

        scope (str):

        is_enabled (bool):

        is_realtime_report (Optional[bool]):

        call_completion_threshold_param (Optional[str]):

        short_duration_threshold_param (Optional[str]):

        service_level_threshold_param (Optional[str]):

        service_level_inclusions_param (Optional[str]):

        service_level_objective_threshold_param (Optional[str]):

        abandoned_call_threshold_param (Optional[str]):

        service_level_threshold_param_number (Optional[int]):

        abandoned_call_threshold_param_number (Optional[int]):

        filter_value (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    data_template: str = field(metadata={"alias": "dataTemplate"})

    filter_number: Optional[int] = field(
        default=None, metadata={"alias": "filterNumber"}
    )

    xslt_template: LabeledFileResource = field(metadata={"alias": "xsltTemplate"})

    scope: str = field(metadata={"alias": "scope"})

    is_enabled: bool = field(metadata={"alias": "isEnabled"})

    is_realtime_report: Optional[bool] = field(
        default=None, metadata={"alias": "isRealtimeReport"}
    )

    call_completion_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "callCompletionThresholdParam"}
    )

    short_duration_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "shortDurationThresholdParam"}
    )

    service_level_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelThresholdParam"}
    )

    service_level_inclusions_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelInclusionsParam"}
    )

    service_level_objective_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelObjectiveThresholdParam"}
    )

    abandoned_call_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "abandonedCallThresholdParam"}
    )

    service_level_threshold_param_number: Optional[int] = field(
        default=None, metadata={"alias": "serviceLevelThresholdParamNumber"}
    )

    abandoned_call_threshold_param_number: Optional[int] = field(
        default=None, metadata={"alias": "abandonedCallThresholdParamNumber"}
    )

    filter_value: Optional[List[str]] = field(
        default=None, metadata={"alias": "filterValue"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingReportTemplateDeleteRequest(OCIRequest):
    """Request to delete an enterprise level call center report template.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingReportTemplateGetListRequest(OCIRequest):
    """Request to get enterprise level call center report template list.
        The response is either an EnterpriseCallCenterEnhancedReportingReportTemplateGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingReportTemplateGetRequest(OCIRequest):
    """Request to get an enterprise level call center report template.
        The response is either an EnterpriseCallCenterEnhancedReportingReportTemplateGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingReportTemplateModifyRequest(OCIRequest):
    """Request to modify an enterprise level call center report template.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

        new_name (Optional[str]):

        description (Optional[Nillable[str]]):

        xslt_template (Optional[LabeledFileResource]):

        scope (Optional[str]):

        is_enabled (Optional[bool]):

        is_realtime_report (Optional[bool]):

        filter_number (Optional[Nillable[int]]):

        filter_value (Optional[Nillable[CallCenterReportDataTemplateQueryFilterValueReplacementList]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    xslt_template: Optional[LabeledFileResource] = field(
        default=None, metadata={"alias": "xsltTemplate"}
    )

    scope: Optional[str] = field(default=None, metadata={"alias": "scope"})

    is_enabled: Optional[bool] = field(default=None, metadata={"alias": "isEnabled"})

    is_realtime_report: Optional[bool] = field(
        default=None, metadata={"alias": "isRealtimeReport"}
    )

    filter_number: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "filterNumber"}
    )

    filter_value: Optional[
        Nillable[CallCenterReportDataTemplateQueryFilterValueReplacementList]
    ] = field(default=None, metadata={"alias": "filterValue"})

    def __post_init__(self):
        nillable_fields = ["description", "filter_number", "filter_value"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingScheduledReportAddRequest(OCIRequest):
    """Request to add an enterprise level call center reporting scheduled report.
        The response is either a SuccessResponse or an ErrorResponse.
        The startDate element is adjusted to the first occurrence of the recurrent schedule that comes at or after startDate.

    Attributes:

        service_provider_id (str):

        name (str):

        description (Optional[str]):

        report_template (CallCenterReportTemplateKey):

        schedule (CallCenterReportSchedule):

        sampling_period (Optional[str]):

        start_day_of_week (Optional[str]):

        report_time_zone (str):

        report_date_format (str):

        report_time_format (str):

        report_interval (CallCenterReportInterval):

        report_format (str):

        agent (Optional[CallCenterScheduledReportAgentSelection]):

        call_center (Optional[CallCenterScheduledReportCallCenterSelection]):

        dnis (Optional[CallCenterScheduledReportDNISSelection]):

        call_completion_threshold_seconds (Optional[int]):

        short_duration_threshold_seconds (Optional[int]):

        service_level_threshold_seconds (Optional[List[int]]):

        service_level_inclusions (Optional[CallCenterScheduledReportServiceLevelInclusions]):

        service_level_objective_percentage (Optional[int]):

        abandoned_call_threshold_seconds (Optional[List[int]]):

        email_address (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    report_template: CallCenterReportTemplateKey = field(
        metadata={"alias": "reportTemplate"}
    )

    schedule: CallCenterReportSchedule = field(metadata={"alias": "schedule"})

    sampling_period: Optional[str] = field(
        default=None, metadata={"alias": "samplingPeriod"}
    )

    start_day_of_week: Optional[str] = field(
        default=None, metadata={"alias": "startDayOfWeek"}
    )

    report_time_zone: str = field(metadata={"alias": "reportTimeZone"})

    report_date_format: str = field(metadata={"alias": "reportDateFormat"})

    report_time_format: str = field(metadata={"alias": "reportTimeFormat"})

    report_interval: CallCenterReportInterval = field(
        metadata={"alias": "reportInterval"}
    )

    report_format: str = field(metadata={"alias": "reportFormat"})

    agent: Optional[CallCenterScheduledReportAgentSelection] = field(
        default=None, metadata={"alias": "agent"}
    )

    call_center: Optional[CallCenterScheduledReportCallCenterSelection] = field(
        default=None, metadata={"alias": "callCenter"}
    )

    dnis: Optional[CallCenterScheduledReportDNISSelection] = field(
        default=None, metadata={"alias": "dnis"}
    )

    call_completion_threshold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "callCompletionThresholdSeconds"}
    )

    short_duration_threshold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "shortDurationThresholdSeconds"}
    )

    service_level_threshold_seconds: Optional[List[int]] = field(
        default=None, metadata={"alias": "serviceLevelThresholdSeconds"}
    )

    service_level_inclusions: Optional[
        CallCenterScheduledReportServiceLevelInclusions
    ] = field(default=None, metadata={"alias": "serviceLevelInclusions"})

    service_level_objective_percentage: Optional[int] = field(
        default=None, metadata={"alias": "serviceLevelObjectivePercentage"}
    )

    abandoned_call_threshold_seconds: Optional[List[int]] = field(
        default=None, metadata={"alias": "abandonedCallThresholdSeconds"}
    )

    email_address: List[str] = field(metadata={"alias": "emailAddress"})


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingScheduledReportDeleteRequest(OCIRequest):
    """Request to delete an enterprise level call center reporting scheduled report.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingScheduledReportGetActiveListRequest(
    OCIRequest
):
    """Request to get a list of active enterprise level call center reporting scheduled reports.
        The response is either an EnterpriseCallCenterEnhancedReportingScheduledReportGetActiveListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_call_center_scheduled_report_name (Optional[List[SearchCriteriaCallCenterScheduledReportName]]):

        search_criteria_exact_call_center_scheduled_report_created_by_supervisor (Optional[SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor]):

        search_criteria_exact_call_center_report_template_key (Optional[SearchCriteriaExactCallCenterReportTemplateKey]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_call_center_scheduled_report_name: Optional[
        List[SearchCriteriaCallCenterScheduledReportName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaCallCenterScheduledReportName"}
    )

    search_criteria_exact_call_center_scheduled_report_created_by_supervisor: Optional[
        SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor
    ] = field(
        default=None,
        metadata={
            "alias": "searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor"
        },
    )

    search_criteria_exact_call_center_report_template_key: Optional[
        SearchCriteriaExactCallCenterReportTemplateKey
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaExactCallCenterReportTemplateKey"},
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingScheduledReportGetCompletedListRequest(
    OCIRequest
):
    """Request to get a list of completed enterprise level call center reporting scheduled reports.
        The response is either an EnterpriseCallCenterEnhancedReportingScheduledReportGetCompletedListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_call_center_scheduled_report_name (Optional[List[SearchCriteriaCallCenterScheduledReportName]]):

        search_criteria_exact_call_center_scheduled_report_created_by_supervisor (Optional[SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor]):

        search_criteria_exact_call_center_report_template_key (Optional[SearchCriteriaExactCallCenterReportTemplateKey]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_call_center_scheduled_report_name: Optional[
        List[SearchCriteriaCallCenterScheduledReportName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaCallCenterScheduledReportName"}
    )

    search_criteria_exact_call_center_scheduled_report_created_by_supervisor: Optional[
        SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor
    ] = field(
        default=None,
        metadata={
            "alias": "searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor"
        },
    )

    search_criteria_exact_call_center_report_template_key: Optional[
        SearchCriteriaExactCallCenterReportTemplateKey
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaExactCallCenterReportTemplateKey"},
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingScheduledReportGetListRequest(OCIRequest):
    """Request to get a list of enterprise level call center reporting scheduled reports.
        The response is either an EnterpriseCallCenterEnhancedReportingScheduledReportGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_call_center_scheduled_report_name (Optional[List[SearchCriteriaCallCenterScheduledReportName]]):

        search_criteria_exact_call_center_scheduled_report_created_by_supervisor (Optional[SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor]):

        search_criteria_exact_call_center_report_template_key (Optional[SearchCriteriaExactCallCenterReportTemplateKey]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_call_center_scheduled_report_name: Optional[
        List[SearchCriteriaCallCenterScheduledReportName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaCallCenterScheduledReportName"}
    )

    search_criteria_exact_call_center_scheduled_report_created_by_supervisor: Optional[
        SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor
    ] = field(
        default=None,
        metadata={
            "alias": "searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor"
        },
    )

    search_criteria_exact_call_center_report_template_key: Optional[
        SearchCriteriaExactCallCenterReportTemplateKey
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaExactCallCenterReportTemplateKey"},
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingScheduledReportGetReportTemplateUsageListRequest(
    OCIRequest
):
    """Request to get all the call center reporting scheduled report in an enterprise that uses a given enterprise level report template.
        The response is either a EnterpriseCallCenterEnhancedReportingScheduledReportGetReportTemplateUsageListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingScheduledReportGetRequest(OCIRequest):
    """Request to get an enterprise level call center reporting scheduled report.
        The response is either an EnterpriseCallCenterEnhancedReportingScheduledReportGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingScheduledReportModifyRequest(OCIRequest):
    """Request to modify an enterprise level call center reporting scheduled report.
        The response is either a SuccessResponse or an ErrorResponse.
        The startDate element is adjusted to the first occurrence of the recurrent schedule that comes at or after startDate.

    Attributes:

        service_provider_id (str):

        name (str):

        new_name (Optional[str]):

        description (Optional[Nillable[str]]):

        schedule (Optional[CallCenterReportSchedule]):

        sampling_period (Optional[str]):

        start_day_of_week (Optional[str]):

        report_time_zone (Optional[str]):

        report_date_format (Optional[str]):

        report_time_format (Optional[str]):

        report_interval (Optional[CallCenterReportInterval]):

        report_format (Optional[str]):

        agent (Optional[CallCenterScheduledReportAgentSelection]):

        call_center (Optional[CallCenterScheduledReportCallCenterSelection]):

        dnis (Optional[CallCenterScheduledReportDNISSelection]):

        call_completion_threshold_seconds (Optional[int]):

        short_duration_threshold_seconds (Optional[int]):

        service_level_threshold_seconds (Optional[CallCenterReportServiceLevelThresholdReplacementList]):

        service_level_inclusions (Optional[CallCenterScheduledReportServiceLevelInclusionsModify]):

        service_level_objective_percentage (Optional[Nillable[int]]):

        abandoned_call_threshold_seconds (Optional[CallCenterReportAbandonedCallThresholdReplacementList]):

        email_address (Optional[CallCenterReportReplacementEmailList]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    schedule: Optional[CallCenterReportSchedule] = field(
        default=None, metadata={"alias": "schedule"}
    )

    sampling_period: Optional[str] = field(
        default=None, metadata={"alias": "samplingPeriod"}
    )

    start_day_of_week: Optional[str] = field(
        default=None, metadata={"alias": "startDayOfWeek"}
    )

    report_time_zone: Optional[str] = field(
        default=None, metadata={"alias": "reportTimeZone"}
    )

    report_date_format: Optional[str] = field(
        default=None, metadata={"alias": "reportDateFormat"}
    )

    report_time_format: Optional[str] = field(
        default=None, metadata={"alias": "reportTimeFormat"}
    )

    report_interval: Optional[CallCenterReportInterval] = field(
        default=None, metadata={"alias": "reportInterval"}
    )

    report_format: Optional[str] = field(
        default=None, metadata={"alias": "reportFormat"}
    )

    agent: Optional[CallCenterScheduledReportAgentSelection] = field(
        default=None, metadata={"alias": "agent"}
    )

    call_center: Optional[CallCenterScheduledReportCallCenterSelection] = field(
        default=None, metadata={"alias": "callCenter"}
    )

    dnis: Optional[CallCenterScheduledReportDNISSelection] = field(
        default=None, metadata={"alias": "dnis"}
    )

    call_completion_threshold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "callCompletionThresholdSeconds"}
    )

    short_duration_threshold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "shortDurationThresholdSeconds"}
    )

    service_level_threshold_seconds: Optional[
        CallCenterReportServiceLevelThresholdReplacementList
    ] = field(default=None, metadata={"alias": "serviceLevelThresholdSeconds"})

    service_level_inclusions: Optional[
        CallCenterScheduledReportServiceLevelInclusionsModify
    ] = field(default=None, metadata={"alias": "serviceLevelInclusions"})

    service_level_objective_percentage: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "serviceLevelObjectivePercentage"}
    )

    abandoned_call_threshold_seconds: Optional[
        CallCenterReportAbandonedCallThresholdReplacementList
    ] = field(default=None, metadata={"alias": "abandonedCallThresholdSeconds"})

    email_address: Optional[CallCenterReportReplacementEmailList] = field(
        default=None, metadata={"alias": "emailAddress"}
    )

    def __post_init__(self):
        nillable_fields = ["description", "service_level_objective_percentage"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class EnterpriseCallCenterGetRequest23(OCIRequest):
    """Request the enterprise level data associated with Call Center.
        The response is either an EnterpriseCallCenterGetResponse23 or an
        ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseCallCenterGetRoutingPolicyRequest(OCIRequest):
    """Request the enterprise call center routing policy.
        The response is either an EnterpriseCallCenterGetRoutingPolicyResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseCallCenterModifyRequest(OCIRequest):
    """Modify the enterprise level data associated with Call Center
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          useSystemDefaultUnavailableSettings
          forceAgentUnavailableOnDNDActivation
          forceAgentUnavailableOnPersonalCalls
          forceAgentUnavailableOnBouncedCallLimit
          numberConsecutiveBouncedCallsToForceAgentUnavailable
          forceAgentUnavailableOnNotReachable
          wrapUpDestination

    Attributes:

        service_provider_id (str):

        use_system_default_guard_timer (Optional[bool]):

        enable_guard_timer (Optional[bool]):

        guard_timer_seconds (Optional[int]):

        use_system_default_unavailable_settings (Optional[bool]):

        force_agent_unavailable_on_dnd_activation (Optional[bool]):

        force_agent_unavailable_on_personal_calls (Optional[bool]):

        force_agent_unavailable_on_bounced_call_limit (Optional[bool]):

        number_consecutive_bounced_calls_to_force_agent_unavailable (Optional[int]):

        force_agent_unavailable_on_not_reachable (Optional[bool]):

        wrap_up_destination (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    use_system_default_guard_timer: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemDefaultGuardTimer"}
    )

    enable_guard_timer: Optional[bool] = field(
        default=None, metadata={"alias": "enableGuardTimer"}
    )

    guard_timer_seconds: Optional[int] = field(
        default=None, metadata={"alias": "guardTimerSeconds"}
    )

    use_system_default_unavailable_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemDefaultUnavailableSettings"}
    )

    force_agent_unavailable_on_dnd_activation: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnDNDActivation"}
    )

    force_agent_unavailable_on_personal_calls: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnPersonalCalls"}
    )

    force_agent_unavailable_on_bounced_call_limit: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnBouncedCallLimit"}
    )

    number_consecutive_bounced_calls_to_force_agent_unavailable: Optional[int] = field(
        default=None,
        metadata={"alias": "numberConsecutiveBouncedCallsToForceAgentUnavailable"},
    )

    force_agent_unavailable_on_not_reachable: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnNotReachable"}
    )

    wrap_up_destination: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "wrapUpDestination"}
    )

    def __post_init__(self):
        nillable_fields = ["wrap_up_destination"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class EnterpriseCallCenterModifyRoutingPolicyRequest(OCIRequest):
    """Modify the enterprise call center routing policy.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        routing_policy (Optional[str]):

        routing_priority_order (Optional[List[CallCenterRoutingPriorityOrder]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    routing_policy: Optional[str] = field(
        default=None, metadata={"alias": "routingPolicy"}
    )

    routing_priority_order: Optional[List[CallCenterRoutingPriorityOrder]] = field(
        default=None, metadata={"alias": "routingPriorityOrder"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterMonitoringGetRequest23(OCIRequest):
    """Request the enterprise level data associated with Call Center Monitoring.
        The response is either an EnterpriseCallCenterMonitoringGetResponse23 or an
        ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseCallCenterMonitoringModifyRequest(OCIRequest):
    """Modify the enterprise level data associated with Call Center Monitoring
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        enable_supervisor_coaching (Optional[bool]):

        bypass_enforcement_of_supervisor_agent_relationship (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    enable_supervisor_coaching: Optional[bool] = field(
        default=None, metadata={"alias": "enableSupervisorCoaching"}
    )

    bypass_enforcement_of_supervisor_agent_relationship: Optional[bool] = field(
        default=None,
        metadata={"alias": "bypassEnforcementOfSupervisorAgentRelationship"},
    )


@dataclass(kw_only=True)
class EnterpriseCallRecordingGetRequest(OCIRequest):
    """Get the Call Recording attributes for a enterprise.
        The response is either a EnterpriseCallRecordingGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseCallRecordingModifyRequest(OCIRequest):
    """Modify the Call Recording attributes for a enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        use_cloud_pbx (Optional[bool]):

        use_enterprise_setting (Optional[bool]):

        fqdn (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    use_cloud_pbx: Optional[bool] = field(
        default=None, metadata={"alias": "useCloudPBX"}
    )

    use_enterprise_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useEnterpriseSetting"}
    )

    fqdn: Optional[Nillable[str]] = field(default=None, metadata={"alias": "FQDN"})

    def __post_init__(self):
        nillable_fields = ["fqdn"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class EnterpriseCommonPhoneListAddListRequest(OCIRequest):
    """Add one or more entries to an enterprise's common phone list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        entry (List[PhoneListEntry]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    entry: List[PhoneListEntry] = field(metadata={"alias": "entry"})


@dataclass(kw_only=True)
class EnterpriseCommonPhoneListDeleteListRequest(OCIRequest):
    """Delete one or more entries from an enterprise's common phone list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        entry_name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    entry_name: List[str] = field(metadata={"alias": "entryName"})


@dataclass(kw_only=True)
class EnterpriseCommonPhoneListGetListRequest(OCIRequest):
    """Get an enterprise's common phone list.
        The response is either a EnterpriseCommonPhoneListGetListResponse or an ErrorResponse.
        The search can be done using multiple criterion.
        If the searchCriteriaModeOr is present, any result matching any one criteria is included in the results.
        Otherwise, only results matching all the search criterion are included in the results.
        If no search criteria is specified, all results are returned.
        Specifying searchCriteriaModeOr without any search criteria results in an ErrorResponse.
        In all cases, if a responseSizeLimit is specified and the number of matching results is more than this limit, then an
        ErrorResponse is returned.

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_mode_or (Optional[bool]):

        search_criteria_enterprise_common_phone_list_name (Optional[List[SearchCriteriaEnterpriseCommonPhoneListName]]):

        search_criteria_enterprise_common_phone_list_number (Optional[List[SearchCriteriaEnterpriseCommonPhoneListNumber]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )

    search_criteria_enterprise_common_phone_list_name: Optional[
        List[SearchCriteriaEnterpriseCommonPhoneListName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaEnterpriseCommonPhoneListName"}
    )

    search_criteria_enterprise_common_phone_list_number: Optional[
        List[SearchCriteriaEnterpriseCommonPhoneListNumber]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaEnterpriseCommonPhoneListNumber"},
    )


@dataclass(kw_only=True)
class EnterpriseCommonPhoneListModifyRequest(OCIRequest):
    """Modify an entry in an enterprise's common phone list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        entry_name (str):

        new_entry_name (Optional[str]):

        phone_number (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    entry_name: str = field(metadata={"alias": "entryName"})

    new_entry_name: Optional[str] = field(
        default=None, metadata={"alias": "newEntryName"}
    )

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class EnterpriseCommunicationBarringAuthorizationCodeAddListRequest(OCIRequest):
    """Add a list of Communication Barring Authorization codes to an enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        code (List[CommunicationBarringAuthorizationCodeConfiguration]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    code: List[CommunicationBarringAuthorizationCodeConfiguration] = field(
        metadata={"alias": "code"}
    )


@dataclass(kw_only=True)
class EnterpriseCommunicationBarringAuthorizationCodeDeleteListRequest(OCIRequest):
    """Delete a list of Communication Barring Authorization Codes from an enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        code (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    code: Optional[List[str]] = field(default=None, metadata={"alias": "code"})


@dataclass(kw_only=True)
class EnterpriseCommunicationBarringAuthorizationCodeGetListRequest(OCIRequest):
    """Get a list of Communication Barring Authorization Codes in an enterprise.
        The response is either EnterpriseCommunicationBarringAuthorizationCodeGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_communication_barring_authorization_code (Optional[List[SearchCriteriaCommunicationBarringAuthorizationCode]]):

        search_criteria_communication_barring_authorization_code_description (Optional[List[SearchCriteriaCommunicationBarringAuthorizationCodeDescription]]):

        search_criteria_network_class_of_service_name (Optional[List[SearchCriteriaNetworkClassOfServiceName]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_communication_barring_authorization_code: Optional[
        List[SearchCriteriaCommunicationBarringAuthorizationCode]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaCommunicationBarringAuthorizationCode"},
    )

    search_criteria_communication_barring_authorization_code_description: Optional[
        List[SearchCriteriaCommunicationBarringAuthorizationCodeDescription]
    ] = field(
        default=None,
        metadata={
            "alias": "searchCriteriaCommunicationBarringAuthorizationCodeDescription"
        },
    )

    search_criteria_network_class_of_service_name: Optional[
        List[SearchCriteriaNetworkClassOfServiceName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaNetworkClassOfServiceName"}
    )


@dataclass(kw_only=True)
class EnterpriseCommunicationBarringAuthorizationCodeGetRequest(OCIRequest):
    """Request the enterprise Communication Barring Authorization code settings.
        The response is either a
        EnterpriseCommunicationBarringAuthorizationCodeGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    code: str = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class EnterpriseCommunicationBarringAuthorizationCodeModifyRequest(OCIRequest):
    """Modify the enterprise Communication Barring Authorization code settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        code (str):

        description (Optional[Nillable[str]]):

        network_class_of_service (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    code: str = field(metadata={"alias": "code"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    network_class_of_service: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    def __post_init__(self):
        nillable_fields = ["description", "network_class_of_service"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class EnterpriseDepartmentAddRequest(OCIRequest):
    """Add a department to enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        enterprise_id (str):

        department_name (str):

        parent_department_key (Optional[EnterpriseDepartmentKey]):

    """

    enterprise_id: str = field(metadata={"alias": "enterpriseId"})

    department_name: str = field(metadata={"alias": "departmentName"})

    parent_department_key: Optional[EnterpriseDepartmentKey] = field(
        default=None, metadata={"alias": "parentDepartmentKey"}
    )


@dataclass(kw_only=True)
class EnterpriseDepartmentDeleteRequest(OCIRequest):
    """Delete a department from an enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        enterprise_id (str):

        department_name (str):

    """

    enterprise_id: str = field(metadata={"alias": "enterpriseId"})

    department_name: str = field(metadata={"alias": "departmentName"})


@dataclass(kw_only=True)
class EnterpriseDepartmentGetAvailableParentListRequest(OCIRequest):
    """Get a list of enterprise level departments in an enterprise that could be the parent of the
        specified department. The department itself and all its decendents are not eligible to be
        the parent department.
        The response is either EnterpriseDepartmentGetAvailableParentListResponse or ErrorResponse.

    Attributes:

        enterprise_id (str):

        department_name (str):

    """

    enterprise_id: str = field(metadata={"alias": "enterpriseId"})

    department_name: str = field(metadata={"alias": "departmentName"})


@dataclass(kw_only=True)
class EnterpriseDepartmentGetListRequest(OCIRequest):
    """Request a list of departments in an enterprise. You may request only the
        list of departments defined at the enterprise-level, or you may request
        the list of all departments in the enterprise including all the departments
        defined within the groups inside the enterprise.
        The response is either EnterpriseDepartmentGetListResponse or ErrorResponse.

    Attributes:

        enterprise_id (str):

        include_group_departments (bool):

    """

    enterprise_id: str = field(metadata={"alias": "enterpriseId"})

    include_group_departments: bool = field(
        metadata={"alias": "includeGroupDepartments"}
    )


@dataclass(kw_only=True)
class EnterpriseDepartmentModifyRequest(OCIRequest):
    """Modify a department of an enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        enterprise_id (str):

        department_name (str):

        new_department_name (Optional[str]):

        new_parent_department_key (Optional[Nillable[EnterpriseDepartmentKey]]):

    """

    enterprise_id: str = field(metadata={"alias": "enterpriseId"})

    department_name: str = field(metadata={"alias": "departmentName"})

    new_department_name: Optional[str] = field(
        default=None, metadata={"alias": "newDepartmentName"}
    )

    new_parent_department_key: Optional[Nillable[EnterpriseDepartmentKey]] = field(
        default=None, metadata={"alias": "newParentDepartmentKey"}
    )

    def __post_init__(self):
        nillable_fields = ["new_parent_department_key"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class EnterpriseEnterpriseTrunkAddRequest21(OCIRequest):
    """Request to add an enterprise trunk in an enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        enterprise_trunk_name (str):

        maximum_reroute_attempts (int):

        route_exhaustion_action (str):

        route_exhaustion_forward_address (Optional[str]):

        ordered_routing (Optional[object]):

        priority_weighted_routing (Optional[object]):

        enable_capacity_management (bool):

        max_active_calls (Optional[int]):

        capacity_exceeded_trap_initial_calls (Optional[int]):

        capacity_exceeded_trap_offset_calls (Optional[int]):

        maximum_active_incoming_calls_allowed (Optional[int]):

        maximum_active_outgoing_calls_allowed (Optional[int]):

        minimum_active_calls_reserved (Optional[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    enterprise_trunk_name: str = field(metadata={"alias": "enterpriseTrunkName"})

    maximum_reroute_attempts: int = field(metadata={"alias": "maximumRerouteAttempts"})

    route_exhaustion_action: str = field(metadata={"alias": "routeExhaustionAction"})

    route_exhaustion_forward_address: Optional[str] = field(
        default=None, metadata={"alias": "routeExhaustionForwardAddress"}
    )

    ordered_routing: Optional[object] = field(
        default=None, metadata={"alias": "orderedRouting"}
    )

    priority_weighted_routing: Optional[object] = field(
        default=None, metadata={"alias": "priorityWeightedRouting"}
    )

    enable_capacity_management: bool = field(
        metadata={"alias": "enableCapacityManagement"}
    )

    max_active_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxActiveCalls"}
    )

    capacity_exceeded_trap_initial_calls: Optional[int] = field(
        default=None, metadata={"alias": "capacityExceededTrapInitialCalls"}
    )

    capacity_exceeded_trap_offset_calls: Optional[int] = field(
        default=None, metadata={"alias": "capacityExceededTrapOffsetCalls"}
    )

    maximum_active_incoming_calls_allowed: Optional[int] = field(
        default=None, metadata={"alias": "maximumActiveIncomingCallsAllowed"}
    )

    maximum_active_outgoing_calls_allowed: Optional[int] = field(
        default=None, metadata={"alias": "maximumActiveOutgoingCallsAllowed"}
    )

    minimum_active_calls_reserved: Optional[int] = field(
        default=None, metadata={"alias": "minimumActiveCallsReserved"}
    )


@dataclass(kw_only=True)
class EnterpriseEnterpriseTrunkAddUserListRequest(OCIRequest):
    """Request to add users to an enterprise trunk in an enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        enterprise_trunk_name (str):

        user_id (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    enterprise_trunk_name: str = field(metadata={"alias": "enterpriseTrunkName"})

    user_id: List[str] = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class EnterpriseEnterpriseTrunkDeleteRequest(OCIRequest):
    """Request to delete an enterprise trunk in an enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        enterprise_trunk_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    enterprise_trunk_name: str = field(metadata={"alias": "enterpriseTrunkName"})


@dataclass(kw_only=True)
class EnterpriseEnterpriseTrunkDeleteUserListRequest(OCIRequest):
    """Request to delete users from an enterprise trunk in an enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        enterprise_trunk_name (str):

        user_id (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    enterprise_trunk_name: str = field(metadata={"alias": "enterpriseTrunkName"})

    user_id: List[str] = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class EnterpriseEnterpriseTrunkForceAssignUserListRequest(OCIRequest):
    """Request to add users to an enterprise trunk in an enterprise. If the user is already assigned to another enterprise trunk,
        it will be unassigned from the old enterprise trunk and assigned to the new enterprise trunk specified in this request.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        enterprise_trunk_name (str):

        user_id (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    enterprise_trunk_name: str = field(metadata={"alias": "enterpriseTrunkName"})

    user_id: List[str] = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class EnterpriseEnterpriseTrunkGetAvailableTrunkGroupListRequest(OCIRequest):
    """Request to get the list of all available trunk groups defined in an enterprise.  It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        The response is either a EnterpriseEnterpriseTrunkGetAvailableTrunkGroupListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_trunk_group_name (Optional[List[SearchCriteriaTrunkGroupName]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_trunk_group_name: Optional[List[SearchCriteriaTrunkGroupName]] = (
        field(default=None, metadata={"alias": "searchCriteriaTrunkGroupName"})
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )


@dataclass(kw_only=True)
class EnterpriseEnterpriseTrunkGetAvailableUserListRequest(OCIRequest):
    """Request the list of users that are available to be added to an enterprise trunk.  This list contains users in the enterprise that are trunk users and not already assigned to an enterprise trunk.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        The response is either an EnterpriseEnterpriseTrunkGetAvailableUserListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_alternate_trunk_identity (Optional[List[SearchCriteriaAlternateTrunkIdentity]]):

        search_criteria_alternate_trunk_identity_domain (Optional[List[SearchCriteriaAlternateTrunkIdentityDomain]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_alternate_trunk_identity: Optional[
        List[SearchCriteriaAlternateTrunkIdentity]
    ] = field(default=None, metadata={"alias": "searchCriteriaAlternateTrunkIdentity"})

    search_criteria_alternate_trunk_identity_domain: Optional[
        List[SearchCriteriaAlternateTrunkIdentityDomain]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaAlternateTrunkIdentityDomain"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})


@dataclass(kw_only=True)
class EnterpriseEnterpriseTrunkGetListRequest(OCIRequest):
    """Request to get the list of all enterprise trunks defined in an enterprise.
        The response is either a EnterpriseEnterpriseTrunkGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseEnterpriseTrunkGetRequest22(OCIRequest):
    """Request to get an enterprise trunk
        The response is either an EnterpriseEnterpriseTrunkGetResponse21 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        enterprise_trunk_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    enterprise_trunk_name: str = field(metadata={"alias": "enterpriseTrunkName"})


@dataclass(kw_only=True)
class EnterpriseEnterpriseTrunkGetUserListRequest(OCIRequest):
    """Request the list of users in an enterprise trunk.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        The response is either a EnterpriseEnterpriseTrunkGetUserListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        enterprise_trunk_name (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_alternate_trunk_identity (Optional[List[SearchCriteriaAlternateTrunkIdentity]]):

        search_criteria_alternate_trunk_identity_domain (Optional[List[SearchCriteriaAlternateTrunkIdentityDomain]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_route_list_assigned (Optional[SearchCriteriaExactUserRouteListAssigned]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    enterprise_trunk_name: str = field(metadata={"alias": "enterpriseTrunkName"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_alternate_trunk_identity: Optional[
        List[SearchCriteriaAlternateTrunkIdentity]
    ] = field(default=None, metadata={"alias": "searchCriteriaAlternateTrunkIdentity"})

    search_criteria_alternate_trunk_identity_domain: Optional[
        List[SearchCriteriaAlternateTrunkIdentityDomain]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaAlternateTrunkIdentityDomain"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_route_list_assigned: Optional[
        SearchCriteriaExactUserRouteListAssigned
    ] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserRouteListAssigned"}
    )


@dataclass(kw_only=True)
class EnterpriseEnterpriseTrunkModifyRequest(OCIRequest):
    """Request to modify an enterprise trunk in an enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        enterprise_trunk_name (str):

        new_enterprise_trunk_name (Optional[str]):

        maximum_reroute_attempts (Optional[int]):

        route_exhaustion_action (Optional[str]):

        route_exhaustion_forward_address (Optional[Nillable[str]]):

        ordered_routing (Optional[object]):

        priority_weighted_routing (Optional[object]):

        enable_capacity_management (Optional[bool]):

        max_active_calls (Optional[Nillable[int]]):

        capacity_exceeded_trap_initial_calls (Optional[Nillable[int]]):

        capacity_exceeded_trap_offset_calls (Optional[Nillable[int]]):

        maximum_active_incoming_calls_allowed (Optional[Nillable[int]]):

        maximum_active_outgoing_calls_allowed (Optional[Nillable[int]]):

        minimum_active_calls_reserved (Optional[Nillable[int]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    enterprise_trunk_name: str = field(metadata={"alias": "enterpriseTrunkName"})

    new_enterprise_trunk_name: Optional[str] = field(
        default=None, metadata={"alias": "newEnterpriseTrunkName"}
    )

    maximum_reroute_attempts: Optional[int] = field(
        default=None, metadata={"alias": "maximumRerouteAttempts"}
    )

    route_exhaustion_action: Optional[str] = field(
        default=None, metadata={"alias": "routeExhaustionAction"}
    )

    route_exhaustion_forward_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "routeExhaustionForwardAddress"}
    )

    ordered_routing: Optional[object] = field(
        default=None, metadata={"alias": "orderedRouting"}
    )

    priority_weighted_routing: Optional[object] = field(
        default=None, metadata={"alias": "priorityWeightedRouting"}
    )

    enable_capacity_management: Optional[bool] = field(
        default=None, metadata={"alias": "enableCapacityManagement"}
    )

    max_active_calls: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxActiveCalls"}
    )

    capacity_exceeded_trap_initial_calls: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "capacityExceededTrapInitialCalls"}
    )

    capacity_exceeded_trap_offset_calls: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "capacityExceededTrapOffsetCalls"}
    )

    maximum_active_incoming_calls_allowed: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maximumActiveIncomingCallsAllowed"}
    )

    maximum_active_outgoing_calls_allowed: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maximumActiveOutgoingCallsAllowed"}
    )

    minimum_active_calls_reserved: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "minimumActiveCallsReserved"}
    )

    def __post_init__(self):
        nillable_fields = [
            "route_exhaustion_forward_address",
            "max_active_calls",
            "capacity_exceeded_trap_initial_calls",
            "capacity_exceeded_trap_offset_calls",
            "maximum_active_incoming_calls_allowed",
            "maximum_active_outgoing_calls_allowed",
            "minimum_active_calls_reserved",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class EnterpriseLocalGatewayGetPagedSortedListRequest(OCIRequest):
    """Get a list of local gateways defined within an enterprise. Only the local gateways having device associated are returned.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        If no sortOrder is included the response is sorted by Trunk group name  ascending by default.
        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        The response is either a EnterpriseLocalGatewayGetPagedSortedListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_by_trunk_group_name (Optional[SortByTrunkGroupName]):

        search_criteria_trunk_group_name (Optional[List[SearchCriteriaTrunkGroupName]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_by_trunk_group_name: Optional[SortByTrunkGroupName] = field(
        default=None, metadata={"alias": "sortByTrunkGroupName"}
    )

    search_criteria_trunk_group_name: Optional[List[SearchCriteriaTrunkGroupName]] = (
        field(default=None, metadata={"alias": "searchCriteriaTrunkGroupName"})
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class EnterpriseLocalGatewayGetUsageRequest(OCIRequest):
    """Get usage details of a local gateway under an enterprise.
        The response is either EnterpriseLocalGatewayGetUsageResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        trunk_group_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    trunk_group_name: str = field(metadata={"alias": "trunkGroupName"})


@dataclass(kw_only=True)
class EnterprisePhoneDirectoryGetPagedSortedListRequest(OCIRequest):
    """Request a table containing the phone directory for an enterprise.
        The directory includes all users in the enterprise and all entries in the enterprise common phone list.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        It is possible to search by various criteria to restrict the number of rows returned.

        If no sortOrder is included the response is sorted by User Id ascending with a secondary
        sort by User Last Name ascending by default.

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        ErrorResponse is returned if searchCriteriaExactUserGroup or searchCriteriaExactUserDepartment have multiple entries and searchCriteriaModeOr is not included

        The following elements are only used in AS data mode and ignored in XS data mode:
        \"sortByImpId\"
        \"searchCriteriaImpId\"

        The response is either EnterprisePhoneDirectoryGetPagedSortedListResponse or ErrorResponse.

    Attributes:

        enterprise_id (str):

        is_extended_info_requested (bool):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderEnterprisePhoneDirectoryGetPagedSortedList]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_group_location_code (Optional[List[SearchCriteriaGroupLocationCode]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_mobile_phone_number (Optional[List[SearchCriteriaMobilePhoneNumber]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_group_name (Optional[List[SearchCriteriaGroupName]]):

        search_criteria_yahoo_id (Optional[List[SearchCriteriaYahooId]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_imp_id (Optional[List[SearchCriteriaImpId]]):

        search_criteria_mode_or (Optional[bool]):

    """

    enterprise_id: str = field(metadata={"alias": "enterpriseId"})

    is_extended_info_requested: bool = field(
        metadata={"alias": "isExtendedInfoRequested"}
    )

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[List[SortOrderEnterprisePhoneDirectoryGetPagedSortedList]] = (
        field(default=None, metadata={"alias": "sortOrder"})
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_group_location_code: Optional[
        List[SearchCriteriaGroupLocationCode]
    ] = field(default=None, metadata={"alias": "searchCriteriaGroupLocationCode"})

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_mobile_phone_number: Optional[
        List[SearchCriteriaMobilePhoneNumber]
    ] = field(default=None, metadata={"alias": "searchCriteriaMobilePhoneNumber"})

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_group_name: Optional[List[SearchCriteriaGroupName]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupName"}
    )

    search_criteria_yahoo_id: Optional[List[SearchCriteriaYahooId]] = field(
        default=None, metadata={"alias": "searchCriteriaYahooId"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_imp_id: Optional[List[SearchCriteriaImpId]] = field(
        default=None, metadata={"alias": "searchCriteriaImpId"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class EnterprisePreAlertingAnnouncementGetRequest(OCIRequest):
    """Get the Enterprise pre-alerting service settings.
        The response is either a EnterprisePreAlertingAnnouncementGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterprisePreAlertingAnnouncementModifyRequest(OCIRequest):
    """Modify the enterprise level pre-alerting service settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        announcement_interruption (Optional[str]):

        interruption_digit_sequence (Optional[str]):

        audio_selection (Optional[str]):

        audio_file (Optional[ExtendedMediaFileResource]):

        video_selection (Optional[str]):

        video_file (Optional[ExtendedMediaFileResource]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    announcement_interruption: Optional[str] = field(
        default=None, metadata={"alias": "announcementInterruption"}
    )

    interruption_digit_sequence: Optional[str] = field(
        default=None, metadata={"alias": "interruptionDigitSequence"}
    )

    audio_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioSelection"}
    )

    audio_file: Optional[ExtendedMediaFileResource] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoSelection"}
    )

    video_file: Optional[ExtendedMediaFileResource] = field(
        default=None, metadata={"alias": "videoFile"}
    )


@dataclass(kw_only=True)
class EnterpriseRouteListEnterpriseTrunkNumberPrefixGetAvailableListRequest(OCIRequest):
    """Request a list of number prefixes that are assigned to an enterprise and still available for assignment to users within the enterprise.
        The response is either EnterpriseRouteListEnterpriseTrunkNumberPrefixGetAvailableListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseRouteListEnterpriseTrunkNumberPrefixGetSummaryListRequest(OCIRequest):
    """Request a summary table of all enterprise trunk number prefixes in the enterprise.
        The response is either EnterpriseRouteListEnterpriseTrunkNumberPrefixGetSummaryListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseRouteListEnterpriseTrunkNumberRangeGetAvailableListRequest(OCIRequest):
    """Request a list of number ranges that are assigned to an enterprise and still available for assignment to users within the enterprise.
        The response is either EnterpriseRouteListEnterpriseTrunkNumberRangeGetAvailableListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseRouteListEnterpriseTrunkNumberRangeGetSummaryListRequest(OCIRequest):
    """Request a summary table of all enterprise trunk number ranges in the enterprise.
        The response is either EnterpriseRouteListEnterpriseTrunkNumberRangeGetSummaryListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseSecurityClassificationCustomizationGetAvailableListRequest(OCIRequest):
    """Get the enterprise security classification list. If it is not customized, it returns the system default list.
        The response is either an EnterpriseSecurityClassificationCustomizationGetAvailableListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseSessionAdmissionControlGetAvailableDeviceListRequest(OCIRequest):
    """Request to get the list of devices can be assigned to session admission control group for the enterprise.
        The response is either an EnterpriseSessionAdmissionControlGetAvailableDeviceListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_device_name (Optional[List[SearchCriteriaDeviceName]]):

        search_criteria_device_mac_address (Optional[List[SearchCriteriaDeviceMACAddress]]):

        search_criteria_device_net_address (Optional[List[SearchCriteriaDeviceNetAddress]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_exact_device_type (Optional[SearchCriteriaExactDeviceType]):

        search_criteria_exact_device_level (Optional[SearchCriteriaExactDeviceLevel]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_device_name: Optional[List[SearchCriteriaDeviceName]] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceName"}
    )

    search_criteria_device_mac_address: Optional[
        List[SearchCriteriaDeviceMACAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceMACAddress"})

    search_criteria_device_net_address: Optional[
        List[SearchCriteriaDeviceNetAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceNetAddress"})

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_exact_device_type: Optional[SearchCriteriaExactDeviceType] = field(
        default=None, metadata={"alias": "searchCriteriaExactDeviceType"}
    )

    search_criteria_exact_device_level: Optional[SearchCriteriaExactDeviceLevel] = (
        field(default=None, metadata={"alias": "searchCriteriaExactDeviceLevel"})
    )


@dataclass(kw_only=True)
class EnterpriseSessionAdmissionControlGroupAddDeviceListRequest(OCIRequest):
    """Request to add one or more devices to an enterprise level session admission control group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

        devices (List[EnterpriseAccessDevice]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})

    devices: List[EnterpriseAccessDevice] = field(metadata={"alias": "devices"})


@dataclass(kw_only=True)
class EnterpriseSessionAdmissionControlGroupAddRequest19sp1(OCIRequest):
    """Request to add a session admission control group for the enterprise.
        The response is either a SuccessResponse or an ErrorResponse.
        Note that to provision the accessInfoPattern element, the
        captureAccessInfoInPaniHeader system parameter needs to be set to \"true\".

    Attributes:

        service_provider_id (str):

        name (str):

        max_session (int):

        max_user_originating_sessions (Optional[int]):

        max_user_terminating_sessions (Optional[int]):

        reserved_session (int):

        reserved_user_originating_sessions (Optional[int]):

        reserved_user_terminating_sessions (Optional[int]):

        become_default_group (bool):

        count_intra_sac_group_sessions (bool):

        devices (Optional[List[EnterpriseAccessDevice]]):

        block_emergency_and_repair_calls_due_to_sac_limits (bool):

        media_group_name (Optional[str]):

        access_info_pattern (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})

    max_session: int = field(metadata={"alias": "maxSession"})

    max_user_originating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "maxUserOriginatingSessions"}
    )

    max_user_terminating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "maxUserTerminatingSessions"}
    )

    reserved_session: int = field(metadata={"alias": "reservedSession"})

    reserved_user_originating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "reservedUserOriginatingSessions"}
    )

    reserved_user_terminating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "reservedUserTerminatingSessions"}
    )

    become_default_group: bool = field(metadata={"alias": "becomeDefaultGroup"})

    count_intra_sac_group_sessions: bool = field(
        metadata={"alias": "countIntraSACGroupSessions"}
    )

    devices: Optional[List[EnterpriseAccessDevice]] = field(
        default=None, metadata={"alias": "devices"}
    )

    block_emergency_and_repair_calls_due_to_sac_limits: bool = field(
        metadata={"alias": "blockEmergencyAndRepairCallsDueToSACLimits"}
    )

    media_group_name: Optional[str] = field(
        default=None, metadata={"alias": "mediaGroupName"}
    )

    access_info_pattern: Optional[str] = field(
        default=None, metadata={"alias": "accessInfoPattern"}
    )


@dataclass(kw_only=True)
class EnterpriseSessionAdmissionControlGroupDeleteDeviceListRequest(OCIRequest):
    """Request to delete one or more devices from an enterprise level session admission control group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

        devices (List[EnterpriseAccessDevice]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})

    devices: List[EnterpriseAccessDevice] = field(metadata={"alias": "devices"})


@dataclass(kw_only=True)
class EnterpriseSessionAdmissionControlGroupDeleteListRequest(OCIRequest):
    """Request to delete one or more session admission control groups for the enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: List[str] = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class EnterpriseSessionAdmissionControlGroupGetListRequest(OCIRequest):
    """Request to get the list of session admission control group for the enterprise.
        The response is either an EnterpriseSessionAdmissionControlGroupGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseSessionAdmissionControlGroupGetRequest21sp1V2(OCIRequest):
    """Request to get a session admission control group for the enterprise.
        The response is either an EnterpriseSessionAdmissionControlGroupGetResponse21sp1V2 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class EnterpriseSessionAdmissionControlGroupModifyRequest(OCIRequest):
    """Request to modify a session admission control group for the enterprise.
        The response is either a SuccessResponse or an ErrorResponse.
        Note that to provision the accessInfoPattern element, the
        captureAccessInfoInPaniHeader system parameter needs to be set to \"true\".

    Attributes:

        service_provider_id (str):

        name (str):

        new_name (Optional[str]):

        max_session (Optional[int]):

        max_user_originating_sessions (Optional[Nillable[int]]):

        max_user_terminating_sessions (Optional[Nillable[int]]):

        reserved_session (Optional[int]):

        reserved_user_originating_sessions (Optional[Nillable[int]]):

        reserved_user_terminating_sessions (Optional[Nillable[int]]):

        become_default_group (Optional[bool]):

        count_intra_sac_group_sessions (Optional[bool]):

        device_list (Optional[Nillable[ReplacementEnterpriseDeviceList]]):

        block_emergency_and_repair_calls_due_to_sac_limits (Optional[bool]):

        media_group_name (Optional[Nillable[str]]):

        access_info_pattern (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    max_session: Optional[int] = field(default=None, metadata={"alias": "maxSession"})

    max_user_originating_sessions: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxUserOriginatingSessions"}
    )

    max_user_terminating_sessions: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxUserTerminatingSessions"}
    )

    reserved_session: Optional[int] = field(
        default=None, metadata={"alias": "reservedSession"}
    )

    reserved_user_originating_sessions: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "reservedUserOriginatingSessions"}
    )

    reserved_user_terminating_sessions: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "reservedUserTerminatingSessions"}
    )

    become_default_group: Optional[bool] = field(
        default=None, metadata={"alias": "becomeDefaultGroup"}
    )

    count_intra_sac_group_sessions: Optional[bool] = field(
        default=None, metadata={"alias": "countIntraSACGroupSessions"}
    )

    device_list: Optional[Nillable[ReplacementEnterpriseDeviceList]] = field(
        default=None, metadata={"alias": "deviceList"}
    )

    block_emergency_and_repair_calls_due_to_sac_limits: Optional[bool] = field(
        default=None, metadata={"alias": "blockEmergencyAndRepairCallsDueToSACLimits"}
    )

    media_group_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "mediaGroupName"}
    )

    access_info_pattern: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "accessInfoPattern"}
    )

    def __post_init__(self):
        nillable_fields = [
            "max_user_originating_sessions",
            "max_user_terminating_sessions",
            "reserved_user_originating_sessions",
            "reserved_user_terminating_sessions",
            "device_list",
            "media_group_name",
            "access_info_pattern",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class EnterpriseUserCallForwardingSettingsGetListRequest(OCIRequest):
    """Get a list of users and the service settings for a Call Forwarding service.
        The response is either EnterpriseUserCallForwardingSettingsGetListResponse or ErrorResponse.
        By default, virtual users and non-virtual users that match the selected search criteria are included in the response when \"includeVirtualUsers\" is present; otherwise, if \"includeVirtualUsers\" is absent, then only non-virtual users are returned.
        The search can be performed using multiple criteria. If search criteria is specified, only the users matching all of the specified search criteria are included in the response. If no search criteria is specified, all results are returned.

    Attributes:

        service_provider_id (str):

        call_forwarding_service (str):

        response_paging_control (ResponsePagingControl):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_user_department (Optional[SortByUserDepartment]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_group_id (Optional[SortByGroupId]):

        sort_by_forwarded_to_number (Optional[SortByForwardedToNumber]):

        include_virtual_users (Optional[bool]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_in_trunk_group (Optional[SearchCriteriaExactUserInTrunkGroup]):

        search_criteria_forwarded_to_number (Optional[List[SearchCriteriaForwardedToNumber]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    call_forwarding_service: str = field(metadata={"alias": "callForwardingService"})

    response_paging_control: ResponsePagingControl = field(
        metadata={"alias": "responsePagingControl"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_user_department: Optional[SortByUserDepartment] = field(
        default=None, metadata={"alias": "sortByUserDepartment"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_group_id: Optional[SortByGroupId] = field(
        default=None, metadata={"alias": "sortByGroupId"}
    )

    sort_by_forwarded_to_number: Optional[SortByForwardedToNumber] = field(
        default=None, metadata={"alias": "sortByForwardedToNumber"}
    )

    include_virtual_users: Optional[bool] = field(
        default=None, metadata={"alias": "includeVirtualUsers"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_in_trunk_group: Optional[
        SearchCriteriaExactUserInTrunkGroup
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserInTrunkGroup"})

    search_criteria_forwarded_to_number: Optional[
        List[SearchCriteriaForwardedToNumber]
    ] = field(default=None, metadata={"alias": "searchCriteriaForwardedToNumber"})


@dataclass(kw_only=True)
class EnterpriseUserCallWaitingSettingsGetListRequest(OCIRequest):
    """Get a list of users and the Call Waiting service status (active or not active).
        The response is either EnterpriseUserCallWaitingSettingsGetListResponse or ErrorResponse.
        By default, virtual users and non-virtual users that match the selected search criteria are included in the response when \"includeVirtualUsers\" is present; otherwise, if \"includeVirtualUsers\" is absent, then only non-virtual users are returned.
        The search can be performed using multiple criteria. If search criteria is specified, only the users matching all of the specified search criteria are included in the response. If no search criteria is specified, all results are returned.

    Attributes:

        service_provider_id (str):

        response_paging_control (ResponsePagingControl):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_user_department (Optional[SortByUserDepartment]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_service_status (Optional[SortByServiceStatus]):

        sort_by_group_id (Optional[SortByGroupId]):

        include_virtual_users (Optional[bool]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_in_trunk_group (Optional[SearchCriteriaExactUserInTrunkGroup]):

        search_criteria_service_status (Optional[SearchCriteriaServiceStatus]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_paging_control: ResponsePagingControl = field(
        metadata={"alias": "responsePagingControl"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_user_department: Optional[SortByUserDepartment] = field(
        default=None, metadata={"alias": "sortByUserDepartment"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_service_status: Optional[SortByServiceStatus] = field(
        default=None, metadata={"alias": "sortByServiceStatus"}
    )

    sort_by_group_id: Optional[SortByGroupId] = field(
        default=None, metadata={"alias": "sortByGroupId"}
    )

    include_virtual_users: Optional[bool] = field(
        default=None, metadata={"alias": "includeVirtualUsers"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_in_trunk_group: Optional[
        SearchCriteriaExactUserInTrunkGroup
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserInTrunkGroup"})

    search_criteria_service_status: Optional[SearchCriteriaServiceStatus] = field(
        default=None, metadata={"alias": "searchCriteriaServiceStatus"}
    )


@dataclass(kw_only=True)
class EnterpriseUserCallingPlanSettingsGetListRequest(OCIRequest):
    """Get a list of users and the default or custom calling plan setting.
        The response is either EnterpriseUserCallingPlanSettingsGetListResponse or ErrorResponse.
        By default, virtual users and non-virtual users that match the selected search criteria are included in the response when \"includeVirtualUsers\" is present; otherwise, if \"includeVirtualUsers\" is absent, then only non-virtual users are returned.
        The search can be performed using multiple criteria. If search criteria is specified, only the users matching all of the specified search criteria are included in the response. If no search criteria is specified, all results are returned.

    Attributes:

        service_provider_id (str):

        calling_plan_service (str):

        response_paging_control (ResponsePagingControl):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_user_department (Optional[SortByUserDepartment]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_group_id (Optional[SortByGroupId]):

        include_virtual_users (Optional[bool]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_in_trunk_group (Optional[SearchCriteriaExactUserInTrunkGroup]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    calling_plan_service: str = field(metadata={"alias": "callingPlanService"})

    response_paging_control: ResponsePagingControl = field(
        metadata={"alias": "responsePagingControl"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_user_department: Optional[SortByUserDepartment] = field(
        default=None, metadata={"alias": "sortByUserDepartment"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_group_id: Optional[SortByGroupId] = field(
        default=None, metadata={"alias": "sortByGroupId"}
    )

    include_virtual_users: Optional[bool] = field(
        default=None, metadata={"alias": "includeVirtualUsers"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_in_trunk_group: Optional[
        SearchCriteriaExactUserInTrunkGroup
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserInTrunkGroup"})


@dataclass(kw_only=True)
class EnterpriseUserHotelingGuestSettingsGetListRequest(OCIRequest):
    """Get a list of users and their Hoteling Guest service status (active or not active).
        The response is either EnterpriseUserHotelingGuestSettingsGetListResponse or ErrorResponse.
        By default, virtual users and non-virtual users that match the selected search criteria are included in the response when \"includeVirtualUsers\" is present; otherwise, if \"includeVirtualUsers\" is absent, then only non-virtual users are returned.
        The search can be performed using multiple criteria. If search criteria is specified, only the users matching all of the specified search criteria are included in the response. If no search criteria is specified, all results are returned.

    Attributes:

        service_provider_id (str):

        response_paging_control (ResponsePagingControl):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_user_department (Optional[SortByUserDepartment]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_service_status (Optional[SortByServiceStatus]):

        sort_by_group_id (Optional[SortByGroupId]):

        include_virtual_users (Optional[bool]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_in_trunk_group (Optional[SearchCriteriaExactUserInTrunkGroup]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_paging_control: ResponsePagingControl = field(
        metadata={"alias": "responsePagingControl"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_user_department: Optional[SortByUserDepartment] = field(
        default=None, metadata={"alias": "sortByUserDepartment"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_service_status: Optional[SortByServiceStatus] = field(
        default=None, metadata={"alias": "sortByServiceStatus"}
    )

    sort_by_group_id: Optional[SortByGroupId] = field(
        default=None, metadata={"alias": "sortByGroupId"}
    )

    include_virtual_users: Optional[bool] = field(
        default=None, metadata={"alias": "includeVirtualUsers"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_in_trunk_group: Optional[
        SearchCriteriaExactUserInTrunkGroup
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserInTrunkGroup"})


@dataclass(kw_only=True)
class EnterpriseVirtualOnNetEnterpriseExtensionsGetUserListRequest(OCIRequest):
    """Request the list of Virtual On-Net users in an Enterprise.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        The response is either a  EnterpriseVirtualOnNetEnterpriseExtensionsGetUserListResponse or
        an ErrorResponse.

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_group_location_code (Optional[List[SearchCriteriaGroupLocationCode]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_virtual_on_net_call_type_name (Optional[SearchCriteriaExactVirtualOnNetCallTypeName]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_group_location_code: Optional[
        List[SearchCriteriaGroupLocationCode]
    ] = field(default=None, metadata={"alias": "searchCriteriaGroupLocationCode"})

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_virtual_on_net_call_type_name: Optional[
        SearchCriteriaExactVirtualOnNetCallTypeName
    ] = field(
        default=None, metadata={"alias": "searchCriteriaExactVirtualOnNetCallTypeName"}
    )


@dataclass(kw_only=True)
class EnterpriseVoiceVPNAddPolicyRequest(OCIRequest):
    """Add the enterprise level data associated with a Voice VPN location code.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        location_dialing_code (str):

        min_extension_length (int):

        max_extension_length (int):

        description (Optional[str]):

        route_group_id (Optional[str]):

        policy_selection (str):

        digit_manipulation (Optional[List[EnterpriseVoiceVPNDigitManipulation]]):

        treatment_id (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    location_dialing_code: str = field(metadata={"alias": "locationDialingCode"})

    min_extension_length: int = field(metadata={"alias": "minExtensionLength"})

    max_extension_length: int = field(metadata={"alias": "maxExtensionLength"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    route_group_id: Optional[str] = field(
        default=None, metadata={"alias": "routeGroupId"}
    )

    policy_selection: str = field(metadata={"alias": "policySelection"})

    digit_manipulation: Optional[List[EnterpriseVoiceVPNDigitManipulation]] = field(
        default=None, metadata={"alias": "digitManipulation"}
    )

    treatment_id: Optional[str] = field(default=None, metadata={"alias": "treatmentId"})


@dataclass(kw_only=True)
class EnterpriseVoiceVPNDeletePolicyRequest(OCIRequest):
    """Delete a enterprise voice VPN location.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        location_dialing_code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    location_dialing_code: str = field(metadata={"alias": "locationDialingCode"})


@dataclass(kw_only=True)
class EnterpriseVoiceVPNGetDefaultRequest(OCIRequest):
    """Request the Voice VPN default settings for the enterprise.
        The response is EnterpriseVoiceVPNGetDefaultResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseVoiceVPNGetPolicyListRequest(OCIRequest):
    """Request the list of Voice VPN locations.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        The response is either a EnterpriseVoiceVPNGetPolicyListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_group_location_code (Optional[List[SearchCriteriaGroupLocationCode]]):

        search_criteria_exact_policy_selection (Optional[SearchCriteriaExactPolicySelection]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_group_location_code: Optional[
        List[SearchCriteriaGroupLocationCode]
    ] = field(default=None, metadata={"alias": "searchCriteriaGroupLocationCode"})

    search_criteria_exact_policy_selection: Optional[
        SearchCriteriaExactPolicySelection
    ] = field(default=None, metadata={"alias": "searchCriteriaExactPolicySelection"})


@dataclass(kw_only=True)
class EnterpriseVoiceVPNGetPolicyRequest(OCIRequest):
    """Request the enterprise level data associated with Voice VPN location code.
        The response is either a EnterpriseVoiceVPNGetPolicyResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        location_dialing_code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    location_dialing_code: str = field(metadata={"alias": "locationDialingCode"})


@dataclass(kw_only=True)
class EnterpriseVoiceVPNGetRequest14sp3(OCIRequest):
    """Request the enterprise level data associated with Voice VPN.
        The response is either a EnterpriseVoiceVPNGetResponse14sp3 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class EnterpriseVoiceVPNModifyPolicyRequest(OCIRequest):
    """Modify the enterprise level data associated with a Voice VPN location code.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        location_dialing_code (str):

        min_extension_length (Optional[int]):

        max_extension_length (Optional[int]):

        description (Optional[Nillable[str]]):

        route_group_id (Optional[str]):

        policy_selection (Optional[str]):

        digit_manipulation (Optional[List[EnterpriseVoiceVPNDigitManipulation]]):

        treatment_id (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    location_dialing_code: str = field(metadata={"alias": "locationDialingCode"})

    min_extension_length: Optional[int] = field(
        default=None, metadata={"alias": "minExtensionLength"}
    )

    max_extension_length: Optional[int] = field(
        default=None, metadata={"alias": "maxExtensionLength"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    route_group_id: Optional[str] = field(
        default=None, metadata={"alias": "routeGroupId"}
    )

    policy_selection: Optional[str] = field(
        default=None, metadata={"alias": "policySelection"}
    )

    digit_manipulation: Optional[List[EnterpriseVoiceVPNDigitManipulation]] = field(
        default=None, metadata={"alias": "digitManipulation"}
    )

    treatment_id: Optional[str] = field(default=None, metadata={"alias": "treatmentId"})

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class EnterpriseVoiceVPNModifyRequest(OCIRequest):
    """Modify the enterprise voice VPN level data associated with voice VPN.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        is_active (Optional[bool]):

        default_selection (Optional[str]):

        e164_selection (Optional[str]):

        use_phone_context (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    default_selection: Optional[str] = field(
        default=None, metadata={"alias": "defaultSelection"}
    )

    e164_selection: Optional[str] = field(
        default=None, metadata={"alias": "e164Selection"}
    )

    use_phone_context: Optional[bool] = field(
        default=None, metadata={"alias": "usePhoneContext"}
    )


@dataclass(kw_only=True)
class ExternalAuthenticationAuthorizeTokenRequest22(OCIRequest):
    """This command is part of the Portal API.
        Sent when a Web or CLI user logs in using external authentication.
        The hashed password value in the request is supported only when the request is sent from the CommPilot web portal.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        password (Optional[str]):

        is_password_hashed (Optional[bool]):

        login_token (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    is_password_hashed: Optional[bool] = field(
        default=None, metadata={"alias": "isPasswordHashed"}
    )

    login_token: str = field(metadata={"alias": "loginToken"})


@dataclass(kw_only=True)
class ExternalAuthenticationCreateLoginTokenRequest(OCIRequest):
    """This command allows a BroadWorks or Third-Party Client Application to
        create a Single Sign-On token for a user.
        The response is either ExternalAuthenticationCreateLoginTokenResponse
        or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class GroupAccessDeviceAddRequest22V2(OCIRequest):
    """Request to add a group access device.
        The response is either SuccessResponse or ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          groupExternalId
          deviceExternalId
          deviceIPEI

    Attributes:

        service_provider_id (Optional[str]):

        group_id (Optional[str]):

        device_name (Optional[str]):

        group_external_id (Optional[str]):

        device_external_id (Optional[str]):

        device_type (str):

        protocol (Optional[str]):

        net_address (Optional[str]):

        port (Optional[int]):

        outbound_proxy_server_net_address (Optional[str]):

        stun_server_net_address (Optional[str]):

        mac_address (Optional[str]):

        serial_number (Optional[str]):

        description (Optional[str]):

        physical_location (Optional[str]):

        transport_protocol (Optional[str]):

        use_custom_user_name_password (Optional[bool]):

        access_device_credentials (Optional[DeviceManagementUserNamePassword16]):

        device_ipei (Optional[str]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    device_name: Optional[str] = field(default=None, metadata={"alias": "deviceName"})

    group_external_id: Optional[str] = field(
        default=None, metadata={"alias": "groupExternalId"}
    )

    device_external_id: Optional[str] = field(
        default=None, metadata={"alias": "deviceExternalId"}
    )

    device_type: str = field(metadata={"alias": "deviceType"})

    protocol: Optional[str] = field(default=None, metadata={"alias": "protocol"})

    net_address: Optional[str] = field(default=None, metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    outbound_proxy_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "outboundProxyServerNetAddress"}
    )

    stun_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "stunServerNetAddress"}
    )

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})

    serial_number: Optional[str] = field(
        default=None, metadata={"alias": "serialNumber"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    use_custom_user_name_password: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomUserNamePassword"}
    )

    access_device_credentials: Optional[DeviceManagementUserNamePassword16] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )

    device_ipei: Optional[str] = field(default=None, metadata={"alias": "deviceIPEI"})


@dataclass(kw_only=True)
class GroupAccessDeviceAvailablePortGetListRequest(OCIRequest):
    """Request to get the list of available ports in a device.
        The response is either GroupAccessDeviceAvailablePortGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        access_device (AccessDevice):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})


@dataclass(kw_only=True)
class GroupAccessDeviceCustomTagAddOrModifyListRequest(OCIRequest):
    """Request to add or modify a list of static configuration tag for a group access
        device.  If the tag does not exist, it is added.  If the tag exists, its
        value is updated.

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

        tag (List[DeviceManagementTag]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    tag: List[DeviceManagementTag] = field(metadata={"alias": "tag"})


@dataclass(kw_only=True)
class GroupAccessDeviceCustomTagAddRequest(OCIRequest):
    """Request to add a static configuration tag for a group access device.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

        tag_name (str):

        tag_value (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    tag_name: str = field(metadata={"alias": "tagName"})

    tag_value: Optional[str] = field(default=None, metadata={"alias": "tagValue"})


@dataclass(kw_only=True)
class GroupAccessDeviceCustomTagDeleteListRequest(OCIRequest):
    """Request to delete static configuration tags for a group access device.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

        tag_name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    tag_name: List[str] = field(metadata={"alias": "tagName"})


@dataclass(kw_only=True)
class GroupAccessDeviceCustomTagGetListRequest(OCIRequest):
    """Request to get the list of custom configuration tags managed by the Device Management System, on a per-device profile basis.
        The response is either GroupAccessDeviceCustomTagGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class GroupAccessDeviceCustomTagModifyRequest(OCIRequest):
    """Request to modify a static configuration tag for a group access device.

        The tagValueToEncrypt element can only be used by a system administrator.

        The following elements are only used in XS data mode and ignored in AS data mode:
          tagValueToEncrypt

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

        tag_name (str):

        tag_value (Optional[Nillable[str]]):

        tag_value_to_encrypt (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    tag_name: str = field(metadata={"alias": "tagName"})

    tag_value: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "tagValue"}
    )

    tag_value_to_encrypt: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "tagValueToEncrypt"}
    )

    def __post_init__(self):
        nillable_fields = ["tag_value", "tag_value_to_encrypt"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupAccessDeviceDeleteRequest(OCIRequest):
    """Request to delete a specified group access device.

        The following elements are only used in AS data mode and ignored in XS data mode:
          deviceExternalId

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (Optional[str]):

        group_id (Optional[str]):

        device_name (Optional[str]):

        device_external_id (Optional[str]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    device_name: Optional[str] = field(default=None, metadata={"alias": "deviceName"})

    device_external_id: Optional[str] = field(
        default=None, metadata={"alias": "deviceExternalId"}
    )


@dataclass(kw_only=True)
class GroupAccessDeviceDeviceActivationGetRequest(OCIRequest):
    """Requests the activation information for a device configured at the Group level.
        Returns a GroupAccessDeviceDeviceActivationGetResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class GroupAccessDeviceDeviceActivationModifyRequest(OCIRequest):
    """Activates or deactivates a device configured at the Group level. It is only possible
        for this request to activate a device which is deactivated. Trying to activate a
        device in the activating state will result in an error response since only the DAS is
        allowed to execute this operation.
        Returns a SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

        activate_device (bool):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    activate_device: bool = field(metadata={"alias": "activateDevice"})


@dataclass(kw_only=True)
class GroupAccessDeviceFileGetListRequest14sp8(OCIRequest):
    """Request to get the list of device files managed by the Device Management System, on a per-device profile basis.
        The response is either GroupAccessDeviceFileGetListResponse14sp8 or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class GroupAccessDeviceFileGetRequest20(OCIRequest):
    """Request to get a group device profile file.
        The response is either GroupAccessDeviceFileGetResponse20 or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

        file_format (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    file_format: str = field(metadata={"alias": "fileFormat"})


@dataclass(kw_only=True)
class GroupAccessDeviceFileModifyRequest14sp8(OCIRequest):
    """Request to modify a specified group access device file.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

        file_format (str):

        file_source (Optional[str]):

        upload_file (Optional[FileResource]):

        extended_capture_enabled (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    file_format: str = field(metadata={"alias": "fileFormat"})

    file_source: Optional[str] = field(default=None, metadata={"alias": "fileSource"})

    upload_file: Optional[FileResource] = field(
        default=None, metadata={"alias": "uploadFile"}
    )

    extended_capture_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "extendedCaptureEnabled"}
    )


@dataclass(kw_only=True)
class GroupAccessDeviceGenerateActivationCodeRequest(OCIRequest):
    """Requests a new activation code for a device configured at the Group level.
        Returns a SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class GroupAccessDeviceGetAvailableCustomTagListRequest(OCIRequest):
    """Get the list of all available custom tags managed by the Device Management System, on a per-device profile basis.
        The response is either GroupAccessDeviceGetAvailableCustomTagListResponse or ErrorResponse.
        The following elements are used in AS mode and ignored in XS data mode:
          tagSetName

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

        tag_set_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    tag_set_name: Optional[str] = field(default=None, metadata={"alias": "tagSetName"})


@dataclass(kw_only=True)
class GroupAccessDeviceGetAvailableDetailListRequest19(OCIRequest):
    """Requests the list of available access devices for assignment to a user
        within a group. The list includes devices created at the system, service provider, and group levels.

        The following elements are used in AS mode and ignored in XS data mode:
          onlyIntelligentDevice

        The response is either GroupAccessDeviceGetAvailableDetailListResponse19 or
        ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        is_music_on_hold (bool):

        only_video_capable (bool):

        only_intelligent_device (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    is_music_on_hold: bool = field(metadata={"alias": "isMusicOnHold"})

    only_video_capable: bool = field(metadata={"alias": "onlyVideoCapable"})

    only_intelligent_device: Optional[bool] = field(
        default=None, metadata={"alias": "onlyIntelligentDevice"}
    )


@dataclass(kw_only=True)
class GroupAccessDeviceGetEnhancedConfigurationTypeListRequest(OCIRequest):
    """Requests the list of configurable device types of devices that have already been
        added to the group.
        The response is either GroupAccessDeviceGetEnhancedConfigurationTypeListResponse
        or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupAccessDeviceGetEnhancedConfigurationTypeRequest14(OCIRequest):
    """Requests the details of a specified configurable device type for a group.
        The response is either GroupAccessDeviceGetEnhancedConfigurationTypeResponse14
        or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_type (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class GroupAccessDeviceGetLinkedLeafDeviceListRequest22(OCIRequest):
    """Requests the list of linked leaf devices for the group level tree device passed in the request.
        A tree device is a device associated with a device type that has the option
        supportLinks set to \"Support Links from Devices\". Many leaf devices can be linked to it.
        A leaf device is a device associated with a device type that has the option
        supportLinks set to \"Support Link to Device\" or \"Support Link to Device and User\".  It can
        be linked to only one tree device.
        The list includes devices created at the system, service provider, and group levels.
        If the leafDeviceCategory is not set in the request, then linked leaf devices of all categories are requested, otherwise only the linked leaf devices of the specified category are requested.
        The category values are: \"Handset\", \"Base Station\", \"All\".

        The response is either GroupAccessDeviceGetLinkedLeafDeviceListResponse22 or
        ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

        leaf_device_category (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    leaf_device_category: Optional[str] = field(
        default=None, metadata={"alias": "leafDeviceCategory"}
    )


@dataclass(kw_only=True)
class GroupAccessDeviceGetLinkedTreeDeviceRequest(OCIRequest):
    """Requests the tree device linked with the group level leaf device passed in the request.
        A tree device is a device associated with a device type that has the option
        supportLinks set to \"Support Links from Devices\". Many leaf devices can be linked to it.
        A leaf device is a device associated with a device type that has the option
        supportLinks set to \"Support Link to Device\" or \"Support Link to Device and User\".  It can
        be linked to only one tree device.

        The response is either GroupAccessDeviceGetLinkedTreeDeviceResponse or
        ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class GroupAccessDeviceGetListRequest(OCIRequest):
    """Requests the list of access devices in a group.

        The following elements are only used in AS data mode and ignored in XS data mode:
          groupExternalId

        The response is either GroupAccessDeviceGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (Optional[str]):

        group_id (Optional[str]):

        group_external_id (Optional[str]):

        response_size_limit (Optional[int]):

        search_criteria_device_name (Optional[List[SearchCriteriaDeviceName]]):

        search_criteria_device_mac_address (Optional[List[SearchCriteriaDeviceMACAddress]]):

        search_criteria_device_net_address (Optional[List[SearchCriteriaDeviceNetAddress]]):

        search_criteria_exact_device_type (Optional[SearchCriteriaExactDeviceType]):

        search_criteria_access_device_version (Optional[List[SearchCriteriaAccessDeviceVersion]]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    group_external_id: Optional[str] = field(
        default=None, metadata={"alias": "groupExternalId"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_device_name: Optional[List[SearchCriteriaDeviceName]] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceName"}
    )

    search_criteria_device_mac_address: Optional[
        List[SearchCriteriaDeviceMACAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceMACAddress"})

    search_criteria_device_net_address: Optional[
        List[SearchCriteriaDeviceNetAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceNetAddress"})

    search_criteria_exact_device_type: Optional[SearchCriteriaExactDeviceType] = field(
        default=None, metadata={"alias": "searchCriteriaExactDeviceType"}
    )

    search_criteria_access_device_version: Optional[
        List[SearchCriteriaAccessDeviceVersion]
    ] = field(default=None, metadata={"alias": "searchCriteriaAccessDeviceVersion"})


@dataclass(kw_only=True)
class GroupAccessDeviceGetNativeTagsWithLogicListRequest(OCIRequest):
    """Get the list of all native tags with logic managed by the Device Management System, on a per-device profile basis.
        The response is either GroupAccessDeviceGetAvailableCustomTagListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class GroupAccessDeviceGetPagedSortedListRequest22(OCIRequest):
    """Requests the list of access devices in a group.
        The response is either GroupAccessDeviceGetPagedSortedListResponse or ErrorResponse.
        If no sortOrder is included, the response is sorted by Device Name ascending
        by default.  If the responsePagingControl element is not provided, the paging startIndex
        will be set to 1 by default, and the responsePageSize will be set to the maximum
        responsePageSize by default.
        Multiple search criteria are logically ANDed together unless the
        searchCriteriaModeOr option is included. Then the search criteria are logically
        ORed together.
        The getVisualDeviceManagementAPIDevicesOnly element can only be set when CloudPBX is licenced.
        If the getVisualDeviceManagementAPIDevicesOnly element is not set, all devices are returned with Visual Device Management API flag set to empty.
        If the getVisualDeviceManagementAPIDevicesOnly element is set to true, only SIP devices supporting Visual Device Management API are returned.
        If the getVisualDeviceManagementAPIDevicesOnly element is set to false, all SIP devices are returned with their current Visual Device Management API flag value.

    Attributes:

        service_provider_id (str):

        group_id (str):

        include_total_number_of_rows (Optional[bool]):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderGroupAccessDeviceGetPagedSortedList]]):

        search_criteria_device_name (Optional[List[SearchCriteriaDeviceName]]):

        search_criteria_device_mac_address (Optional[List[SearchCriteriaDeviceMACAddress]]):

        search_criteria_device_net_address (Optional[List[SearchCriteriaDeviceNetAddress]]):

        search_criteria_exact_device_type (Optional[List[SearchCriteriaExactDeviceType]]):

        search_criteria_access_device_version (Optional[List[SearchCriteriaAccessDeviceVersion]]):

        search_criteria_mode_or (Optional[bool]):

        get_visual_device_management_api_devices_only (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    include_total_number_of_rows: Optional[bool] = field(
        default=None, metadata={"alias": "includeTotalNumberOfRows"}
    )

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[List[SortOrderGroupAccessDeviceGetPagedSortedList]] = field(
        default=None, metadata={"alias": "sortOrder"}
    )

    search_criteria_device_name: Optional[List[SearchCriteriaDeviceName]] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceName"}
    )

    search_criteria_device_mac_address: Optional[
        List[SearchCriteriaDeviceMACAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceMACAddress"})

    search_criteria_device_net_address: Optional[
        List[SearchCriteriaDeviceNetAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceNetAddress"})

    search_criteria_exact_device_type: Optional[List[SearchCriteriaExactDeviceType]] = (
        field(default=None, metadata={"alias": "searchCriteriaExactDeviceType"})
    )

    search_criteria_access_device_version: Optional[
        List[SearchCriteriaAccessDeviceVersion]
    ] = field(default=None, metadata={"alias": "searchCriteriaAccessDeviceVersion"})

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )

    get_visual_device_management_api_devices_only: Optional[bool] = field(
        default=None, metadata={"alias": "getVisualDeviceManagementAPIDevicesOnly"}
    )


@dataclass(kw_only=True)
class GroupAccessDeviceGetRequest24V3(OCIRequest):
    """Requests the configuration of a specified group access device.
        The response is either GroupAccessDeviceGetResponse24V3 or ErrorResponse.

    Attributes:

        service_provider_id (Optional[str]):

        group_id (Optional[str]):

        device_name (Optional[str]):

        device_external_id (Optional[str]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    device_name: Optional[str] = field(default=None, metadata={"alias": "deviceName"})

    device_external_id: Optional[str] = field(
        default=None, metadata={"alias": "deviceExternalId"}
    )


@dataclass(kw_only=True)
class GroupAccessDeviceGetUserListRequest21sp1(OCIRequest):
    """Requests the configuration of a specified group access device.
        The response is either GroupAccessDeviceGetUserListResponse21sp1 or ErrorResponse.
        The following elements are only used in XS data mode and ignored in AS data mode:
          searchCriteriaAccessDeviceEndpointPrivateIdentity

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

        response_size_limit (Optional[int]):

        search_criteria_line_port_user_part (Optional[List[SearchCriteriaLinePortUserPart]]):

        search_criteria_line_port_domain (Optional[List[SearchCriteriaLinePortDomain]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_exact_endpoint_type (Optional[SearchCriteriaExactEndpointType21sp1]):

        search_criteria_exact_user_type (Optional[SearchCriteriaExactUserType]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_port_number (Optional[SearchCriteriaExactPortNumber]):

        search_criteria_access_device_endpoint_private_identity (Optional[List[SearchCriteriaAccessDeviceEndpointPrivateIdentity]]):

        search_criteria_user_hotline_contact (Optional[List[SearchCriteriaUserHotlineContact]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_line_port_user_part: Optional[
        List[SearchCriteriaLinePortUserPart]
    ] = field(default=None, metadata={"alias": "searchCriteriaLinePortUserPart"})

    search_criteria_line_port_domain: Optional[List[SearchCriteriaLinePortDomain]] = (
        field(default=None, metadata={"alias": "searchCriteriaLinePortDomain"})
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_exact_endpoint_type: Optional[
        SearchCriteriaExactEndpointType21sp1
    ] = field(default=None, metadata={"alias": "searchCriteriaExactEndpointType"})

    search_criteria_exact_user_type: Optional[SearchCriteriaExactUserType] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserType"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_port_number: Optional[SearchCriteriaExactPortNumber] = field(
        default=None, metadata={"alias": "searchCriteriaExactPortNumber"}
    )

    search_criteria_access_device_endpoint_private_identity: Optional[
        List[SearchCriteriaAccessDeviceEndpointPrivateIdentity]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaAccessDeviceEndpointPrivateIdentity"},
    )

    search_criteria_user_hotline_contact: Optional[
        List[SearchCriteriaUserHotlineContact]
    ] = field(default=None, metadata={"alias": "searchCriteriaUserHotlineContact"})


@dataclass(kw_only=True)
class GroupAccessDeviceLinkDeviceListRequest(OCIRequest):
    """Request to link one or more leaf devices to a group level tree device.
        A tree device is a device associated with a device type that has the option
        supportLinks set to \"Support Links from Devices\". Many leaf devices can be linked to it.
        A leaf device is a device associated with a device type that has the option
        supportLinks set to \"Support Link to Device\" or \"Support Link to Device and User\".  It can
        be linked to only one tree device.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

        leaf_device_key (List[AccessDeviceKey]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    leaf_device_key: List[AccessDeviceKey] = field(metadata={"alias": "leafDeviceKey"})


@dataclass(kw_only=True)
class GroupAccessDeviceModifyRequest22(OCIRequest):
    """Request to modify a specified group access device.
        The response is either SuccessResponse or ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          deviceExternalId
          deviceIPEI
          useDeviceCode
          deviceCode

    Attributes:

        service_provider_id (Optional[str]):

        group_id (Optional[str]):

        device_name (Optional[str]):

        device_external_id (Optional[str]):

        protocol (Optional[str]):

        net_address (Optional[Nillable[str]]):

        port (Optional[Nillable[int]]):

        outbound_proxy_server_net_address (Optional[Nillable[str]]):

        stun_server_net_address (Optional[Nillable[str]]):

        mac_address (Optional[Nillable[str]]):

        serial_number (Optional[Nillable[str]]):

        description (Optional[Nillable[str]]):

        configuration_mode (Optional[Nillable[str]]):

        configuration_file (Optional[FileResource]):

        physical_location (Optional[Nillable[str]]):

        transport_protocol (Optional[str]):

        use_custom_user_name_password (Optional[bool]):

        access_device_credentials (Optional[Nillable[DeviceManagementUserNamePassword16]]):

        device_ipei (Optional[Nillable[str]]):

        use_device_code (Optional[bool]):

        device_code (Optional[Nillable[str]]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    device_name: Optional[str] = field(default=None, metadata={"alias": "deviceName"})

    device_external_id: Optional[str] = field(
        default=None, metadata={"alias": "deviceExternalId"}
    )

    protocol: Optional[str] = field(default=None, metadata={"alias": "protocol"})

    net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "netAddress"}
    )

    port: Optional[Nillable[int]] = field(default=None, metadata={"alias": "port"})

    outbound_proxy_server_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "outboundProxyServerNetAddress"}
    )

    stun_server_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "stunServerNetAddress"}
    )

    mac_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "macAddress"}
    )

    serial_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "serialNumber"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    configuration_mode: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "configurationMode"}
    )

    configuration_file: Optional[FileResource] = field(
        default=None, metadata={"alias": "configurationFile"}
    )

    physical_location: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    use_custom_user_name_password: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomUserNamePassword"}
    )

    access_device_credentials: Optional[
        Nillable[DeviceManagementUserNamePassword16]
    ] = field(default=None, metadata={"alias": "accessDeviceCredentials"})

    device_ipei: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceIPEI"}
    )

    use_device_code: Optional[bool] = field(
        default=None, metadata={"alias": "useDeviceCode"}
    )

    device_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceCode"}
    )

    def __post_init__(self):
        nillable_fields = [
            "net_address",
            "port",
            "outbound_proxy_server_net_address",
            "stun_server_net_address",
            "mac_address",
            "serial_number",
            "description",
            "configuration_mode",
            "physical_location",
            "access_device_credentials",
            "device_ipei",
            "device_code",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupAccessDeviceModifyUserRequest(OCIRequest):
    """Request to modify attributes for line/ports assigned on the group device profile.
        The response is either SuccessResponse or ErrorResponse.
        The following elements are only used in XS data mode and ignored in AS data mode:
          privateIdentity

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

        line_port (str):

        private_identity (Optional[str]):

        is_primary_line_port (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    is_primary_line_port: Optional[bool] = field(
        default=None, metadata={"alias": "isPrimaryLinePort"}
    )


@dataclass(kw_only=True)
class GroupAccessDeviceResetRequest(OCIRequest):
    """Reset a specific group SIP device that supports the reset operation.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class GroupAccessDeviceTagSetGetRequest(OCIRequest):
    """Request to get the custom configuration tag set defined at the access device.
        The response is either GroupAccessDeviceTagSetGetResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class GroupAccessDeviceTagSetModifyRequest(OCIRequest):
    """Request to modify a static configuration tag set.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

        tag_set_name (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    tag_set_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "tagSetName"}
    )

    def __post_init__(self):
        nillable_fields = ["tag_set_name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupAccessDeviceUnlinkDeviceListRequest(OCIRequest):
    """Request to unlink one or more leaf access devices from a tree device.
        A leaf device is a device associated with a device type that has the option
        supportLinks set to \"Support Link to Device\" or \"Support Link to Device and User\".  It can
        be linked to only one tree device.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        leaf_device_key (List[AccessDeviceKey]):

    """

    leaf_device_key: List[AccessDeviceKey] = field(metadata={"alias": "leafDeviceKey"})


@dataclass(kw_only=True)
class GroupAccountAuthorizationCodesAddListRequest(OCIRequest):
    """Add a list of account/authorization codes to a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        code_entry (List[AccountAuthorizationCodeEntry]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    code_entry: List[AccountAuthorizationCodeEntry] = field(
        metadata={"alias": "codeEntry"}
    )


@dataclass(kw_only=True)
class GroupAccountAuthorizationCodesDeleteListRequest(OCIRequest):
    """Delete a list of account/authorization codes from a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        code (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    code: List[str] = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class GroupAccountAuthorizationCodesGetAvailableUserListRequest(OCIRequest):
    """Get a list of non restricted users for the account/authorization codes service.
        The response is either GroupAccountAuthorizationCodesGetAvailableUserListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupAccountAuthorizationCodesGetListRequest(OCIRequest):
    """Request the list of account/authorization codes for a group.
        The response is either a GroupAccountAuthorizationCodesGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupAccountAuthorizationCodesGetRequest(OCIRequest):
    """Request the group's account/authorization codes setting.
        The response is either a GroupAccountAuthorizationCodesGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupAccountAuthorizationCodesModifyRequest(OCIRequest):
    """Change the group's account/authorization codes setting.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        code_type (Optional[str]):

        number_of_digits (Optional[int]):

        allow_local_and_toll_free_calls (Optional[bool]):

        mandatory_usage_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

        optional_usage_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    code_type: Optional[str] = field(default=None, metadata={"alias": "codeType"})

    number_of_digits: Optional[int] = field(
        default=None, metadata={"alias": "numberOfDigits"}
    )

    allow_local_and_toll_free_calls: Optional[bool] = field(
        default=None, metadata={"alias": "allowLocalAndTollFreeCalls"}
    )

    mandatory_usage_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "mandatoryUsageUserIdList"}
    )

    optional_usage_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "optionalUsageUserIdList"}
    )

    def __post_init__(self):
        nillable_fields = [
            "mandatory_usage_user_id_list",
            "optional_usage_user_id_list",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupAdminAddRequest(OCIRequest):
    """Add a group administrator.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        user_id (str):

        first_name (Optional[str]):

        last_name (Optional[str]):

        password (Optional[str]):

        language (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    user_id: str = field(metadata={"alias": "userId"})

    first_name: Optional[str] = field(default=None, metadata={"alias": "firstName"})

    last_name: Optional[str] = field(default=None, metadata={"alias": "lastName"})

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    language: Optional[str] = field(default=None, metadata={"alias": "language"})


@dataclass(kw_only=True)
class GroupAdminAlternateIdAddRequest(OCIRequest):
    """Request to add an alternate admin Id to a group administrator.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        alternate_user_id (str):

        description (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    alternate_user_id: str = field(metadata={"alias": "alternateUserId"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class GroupAdminAlternateIdDeleteRequest(OCIRequest):
    """Request to delete an alternate admin user id of a group administrator.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        alternate_user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    alternate_user_id: str = field(metadata={"alias": "alternateUserId"})


@dataclass(kw_only=True)
class GroupAdminAlternateIdGetListRequest(OCIRequest):
    """Request to get the admin id and the list of alternate admin ids of an admin.
        The response is either GroupAdminAlternateIdGetListResponse or ErrorResponse.
        The \"userId\" can be either the admin user Id or an alternate admin user Id.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class GroupAdminAlternateIdModifyRequest(OCIRequest):
    """Request to modify an alternate id of a group admin.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        alternate_user_id (str):

        new_alternate_user_id (Optional[str]):

        description (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    alternate_user_id: str = field(metadata={"alias": "alternateUserId"})

    new_alternate_user_id: Optional[str] = field(
        default=None, metadata={"alias": "newAlternateUserId"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupAdminDeleteRequest(OCIRequest):
    """Delete a group administrator.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class GroupAdminGetListRequest(OCIRequest):
    """Get a list of group and department administrators within the group.
        The response is either a GroupAdminGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupAdminGetPagedSortedListRequest(OCIRequest):
    """Get a list of group and department administrators within the group.
        The response is either a GroupAdminGetPagedSortedListResponse or an ErrorResponse.
        If no sort criterion is included, the response is sorted by administrator id ascending by default.
        If the responsePagingControl element is not provided, the paging startIndex will be
        set to 1 by default, and the responsePageSize will be set to the maximum
        responsePageSize by default.
        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is
        included. Then the search criteria are logically ORed together.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderGroupAdminGetPagedSortedList]]):

        search_criteria_admin_id (Optional[List[SearchCriteriaAdminId]]):

        search_criteria_admin_last_name (Optional[List[SearchCriteriaAdminLastName]]):

        search_criteria_admin_first_name (Optional[List[SearchCriteriaAdminFirstName]]):

        search_criteria_exact_group_admin_type (Optional[List[SearchCriteriaExactGroupAdminType]]):

        search_criteria_language (Optional[List[SearchCriteriaLanguage]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[List[SortOrderGroupAdminGetPagedSortedList]] = field(
        default=None, metadata={"alias": "sortOrder"}
    )

    search_criteria_admin_id: Optional[List[SearchCriteriaAdminId]] = field(
        default=None, metadata={"alias": "searchCriteriaAdminId"}
    )

    search_criteria_admin_last_name: Optional[List[SearchCriteriaAdminLastName]] = (
        field(default=None, metadata={"alias": "searchCriteriaAdminLastName"})
    )

    search_criteria_admin_first_name: Optional[List[SearchCriteriaAdminFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaAdminFirstName"})
    )

    search_criteria_exact_group_admin_type: Optional[
        List[SearchCriteriaExactGroupAdminType]
    ] = field(default=None, metadata={"alias": "searchCriteriaExactGroupAdminType"})

    search_criteria_language: Optional[List[SearchCriteriaLanguage]] = field(
        default=None, metadata={"alias": "searchCriteriaLanguage"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupAdminGetPolicyRequest20(OCIRequest):
    """Requests the Group administrator's policy settings.
        The response is either GroupAdminGetPolicyResponse20 or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class GroupAdminGetRequest22V3(OCIRequest):
    """Get a group administrators profile.
        The response is either a GroupAdminGetResponse22V3 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class GroupAdminModifyPolicyRequest(OCIRequest):
    """Request to modify the group administrator's policy settings.
        The response is either SuccessResponse or ErrorResponse.
        The following elements are only used in AS data mode:
            dialableCallerIDAccess
            verifyTranslationAndRoutingAccess
            communicationBarringUserProfileAccess (only applicable to groups in an Enterprise)

    Attributes:

        user_id (str):

        profile_access (Optional[str]):

        user_access (Optional[str]):

        admin_access (Optional[str]):

        department_access (Optional[str]):

        access_device_access (Optional[str]):

        enhanced_service_instance_access (Optional[str]):

        feature_access_code_access (Optional[str]):

        phone_number_extension_access (Optional[str]):

        calling_line_id_number_access (Optional[str]):

        service_access (Optional[str]):

        trunk_group_access (Optional[str]):

        session_admission_control_access (Optional[str]):

        office_zone_access (Optional[str]):

        dialable_caller_id_access (Optional[str]):

        number_activation_access (Optional[str]):

        verify_translation_and_routing_access (Optional[str]):

        communication_barring_user_profile_access (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    profile_access: Optional[str] = field(
        default=None, metadata={"alias": "profileAccess"}
    )

    user_access: Optional[str] = field(default=None, metadata={"alias": "userAccess"})

    admin_access: Optional[str] = field(default=None, metadata={"alias": "adminAccess"})

    department_access: Optional[str] = field(
        default=None, metadata={"alias": "departmentAccess"}
    )

    access_device_access: Optional[str] = field(
        default=None, metadata={"alias": "accessDeviceAccess"}
    )

    enhanced_service_instance_access: Optional[str] = field(
        default=None, metadata={"alias": "enhancedServiceInstanceAccess"}
    )

    feature_access_code_access: Optional[str] = field(
        default=None, metadata={"alias": "featureAccessCodeAccess"}
    )

    phone_number_extension_access: Optional[str] = field(
        default=None, metadata={"alias": "phoneNumberExtensionAccess"}
    )

    calling_line_id_number_access: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdNumberAccess"}
    )

    service_access: Optional[str] = field(
        default=None, metadata={"alias": "serviceAccess"}
    )

    trunk_group_access: Optional[str] = field(
        default=None, metadata={"alias": "trunkGroupAccess"}
    )

    session_admission_control_access: Optional[str] = field(
        default=None, metadata={"alias": "sessionAdmissionControlAccess"}
    )

    office_zone_access: Optional[str] = field(
        default=None, metadata={"alias": "officeZoneAccess"}
    )

    dialable_caller_id_access: Optional[str] = field(
        default=None, metadata={"alias": "dialableCallerIDAccess"}
    )

    number_activation_access: Optional[str] = field(
        default=None, metadata={"alias": "numberActivationAccess"}
    )

    verify_translation_and_routing_access: Optional[str] = field(
        default=None, metadata={"alias": "verifyTranslationAndRoutingAccess"}
    )

    communication_barring_user_profile_access: Optional[str] = field(
        default=None, metadata={"alias": "communicationBarringUserProfileAccess"}
    )


@dataclass(kw_only=True)
class GroupAdminModifyRequest(OCIRequest):
    """Modify a group administrator.
        Since old password is not specified here, any password rule related to old password
        does not apply.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode.
        accountDisabled

    Attributes:

        user_id (str):

        first_name (Optional[Nillable[str]]):

        last_name (Optional[Nillable[str]]):

        password (Optional[Nillable[str]]):

        language (Optional[str]):

        account_disabled (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    first_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "firstName"}
    )

    last_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "lastName"}
    )

    password: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "password"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    account_disabled: Optional[bool] = field(
        default=None, metadata={"alias": "accountDisabled"}
    )

    def __post_init__(self):
        nillable_fields = ["first_name", "last_name", "password"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupAdministratorPasswordRulesGetRequest(OCIRequest):
    """Requests the effective password rules setting for a group administrator.
        The response is either GroupAdministratorPasswordRulesGetResponse or
        ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupAdviceOfChargeGetRequest(OCIRequest):
    """Request to get the list of Advice of Charge group parameters.
        The response is either GroupAdviceOfChargeGetResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupAdviceOfChargeModifyRequest(OCIRequest):
    """Modify the service provider level Advice Of Charge group settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        use_group_level_ao_c_settings (Optional[bool]):

        delay_between_notification_seconds (Optional[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    use_group_level_ao_c_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupLevelAoCSettings"}
    )

    delay_between_notification_seconds: Optional[int] = field(
        default=None, metadata={"alias": "delayBetweenNotificationSeconds"}
    )


@dataclass(kw_only=True)
class GroupAlternateUserIdGetListRequest(OCIRequest):
    """Request to get the list of alternate user ids in the group.
        The response is either GroupAlternateUserIdGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_alternate_user_id (Optional[List[SearchCriteriaAlternateUserId]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_alternate_user_id: Optional[List[SearchCriteriaAlternateUserId]] = (
        field(default=None, metadata={"alias": "searchCriteriaAlternateUserId"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )


@dataclass(kw_only=True)
class GroupAnnouncementFileAddRequest(OCIRequest):
    """Add an announcement to the group announcement repository

        The following elements are only used in AS data mode and ignored in XS data mode:
          groupExternalId
          announcementFileExternalId

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (Optional[str]):

        group_id (Optional[str]):

        announcement_file_name (Optional[str]):

        group_external_id (Optional[str]):

        announcement_file_external_id (Optional[str]):

        announcement_file (LabeledMediaFileResource):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    announcement_file_name: Optional[str] = field(
        default=None, metadata={"alias": "announcementFileName"}
    )

    group_external_id: Optional[str] = field(
        default=None, metadata={"alias": "groupExternalId"}
    )

    announcement_file_external_id: Optional[str] = field(
        default=None, metadata={"alias": "announcementFileExternalId"}
    )

    announcement_file: LabeledMediaFileResource = field(
        metadata={"alias": "announcementFile"}
    )


@dataclass(kw_only=True)
class GroupAnnouncementFileDeleteListRequest(OCIRequest):
    """Delete one or more announcements from the group announcement repository

        The following elements are only used in AS data mode and ignored in XS data mode:
          groupExternalId
          announcementFileExternalId

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (Optional[str]):

        group_id (Optional[str]):

        announcement_file_key (Optional[List[AnnouncementFileKey]]):

        group_external_id (Optional[str]):

        announcement_file_external_id (Optional[List[str]]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    announcement_file_key: Optional[List[AnnouncementFileKey]] = field(
        default=None, metadata={"alias": "announcementFileKey"}
    )

    group_external_id: Optional[str] = field(
        default=None, metadata={"alias": "groupExternalId"}
    )

    announcement_file_external_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "announcementFileExternalId"}
    )


@dataclass(kw_only=True)
class GroupAnnouncementFileGetListRequest(OCIRequest):
    """Get the list of available announcement files for a Group.

        The following elements are only used in AS data mode and ignored in XS data mode:
          groupExternalId

        The response is either a GroupAnnouncementFileGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (Optional[str]):

        group_id (Optional[str]):

        group_external_id (Optional[str]):

        announcement_file_type (Optional[str]):

        include_announcement_table (bool):

        response_size_limit (Optional[int]):

        search_criteria_announcement_file_name (Optional[List[SearchCriteriaAnnouncementFileName]]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    group_external_id: Optional[str] = field(
        default=None, metadata={"alias": "groupExternalId"}
    )

    announcement_file_type: Optional[str] = field(
        default=None, metadata={"alias": "announcementFileType"}
    )

    include_announcement_table: bool = field(
        metadata={"alias": "includeAnnouncementTable"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_announcement_file_name: Optional[
        List[SearchCriteriaAnnouncementFileName]
    ] = field(default=None, metadata={"alias": "searchCriteriaAnnouncementFileName"})


@dataclass(kw_only=True)
class GroupAnnouncementFileGetPagedSortedListRequest(OCIRequest):
    """Get the list of available announcement files for
        a Group.
        If the responsePagingControl element is not provided,
        the paging startIndex will be set to 1 by default,
        and the responsePageSize will be set to the maximum responsePageSize by
        default.
        If no sortOrder is included, the response is sorted by Name ascending by default.
        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        The following elements are only used in AS data mode and ignored in XS data mode:
          groupExternalId

        The response is either a GroupAnnouncementFileGetPagedSortedListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (Optional[str]):

        group_id (Optional[str]):

        group_external_id (Optional[str]):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_by_announcement_file_name (Optional[SortByAnnouncementFileName]):

        sort_by_announcement_file_size (Optional[SortByAnnouncementFileSize]):

        search_criteria_announcement_file_name (Optional[List[SearchCriteriaAnnouncementFileName]]):

        search_criteria_exact_announcement_file_type (Optional[SearchCriteriaExactAnnouncementFileType]):

        search_criteria_exact_media_file_type (Optional[List[SearchCriteriaExactMediaFileType]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    group_external_id: Optional[str] = field(
        default=None, metadata={"alias": "groupExternalId"}
    )

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_by_announcement_file_name: Optional[SortByAnnouncementFileName] = field(
        default=None, metadata={"alias": "sortByAnnouncementFileName"}
    )

    sort_by_announcement_file_size: Optional[SortByAnnouncementFileSize] = field(
        default=None, metadata={"alias": "sortByAnnouncementFileSize"}
    )

    search_criteria_announcement_file_name: Optional[
        List[SearchCriteriaAnnouncementFileName]
    ] = field(default=None, metadata={"alias": "searchCriteriaAnnouncementFileName"})

    search_criteria_exact_announcement_file_type: Optional[
        SearchCriteriaExactAnnouncementFileType
    ] = field(
        default=None, metadata={"alias": "searchCriteriaExactAnnouncementFileType"}
    )

    search_criteria_exact_media_file_type: Optional[
        List[SearchCriteriaExactMediaFileType]
    ] = field(default=None, metadata={"alias": "searchCriteriaExactMediaFileType"})

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupAnnouncementFileGetRequest22(OCIRequest):
    """Request to get the announcement repository file information.

        The following elements are only used in AS data mode and ignored in XS data mode:
          announcementFileExternalId

        The response is either GroupAnnouncementFileGetResponse22 or ErrorResponse.

    Attributes:

        service_provider_id (Optional[str]):

        group_id (Optional[str]):

        announcement_file_key (Optional[AnnouncementFileKey]):

        announcement_file_external_id (Optional[str]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    announcement_file_key: Optional[AnnouncementFileKey] = field(
        default=None, metadata={"alias": "announcementFileKey"}
    )

    announcement_file_external_id: Optional[str] = field(
        default=None, metadata={"alias": "announcementFileExternalId"}
    )


@dataclass(kw_only=True)
class GroupAnnouncementFileModifyRequest(OCIRequest):
    """Modify an existing announcement in the group repository

        The following elements are only used in AS data mode and ignored in XS data mode:
          announcementFileExternalId

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (Optional[str]):

        group_id (Optional[str]):

        announcement_file_key (Optional[AnnouncementFileKey]):

        announcement_file_external_id (Optional[str]):

        new_announcement_file_name (Optional[str]):

        announcement_file (Optional[LabeledMediaFileResource]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    announcement_file_key: Optional[AnnouncementFileKey] = field(
        default=None, metadata={"alias": "announcementFileKey"}
    )

    announcement_file_external_id: Optional[str] = field(
        default=None, metadata={"alias": "announcementFileExternalId"}
    )

    new_announcement_file_name: Optional[str] = field(
        default=None, metadata={"alias": "newAnnouncementFileName"}
    )

    announcement_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "announcementFile"}
    )


@dataclass(kw_only=True)
class GroupAnnouncementRepositoryGetSettingsRequest(OCIRequest):
    """Return the disk space being used.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupApplicationServerSetGetRequest(OCIRequest):
    """Get the Application Server set for a group.
        The response is either a GroupApplicationServerSetGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupApplicationServerSetModifyRequest(OCIRequest):
    """Modify the Application Server set for a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        application_server_set_name (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    application_server_set_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "applicationServerSetName"}
    )

    def __post_init__(self):
        nillable_fields = ["application_server_set_name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupAutoAttendantAddInstanceRequest20(OCIRequest):
    """Add a Auto Attendant instance to a group.
        The domain is required in the serviceUserId.
        Only Group and Enterprise level schedules are accepted.
        The response is either SuccessResponse or ErrorResponse.

        The following elements are only used in AS data mode:
          type, use AutoAttendantType.BASIC in XS mode.
          holidayMenu.
        The following elements are only valid for Standard Auto
        Attendants:
          holidayMenu

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_user_id (str):

        service_instance_profile (ServiceInstanceAddProfile):

        type (str):

        first_digit_timeout_seconds (int):

        enable_video (bool):

        business_hours (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        extension_dialing_scope (str):

        name_dialing_scope (str):

        name_dialing_entries (str):

        business_hours_menu (Optional[AutoAttendantAddMenu20]):

        after_hours_menu (Optional[AutoAttendantAddMenu20]):

        holiday_menu (Optional[AutoAttendantAddMenu20]):

        network_class_of_service (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: ServiceInstanceAddProfile = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    type: str = field(metadata={"alias": "type"})

    first_digit_timeout_seconds: int = field(
        metadata={"alias": "firstDigitTimeoutSeconds"}
    )

    enable_video: bool = field(metadata={"alias": "enableVideo"})

    business_hours: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "businessHours"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    extension_dialing_scope: str = field(metadata={"alias": "extensionDialingScope"})

    name_dialing_scope: str = field(metadata={"alias": "nameDialingScope"})

    name_dialing_entries: str = field(metadata={"alias": "nameDialingEntries"})

    business_hours_menu: Optional[AutoAttendantAddMenu20] = field(
        default=None, metadata={"alias": "businessHoursMenu"}
    )

    after_hours_menu: Optional[AutoAttendantAddMenu20] = field(
        default=None, metadata={"alias": "afterHoursMenu"}
    )

    holiday_menu: Optional[AutoAttendantAddMenu20] = field(
        default=None, metadata={"alias": "holidayMenu"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupAutoAttendantConsolidatedAddInstanceRequest(OCIRequest):
    """Add a Auto Attendant instance to a group and assign services to the Auto Attendant.
        The domain is required in the serviceUserId.
        Only Group and Enterprise level schedules are accepted.
        The response is either SuccessResponse or ErrorResponse.

        If the phoneNumber has not been assigned to the group and addPhoneNumberToGroup is set to true,
        it will be added to group if the command is executed by a service provider administrator or above
        and the number is already assigned to the service provider. The command will fail otherwise.

        The following elements are only used in AS data mode:
          type, use AutoAttendantType.BASIC in XS mode.
          holidayMenu.
        The following elements are only valid for Standard Auto
        Attendants:
          holidayMenu

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_user_id (str):

        add_phone_number_to_group (Optional[bool]):

        service_instance_profile (ServiceInstanceAddProfile):

        type (str):

        first_digit_timeout_seconds (int):

        enable_video (bool):

        business_hours (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        extension_dialing_scope (str):

        name_dialing_scope (str):

        name_dialing_entries (str):

        business_hours_menu (Optional[AutoAttendantAddMenu20]):

        after_hours_menu (Optional[AutoAttendantAddMenu20]):

        holiday_menu (Optional[AutoAttendantAddMenu20]):

        network_class_of_service (Optional[str]):

        service (Optional[List[ConsolidatedUserServiceAssignment]]):

        is_active (bool):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    add_phone_number_to_group: Optional[bool] = field(
        default=None, metadata={"alias": "addPhoneNumberToGroup"}
    )

    service_instance_profile: ServiceInstanceAddProfile = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    type: str = field(metadata={"alias": "type"})

    first_digit_timeout_seconds: int = field(
        metadata={"alias": "firstDigitTimeoutSeconds"}
    )

    enable_video: bool = field(metadata={"alias": "enableVideo"})

    business_hours: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "businessHours"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    extension_dialing_scope: str = field(metadata={"alias": "extensionDialingScope"})

    name_dialing_scope: str = field(metadata={"alias": "nameDialingScope"})

    name_dialing_entries: str = field(metadata={"alias": "nameDialingEntries"})

    business_hours_menu: Optional[AutoAttendantAddMenu20] = field(
        default=None, metadata={"alias": "businessHoursMenu"}
    )

    after_hours_menu: Optional[AutoAttendantAddMenu20] = field(
        default=None, metadata={"alias": "afterHoursMenu"}
    )

    holiday_menu: Optional[AutoAttendantAddMenu20] = field(
        default=None, metadata={"alias": "holidayMenu"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    service: Optional[List[ConsolidatedUserServiceAssignment]] = field(
        default=None, metadata={"alias": "service"}
    )

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class GroupAutoAttendantConsolidatedDeleteInstanceRequest(OCIRequest):
    """Delete a Auto Attendant instance from a group and free up phone numbers.
        If UnassignPhoneNumbersLevel is set to 'Group', the user's primary phone number, fax number and any alternate numbers, will be un-assigned from the group if the command is executed by a service provider administrator or above.
        When set to 'Service Provider', they will be un-assigned from the group and service provider if the command is executed by a provisioning administrator or above.
        When omitted, the number(s) will be left assigned to the group.
        An ErrorResponse will be returned if any number cannot be unassigned because of insufficient privilege.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        unassign_phone_numbers (Optional[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    unassign_phone_numbers: Optional[str] = field(
        default=None, metadata={"alias": "unassignPhoneNumbers"}
    )


@dataclass(kw_only=True)
class GroupAutoAttendantConsolidatedModifyInstanceRequest(OCIRequest):
    """Request to modify an Auto Attendant instance and assign services to the Auto Attendant.
        Only Group and Enterprise level schedules are accepted.
        The response is either SuccessResponse or ErrorResponse.

        When phone numbers are un-assigned from the user, the unused numbers may be un-assigned from the group and service provider. If UnassignPhoneNumbersLevel is set to 'Group', the user's primary phone number, fax number and any alternate numbers, will be un-assigned from the group if the command is executed by a service provider administrator or above.
        When set to 'Service Provider', they will be un-assigned from the group and service provider if the command is executed by a provisioning administrator or above.
        When omitted, the number(s) will be left assigned to the group.
        An ErrorResponse will be returned if any number cannot be unassigned because of insufficient privilege.

        If the phoneNumber has not been assigned to the group and addPhoneNumberToGroup is set to true, it will be added to group if needed if the command is executed by a service provider administrator and above. The command will fail otherwise.

        The following elements are only used in AS data mode:
          holidayMenu.
        The following elements are only valid for Standard Auto
        Attendants:
          holidayMenu

    Attributes:

        service_user_id (str):

        unassign_phone_numbers (Optional[str]):

        add_phone_number_to_group (Optional[bool]):

        service_instance_profile (Optional[ServiceInstanceModifyProfile]):

        first_digit_timeout_seconds (Optional[int]):

        transfer_to_operator_announcement_selection (Optional[str]):

        transfer_to_operator_audio_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        transfer_to_operator_video_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        enable_video (Optional[bool]):

        business_hours (Optional[Nillable[TimeSchedule]]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        extension_dialing_scope (Optional[str]):

        name_dialing_scope (Optional[str]):

        name_dialing_entries (Optional[str]):

        business_hours_menu (Optional[AutoAttendantModifyMenu20]):

        after_hours_menu (Optional[AutoAttendantModifyMenu20]):

        holiday_menu (Optional[AutoAttendantModifyMenu20]):

        network_class_of_service (Optional[str]):

        service_list (Optional[Nillable[ReplacementConsolidatedUserServiceAssignmentList]]):

        is_active (Optional[bool]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    unassign_phone_numbers: Optional[str] = field(
        default=None, metadata={"alias": "unassignPhoneNumbers"}
    )

    add_phone_number_to_group: Optional[bool] = field(
        default=None, metadata={"alias": "addPhoneNumberToGroup"}
    )

    service_instance_profile: Optional[ServiceInstanceModifyProfile] = field(
        default=None, metadata={"alias": "serviceInstanceProfile"}
    )

    first_digit_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "firstDigitTimeoutSeconds"}
    )

    transfer_to_operator_announcement_selection: Optional[str] = field(
        default=None, metadata={"alias": "transferToOperatorAnnouncementSelection"}
    )

    transfer_to_operator_audio_file: Optional[Nillable[AnnouncementFileLevelKey]] = (
        field(default=None, metadata={"alias": "transferToOperatorAudioFile"})
    )

    transfer_to_operator_video_file: Optional[Nillable[AnnouncementFileLevelKey]] = (
        field(default=None, metadata={"alias": "transferToOperatorVideoFile"})
    )

    enable_video: Optional[bool] = field(
        default=None, metadata={"alias": "enableVideo"}
    )

    business_hours: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "businessHours"}
    )

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    extension_dialing_scope: Optional[str] = field(
        default=None, metadata={"alias": "extensionDialingScope"}
    )

    name_dialing_scope: Optional[str] = field(
        default=None, metadata={"alias": "nameDialingScope"}
    )

    name_dialing_entries: Optional[str] = field(
        default=None, metadata={"alias": "nameDialingEntries"}
    )

    business_hours_menu: Optional[AutoAttendantModifyMenu20] = field(
        default=None, metadata={"alias": "businessHoursMenu"}
    )

    after_hours_menu: Optional[AutoAttendantModifyMenu20] = field(
        default=None, metadata={"alias": "afterHoursMenu"}
    )

    holiday_menu: Optional[AutoAttendantModifyMenu20] = field(
        default=None, metadata={"alias": "holidayMenu"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    service_list: Optional[
        Nillable[ReplacementConsolidatedUserServiceAssignmentList]
    ] = field(default=None, metadata={"alias": "serviceList"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    def __post_init__(self):
        nillable_fields = [
            "transfer_to_operator_audio_file",
            "transfer_to_operator_video_file",
            "business_hours",
            "holiday_schedule",
            "service_list",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupAutoAttendantDeleteInstanceRequest(OCIRequest):
    """Delete a Auto Attendant instance from a group.

        If UnassignPhoneNumbersLevel is set to 'Group', the user's primary phone number, fax number and any alternate numbers, will be unassigned from the group if the command is executed by a service provider administrator or above.
        When set to 'Service Provider', they will be unassigned from the group and service provider if the command is executed by a provisioning administrator or above.
        When omitted, the number(s) will be left assigned to the group.
        An ErrorResponse with the type warning will be returned if any number cannot be unassigned because of insufficient privilege.

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupAutoAttendantGetInstanceListRequest(OCIRequest):
    """Get a list of Auto Attendant instances within a group.
        The response is either GroupAutoAttendantGetInstanceListResponse or ErrorResponse.
        It is possible to get the instances within a specified department.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_department_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_department_name: Optional[str] = field(
        default=None, metadata={"alias": "groupDepartmentName"}
    )


@dataclass(kw_only=True)
class GroupAutoAttendantGetInstancePagedSortedListRequest(OCIRequest):
    """Get a list of Auto Attendant instances within a group.
        The response is either GroupAutoAttendantGetInstancePagedSortedListResponse or ErrorResponse.
        If no sortOrder is included the response is sorted by Name ascending by default.

        A limitation to the search by DN activation exists when the Number Activation mode is set to
        Off. In this case DNs not assigned to users are never returned by queries with the
        \"dnActivationSearchCriteria\" included.

        If the responsePagingControl element is not provided,
        the paging startIndex will be set to 1 by default,
        and the responsePageSize will be set to the maximum responsePageSize by
        default.
        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderGroupAutoAttendantGetInstancePagedSortedList]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_dn_activation (Optional[SearchCriteriaExactDnActivation]):

        search_criteria_service_status (Optional[SearchCriteriaServiceStatus]):

        search_criteria_exact_auto_attendant_type (Optional[SearchCriteriaExactAutoAttendantType]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[
        List[SortOrderGroupAutoAttendantGetInstancePagedSortedList]
    ] = field(default=None, metadata={"alias": "sortOrder"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_dn_activation: Optional[SearchCriteriaExactDnActivation] = (
        field(default=None, metadata={"alias": "searchCriteriaExactDnActivation"})
    )

    search_criteria_service_status: Optional[SearchCriteriaServiceStatus] = field(
        default=None, metadata={"alias": "searchCriteriaServiceStatus"}
    )

    search_criteria_exact_auto_attendant_type: Optional[
        SearchCriteriaExactAutoAttendantType
    ] = field(default=None, metadata={"alias": "searchCriteriaExactAutoAttendantType"})

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupAutoAttendantGetInstanceRequest24(OCIRequest):
    """Request to get all the information of an Auto Attendant instance.
        The response is either GroupAutoAttendantGetInstanceResponse24 or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupAutoAttendantModifyActiveInstanceListRequest(OCIRequest):
    """Request to set the active status of Auto Attendant instances.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_activation (Optional[List[ServiceActivation]]):

    """

    service_activation: Optional[List[ServiceActivation]] = field(
        default=None, metadata={"alias": "serviceActivation"}
    )


@dataclass(kw_only=True)
class GroupAutoAttendantModifyInstanceExecutionServerRequest(OCIRequest):
    """Request to modify an Auto Attendant instance.
        Only Group and Enterprise level schedules are accepted.
        The response is either SuccessResponse or ErrorResponse.
        Engineering Note: This command can only be executed from the Execution Server

    Attributes:

        service_user_id (str):

        business_hours_menu (Optional[AutoAttendantModifyMenuExecutionServer]):

        after_hours_menu (Optional[AutoAttendantModifyMenuExecutionServer]):

        holiday_menu (Optional[AutoAttendantModifyMenuExecutionServer]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    business_hours_menu: Optional[AutoAttendantModifyMenuExecutionServer] = field(
        default=None, metadata={"alias": "businessHoursMenu"}
    )

    after_hours_menu: Optional[AutoAttendantModifyMenuExecutionServer] = field(
        default=None, metadata={"alias": "afterHoursMenu"}
    )

    holiday_menu: Optional[AutoAttendantModifyMenuExecutionServer] = field(
        default=None, metadata={"alias": "holidayMenu"}
    )


@dataclass(kw_only=True)
class GroupAutoAttendantModifyInstanceRequest20(OCIRequest):
    """Request to modify an Auto Attendant instance.
        Only Group and Enterprise level schedules are accepted.
        The response is either SuccessResponse or ErrorResponse.

        The following elements are only used in AS data mode and not returned in XS
        datamode:
         transferToOperatorAudioFile,
         transferToOperatorVideoFile,
         holidayMenu

       The following element is only used in AS data mode:
         transferToOperatorAnnouncementSelection, value \"Default\" is returned in XS data
           mode.

        The following elements are only valid for Standard Auto
        Attendants:
          holidayMenu

    Attributes:

        service_user_id (str):

        service_instance_profile (Optional[ServiceInstanceModifyProfile]):

        first_digit_timeout_seconds (Optional[int]):

        transfer_to_operator_announcement_selection (Optional[str]):

        transfer_to_operator_audio_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        transfer_to_operator_video_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        enable_video (Optional[bool]):

        business_hours (Optional[Nillable[TimeSchedule]]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        extension_dialing_scope (Optional[str]):

        name_dialing_scope (Optional[str]):

        name_dialing_entries (Optional[str]):

        business_hours_menu (Optional[AutoAttendantModifyMenu20]):

        after_hours_menu (Optional[AutoAttendantModifyMenu20]):

        holiday_menu (Optional[AutoAttendantModifyMenu20]):

        network_class_of_service (Optional[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: Optional[ServiceInstanceModifyProfile] = field(
        default=None, metadata={"alias": "serviceInstanceProfile"}
    )

    first_digit_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "firstDigitTimeoutSeconds"}
    )

    transfer_to_operator_announcement_selection: Optional[str] = field(
        default=None, metadata={"alias": "transferToOperatorAnnouncementSelection"}
    )

    transfer_to_operator_audio_file: Optional[Nillable[AnnouncementFileLevelKey]] = (
        field(default=None, metadata={"alias": "transferToOperatorAudioFile"})
    )

    transfer_to_operator_video_file: Optional[Nillable[AnnouncementFileLevelKey]] = (
        field(default=None, metadata={"alias": "transferToOperatorVideoFile"})
    )

    enable_video: Optional[bool] = field(
        default=None, metadata={"alias": "enableVideo"}
    )

    business_hours: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "businessHours"}
    )

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    extension_dialing_scope: Optional[str] = field(
        default=None, metadata={"alias": "extensionDialingScope"}
    )

    name_dialing_scope: Optional[str] = field(
        default=None, metadata={"alias": "nameDialingScope"}
    )

    name_dialing_entries: Optional[str] = field(
        default=None, metadata={"alias": "nameDialingEntries"}
    )

    business_hours_menu: Optional[AutoAttendantModifyMenu20] = field(
        default=None, metadata={"alias": "businessHoursMenu"}
    )

    after_hours_menu: Optional[AutoAttendantModifyMenu20] = field(
        default=None, metadata={"alias": "afterHoursMenu"}
    )

    holiday_menu: Optional[AutoAttendantModifyMenu20] = field(
        default=None, metadata={"alias": "holidayMenu"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    def __post_init__(self):
        nillable_fields = [
            "transfer_to_operator_audio_file",
            "transfer_to_operator_video_file",
            "business_hours",
            "holiday_schedule",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupAutoAttendantSubmenuAddRequest20(OCIRequest):
    """Request to add an Auto Attendant submenu instance.
        The response is either SuccessResponse or ErrorResponse.
        This request is only valid for Standard auto attendants.

    Attributes:

        service_user_id (str):

        submenu_id (str):

        announcement_selection (str):

        audio_file (Optional[AnnouncementFileLevelKey]):

        video_file (Optional[AnnouncementFileLevelKey]):

        enable_level_extension_dialing (bool):

        key_configuration (Optional[List[AutoAttendantKeyConfiguration20]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    submenu_id: str = field(metadata={"alias": "submenuId"})

    announcement_selection: str = field(metadata={"alias": "announcementSelection"})

    audio_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    enable_level_extension_dialing: bool = field(
        metadata={"alias": "enableLevelExtensionDialing"}
    )

    key_configuration: Optional[List[AutoAttendantKeyConfiguration20]] = field(
        default=None, metadata={"alias": "keyConfiguration"}
    )


@dataclass(kw_only=True)
class GroupAutoAttendantSubmenuDeleteListRequest(OCIRequest):
    """Delete a submenu form an auto attendant.
        The response is either SuccessResponse or ErrorResponse.
        This request is only valid for Standard auto attendants.

    Attributes:

        service_user_id (str):

        submenu_id (List[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    submenu_id: List[str] = field(metadata={"alias": "submenuId"})


@dataclass(kw_only=True)
class GroupAutoAttendantSubmenuGetListRequest(OCIRequest):
    """Get a list of Auto Attendant Submenus.
        The response is either GroupAutoAttendantSubmenuGetListResponse or ErrorResponse.
        This request is only valid for Standard auto attendants.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupAutoAttendantSubmenuGetRequest20(OCIRequest):
    """Request to get an Auto Attendant submenu instance.
        The response is either GroupAutoAttendantSubmenuGetResponse20 or ErrorResponse.
        This request is only valid for Standard auto attendants.

    Attributes:

        service_user_id (str):

        submenu_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    submenu_id: str = field(metadata={"alias": "submenuId"})


@dataclass(kw_only=True)
class GroupAutoAttendantSubmenuGetUsageListRequest(OCIRequest):
    """Get a list of Auto Attendant Business Hours Menu,After Hours Menu,Holiday Menu and Submenus that use this submenu.
        The response is either GroupAutoAttendantSubmenuGetUsageListResponse or ErrorResponse.
        This request is only valid for Standard auto attendants.

    Attributes:

        service_user_id (str):

        submenu_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    submenu_id: str = field(metadata={"alias": "submenuId"})


@dataclass(kw_only=True)
class GroupAutoAttendantSubmenuModifyRequest20(OCIRequest):
    """Request to modify an Auto Attendant submenu instance.
        The response is either SuccessResponse or ErrorResponse.
        This request is only valid for Standard auto attendants.

    Attributes:

        service_user_id (str):

        submenu_id (str):

        new_submenu_id (Optional[str]):

        announcement_selection (Optional[str]):

        audio_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        video_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        enable_level_extension_dialing (Optional[bool]):

        key_configuration (Optional[List[AutoAttendantKeyModifyConfiguration20]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    submenu_id: str = field(metadata={"alias": "submenuId"})

    new_submenu_id: Optional[str] = field(
        default=None, metadata={"alias": "newSubmenuId"}
    )

    announcement_selection: Optional[str] = field(
        default=None, metadata={"alias": "announcementSelection"}
    )

    audio_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    enable_level_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableLevelExtensionDialing"}
    )

    key_configuration: Optional[List[AutoAttendantKeyModifyConfiguration20]] = field(
        default=None, metadata={"alias": "keyConfiguration"}
    )

    def __post_init__(self):
        nillable_fields = ["audio_file", "video_file"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupBroadWorksAnywhereAddInstanceRequest(OCIRequest):
    """Add a BroadWorks Anywhere instance to a group.
        The domain is required in the serviceUserId.
        The following elements are only used in AS data mode:
          networkClassOfService
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_user_id (str):

        service_instance_profile (ServiceInstanceAddProfile):

        broad_works_anywhere_scope (str):

        prompt_for_clid (str):

        silent_prompt_mode (bool):

        prompt_for_passcode (bool):

        network_class_of_service (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: ServiceInstanceAddProfile = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    broad_works_anywhere_scope: str = field(
        metadata={"alias": "broadWorksAnywhereScope"}
    )

    prompt_for_clid: str = field(metadata={"alias": "promptForCLID"})

    silent_prompt_mode: bool = field(metadata={"alias": "silentPromptMode"})

    prompt_for_passcode: bool = field(metadata={"alias": "promptForPasscode"})

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupBroadWorksAnywhereDeleteInstanceRequest(OCIRequest):
    """Delete a BroadWorks Anywhere instance from a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupBroadWorksAnywhereGetInstanceListRequest(OCIRequest):
    """Get a list of BroadWorks Anywhere instances within a group.
        The response is either GroupBroadWorksAnywhereGetInstanceListResponse or ErrorResponse.
        It is possible to get the instances within a specified department.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_department_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_department_name: Optional[str] = field(
        default=None, metadata={"alias": "groupDepartmentName"}
    )


@dataclass(kw_only=True)
class GroupBroadWorksAnywhereGetInstanceRequest19sp1(OCIRequest):
    """Request to get all the information of a BroadWorks Anywhere instance.
        The response is either GroupBroadWorksAnywhereGetInstanceResponse19sp1 or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupBroadWorksAnywhereModifyActiveInstanceListRequest(OCIRequest):
    """Request to set the active status of BroadWorks Anywhere instances.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_activation (Optional[List[ServiceActivation]]):

    """

    service_activation: Optional[List[ServiceActivation]] = field(
        default=None, metadata={"alias": "serviceActivation"}
    )


@dataclass(kw_only=True)
class GroupBroadWorksAnywhereModifyInstanceRequest(OCIRequest):
    """Request to modify a BroadWorks Anywhere instance.
        The following elements are only used in AS data mode:
          networkClassOfService
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        service_instance_profile (Optional[ServiceInstanceModifyProfile]):

        broad_works_anywhere_scope (Optional[str]):

        prompt_for_clid (Optional[str]):

        silent_prompt_mode (Optional[bool]):

        prompt_for_passcode (Optional[bool]):

        network_class_of_service (Optional[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: Optional[ServiceInstanceModifyProfile] = field(
        default=None, metadata={"alias": "serviceInstanceProfile"}
    )

    broad_works_anywhere_scope: Optional[str] = field(
        default=None, metadata={"alias": "broadWorksAnywhereScope"}
    )

    prompt_for_clid: Optional[str] = field(
        default=None, metadata={"alias": "promptForCLID"}
    )

    silent_prompt_mode: Optional[bool] = field(
        default=None, metadata={"alias": "silentPromptMode"}
    )

    prompt_for_passcode: Optional[bool] = field(
        default=None, metadata={"alias": "promptForPasscode"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupBroadWorksMobilityGetRequest22V4(OCIRequest):
    """Get the group's BroadWorks Mobility settings.
        The response is either a GroupBroadWorksMobilityGetResponse22V4 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupBroadWorksMobilityMobileSubscriberDirectoryNumberAssignListRequest(
    OCIRequest
):
    """Assign Mobile Subscriber Directory Numbers to a group. It is possible to
            add a single DN,or a list of DNs.
    .       This command is applicable only for group in a service provider and will fail for a group in an enterprise.
            The response is either SuccessResponse or ErrorResponse.

        Attributes:

            service_provider_id (str):

            group_id (str):

            mobile_subscriber_directory_number (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    mobile_subscriber_directory_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "mobileSubscriberDirectoryNumber"}
    )


@dataclass(kw_only=True)
class GroupBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentListRequest(
    OCIRequest
):
    """Get the list of assigned and unassigned Mobile Subscriber Directory Numbers in a group. Each DN can be assigned to a user.
    .       This command is applicable only for group in a service provider and will fail for a group in an enterprise.
            The response is either a GroupBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentListResponse or an ErrorResponse.

        Attributes:

            service_provider_id (str):

            group_id (str):

            response_size_limit (Optional[int]):

            search_criteria_mobile_subscriber_directory_number (Optional[List[SearchCriteriaMobileSubscriberDirectoryNumber]]):

            search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

            search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

            search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

            search_criteria_dn (Optional[List[SearchCriteriaDn]]):

            search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

            search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_mobile_subscriber_directory_number: Optional[
        List[SearchCriteriaMobileSubscriberDirectoryNumber]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaMobileSubscriberDirectoryNumber"},
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailableListRequest(
    OCIRequest
):
    """Request a list of available Mobile Subscriber Directory Numbers not yet assigned to any user.
    .       This command is applicable only for group in a service provider and will fail for a group in an enterprise.
            The response is either GroupBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailableListResponse or ErrorResponse.

        Attributes:

            service_provider_id (str):

            group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupBroadWorksMobilityMobileSubscriberDirectoryNumberUnassignListRequest(
    OCIRequest
):
    """Unassign Mobile Subscriber Directory Numbers from a group. It is possible to unassign either: a single DN, or a list of DNs.
    .       This command is applicable only for group in a service provider and will fail for a group in an enterprise.
            The response is either SuccessResponse or ErrorResponse.

        Attributes:

            service_provider_id (str):

            group_id (str):

            mobile_subscriber_directory_number (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    mobile_subscriber_directory_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "mobileSubscriberDirectoryNumber"}
    )


@dataclass(kw_only=True)
class GroupBroadWorksMobilityModifyRequest(OCIRequest):
    """Modify the group level broadworks mobility service settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        use_setting_level (Optional[str]):

        enable_location_services (Optional[bool]):

        enable_msrn_lookup (Optional[bool]):

        enable_mobile_state_checking (Optional[bool]):

        deny_call_originations (Optional[bool]):

        deny_call_terminations (Optional[bool]):

        enable_announcement_suppression (Optional[bool]):

        enable_internal_clid_delivery (Optional[bool]):

        enable_internal_clid_delivery_access_locations (Optional[bool]):

        enable_enhanced_unreachable_state_checking (Optional[bool]):

        enable_network_call_barring_status_check (Optional[bool]):

        network_translation_index (Optional[Nillable[str]]):

        enable_pbx_route_policy (Optional[bool]):

        pbx_route_identity (Optional[Nillable[TrunkGroupKey]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    use_setting_level: Optional[str] = field(
        default=None, metadata={"alias": "useSettingLevel"}
    )

    enable_location_services: Optional[bool] = field(
        default=None, metadata={"alias": "enableLocationServices"}
    )

    enable_msrn_lookup: Optional[bool] = field(
        default=None, metadata={"alias": "enableMSRNLookup"}
    )

    enable_mobile_state_checking: Optional[bool] = field(
        default=None, metadata={"alias": "enableMobileStateChecking"}
    )

    deny_call_originations: Optional[bool] = field(
        default=None, metadata={"alias": "denyCallOriginations"}
    )

    deny_call_terminations: Optional[bool] = field(
        default=None, metadata={"alias": "denyCallTerminations"}
    )

    enable_announcement_suppression: Optional[bool] = field(
        default=None, metadata={"alias": "enableAnnouncementSuppression"}
    )

    enable_internal_clid_delivery: Optional[bool] = field(
        default=None, metadata={"alias": "enableInternalCLIDDelivery"}
    )

    enable_internal_clid_delivery_access_locations: Optional[bool] = field(
        default=None, metadata={"alias": "enableInternalCLIDDeliveryAccessLocations"}
    )

    enable_enhanced_unreachable_state_checking: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnhancedUnreachableStateChecking"}
    )

    enable_network_call_barring_status_check: Optional[bool] = field(
        default=None, metadata={"alias": "enableNetworkCallBarringStatusCheck"}
    )

    network_translation_index: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "networkTranslationIndex"}
    )

    enable_pbx_route_policy: Optional[bool] = field(
        default=None, metadata={"alias": "enablePBXRoutePolicy"}
    )

    pbx_route_identity: Optional[Nillable[TrunkGroupKey]] = field(
        default=None, metadata={"alias": "pbxRouteIdentity"}
    )

    def __post_init__(self):
        nillable_fields = ["network_translation_index", "pbx_route_identity"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCPEConfigRebuildConfigFileRequest(OCIRequest):
    """Rebuild the group default config file for the specified device type.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_type (str):

        force (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_type: str = field(metadata={"alias": "deviceType"})

    force: Optional[bool] = field(default=None, metadata={"alias": "force"})


@dataclass(kw_only=True)
class GroupCPEConfigRebuildDeviceConfigFileRequest(OCIRequest):
    """Rebuild the config file for a specified device.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode:
          force

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

        force (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    force: Optional[bool] = field(default=None, metadata={"alias": "force"})


@dataclass(kw_only=True)
class GroupCPEConfigReorderDeviceLinePortsRequest(OCIRequest):
    """Reorder the lines of a group device. You can not add or delete line ports, only
        re-ordering the list is allowed. The ordered list of line ports can be obtained
        with the GroupAccessDeviceGetRequest16 command.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

        ordered_line_port_list (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    ordered_line_port_list: List[str] = field(metadata={"alias": "orderedLinePortList"})


@dataclass(kw_only=True)
class GroupCPEConfigResetDeviceRequest(OCIRequest):
    """Reset a specific group device.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class GroupCPEConfigResetDeviceTypeRequest(OCIRequest):
    """Reset all the devices of the specified device type in a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_type (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class GroupCPEConfigSetConfigFileRequest(OCIRequest):
    """Request to set a new group default configuration file for a device type.
        The response is either a SuccessResponse or an ErrorResponse.

        When the element configFile is set to nil, the configuration file defined
        at the parent level is used.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_type (str):

        config_file (Nillable[FileResource]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_type: str = field(metadata={"alias": "deviceType"})

    config_file: Nillable[FileResource] = field(metadata={"alias": "configFile"})

    def __post_init__(self):
        nillable_fields = ["config_file"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCapacityManagementAddInstanceRequest(OCIRequest):
    """Adds a Call Capacity Management group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        max_active_calls_allowed (int):

        max_incoming_active_calls_allowed (Optional[int]):

        max_outgoing_active_calls_allowed (Optional[int]):

        become_default_group_for_new_users (bool):

        user_id (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    max_active_calls_allowed: int = field(metadata={"alias": "maxActiveCallsAllowed"})

    max_incoming_active_calls_allowed: Optional[int] = field(
        default=None, metadata={"alias": "maxIncomingActiveCallsAllowed"}
    )

    max_outgoing_active_calls_allowed: Optional[int] = field(
        default=None, metadata={"alias": "maxOutgoingActiveCallsAllowed"}
    )

    become_default_group_for_new_users: bool = field(
        metadata={"alias": "becomeDefaultGroupForNewUsers"}
    )

    user_id: Optional[List[str]] = field(default=None, metadata={"alias": "userId"})


@dataclass(kw_only=True)
class GroupCallCapacityManagementAddUserListRequest(OCIRequest):
    """Adds one or more users to a Call Capacity Management group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        user_id (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    user_id: List[str] = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class GroupCallCapacityManagementDeleteInstanceListRequest(OCIRequest):
    """Deletes one or more Call Capacity Management groups.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: List[str] = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCallCapacityManagementDeleteUserListRequest(OCIRequest):
    """Deletes one or more users from a Call Capacity Management group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        user_id (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    user_id: List[str] = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class GroupCallCapacityManagementGetAvailableUserListRequest(OCIRequest):
    """Get a list of users that can be assigned to a Call Capacity Management group.
        The available user list for a new Call Capacity Management group can be obtained
        by not setting the name.
        The response is either GroupCallCapacityManagementGetAvailableUserListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (Optional[str]):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: Optional[str] = field(default=None, metadata={"alias": "name"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupCallCapacityManagementGetInstanceListRequest(OCIRequest):
    """Request to get a list of Call Capacity Management instances within a group.
        The response is either GroupCallCapacityManagementGetInstanceListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCallCapacityManagementGetInstanceRequest(OCIRequest):
    """Gets a Call Capacity Management group.
        The response is either GroupCallCapacityManagementGetInstanceResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCallCapacityManagementModifyInstanceRequest(OCIRequest):
    """Modifies a Call Capacity Management group. Replaces the entire list of users in the group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        new_name (Optional[str]):

        max_active_calls_allowed (Optional[int]):

        max_incoming_active_calls_allowed (Optional[Nillable[int]]):

        max_outgoing_active_calls_allowed (Optional[Nillable[int]]):

        become_default_group_for_new_users (Optional[bool]):

        user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    max_active_calls_allowed: Optional[int] = field(
        default=None, metadata={"alias": "maxActiveCallsAllowed"}
    )

    max_incoming_active_calls_allowed: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxIncomingActiveCallsAllowed"}
    )

    max_outgoing_active_calls_allowed: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxOutgoingActiveCallsAllowed"}
    )

    become_default_group_for_new_users: Optional[bool] = field(
        default=None, metadata={"alias": "becomeDefaultGroupForNewUsers"}
    )

    user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "userIdList"}
    )

    def __post_init__(self):
        nillable_fields = [
            "max_incoming_active_calls_allowed",
            "max_outgoing_active_calls_allowed",
            "user_id_list",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterAddAgentListRequest(OCIRequest):
    """Add agent(s) to a call center.
        The response is either SuccessResponse or ErrorResponse.
        If the skill level is not present for skill based premium call centers, the users will be set to skill level 1.

        The following element is only used in AS data mode and ignored in XS data mode:
          agentSkillList

    Attributes:

        service_user_id (str):

        agent_user_id (Optional[List[str]]):

        agent_skill_list (Optional[List[CallCenterSkillAgentList]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    agent_user_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "agentUserId"}
    )

    agent_skill_list: Optional[List[CallCenterSkillAgentList]] = field(
        default=None, metadata={"alias": "agentSkillList"}
    )


@dataclass(kw_only=True)
class GroupCallCenterAddDNISRequest(OCIRequest):
    """Add a Call Center DNIS
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        dnis_key (DNISKey):

        dnis_phone_number (Optional[str]):

        extension (Optional[str]):

        use_custom_clid_settings (bool):

        calling_line_id_phone_number (Optional[str]):

        calling_line_id_last_name (Optional[str]):

        calling_line_id_first_name (Optional[str]):

        use_custom_dnis_announcement_settings (bool):

        priority (str):

        allow_outgoing_acd_call (bool):

    """

    dnis_key: DNISKey = field(metadata={"alias": "dnisKey"})

    dnis_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "dnisPhoneNumber"}
    )

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})

    use_custom_clid_settings: bool = field(metadata={"alias": "useCustomCLIDSettings"})

    calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )

    calling_line_id_last_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdLastName"}
    )

    calling_line_id_first_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdFirstName"}
    )

    use_custom_dnis_announcement_settings: bool = field(
        metadata={"alias": "useCustomDnisAnnouncementSettings"}
    )

    priority: str = field(metadata={"alias": "priority"})

    allow_outgoing_acd_call: bool = field(metadata={"alias": "allowOutgoingACDCall"})


@dataclass(kw_only=True)
class GroupCallCenterAddInstanceRequest22(OCIRequest):
    """Add a Call Center instance to a group.
        The domain is required in the serviceUserId.
        The response is either SuccessResponse or ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          routingType
          enableReporting
          allowCallsToAgentsInWrapUp
          overrideAgentWrapUpTime
          wrapUpSeconds
          forceDeliveryOfCalls
          forceDeliveryWaitTimeSeconds
          enableAutomaticStateChangeForAgents
          agentStateAfterCall
          agentUnavailableCode
          networkClassOfService

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_user_id (str):

        service_instance_profile (ServiceInstanceAddProfileCallCenter):

        type (str):

        routing_type (Optional[str]):

        policy (str):

        enable_video (bool):

        queue_length (int):

        enable_reporting (Optional[bool]):

        allow_caller_to_dial_escape_digit (bool):

        escape_digit (str):

        reset_call_statistics_upon_entry_in_queue (bool):

        allow_agent_logoff (bool):

        allow_call_waiting_for_agents (bool):

        allow_calls_to_agents_in_wrap_up (Optional[bool]):

        override_agent_wrap_up_time (Optional[bool]):

        wrap_up_seconds (Optional[int]):

        force_delivery_of_calls (Optional[bool]):

        force_delivery_wait_time_seconds (Optional[int]):

        enable_automatic_state_change_for_agents (Optional[bool]):

        agent_state_after_call (Optional[str]):

        agent_unavailable_code (Optional[str]):

        external_preferred_audio_codec (str):

        internal_preferred_audio_codec (str):

        play_ringing_when_offering_call (bool):

        network_class_of_service (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: ServiceInstanceAddProfileCallCenter = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    type: str = field(metadata={"alias": "type"})

    routing_type: Optional[str] = field(default=None, metadata={"alias": "routingType"})

    policy: str = field(metadata={"alias": "policy"})

    enable_video: bool = field(metadata={"alias": "enableVideo"})

    queue_length: int = field(metadata={"alias": "queueLength"})

    enable_reporting: Optional[bool] = field(
        default=None, metadata={"alias": "enableReporting"}
    )

    allow_caller_to_dial_escape_digit: bool = field(
        metadata={"alias": "allowCallerToDialEscapeDigit"}
    )

    escape_digit: str = field(metadata={"alias": "escapeDigit"})

    reset_call_statistics_upon_entry_in_queue: bool = field(
        metadata={"alias": "resetCallStatisticsUponEntryInQueue"}
    )

    allow_agent_logoff: bool = field(metadata={"alias": "allowAgentLogoff"})

    allow_call_waiting_for_agents: bool = field(
        metadata={"alias": "allowCallWaitingForAgents"}
    )

    allow_calls_to_agents_in_wrap_up: Optional[bool] = field(
        default=None, metadata={"alias": "allowCallsToAgentsInWrapUp"}
    )

    override_agent_wrap_up_time: Optional[bool] = field(
        default=None, metadata={"alias": "overrideAgentWrapUpTime"}
    )

    wrap_up_seconds: Optional[int] = field(
        default=None, metadata={"alias": "wrapUpSeconds"}
    )

    force_delivery_of_calls: Optional[bool] = field(
        default=None, metadata={"alias": "forceDeliveryOfCalls"}
    )

    force_delivery_wait_time_seconds: Optional[int] = field(
        default=None, metadata={"alias": "forceDeliveryWaitTimeSeconds"}
    )

    enable_automatic_state_change_for_agents: Optional[bool] = field(
        default=None, metadata={"alias": "enableAutomaticStateChangeForAgents"}
    )

    agent_state_after_call: Optional[str] = field(
        default=None, metadata={"alias": "agentStateAfterCall"}
    )

    agent_unavailable_code: Optional[str] = field(
        default=None, metadata={"alias": "agentUnavailableCode"}
    )

    external_preferred_audio_codec: str = field(
        metadata={"alias": "externalPreferredAudioCodec"}
    )

    internal_preferred_audio_codec: str = field(
        metadata={"alias": "internalPreferredAudioCodec"}
    )

    play_ringing_when_offering_call: bool = field(
        metadata={"alias": "playRingingWhenOfferingCall"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupCallCenterAddSupervisorListRequest(OCIRequest):
    """Add supervisor(s) to a call center.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        supervisor_user_id (List[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    supervisor_user_id: List[str] = field(metadata={"alias": "supervisorUserId"})


@dataclass(kw_only=True)
class GroupCallCenterAgentThresholdDefaultProfileGetRequest(OCIRequest):
    """Gets an existing default Call Center Agent Threshold Profile in a Group.
        If includeAgentsTable is set to true, a table with the list of agents assigned to
        the profile is included in the response. The search criteria is used to filter the
        list of agents to be included in the table.
        The response is either a GroupCallCenterAgentThresholdDefaultProfileGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        include_agents_table (bool):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    include_agents_table: bool = field(metadata={"alias": "includeAgentsTable"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupCallCenterAgentThresholdProfileAddAgentListRequest(OCIRequest):
    """Add agent(s) to a Agent Threshold Profile.
        When an agent is assigned (added )to a profile, it is automatically unassigned (deleted) from the previous profile it was assigned to.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        profile_name (str):

        agent_user_id (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    profile_name: str = field(metadata={"alias": "profileName"})

    agent_user_id: List[str] = field(metadata={"alias": "agentUserId"})


@dataclass(kw_only=True)
class GroupCallCenterAgentThresholdProfileAddRequest(OCIRequest):
    """Add a new Call Center Agent Threshold Profile in a Group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        profile_name (str):

        profile_description (Optional[str]):

        threshold_current_call_state_idle_time_yellow (Optional[int]):

        threshold_current_call_state_idle_time_red (Optional[int]):

        threshold_current_call_state_on_call_time_yellow (Optional[int]):

        threshold_current_call_state_on_call_time_red (Optional[int]):

        threshold_current_agent_state_unavailable_time_yellow (Optional[int]):

        threshold_current_agent_state_unavailable_time_red (Optional[int]):

        threshold_average_busy_in_time_yellow (Optional[int]):

        threshold_average_busy_in_time_red (Optional[int]):

        threshold_average_busy_out_time_yellow (Optional[int]):

        threshold_average_busy_out_time_red (Optional[int]):

        threshold_average_wrap_up_time_yellow (Optional[int]):

        threshold_average_wrap_up_time_red (Optional[int]):

        enable_notification_email (bool):

        notification_email_address (Optional[List[str]]):

        agent_user_id (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    profile_name: str = field(metadata={"alias": "profileName"})

    profile_description: Optional[str] = field(
        default=None, metadata={"alias": "profileDescription"}
    )

    threshold_current_call_state_idle_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeYellow"}
    )

    threshold_current_call_state_idle_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeRed"}
    )

    threshold_current_call_state_on_call_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeYellow"}
    )

    threshold_current_call_state_on_call_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeRed"}
    )

    threshold_current_agent_state_unavailable_time_yellow: Optional[int] = field(
        default=None,
        metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeYellow"},
    )

    threshold_current_agent_state_unavailable_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeRed"}
    )

    threshold_average_busy_in_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeYellow"}
    )

    threshold_average_busy_in_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeRed"}
    )

    threshold_average_busy_out_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeYellow"}
    )

    threshold_average_busy_out_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeRed"}
    )

    threshold_average_wrap_up_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeYellow"}
    )

    threshold_average_wrap_up_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeRed"}
    )

    enable_notification_email: bool = field(
        metadata={"alias": "enableNotificationEmail"}
    )

    notification_email_address: Optional[List[str]] = field(
        default=None, metadata={"alias": "notificationEmailAddress"}
    )

    agent_user_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "agentUserId"}
    )


@dataclass(kw_only=True)
class GroupCallCenterAgentThresholdProfileDeleteAgentListRequest(OCIRequest):
    """Delete agent(s) from a Agent Threshold Profile.
        Agents cannot be unassigned (deleted) directly from the default profile, they need to be assigned (added) to a different profile.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        profile_name (str):

        agent_user_id (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    profile_name: str = field(metadata={"alias": "profileName"})

    agent_user_id: List[str] = field(metadata={"alias": "agentUserId"})


@dataclass(kw_only=True)
class GroupCallCenterAgentThresholdProfileDeleteRequest(OCIRequest):
    """Deletes an existing Call Center Agent Threshold Profile in a Group.
        The default profile cannot be deleted.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        profile_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    profile_name: str = field(metadata={"alias": "profileName"})


@dataclass(kw_only=True)
class GroupCallCenterAgentThresholdProfileGetAvailableAgentListRequest(OCIRequest):
    """Get the list of all Agents in the Group that can be assigned to a given Call Center Agent Threshold Profile in a Group.
        An agent is available to be assigned to a given Agent Threshold Profile if it is a Call Center Standard or Call Center Premium agent
        and the agent is not yet assigned to the profile.
        The available agent list for a new Call Center Agent Threshold profile can be obtained by not setting the excludeAgentsAssignedToProfileName.
        When the excludeAgentsAssignedToProfileName is specified, all agents already assigned to the specified profile are not included in the response, even if the search
        criterion element searchCriteriaAgentThresholdProfile is specified using the same profile name.
        The response is either a GroupCallCenterAgentThresholdProfileGetAvailableAgentListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        exclude_agents_assigned_to_profile_name (Optional[str]):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_agent_threshold_profile (Optional[List[SearchCriteriaAgentThresholdProfile]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    exclude_agents_assigned_to_profile_name: Optional[str] = field(
        default=None, metadata={"alias": "excludeAgentsAssignedToProfileName"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_agent_threshold_profile: Optional[
        List[SearchCriteriaAgentThresholdProfile]
    ] = field(default=None, metadata={"alias": "searchCriteriaAgentThresholdProfile"})


@dataclass(kw_only=True)
class GroupCallCenterAgentThresholdProfileGetAvailableAgentPagedSortedListRequest(
    OCIRequest
):
    """Get the list of all Agents in the Group that can be assigned to a given Call Center Agent Threshold Profile in a Group.
        An agent is available to be assigned to a given Agent Threshold Profile if it is a Call Center Standard or Call Center Premium agent
        and the agent is not yet assigned to the profile.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        It is possible to search by various criteria to restrict the number of rows returned.

        The available agent list for a new Call Center Agent Threshold profile can be obtained by not setting the excludeAgentsAssignedToProfileName.
        When the excludeAgentsAssignedToProfileName is specified, all agents already assigned to the specified profile are not included in the response, even if the search
        criterion element searchCriteriaAgentThresholdProfile is specified using the same profile name.

        If no sortOrder is included the response is sorted by User Id ascending by default.

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        The response is either a GroupCallCenterAgentThresholdProfileGetAvailableAgentPagedSortedListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        exclude_agents_assigned_to_profile_name (Optional[str]):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderGroupCallCenterAgentThresholdProfileGetAvailableAgentPagedSortedList]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_agent_threshold_profile (Optional[List[SearchCriteriaAgentThresholdProfile]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    exclude_agents_assigned_to_profile_name: Optional[str] = field(
        default=None, metadata={"alias": "excludeAgentsAssignedToProfileName"}
    )

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[
        List[
            SortOrderGroupCallCenterAgentThresholdProfileGetAvailableAgentPagedSortedList
        ]
    ] = field(default=None, metadata={"alias": "sortOrder"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_agent_threshold_profile: Optional[
        List[SearchCriteriaAgentThresholdProfile]
    ] = field(default=None, metadata={"alias": "searchCriteriaAgentThresholdProfile"})

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupCallCenterAgentThresholdProfileGetListRequest(OCIRequest):
    """Get the list of Call Center Agent Threshold Profiles in the Group.
        The response is either GroupCallCenterAgentThresholdProfileGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCallCenterAgentThresholdProfileGetPagedSortedRequest(OCIRequest):
    """Gets an existing non-default Call Center Agent Threshold Profile in a Group.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        It is possible to search by various criteria to restrict the number of rows returned.

        If no sortOrder is included the response is sorted by User Id ascending by default.

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        The response is either a GroupCallCenterAgentThresholdProfileGetPagedSortedResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        profile_name (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderGroupCallCenterAgentThresholdProfileGetPagedSorted]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    profile_name: str = field(metadata={"alias": "profileName"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[
        List[SortOrderGroupCallCenterAgentThresholdProfileGetPagedSorted]
    ] = field(default=None, metadata={"alias": "sortOrder"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupCallCenterAgentThresholdProfileGetRequest(OCIRequest):
    """Gets an existing non-default Call Center Agent Threshold Profile in a Group.
        The response is either a GroupCallCenterAgentThresholdProfileGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        profile_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    profile_name: str = field(metadata={"alias": "profileName"})


@dataclass(kw_only=True)
class GroupCallCenterAgentThresholdProfileModifyRequest(OCIRequest):
    """Modifies an existing Call Center Agent Threshold Profile in the Group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        profile_name (str):

        new_profile_name (Optional[str]):

        profile_description (Optional[Nillable[str]]):

        threshold_current_call_state_idle_time_yellow (Optional[Nillable[int]]):

        threshold_current_call_state_idle_time_red (Optional[Nillable[int]]):

        threshold_current_call_state_on_call_time_yellow (Optional[Nillable[int]]):

        threshold_current_call_state_on_call_time_red (Optional[Nillable[int]]):

        threshold_current_agent_state_unavailable_time_yellow (Optional[Nillable[int]]):

        threshold_current_agent_state_unavailable_time_red (Optional[Nillable[int]]):

        threshold_average_busy_in_time_yellow (Optional[Nillable[int]]):

        threshold_average_busy_in_time_red (Optional[Nillable[int]]):

        threshold_average_busy_out_time_yellow (Optional[Nillable[int]]):

        threshold_average_busy_out_time_red (Optional[Nillable[int]]):

        threshold_average_wrap_up_time_yellow (Optional[Nillable[int]]):

        threshold_average_wrap_up_time_red (Optional[Nillable[int]]):

        enable_notification_email (Optional[bool]):

        notification_email_address_list (Optional[Nillable[CallCenterAgentThresholdProfileReplacementNotificationEmailList]]):

        agent_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    profile_name: str = field(metadata={"alias": "profileName"})

    new_profile_name: Optional[str] = field(
        default=None, metadata={"alias": "newProfileName"}
    )

    profile_description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "profileDescription"}
    )

    threshold_current_call_state_idle_time_yellow: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeYellow"}
    )

    threshold_current_call_state_idle_time_red: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeRed"}
    )

    threshold_current_call_state_on_call_time_yellow: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeYellow"}
    )

    threshold_current_call_state_on_call_time_red: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeRed"}
    )

    threshold_current_agent_state_unavailable_time_yellow: Optional[Nillable[int]] = (
        field(
            default=None,
            metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeYellow"},
        )
    )

    threshold_current_agent_state_unavailable_time_red: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeRed"}
    )

    threshold_average_busy_in_time_yellow: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeYellow"}
    )

    threshold_average_busy_in_time_red: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeRed"}
    )

    threshold_average_busy_out_time_yellow: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeYellow"}
    )

    threshold_average_busy_out_time_red: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeRed"}
    )

    threshold_average_wrap_up_time_yellow: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeYellow"}
    )

    threshold_average_wrap_up_time_red: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeRed"}
    )

    enable_notification_email: Optional[bool] = field(
        default=None, metadata={"alias": "enableNotificationEmail"}
    )

    notification_email_address_list: Optional[
        Nillable[CallCenterAgentThresholdProfileReplacementNotificationEmailList]
    ] = field(default=None, metadata={"alias": "notificationEmailAddressList"})

    agent_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "agentUserIdList"}
    )

    def __post_init__(self):
        nillable_fields = [
            "profile_description",
            "threshold_current_call_state_idle_time_yellow",
            "threshold_current_call_state_idle_time_red",
            "threshold_current_call_state_on_call_time_yellow",
            "threshold_current_call_state_on_call_time_red",
            "threshold_current_agent_state_unavailable_time_yellow",
            "threshold_current_agent_state_unavailable_time_red",
            "threshold_average_busy_in_time_yellow",
            "threshold_average_busy_in_time_red",
            "threshold_average_busy_out_time_yellow",
            "threshold_average_busy_out_time_red",
            "threshold_average_wrap_up_time_yellow",
            "threshold_average_wrap_up_time_red",
            "notification_email_address_list",
            "agent_user_id_list",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterAgentUnavailableCodeAddRequest(OCIRequest):
    """Add a Call Center Agent Unavailable Code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        is_active (bool):

        code (str):

        description (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    is_active: bool = field(metadata={"alias": "isActive"})

    code: str = field(metadata={"alias": "code"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class GroupCallCenterAgentUnavailableCodeDeleteRequest(OCIRequest):
    """Delete a Call Center Agent Unavailable Code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    code: str = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class GroupCallCenterAgentUnavailableCodeGetListRequest(OCIRequest):
    """Get the list of Call Center Agent Unavailable Codes.
        The response is either GroupCallCenterAgentUnavailableCodeGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCallCenterAgentUnavailableCodeGetRequest(OCIRequest):
    """Get a Call Center Agent Unavailable Code.
        The response is either GroupCallCenterAgentUnavailableCodeGetResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    code: str = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class GroupCallCenterAgentUnavailableCodeModifyRequest(OCIRequest):
    """Modify a Call Center Agent Unavailable Code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        code (str):

        is_active (Optional[bool]):

        description (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    code: str = field(metadata={"alias": "code"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterAgentUnavailableCodeSettingsGetRequest17sp4(OCIRequest):
    """Request the group level data associated with Call Center Agents Unavailable Code Settings.
        The response is either a GroupCallCenterAgentUnavailableCodeSettingsGetResponse17sp4 or an
        ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCallCenterAgentUnavailableCodeSettingsModifyRequest(OCIRequest):
    """Modify the group level data associated with Call Center Agents Unavailable Code Settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        enable_agent_unavailable_codes (Optional[bool]):

        default_agent_unavailable_code_on_dnd (Optional[Nillable[str]]):

        default_agent_unavailable_code_on_personal_calls (Optional[Nillable[str]]):

        default_agent_unavailable_code_on_consecutive_bounces (Optional[Nillable[str]]):

        default_agent_unavailable_code_on_not_reachable (Optional[Nillable[str]]):

        force_use_of_agent_unavailable_codes (Optional[bool]):

        default_agent_unavailable_code (Optional[Nillable[str]]):

        code_state_list (Optional[List[CallCenterAgentUnavailableCodeStateModify]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    enable_agent_unavailable_codes: Optional[bool] = field(
        default=None, metadata={"alias": "enableAgentUnavailableCodes"}
    )

    default_agent_unavailable_code_on_dnd: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultAgentUnavailableCodeOnDND"}
    )

    default_agent_unavailable_code_on_personal_calls: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultAgentUnavailableCodeOnPersonalCalls"}
    )

    default_agent_unavailable_code_on_consecutive_bounces: Optional[Nillable[str]] = (
        field(
            default=None,
            metadata={"alias": "defaultAgentUnavailableCodeOnConsecutiveBounces"},
        )
    )

    default_agent_unavailable_code_on_not_reachable: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultAgentUnavailableCodeOnNotReachable"}
    )

    force_use_of_agent_unavailable_codes: Optional[bool] = field(
        default=None, metadata={"alias": "forceUseOfAgentUnavailableCodes"}
    )

    default_agent_unavailable_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultAgentUnavailableCode"}
    )

    code_state_list: Optional[List[CallCenterAgentUnavailableCodeStateModify]] = field(
        default=None, metadata={"alias": "codeStateList"}
    )

    def __post_init__(self):
        nillable_fields = [
            "default_agent_unavailable_code_on_dnd",
            "default_agent_unavailable_code_on_personal_calls",
            "default_agent_unavailable_code_on_consecutive_bounces",
            "default_agent_unavailable_code_on_not_reachable",
            "default_agent_unavailable_code",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterBouncedCallGetRequest17(OCIRequest):
    """Get a call center's bounced call settings.
        The response is either a GroupCallCenterBouncedCallGetResponse17 or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterBouncedCallModifyRequest(OCIRequest):
    """Modify a call center's bounced call settings.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          enableTransfer
          transferPhoneNumber
          bounceCallWhenAgentUnavailable
          alertCallCenterCallOnHold
          alertCallCenterCallOnHoldSeconds
          bounceCallCenterCallOnHold
          bounceCallCenterCallOnHoldSeconds

    Attributes:

        service_user_id (str):

        is_active (Optional[bool]):

        number_of_rings_before_bouncing_call (Optional[int]):

        enable_transfer (Optional[bool]):

        transfer_phone_number (Optional[Nillable[str]]):

        bounce_call_when_agent_unavailable (Optional[bool]):

        alert_call_center_call_on_hold (Optional[bool]):

        alert_call_center_call_on_hold_seconds (Optional[int]):

        bounce_call_center_call_on_hold (Optional[bool]):

        bounce_call_center_call_on_hold_seconds (Optional[int]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    number_of_rings_before_bouncing_call: Optional[int] = field(
        default=None, metadata={"alias": "numberOfRingsBeforeBouncingCall"}
    )

    enable_transfer: Optional[bool] = field(
        default=None, metadata={"alias": "enableTransfer"}
    )

    transfer_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    bounce_call_when_agent_unavailable: Optional[bool] = field(
        default=None, metadata={"alias": "bounceCallWhenAgentUnavailable"}
    )

    alert_call_center_call_on_hold: Optional[bool] = field(
        default=None, metadata={"alias": "alertCallCenterCallOnHold"}
    )

    alert_call_center_call_on_hold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "alertCallCenterCallOnHoldSeconds"}
    )

    bounce_call_center_call_on_hold: Optional[bool] = field(
        default=None, metadata={"alias": "bounceCallCenterCallOnHold"}
    )

    bounce_call_center_call_on_hold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "bounceCallCenterCallOnHoldSeconds"}
    )

    def __post_init__(self):
        nillable_fields = ["transfer_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterCallDispositionCodeAddRequest(OCIRequest):
    """Add a Call Center Call Disposition Code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        code (str):

        is_active (bool):

        description (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    code: str = field(metadata={"alias": "code"})

    is_active: bool = field(metadata={"alias": "isActive"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class GroupCallCenterCallDispositionCodeDeleteRequest(OCIRequest):
    """Delete a Call Center Call Disposition Code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    code: str = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class GroupCallCenterCallDispositionCodeGetListRequest(OCIRequest):
    """Get the list of Call Center Call Disposition  Codes.
        The response is either GroupCallCenterCallDispositionCodeGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCallCenterCallDispositionCodeGetRequest(OCIRequest):
    """Get a Call Center Call Disposition Code.
        The response is either GroupCallCenterCallDispositionCodeGetResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    code: str = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class GroupCallCenterCallDispositionCodeGetUsageListRequest(OCIRequest):
    """Get the list of Call Centers and Route Points using the specified disposition code.
        The response is either GroupCallCenterCallDispositionCodeGetUsageListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    code: str = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class GroupCallCenterCallDispositionCodeModifyActiveListRequest(OCIRequest):
    """Request to set the active status of Call Center Call Disposition Codes.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        call_disposition_code_activation (Optional[List[CallDispositionCodeActivation]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    call_disposition_code_activation: Optional[List[CallDispositionCodeActivation]] = (
        field(default=None, metadata={"alias": "callDispositionCodeActivation"})
    )


@dataclass(kw_only=True)
class GroupCallCenterCallDispositionCodeModifyRequest(OCIRequest):
    """Modify a Call Center Call Disposition Code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        code (str):

        is_active (Optional[bool]):

        description (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    code: str = field(metadata={"alias": "code"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterComfortMessageBypassGetRequest20(OCIRequest):
    """Get a call center's comfort message bypass settings.
        The response is either a GroupCallCenterComfortMessageBypassGetResponse20 or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterComfortMessageBypassModifyRequest20(OCIRequest):
    """Modify a call center's comfort message bypass settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        is_active (Optional[bool]):

        call_waiting_age_threshold_seconds (Optional[int]):

        play_announcement_after_ringing (Optional[bool]):

        ring_time_before_playing_announcement_seconds (Optional[int]):

        audio_message_selection (Optional[str]):

        audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        video_message_selection (Optional[str]):

        video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    call_waiting_age_threshold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "callWaitingAgeThresholdSeconds"}
    )

    play_announcement_after_ringing: Optional[bool] = field(
        default=None, metadata={"alias": "playAnnouncementAfterRinging"}
    )

    ring_time_before_playing_announcement_seconds: Optional[int] = field(
        default=None, metadata={"alias": "ringTimeBeforePlayingAnnouncementSeconds"}
    )

    audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioMessageSelection"}
    )

    audio_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoMessageSelection"}
    )

    video_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )


@dataclass(kw_only=True)
class GroupCallCenterCurrentAndPastAgentGetListRequest(OCIRequest):
    """Request to get all the current and past agents for the group.
        The response is either GroupCallCenterCurrentAndPastAgentGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupCallCenterCurrentAndPastCallCenterGetListRequest(OCIRequest):
    """Request to get all the current and past call centers for the group.
        The response is either GroupCallCenterCurrentAndPastCallCenterGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        is_premium_only (Optional[bool]):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_call_center_name (Optional[SearchCriteriaCallCenterName]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    is_premium_only: Optional[bool] = field(
        default=None, metadata={"alias": "isPremiumOnly"}
    )

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_call_center_name: Optional[SearchCriteriaCallCenterName] = field(
        default=None, metadata={"alias": "searchCriteriaCallCenterName"}
    )


@dataclass(kw_only=True)
class GroupCallCenterCurrentAndPastDNISGetListRequest(OCIRequest):
    """Request to get all the past and current DNIS for the Call Center for the group.
        The response is either GroupCallCenterCurrentAndPastDNISGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_user_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterDeleteAgentListRequest(OCIRequest):
    """Delete agent(s) from a call center.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        agent_user_id (List[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    agent_user_id: List[str] = field(metadata={"alias": "agentUserId"})


@dataclass(kw_only=True)
class GroupCallCenterDeleteDNISRequest(OCIRequest):
    """Delete a call center's DNIS.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        dnis_key (DNISKey):

    """

    dnis_key: DNISKey = field(metadata={"alias": "dnisKey"})


@dataclass(kw_only=True)
class GroupCallCenterDeleteInstanceRequest(OCIRequest):
    """Delete a Call Center instance from a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterDeleteSupervisorListRequest(OCIRequest):
    """Delete supervisor(s) from a call center.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        supervisor_user_id (List[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    supervisor_user_id: List[str] = field(metadata={"alias": "supervisorUserId"})


@dataclass(kw_only=True)
class GroupCallCenterDistinctiveRingingGetRequest(OCIRequest):
    """Get the distinctive ringing configuration values for call center.
        The response is either a GroupCallCenterDistinctiveRingingGetResponse
        or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterDistinctiveRingingModifyRequest(OCIRequest):
    """Modify the distinctive ringing configuration values for call center.

        The response is either a SuccessResponse or an ErrorResponse.

        The following element is only used in AS data mode and ignored in XS data mode:
          distinctiveRingingForceDeliveryRingPattern

    Attributes:

        service_user_id (str):

        distinctive_ringing_call_center_calls (Optional[bool]):

        distinctive_ringing_ring_pattern_for_call_center (Optional[str]):

        distinctive_ringing_force_delivery_ring_pattern (Optional[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    distinctive_ringing_call_center_calls: Optional[bool] = field(
        default=None, metadata={"alias": "distinctiveRingingCallCenterCalls"}
    )

    distinctive_ringing_ring_pattern_for_call_center: Optional[str] = field(
        default=None, metadata={"alias": "distinctiveRingingRingPatternForCallCenter"}
    )

    distinctive_ringing_force_delivery_ring_pattern: Optional[str] = field(
        default=None, metadata={"alias": "distinctiveRingingForceDeliveryRingPattern"}
    )


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingBrandingGetRequest(OCIRequest):
    """Request to get the group branding information.
        The response is either GroupCallCenterEnhancedReportingBrandingGetResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingBrandingModifyRequest(OCIRequest):
    """Request to modify the group branding configuration.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        branding_choice (Optional[str]):

        branding_file (Optional[LabeledFileResource]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    branding_choice: Optional[str] = field(
        default=None, metadata={"alias": "brandingChoice"}
    )

    branding_file: Optional[LabeledFileResource] = field(
        default=None, metadata={"alias": "brandingFile"}
    )


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingGetAvailableReportTemplateListRequest(OCIRequest):
    """Request to get all enabled call center report template for a group.
        The response is either a GroupCallCenterEnhancedReportingGetAvailableReportTemplateListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingGetRequest19(OCIRequest):
    """Request to get a group level call center enhanced reporting setting.
        The response is either a GroupCallCenterEnhancedReportingGetResponse19 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingModifyRequest19(OCIRequest):
    """Request to modify group level call center enhanced reporting settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        reporting_server (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    reporting_server: Optional[str] = field(
        default=None, metadata={"alias": "reportingServer"}
    )


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingReportTemplateAddRequest(OCIRequest):
    """Request to add a group level call center report template.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        description (Optional[str]):

        data_template (str):

        filter_number (Optional[int]):

        xslt_template (LabeledFileResource):

        scope (str):

        is_enabled (bool):

        is_realtime_report (Optional[bool]):

        call_completion_threshold_param (Optional[str]):

        short_duration_threshold_param (Optional[str]):

        service_level_threshold_param (Optional[str]):

        service_level_inclusions_param (Optional[str]):

        service_level_objective_threshold_param (Optional[str]):

        abandoned_call_threshold_param (Optional[str]):

        service_level_threshold_param_number (Optional[int]):

        abandoned_call_threshold_param_number (Optional[int]):

        filter_value (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    data_template: str = field(metadata={"alias": "dataTemplate"})

    filter_number: Optional[int] = field(
        default=None, metadata={"alias": "filterNumber"}
    )

    xslt_template: LabeledFileResource = field(metadata={"alias": "xsltTemplate"})

    scope: str = field(metadata={"alias": "scope"})

    is_enabled: bool = field(metadata={"alias": "isEnabled"})

    is_realtime_report: Optional[bool] = field(
        default=None, metadata={"alias": "isRealtimeReport"}
    )

    call_completion_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "callCompletionThresholdParam"}
    )

    short_duration_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "shortDurationThresholdParam"}
    )

    service_level_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelThresholdParam"}
    )

    service_level_inclusions_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelInclusionsParam"}
    )

    service_level_objective_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelObjectiveThresholdParam"}
    )

    abandoned_call_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "abandonedCallThresholdParam"}
    )

    service_level_threshold_param_number: Optional[int] = field(
        default=None, metadata={"alias": "serviceLevelThresholdParamNumber"}
    )

    abandoned_call_threshold_param_number: Optional[int] = field(
        default=None, metadata={"alias": "abandonedCallThresholdParamNumber"}
    )

    filter_value: Optional[List[str]] = field(
        default=None, metadata={"alias": "filterValue"}
    )


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingReportTemplateDeleteRequest(OCIRequest):
    """Request to delete a group level call center report template.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingReportTemplateGetListRequest(OCIRequest):
    """Request to get group level call center report template list.
        The response is either a GroupCallCenterEnhancedReportingReportTemplateGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingReportTemplateGetRequest(OCIRequest):
    """Request to get a group level call center report template.
        The response is either a GroupCallCenterEnhancedReportingReportTemplateGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingReportTemplateModifyRequest(OCIRequest):
    """Request to modify a group level call center report template.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        new_name (Optional[str]):

        description (Optional[Nillable[str]]):

        xslt_template (Optional[LabeledFileResource]):

        scope (Optional[str]):

        is_enabled (Optional[bool]):

        is_realtime_report (Optional[bool]):

        filter_number (Optional[Nillable[int]]):

        filter_value (Optional[Nillable[CallCenterReportDataTemplateQueryFilterValueReplacementList]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    xslt_template: Optional[LabeledFileResource] = field(
        default=None, metadata={"alias": "xsltTemplate"}
    )

    scope: Optional[str] = field(default=None, metadata={"alias": "scope"})

    is_enabled: Optional[bool] = field(default=None, metadata={"alias": "isEnabled"})

    is_realtime_report: Optional[bool] = field(
        default=None, metadata={"alias": "isRealtimeReport"}
    )

    filter_number: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "filterNumber"}
    )

    filter_value: Optional[
        Nillable[CallCenterReportDataTemplateQueryFilterValueReplacementList]
    ] = field(default=None, metadata={"alias": "filterValue"})

    def __post_init__(self):
        nillable_fields = ["description", "filter_number", "filter_value"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingScheduledReportAddRequest(OCIRequest):
    """Request to add a group level call center reporting scheduled report.
        The response is either a SuccessResponse or an ErrorResponse.
        The startDate element is adjusted to the first occurrence of the recurrent schedule that comes at or after startDate.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        description (Optional[str]):

        report_template (CallCenterReportTemplateKey):

        schedule (CallCenterReportSchedule):

        sampling_period (Optional[str]):

        start_day_of_week (Optional[str]):

        report_time_zone (str):

        report_date_format (str):

        report_time_format (str):

        report_interval (CallCenterReportInterval):

        report_format (str):

        agent (Optional[CallCenterScheduledReportAgentSelection]):

        call_center (Optional[CallCenterScheduledReportCallCenterSelection]):

        dnis (Optional[CallCenterScheduledReportDNISSelection]):

        call_completion_threshold_seconds (Optional[int]):

        short_duration_threshold_seconds (Optional[int]):

        service_level_threshold_seconds (Optional[List[int]]):

        service_level_inclusions (Optional[CallCenterScheduledReportServiceLevelInclusions]):

        service_level_objective_percentage (Optional[int]):

        abandoned_call_threshold_seconds (Optional[List[int]]):

        email_address (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    report_template: CallCenterReportTemplateKey = field(
        metadata={"alias": "reportTemplate"}
    )

    schedule: CallCenterReportSchedule = field(metadata={"alias": "schedule"})

    sampling_period: Optional[str] = field(
        default=None, metadata={"alias": "samplingPeriod"}
    )

    start_day_of_week: Optional[str] = field(
        default=None, metadata={"alias": "startDayOfWeek"}
    )

    report_time_zone: str = field(metadata={"alias": "reportTimeZone"})

    report_date_format: str = field(metadata={"alias": "reportDateFormat"})

    report_time_format: str = field(metadata={"alias": "reportTimeFormat"})

    report_interval: CallCenterReportInterval = field(
        metadata={"alias": "reportInterval"}
    )

    report_format: str = field(metadata={"alias": "reportFormat"})

    agent: Optional[CallCenterScheduledReportAgentSelection] = field(
        default=None, metadata={"alias": "agent"}
    )

    call_center: Optional[CallCenterScheduledReportCallCenterSelection] = field(
        default=None, metadata={"alias": "callCenter"}
    )

    dnis: Optional[CallCenterScheduledReportDNISSelection] = field(
        default=None, metadata={"alias": "dnis"}
    )

    call_completion_threshold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "callCompletionThresholdSeconds"}
    )

    short_duration_threshold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "shortDurationThresholdSeconds"}
    )

    service_level_threshold_seconds: Optional[List[int]] = field(
        default=None, metadata={"alias": "serviceLevelThresholdSeconds"}
    )

    service_level_inclusions: Optional[
        CallCenterScheduledReportServiceLevelInclusions
    ] = field(default=None, metadata={"alias": "serviceLevelInclusions"})

    service_level_objective_percentage: Optional[int] = field(
        default=None, metadata={"alias": "serviceLevelObjectivePercentage"}
    )

    abandoned_call_threshold_seconds: Optional[List[int]] = field(
        default=None, metadata={"alias": "abandonedCallThresholdSeconds"}
    )

    email_address: List[str] = field(metadata={"alias": "emailAddress"})


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingScheduledReportDeleteRequest(OCIRequest):
    """Request to delete a group level call center reporting scheduled report.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingScheduledReportGetActiveListRequest(OCIRequest):
    """Request to get a list of active group level call center reporting scheduled reports.
        The response is either a GroupCallCenterEnhancedReportingScheduledReportGetActiveListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_call_center_scheduled_report_name (Optional[List[SearchCriteriaCallCenterScheduledReportName]]):

        search_criteria_exact_call_center_scheduled_report_created_by_supervisor (Optional[SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor]):

        search_criteria_exact_call_center_report_template_key (Optional[SearchCriteriaExactCallCenterReportTemplateKey]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_call_center_scheduled_report_name: Optional[
        List[SearchCriteriaCallCenterScheduledReportName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaCallCenterScheduledReportName"}
    )

    search_criteria_exact_call_center_scheduled_report_created_by_supervisor: Optional[
        SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor
    ] = field(
        default=None,
        metadata={
            "alias": "searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor"
        },
    )

    search_criteria_exact_call_center_report_template_key: Optional[
        SearchCriteriaExactCallCenterReportTemplateKey
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaExactCallCenterReportTemplateKey"},
    )


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingScheduledReportGetCompletedListRequest(
    OCIRequest
):
    """Request to get a list of completed group level call center reporting scheduled reports.
        The response is either a GroupCallCenterEnhancedReportingScheduledReportGetCompletedListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_call_center_scheduled_report_name (Optional[List[SearchCriteriaCallCenterScheduledReportName]]):

        search_criteria_exact_call_center_scheduled_report_created_by_supervisor (Optional[SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor]):

        search_criteria_exact_call_center_report_template_key (Optional[SearchCriteriaExactCallCenterReportTemplateKey]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_call_center_scheduled_report_name: Optional[
        List[SearchCriteriaCallCenterScheduledReportName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaCallCenterScheduledReportName"}
    )

    search_criteria_exact_call_center_scheduled_report_created_by_supervisor: Optional[
        SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor
    ] = field(
        default=None,
        metadata={
            "alias": "searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor"
        },
    )

    search_criteria_exact_call_center_report_template_key: Optional[
        SearchCriteriaExactCallCenterReportTemplateKey
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaExactCallCenterReportTemplateKey"},
    )


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingScheduledReportGetListRequest(OCIRequest):
    """Request to get a list of group level call center reporting scheduled reports.
        The response is either a GroupCallCenterEnhancedReportingScheduledReportGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_call_center_scheduled_report_name (Optional[List[SearchCriteriaCallCenterScheduledReportName]]):

        search_criteria_exact_call_center_scheduled_report_created_by_supervisor (Optional[SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor]):

        search_criteria_exact_call_center_report_template_key (Optional[SearchCriteriaExactCallCenterReportTemplateKey]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_call_center_scheduled_report_name: Optional[
        List[SearchCriteriaCallCenterScheduledReportName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaCallCenterScheduledReportName"}
    )

    search_criteria_exact_call_center_scheduled_report_created_by_supervisor: Optional[
        SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor
    ] = field(
        default=None,
        metadata={
            "alias": "searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor"
        },
    )

    search_criteria_exact_call_center_report_template_key: Optional[
        SearchCriteriaExactCallCenterReportTemplateKey
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaExactCallCenterReportTemplateKey"},
    )


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingScheduledReportGetReportTemplateUsageListRequest(
    OCIRequest
):
    """Request to get all the call center reporting scheduled report in a group that uses a given group level report template.
        The response is either a GroupCallCenterEnhancedReportingScheduledReportGetReportTemplateUsageListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingScheduledReportGetRequest(OCIRequest):
    """Request to get a group level call center reporting scheduled report.
        The response is either a GroupCallCenterEnhancedReportingScheduledReportGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingScheduledReportModifyRequest(OCIRequest):
    """Request to modify a group level call center reporting scheduled report.
        The response is either a SuccessResponse or an ErrorResponse.
        The startDate element is adjusted to the first occurrence of the recurrent schedule that comes at or after startDate.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        new_name (Optional[str]):

        description (Optional[Nillable[str]]):

        schedule (Optional[CallCenterReportSchedule]):

        sampling_period (Optional[str]):

        start_day_of_week (Optional[str]):

        report_time_zone (Optional[str]):

        report_date_format (Optional[str]):

        report_time_format (Optional[str]):

        report_interval (Optional[CallCenterReportInterval]):

        report_format (Optional[str]):

        agent (Optional[CallCenterScheduledReportAgentSelection]):

        call_center (Optional[CallCenterScheduledReportCallCenterSelection]):

        dnis (Optional[CallCenterScheduledReportDNISSelection]):

        call_completion_threshold_seconds (Optional[int]):

        short_duration_threshold_seconds (Optional[int]):

        service_level_threshold_seconds (Optional[CallCenterReportServiceLevelThresholdReplacementList]):

        service_level_inclusions (Optional[CallCenterScheduledReportServiceLevelInclusionsModify]):

        service_level_objective_percentage (Optional[Nillable[int]]):

        abandoned_call_threshold_seconds (Optional[CallCenterReportAbandonedCallThresholdReplacementList]):

        email_address (Optional[CallCenterReportReplacementEmailList]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    schedule: Optional[CallCenterReportSchedule] = field(
        default=None, metadata={"alias": "schedule"}
    )

    sampling_period: Optional[str] = field(
        default=None, metadata={"alias": "samplingPeriod"}
    )

    start_day_of_week: Optional[str] = field(
        default=None, metadata={"alias": "startDayOfWeek"}
    )

    report_time_zone: Optional[str] = field(
        default=None, metadata={"alias": "reportTimeZone"}
    )

    report_date_format: Optional[str] = field(
        default=None, metadata={"alias": "reportDateFormat"}
    )

    report_time_format: Optional[str] = field(
        default=None, metadata={"alias": "reportTimeFormat"}
    )

    report_interval: Optional[CallCenterReportInterval] = field(
        default=None, metadata={"alias": "reportInterval"}
    )

    report_format: Optional[str] = field(
        default=None, metadata={"alias": "reportFormat"}
    )

    agent: Optional[CallCenterScheduledReportAgentSelection] = field(
        default=None, metadata={"alias": "agent"}
    )

    call_center: Optional[CallCenterScheduledReportCallCenterSelection] = field(
        default=None, metadata={"alias": "callCenter"}
    )

    dnis: Optional[CallCenterScheduledReportDNISSelection] = field(
        default=None, metadata={"alias": "dnis"}
    )

    call_completion_threshold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "callCompletionThresholdSeconds"}
    )

    short_duration_threshold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "shortDurationThresholdSeconds"}
    )

    service_level_threshold_seconds: Optional[
        CallCenterReportServiceLevelThresholdReplacementList
    ] = field(default=None, metadata={"alias": "serviceLevelThresholdSeconds"})

    service_level_inclusions: Optional[
        CallCenterScheduledReportServiceLevelInclusionsModify
    ] = field(default=None, metadata={"alias": "serviceLevelInclusions"})

    service_level_objective_percentage: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "serviceLevelObjectivePercentage"}
    )

    abandoned_call_threshold_seconds: Optional[
        CallCenterReportAbandonedCallThresholdReplacementList
    ] = field(default=None, metadata={"alias": "abandonedCallThresholdSeconds"})

    email_address: Optional[CallCenterReportReplacementEmailList] = field(
        default=None, metadata={"alias": "emailAddress"}
    )

    def __post_init__(self):
        nillable_fields = ["description", "service_level_objective_percentage"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterForcedForwardingGetRequest20(OCIRequest):
    """Get a call center's forced forwarding settings.
        The response is either a GroupCallCenterForcedForwardingGetResponse20 or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterForcedForwardingModifyRequest20(OCIRequest):
    """Modify a call center's forced forwarding settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        is_active (Optional[bool]):

        forward_to_phone_number (Optional[Nillable[str]]):

        allow_enable_via_fac (Optional[bool]):

        play_announcement_before_forwarding (Optional[bool]):

        audio_message_selection (Optional[str]):

        audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        video_message_selection (Optional[str]):

        video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    forward_to_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    allow_enable_via_fac: Optional[bool] = field(
        default=None, metadata={"alias": "allowEnableViaFAC"}
    )

    play_announcement_before_forwarding: Optional[bool] = field(
        default=None, metadata={"alias": "playAnnouncementBeforeForwarding"}
    )

    audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioMessageSelection"}
    )

    audio_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoMessageSelection"}
    )

    video_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )

    def __post_init__(self):
        nillable_fields = ["forward_to_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterGetAgentListRequest(OCIRequest):
    """Get a list of agents assigned to a call center.
        The response is either a
        GroupCallCenterGetAgentListResponse or an ErrorResponse.

        The following element is only used in AS data mode and ignored in XS data mode:
          searchCriteriaExactSkillLevel

    Attributes:

        service_user_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_skill_level (Optional[SearchCriteriaExactSkillLevel]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_skill_level: Optional[SearchCriteriaExactSkillLevel] = field(
        default=None, metadata={"alias": "searchCriteriaExactSkillLevel"}
    )


@dataclass(kw_only=True)
class GroupCallCenterGetAgentPagedSortedListRequest(OCIRequest):
    """Get a list of agents assigned to a call center.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        It is possible to search by various criteria to restrict the number of rows returned.

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        ErrorResponse is returned if searchCriteriaExactUserGroup or searchCriteriaExactSkillLevel have multiple entries and searchCriteriaModeOr is not included.

        Sorting is done on either a priority basis or a skill basis depending on the type of call center.

        The response is either a
        GroupCallCenterGetAgentPagedSortedListResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_exact_skill_level (Optional[List[SearchCriteriaExactSkillLevel]]):

        search_criteria_exact_user_group (Optional[List[SearchCriteriaExactUserGroup]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_exact_skill_level: Optional[List[SearchCriteriaExactSkillLevel]] = (
        field(default=None, metadata={"alias": "searchCriteriaExactSkillLevel"})
    )

    search_criteria_exact_user_group: Optional[List[SearchCriteriaExactUserGroup]] = (
        field(default=None, metadata={"alias": "searchCriteriaExactUserGroup"})
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupCallCenterGetAnnouncementRequest22(OCIRequest):
    """Get a call center's announcement settings.
        The response is either a GroupCallCenterGetAnnouncementResponse22 or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterGetAvailableAgentListRequest(OCIRequest):
    """Get a list of users that can be assigned as agents to a given type of Call Center.
        Searching for users by group only makes sense when the call center is part of an Enterprise.
        The response is either GroupCallCenterGetAvailableAgentListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        call_center_type (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    call_center_type: str = field(metadata={"alias": "callCenterType"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupCallCenterGetAvailableAgentPagedSortedListRequest(OCIRequest):
    """Get a list of users that can be assigned as agents to a given type of Call Center.
        Searching for users by group only makes sense when the call center is part of an Enterprise.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        It is possible to search by various criteria to restrict the number of rows returned.

        If no sortOrder is included the response is sorted by User Id ascending by default.

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        ErrorResponse is returned if searchCriteriaExactUserGroup has multiple entries and searchCriteriaModeOr is not included.

        The response is either GroupCallCenterGetAvailableAgentPagedSortedListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        call_center_type (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderGroupCallCenterGetAvailableAgentPagedSortedList]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_exact_user_group (Optional[List[SearchCriteriaExactUserGroup]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    call_center_type: str = field(metadata={"alias": "callCenterType"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[
        List[SortOrderGroupCallCenterGetAvailableAgentPagedSortedList]
    ] = field(default=None, metadata={"alias": "sortOrder"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_exact_user_group: Optional[List[SearchCriteriaExactUserGroup]] = (
        field(default=None, metadata={"alias": "searchCriteriaExactUserGroup"})
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupCallCenterGetAvailableSupervisorListRequest(OCIRequest):
    """Get a list of users that can be assigned as supervisors to a Call Center.
        Searching for users by group only makes sense when the call center is part of an Enterprise.
        The response is either GroupCallCenterGetAvailableSupervisorListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupCallCenterGetDNISAgentListRequest(OCIRequest):
    """Get a list of agent who selected the DNIS as the outgoing call.
        The response is either GroupCallCenterGetDNISAgentListResponse or ErrorResponse.

    Attributes:

        dnis_key (DNISKey):

    """

    dnis_key: DNISKey = field(metadata={"alias": "dnisKey"})


@dataclass(kw_only=True)
class GroupCallCenterGetDNISAnnouncementRequest22(OCIRequest):
    """Get a call center's DNIS Announcements
        The response is either a GroupCallCenterGetDNISAnnouncementRequest22 or an ErrorResponse.

    Attributes:

        dnis_key (DNISKey):

    """

    dnis_key: DNISKey = field(metadata={"alias": "dnisKey"})


@dataclass(kw_only=True)
class GroupCallCenterGetDNISListRequest(OCIRequest):
    """Get a list of DNIS that are configured for a Call Center.
        The response is either GroupCallCenterGetDNISListResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterGetDNISRequest(OCIRequest):
    """Get a call center's DNIS.
        The response is either a GroupCallCenterGetDNISRequest or an ErrorResponse.

    Attributes:

        dnis_key (DNISKey):

    """

    dnis_key: DNISKey = field(metadata={"alias": "dnisKey"})


@dataclass(kw_only=True)
class GroupCallCenterGetDistinctiveRingingRequest(OCIRequest):
    """Get the distinctive ringing configuration values for call center.
        The response is either a GroupCallCenterGetDistinctiveRingingResponse
        or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterGetInstanceListRequest(OCIRequest):
    """Get a list of Call Center instances within a group.
        The response is either GroupCallCenterGetInstanceListResponse or ErrorResponse.
        It is possible to get the instances within a specified department.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_department_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_department_name: Optional[str] = field(
        default=None, metadata={"alias": "groupDepartmentName"}
    )


@dataclass(kw_only=True)
class GroupCallCenterGetInstancePagedSortedListRequest(OCIRequest):
    """Get a list of Call Center instances within a group.
        The response is either GroupCallCenterGetInstancePagedSortedListResponse or ErrorResponse.
        It is possible to get the instances within a specified department.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        It is possible to search by various criteria to restrict the number of rows returned.

        If no sortOrder is included the response is sorted by User Id ascending by default.

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        ErrorResponse is returned if searchCriteriaExactHuntPolicy or searchCriteriaExactCallCenterType have multiple entries and searchCriteriaModeOr is not include.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderGroupCallCenterGetInstancePagedSortedList]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_call_center_name (Optional[List[SearchCriteriaCallCenterName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_service_status (Optional[SearchCriteriaServiceStatus]):

        search_criteria_exact_hunt_policy (Optional[List[SearchCriteriaExactHuntPolicy]]):

        search_criteria_exact_call_center_type (Optional[List[SearchCriteriaExactCallCenterType]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[List[SortOrderGroupCallCenterGetInstancePagedSortedList]] = (
        field(default=None, metadata={"alias": "sortOrder"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_call_center_name: Optional[List[SearchCriteriaCallCenterName]] = (
        field(default=None, metadata={"alias": "searchCriteriaCallCenterName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_service_status: Optional[SearchCriteriaServiceStatus] = field(
        default=None, metadata={"alias": "searchCriteriaServiceStatus"}
    )

    search_criteria_exact_hunt_policy: Optional[List[SearchCriteriaExactHuntPolicy]] = (
        field(default=None, metadata={"alias": "searchCriteriaExactHuntPolicy"})
    )

    search_criteria_exact_call_center_type: Optional[
        List[SearchCriteriaExactCallCenterType]
    ] = field(default=None, metadata={"alias": "searchCriteriaExactCallCenterType"})

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupCallCenterGetInstanceQueueStatusRequest(OCIRequest):
    """Get Call Center queue status.
        The response is either GroupCallCenterGetInstanceQueueStatusResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterGetInstanceRequest22(OCIRequest):
    """Request to get all the information of a Call Center instance.
        The response is either GroupCallCenterGetInstanceResponse22 or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterGetInstanceStatisticsReportingRequest17sp1(OCIRequest):
    """Request to get the call center statistics reporting settings.
        The response is either GroupCallCenterGetInstanceStatisticsReportingResponse17sp1 or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterGetInstanceStatisticsRequest14sp9(OCIRequest):
    """Get Call Center queue and agent statistics.
        The response is either GroupCallCenterGetInstanceStatisticsResponse14sp9 or ErrorResponse.

    Attributes:

        service_user_id (str):

        statistics_range (CallCenterStatisticsRange):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    statistics_range: CallCenterStatisticsRange = field(
        metadata={"alias": "statisticsRange"}
    )


@dataclass(kw_only=True)
class GroupCallCenterGetRequest23(OCIRequest):
    """Request the Group level data associated with Call Center.
        The response is either a GroupCallCenterGetResponse23 or an
        ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCallCenterGetRoutingPolicyRequest(OCIRequest):
    """Request the group call center routing policy.
        The response is either a GroupCallCenterGetRoutingPolicyResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCallCenterGetSupervisorListRequest16(OCIRequest):
    """Get a list of supervisors assigned to a call center.
        The response is either a
        GroupCallCenterGetSupervisorListResponse16 or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterGetUnlicensedAgentListRequest(OCIRequest):
    """Get a list of unlicensed users who are preventing the Call Center from upgrading to another type.
        The response is either GroupCallCenterGetUnlicensedAgentListRequest or ErrorResponse.

    Attributes:

        service_user_id (str):

        call_center_type (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    call_center_type: str = field(metadata={"alias": "callCenterType"})


@dataclass(kw_only=True)
class GroupCallCenterHolidayServiceGetRequest20(OCIRequest):
    """Get a call center's holiday service settings.
        The response is either a GroupCallCenterHolidayServiceGetResponse20 or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterHolidayServiceModifyRequest20(OCIRequest):
    """Modify a call center's holiday service settings.
        Only Group and Enterprise level schedules are accepted.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        action (Optional[str]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        transfer_phone_number (Optional[Nillable[str]]):

        play_announcement_before_action (Optional[bool]):

        audio_message_selection (Optional[str]):

        audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        video_message_selection (Optional[str]):

        video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    action: Optional[str] = field(default=None, metadata={"alias": "action"})

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    transfer_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    play_announcement_before_action: Optional[bool] = field(
        default=None, metadata={"alias": "playAnnouncementBeforeAction"}
    )

    audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioMessageSelection"}
    )

    audio_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoMessageSelection"}
    )

    video_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )

    def __post_init__(self):
        nillable_fields = ["holiday_schedule", "transfer_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterModifyActiveInstanceListRequest(OCIRequest):
    """Request to set the active status of Call Center instances.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_activation (Optional[List[ServiceActivation]]):

    """

    service_activation: Optional[List[ServiceActivation]] = field(
        default=None, metadata={"alias": "serviceActivation"}
    )


@dataclass(kw_only=True)
class GroupCallCenterModifyAgentListRequest(OCIRequest):
    """Request to modify the agent list for a call center.
        The response is either SuccessResponse or ErrorResponse.
        If the agentUserIdList is used for Skill Based Premium call centers,
        the agents will be set to skill level 1.

        The following element is only used in AS data mode and ignored in XS data mode:
          skilledAgentUserIdList

    Attributes:

        service_user_id (str):

        agent_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

        skilled_agent_user_id_list (Optional[List[CallCenterReplacementSkilledAgents]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    agent_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "agentUserIdList"}
    )

    skilled_agent_user_id_list: Optional[List[CallCenterReplacementSkilledAgents]] = (
        field(default=None, metadata={"alias": "skilledAgentUserIdList"})
    )

    def __post_init__(self):
        nillable_fields = ["agent_user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterModifyAnnouncementRequest20(OCIRequest):
    """Modify a call center's announcement settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        play_entrance_message (Optional[bool]):

        mandatory_entrance_message (Optional[bool]):

        entrance_audio_message_selection (Optional[str]):

        entrance_message_audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        entrance_message_audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        entrance_video_message_selection (Optional[str]):

        entrance_message_video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        entrance_message_video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        play_periodic_comfort_message (Optional[bool]):

        time_between_comfort_messages_seconds (Optional[int]):

        periodic_comfort_audio_message_selection (Optional[str]):

        periodic_comfort_message_audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        periodic_comfort_message_audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        periodic_comfort_video_message_selection (Optional[str]):

        periodic_comfort_message_video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        periodic_comfort_message_video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        enable_media_on_hold_for_queued_calls (Optional[bool]):

        media_on_hold_source (Optional[CallCenterMediaOnHoldSourceModify20]):

        media_on_hold_use_alternate_source_for_internal_calls (Optional[bool]):

        media_on_hold_internal_source (Optional[CallCenterMediaOnHoldSourceModify20]):

        play_whisper_message (Optional[bool]):

        whisper_audio_message_selection (Optional[str]):

        whisper_message_audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        whisper_message_audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        whisper_video_message_selection (Optional[str]):

        whisper_message_video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        whisper_message_video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        estimated_wait_message_options_modify (Optional[EstimatedWaitMessageOptionsModify]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    play_entrance_message: Optional[bool] = field(
        default=None, metadata={"alias": "playEntranceMessage"}
    )

    mandatory_entrance_message: Optional[bool] = field(
        default=None, metadata={"alias": "mandatoryEntranceMessage"}
    )

    entrance_audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "entranceAudioMessageSelection"}
    )

    entrance_message_audio_url_list: Optional[CallCenterAnnouncementURLListModify] = (
        field(default=None, metadata={"alias": "entranceMessageAudioUrlList"})
    )

    entrance_message_audio_file_list: Optional[
        CallCenterAnnouncementFileListModify20
    ] = field(default=None, metadata={"alias": "entranceMessageAudioFileList"})

    entrance_video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "entranceVideoMessageSelection"}
    )

    entrance_message_video_url_list: Optional[CallCenterAnnouncementURLListModify] = (
        field(default=None, metadata={"alias": "entranceMessageVideoUrlList"})
    )

    entrance_message_video_file_list: Optional[
        CallCenterAnnouncementFileListModify20
    ] = field(default=None, metadata={"alias": "entranceMessageVideoFileList"})

    play_periodic_comfort_message: Optional[bool] = field(
        default=None, metadata={"alias": "playPeriodicComfortMessage"}
    )

    time_between_comfort_messages_seconds: Optional[int] = field(
        default=None, metadata={"alias": "timeBetweenComfortMessagesSeconds"}
    )

    periodic_comfort_audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "periodicComfortAudioMessageSelection"}
    )

    periodic_comfort_message_audio_url_list: Optional[
        CallCenterAnnouncementURLListModify
    ] = field(default=None, metadata={"alias": "periodicComfortMessageAudioUrlList"})

    periodic_comfort_message_audio_file_list: Optional[
        CallCenterAnnouncementFileListModify20
    ] = field(default=None, metadata={"alias": "periodicComfortMessageAudioFileList"})

    periodic_comfort_video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "periodicComfortVideoMessageSelection"}
    )

    periodic_comfort_message_video_url_list: Optional[
        CallCenterAnnouncementURLListModify
    ] = field(default=None, metadata={"alias": "periodicComfortMessageVideoUrlList"})

    periodic_comfort_message_video_file_list: Optional[
        CallCenterAnnouncementFileListModify20
    ] = field(default=None, metadata={"alias": "periodicComfortMessageVideoFileList"})

    enable_media_on_hold_for_queued_calls: Optional[bool] = field(
        default=None, metadata={"alias": "enableMediaOnHoldForQueuedCalls"}
    )

    media_on_hold_source: Optional[CallCenterMediaOnHoldSourceModify20] = field(
        default=None, metadata={"alias": "mediaOnHoldSource"}
    )

    media_on_hold_use_alternate_source_for_internal_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "mediaOnHoldUseAlternateSourceForInternalCalls"},
    )

    media_on_hold_internal_source: Optional[CallCenterMediaOnHoldSourceModify20] = (
        field(default=None, metadata={"alias": "mediaOnHoldInternalSource"})
    )

    play_whisper_message: Optional[bool] = field(
        default=None, metadata={"alias": "playWhisperMessage"}
    )

    whisper_audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "whisperAudioMessageSelection"}
    )

    whisper_message_audio_url_list: Optional[CallCenterAnnouncementURLListModify] = (
        field(default=None, metadata={"alias": "whisperMessageAudioUrlList"})
    )

    whisper_message_audio_file_list: Optional[
        CallCenterAnnouncementFileListModify20
    ] = field(default=None, metadata={"alias": "whisperMessageAudioFileList"})

    whisper_video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "whisperVideoMessageSelection"}
    )

    whisper_message_video_url_list: Optional[CallCenterAnnouncementURLListModify] = (
        field(default=None, metadata={"alias": "whisperMessageVideoUrlList"})
    )

    whisper_message_video_file_list: Optional[
        CallCenterAnnouncementFileListModify20
    ] = field(default=None, metadata={"alias": "whisperMessageVideoFileList"})

    estimated_wait_message_options_modify: Optional[
        EstimatedWaitMessageOptionsModify
    ] = field(default=None, metadata={"alias": "estimatedWaitMessageOptionsModify"})


@dataclass(kw_only=True)
class GroupCallCenterModifyDNISAnnouncementRequest20(OCIRequest):
    """Modify a call center DNIS announcement settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        dnis_key (DNISKey):

        play_entrance_message (Optional[bool]):

        mandatory_entrance_message (Optional[bool]):

        entrance_audio_message_selection (Optional[str]):

        entrance_message_audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        entrance_message_audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        entrance_video_message_selection (Optional[str]):

        entrance_message_video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        entrance_message_video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        play_periodic_comfort_message (Optional[bool]):

        time_between_comfort_messages_seconds (Optional[int]):

        periodic_comfort_audio_message_selection (Optional[str]):

        periodic_comfort_message_audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        periodic_comfort_message_audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        periodic_comfort_video_message_selection (Optional[str]):

        periodic_comfort_message_video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        periodic_comfort_message_video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        enable_media_on_hold_for_queued_calls (Optional[bool]):

        media_on_hold_source (Optional[CallCenterMediaOnHoldSourceModify20]):

        play_whisper_message (Optional[bool]):

        whisper_audio_message_selection (Optional[str]):

        whisper_message_audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        whisper_message_audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        whisper_video_message_selection (Optional[str]):

        whisper_message_video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        whisper_message_video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        estimated_wait_message_options_modify (Optional[EstimatedWaitMessageOptionsModify]):

    """

    dnis_key: DNISKey = field(metadata={"alias": "dnisKey"})

    play_entrance_message: Optional[bool] = field(
        default=None, metadata={"alias": "playEntranceMessage"}
    )

    mandatory_entrance_message: Optional[bool] = field(
        default=None, metadata={"alias": "mandatoryEntranceMessage"}
    )

    entrance_audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "entranceAudioMessageSelection"}
    )

    entrance_message_audio_url_list: Optional[CallCenterAnnouncementURLListModify] = (
        field(default=None, metadata={"alias": "entranceMessageAudioUrlList"})
    )

    entrance_message_audio_file_list: Optional[
        CallCenterAnnouncementFileListModify20
    ] = field(default=None, metadata={"alias": "entranceMessageAudioFileList"})

    entrance_video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "entranceVideoMessageSelection"}
    )

    entrance_message_video_url_list: Optional[CallCenterAnnouncementURLListModify] = (
        field(default=None, metadata={"alias": "entranceMessageVideoUrlList"})
    )

    entrance_message_video_file_list: Optional[
        CallCenterAnnouncementFileListModify20
    ] = field(default=None, metadata={"alias": "entranceMessageVideoFileList"})

    play_periodic_comfort_message: Optional[bool] = field(
        default=None, metadata={"alias": "playPeriodicComfortMessage"}
    )

    time_between_comfort_messages_seconds: Optional[int] = field(
        default=None, metadata={"alias": "timeBetweenComfortMessagesSeconds"}
    )

    periodic_comfort_audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "periodicComfortAudioMessageSelection"}
    )

    periodic_comfort_message_audio_url_list: Optional[
        CallCenterAnnouncementURLListModify
    ] = field(default=None, metadata={"alias": "periodicComfortMessageAudioUrlList"})

    periodic_comfort_message_audio_file_list: Optional[
        CallCenterAnnouncementFileListModify20
    ] = field(default=None, metadata={"alias": "periodicComfortMessageAudioFileList"})

    periodic_comfort_video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "periodicComfortVideoMessageSelection"}
    )

    periodic_comfort_message_video_url_list: Optional[
        CallCenterAnnouncementURLListModify
    ] = field(default=None, metadata={"alias": "periodicComfortMessageVideoUrlList"})

    periodic_comfort_message_video_file_list: Optional[
        CallCenterAnnouncementFileListModify20
    ] = field(default=None, metadata={"alias": "periodicComfortMessageVideoFileList"})

    enable_media_on_hold_for_queued_calls: Optional[bool] = field(
        default=None, metadata={"alias": "enableMediaOnHoldForQueuedCalls"}
    )

    media_on_hold_source: Optional[CallCenterMediaOnHoldSourceModify20] = field(
        default=None, metadata={"alias": "mediaOnHoldSource"}
    )

    play_whisper_message: Optional[bool] = field(
        default=None, metadata={"alias": "playWhisperMessage"}
    )

    whisper_audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "whisperAudioMessageSelection"}
    )

    whisper_message_audio_url_list: Optional[CallCenterAnnouncementURLListModify] = (
        field(default=None, metadata={"alias": "whisperMessageAudioUrlList"})
    )

    whisper_message_audio_file_list: Optional[
        CallCenterAnnouncementFileListModify20
    ] = field(default=None, metadata={"alias": "whisperMessageAudioFileList"})

    whisper_video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "whisperVideoMessageSelection"}
    )

    whisper_message_video_url_list: Optional[CallCenterAnnouncementURLListModify] = (
        field(default=None, metadata={"alias": "whisperMessageVideoUrlList"})
    )

    whisper_message_video_file_list: Optional[
        CallCenterAnnouncementFileListModify20
    ] = field(default=None, metadata={"alias": "whisperMessageVideoFileList"})

    estimated_wait_message_options_modify: Optional[
        EstimatedWaitMessageOptionsModify
    ] = field(default=None, metadata={"alias": "estimatedWaitMessageOptionsModify"})


@dataclass(kw_only=True)
class GroupCallCenterModifyDNISParametersRequest(OCIRequest):
    """Modify the setting that are configured for all the DNIS in a Call Center.
      The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        display_dnis_number (Optional[bool]):

        display_dnis_name (Optional[bool]):

        promote_calls_from_priority1to0 (Optional[bool]):

        promote_calls_from_priority2to1 (Optional[bool]):

        promote_calls_from_priority3to2 (Optional[bool]):

        promote_calls_from_priority1to0_seconds (Optional[int]):

        promote_calls_from_priority2to1_seconds (Optional[int]):

        promote_calls_from_priority3to2_seconds (Optional[int]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    display_dnis_number: Optional[bool] = field(
        default=None, metadata={"alias": "displayDNISNumber"}
    )

    display_dnis_name: Optional[bool] = field(
        default=None, metadata={"alias": "displayDNISName"}
    )

    promote_calls_from_priority1to0: Optional[bool] = field(
        default=None, metadata={"alias": "promoteCallsFromPriority1to0"}
    )

    promote_calls_from_priority2to1: Optional[bool] = field(
        default=None, metadata={"alias": "promoteCallsFromPriority2to1"}
    )

    promote_calls_from_priority3to2: Optional[bool] = field(
        default=None, metadata={"alias": "promoteCallsFromPriority3to2"}
    )

    promote_calls_from_priority1to0_seconds: Optional[int] = field(
        default=None, metadata={"alias": "promoteCallsFromPriority1to0Seconds"}
    )

    promote_calls_from_priority2to1_seconds: Optional[int] = field(
        default=None, metadata={"alias": "promoteCallsFromPriority2to1Seconds"}
    )

    promote_calls_from_priority3to2_seconds: Optional[int] = field(
        default=None, metadata={"alias": "promoteCallsFromPriority3to2Seconds"}
    )


@dataclass(kw_only=True)
class GroupCallCenterModifyDNISRequest(OCIRequest):
    """Modify a call center's DNIS settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        dnis_key (DNISKey):

        new_dnis_name (Optional[str]):

        dnis_phone_number (Optional[Nillable[str]]):

        extension (Optional[Nillable[str]]):

        use_custom_clid_settings (Optional[bool]):

        calling_line_id_phone_number (Optional[Nillable[str]]):

        calling_line_id_last_name (Optional[Nillable[str]]):

        calling_line_id_first_name (Optional[Nillable[str]]):

        use_custom_dnis_announcement_settings (Optional[bool]):

        priority (Optional[str]):

        allow_outgoing_acd_call (Optional[bool]):

    """

    dnis_key: DNISKey = field(metadata={"alias": "dnisKey"})

    new_dnis_name: Optional[str] = field(
        default=None, metadata={"alias": "newDNISName"}
    )

    dnis_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "dnisPhoneNumber"}
    )

    extension: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "extension"}
    )

    use_custom_clid_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomCLIDSettings"}
    )

    calling_line_id_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )

    calling_line_id_last_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callingLineIdLastName"}
    )

    calling_line_id_first_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callingLineIdFirstName"}
    )

    use_custom_dnis_announcement_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomDnisAnnouncementSettings"}
    )

    priority: Optional[str] = field(default=None, metadata={"alias": "priority"})

    allow_outgoing_acd_call: Optional[bool] = field(
        default=None, metadata={"alias": "allowOutgoingACDCall"}
    )

    def __post_init__(self):
        nillable_fields = [
            "dnis_phone_number",
            "extension",
            "calling_line_id_phone_number",
            "calling_line_id_last_name",
            "calling_line_id_first_name",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterModifyDistinctiveRingingRequest(OCIRequest):
    """Modify the distinctive ringing configuration values for call center.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        distinctive_ringing_call_center_calls (Optional[bool]):

        distinctive_ringing_ring_pattern_for_call_center (Optional[str]):

        distinctive_ringing_force_delivery_ring_pattern (Optional[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    distinctive_ringing_call_center_calls: Optional[bool] = field(
        default=None, metadata={"alias": "distinctiveRingingCallCenterCalls"}
    )

    distinctive_ringing_ring_pattern_for_call_center: Optional[str] = field(
        default=None, metadata={"alias": "distinctiveRingingRingPatternForCallCenter"}
    )

    distinctive_ringing_force_delivery_ring_pattern: Optional[str] = field(
        default=None, metadata={"alias": "distinctiveRingingForceDeliveryRingPattern"}
    )


@dataclass(kw_only=True)
class GroupCallCenterModifyInstanceRequest22(OCIRequest):
    """Request to modify a Call Center instance.
        The response is either SuccessResponse or ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          routingType
          enableReporting
          allowCallsToAgentsInWrapUp
          overrideAgentWrapUpTime
          wrapUpSeconds
          forceDeliveryOfCalls
          forceDeliveryWaitTimeSeconds
          enableAutomaticStateChangeForAgents
          agentStateAfterCall
          agentUnavailableCode
          callCenterQueueThresholdsIsActive
          networkClassOfService

    Attributes:

        service_user_id (str):

        service_instance_profile (Optional[ServiceInstanceModifyProfile]):

        type (Optional[str]):

        routing_type (Optional[str]):

        policy (Optional[str]):

        enable_video (Optional[bool]):

        queue_length (Optional[int]):

        enable_reporting (Optional[bool]):

        allow_caller_to_dial_escape_digit (Optional[bool]):

        escape_digit (Optional[str]):

        reset_call_statistics_upon_entry_in_queue (Optional[bool]):

        allow_agent_logoff (Optional[bool]):

        allow_call_waiting_for_agents (Optional[bool]):

        allow_calls_to_agents_in_wrap_up (Optional[bool]):

        override_agent_wrap_up_time (Optional[bool]):

        wrap_up_seconds (Optional[Nillable[int]]):

        force_delivery_of_calls (Optional[bool]):

        force_delivery_wait_time_seconds (Optional[Nillable[int]]):

        enable_automatic_state_change_for_agents (Optional[bool]):

        agent_state_after_call (Optional[str]):

        agent_unavailable_code (Optional[Nillable[str]]):

        external_preferred_audio_codec (Optional[str]):

        internal_preferred_audio_codec (Optional[str]):

        play_ringing_when_offering_call (Optional[bool]):

        network_class_of_service (Optional[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: Optional[ServiceInstanceModifyProfile] = field(
        default=None, metadata={"alias": "serviceInstanceProfile"}
    )

    type: Optional[str] = field(default=None, metadata={"alias": "type"})

    routing_type: Optional[str] = field(default=None, metadata={"alias": "routingType"})

    policy: Optional[str] = field(default=None, metadata={"alias": "policy"})

    enable_video: Optional[bool] = field(
        default=None, metadata={"alias": "enableVideo"}
    )

    queue_length: Optional[int] = field(default=None, metadata={"alias": "queueLength"})

    enable_reporting: Optional[bool] = field(
        default=None, metadata={"alias": "enableReporting"}
    )

    allow_caller_to_dial_escape_digit: Optional[bool] = field(
        default=None, metadata={"alias": "allowCallerToDialEscapeDigit"}
    )

    escape_digit: Optional[str] = field(default=None, metadata={"alias": "escapeDigit"})

    reset_call_statistics_upon_entry_in_queue: Optional[bool] = field(
        default=None, metadata={"alias": "resetCallStatisticsUponEntryInQueue"}
    )

    allow_agent_logoff: Optional[bool] = field(
        default=None, metadata={"alias": "allowAgentLogoff"}
    )

    allow_call_waiting_for_agents: Optional[bool] = field(
        default=None, metadata={"alias": "allowCallWaitingForAgents"}
    )

    allow_calls_to_agents_in_wrap_up: Optional[bool] = field(
        default=None, metadata={"alias": "allowCallsToAgentsInWrapUp"}
    )

    override_agent_wrap_up_time: Optional[bool] = field(
        default=None, metadata={"alias": "overrideAgentWrapUpTime"}
    )

    wrap_up_seconds: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "wrapUpSeconds"}
    )

    force_delivery_of_calls: Optional[bool] = field(
        default=None, metadata={"alias": "forceDeliveryOfCalls"}
    )

    force_delivery_wait_time_seconds: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "forceDeliveryWaitTimeSeconds"}
    )

    enable_automatic_state_change_for_agents: Optional[bool] = field(
        default=None, metadata={"alias": "enableAutomaticStateChangeForAgents"}
    )

    agent_state_after_call: Optional[str] = field(
        default=None, metadata={"alias": "agentStateAfterCall"}
    )

    agent_unavailable_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "agentUnavailableCode"}
    )

    external_preferred_audio_codec: Optional[str] = field(
        default=None, metadata={"alias": "externalPreferredAudioCodec"}
    )

    internal_preferred_audio_codec: Optional[str] = field(
        default=None, metadata={"alias": "internalPreferredAudioCodec"}
    )

    play_ringing_when_offering_call: Optional[bool] = field(
        default=None, metadata={"alias": "playRingingWhenOfferingCall"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    def __post_init__(self):
        nillable_fields = [
            "wrap_up_seconds",
            "force_delivery_wait_time_seconds",
            "agent_unavailable_code",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterModifyInstanceStatisticsReportingRequest17sp1(OCIRequest):
    """Modify the Call Center statistics reporting frequency and destination.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        generate_daily_report (Optional[bool]):

        collection_period_minutes (Optional[int]):

        reporting_email_address1 (Optional[Nillable[str]]):

        reporting_email_address2 (Optional[Nillable[str]]):

        statistics_source (Optional[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    generate_daily_report: Optional[bool] = field(
        default=None, metadata={"alias": "generateDailyReport"}
    )

    collection_period_minutes: Optional[int] = field(
        default=None, metadata={"alias": "collectionPeriodMinutes"}
    )

    reporting_email_address1: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "reportingEmailAddress1"}
    )

    reporting_email_address2: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "reportingEmailAddress2"}
    )

    statistics_source: Optional[str] = field(
        default=None, metadata={"alias": "statisticsSource"}
    )

    def __post_init__(self):
        nillable_fields = ["reporting_email_address1", "reporting_email_address2"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterModifyInstanceWeightedCallDistributionRequest(OCIRequest):
    """Request to modify the weighted call distribution of a Call Center instance.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        agent_weight (Optional[List[HuntAgentWeight]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    agent_weight: Optional[List[HuntAgentWeight]] = field(
        default=None, metadata={"alias": "agentWeight"}
    )


@dataclass(kw_only=True)
class GroupCallCenterModifyRequest(OCIRequest):
    """Modify the group level data associated with Call Center and
        the active status of Call Center instances.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          useSystemDefaultUnavailableSettings
          forceAgentUnavailableOnDNDActivation
          forceAgentUnavailableOnPersonalCalls
          forceAgentUnavailableOnBouncedCallLimit
          numberConsecutiveBouncedCallsToForceAgentUnavailable
          forceAgentUnavailableOnNotReachable
          wrapUpDestination

    Attributes:

        service_provider_id (str):

        group_id (str):

        use_system_default_guard_timer (Optional[bool]):

        enable_guard_timer (Optional[bool]):

        guard_timer_seconds (Optional[int]):

        use_system_default_unavailable_settings (Optional[bool]):

        force_agent_unavailable_on_dnd_activation (Optional[bool]):

        force_agent_unavailable_on_personal_calls (Optional[bool]):

        force_agent_unavailable_on_bounced_call_limit (Optional[bool]):

        number_consecutive_bounced_calls_to_force_agent_unavailable (Optional[int]):

        force_agent_unavailable_on_not_reachable (Optional[bool]):

        wrap_up_destination (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    use_system_default_guard_timer: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemDefaultGuardTimer"}
    )

    enable_guard_timer: Optional[bool] = field(
        default=None, metadata={"alias": "enableGuardTimer"}
    )

    guard_timer_seconds: Optional[int] = field(
        default=None, metadata={"alias": "guardTimerSeconds"}
    )

    use_system_default_unavailable_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemDefaultUnavailableSettings"}
    )

    force_agent_unavailable_on_dnd_activation: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnDNDActivation"}
    )

    force_agent_unavailable_on_personal_calls: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnPersonalCalls"}
    )

    force_agent_unavailable_on_bounced_call_limit: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnBouncedCallLimit"}
    )

    number_consecutive_bounced_calls_to_force_agent_unavailable: Optional[int] = field(
        default=None,
        metadata={"alias": "numberConsecutiveBouncedCallsToForceAgentUnavailable"},
    )

    force_agent_unavailable_on_not_reachable: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnNotReachable"}
    )

    wrap_up_destination: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "wrapUpDestination"}
    )

    def __post_init__(self):
        nillable_fields = ["wrap_up_destination"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterModifyRoutingPolicyRequest(OCIRequest):
    """Modify the group call center routing policy.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        routing_policy (Optional[str]):

        routing_priority_order (Optional[List[CallCenterRoutingPriorityOrder]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    routing_policy: Optional[str] = field(
        default=None, metadata={"alias": "routingPolicy"}
    )

    routing_priority_order: Optional[List[CallCenterRoutingPriorityOrder]] = field(
        default=None, metadata={"alias": "routingPriorityOrder"}
    )


@dataclass(kw_only=True)
class GroupCallCenterModifySupervisorListRequest16(OCIRequest):
    """Request to modify the supervisor list for a call center.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        supervisor_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    supervisor_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "supervisorUserIdList"}
    )

    def __post_init__(self):
        nillable_fields = ["supervisor_user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterMonitoringGetRequest(OCIRequest):
    """Request the Group level data associated with Call Center Monitoring.
        The response is either a GroupCallCenterMonitoringGetResponse or an
        ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCallCenterMonitoringModifyRequest(OCIRequest):
    """Modify the group level data associated with Call Center Monitoring
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        enable_supervisor_coaching (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    enable_supervisor_coaching: Optional[bool] = field(
        default=None, metadata={"alias": "enableSupervisorCoaching"}
    )


@dataclass(kw_only=True)
class GroupCallCenterNightServiceGetRequest20(OCIRequest):
    """Get a call center's night service settings.
        The response is either a GroupCallCenterNightServiceGetResponse20 or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterNightServiceModifyRequest20(OCIRequest):
    """Modify a call center's night service settings.
        Only Group and Enterprise level schedules are accepted.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        action (Optional[str]):

        business_hours (Optional[Nillable[TimeSchedule]]):

        force_night_service (Optional[bool]):

        allow_manual_override_via_fac (Optional[bool]):

        transfer_phone_number (Optional[Nillable[str]]):

        play_announcement_before_action (Optional[bool]):

        audio_message_selection (Optional[str]):

        audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        video_message_selection (Optional[str]):

        video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        manual_announcement_mode (Optional[str]):

        manual_audio_message_selection (Optional[str]):

        manual_audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        manual_audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        manual_video_message_selection (Optional[str]):

        manual_video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        manual_video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    action: Optional[str] = field(default=None, metadata={"alias": "action"})

    business_hours: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "businessHours"}
    )

    force_night_service: Optional[bool] = field(
        default=None, metadata={"alias": "forceNightService"}
    )

    allow_manual_override_via_fac: Optional[bool] = field(
        default=None, metadata={"alias": "allowManualOverrideViaFAC"}
    )

    transfer_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    play_announcement_before_action: Optional[bool] = field(
        default=None, metadata={"alias": "playAnnouncementBeforeAction"}
    )

    audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioMessageSelection"}
    )

    audio_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoMessageSelection"}
    )

    video_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )

    manual_announcement_mode: Optional[str] = field(
        default=None, metadata={"alias": "manualAnnouncementMode"}
    )

    manual_audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "manualAudioMessageSelection"}
    )

    manual_audio_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "manualAudioUrlList"}
    )

    manual_audio_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "manualAudioFileList"}
    )

    manual_video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "manualVideoMessageSelection"}
    )

    manual_video_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "manualVideoUrlList"}
    )

    manual_video_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "manualVideoFileList"}
    )

    def __post_init__(self):
        nillable_fields = ["business_hours", "transfer_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterOverflowGetRequest20(OCIRequest):
    """Get a call center's overflow settings.
        The response is either a GroupCallCenterOverflowGetResponse20 or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterOverflowModifyRequest20(OCIRequest):
    """Modify a call center's overflow settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        action (Optional[str]):

        transfer_phone_number (Optional[Nillable[str]]):

        overflow_after_timeout (Optional[bool]):

        timeout_seconds (Optional[int]):

        play_announcement_before_overflow_processing (Optional[bool]):

        audio_message_selection (Optional[str]):

        audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        video_message_selection (Optional[str]):

        video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    action: Optional[str] = field(default=None, metadata={"alias": "action"})

    transfer_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    overflow_after_timeout: Optional[bool] = field(
        default=None, metadata={"alias": "overflowAfterTimeout"}
    )

    timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "timeoutSeconds"}
    )

    play_announcement_before_overflow_processing: Optional[bool] = field(
        default=None, metadata={"alias": "playAnnouncementBeforeOverflowProcessing"}
    )

    audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioMessageSelection"}
    )

    audio_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoMessageSelection"}
    )

    video_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )

    def __post_init__(self):
        nillable_fields = ["transfer_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterQueueCallDispositionCodeAddRequest(OCIRequest):
    """Add a Call Center Call Disposition Code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        code (str):

        is_active (bool):

        description (Optional[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    code: str = field(metadata={"alias": "code"})

    is_active: bool = field(metadata={"alias": "isActive"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class GroupCallCenterQueueCallDispositionCodeDeleteRequest(OCIRequest):
    """Delete a Call Center Call Disposition Code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        code (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    code: str = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class GroupCallCenterQueueCallDispositionCodeGetListRequest(OCIRequest):
    """Get the list of Call Center Level and Organization Level Call Disposition Codes.
        The response is either GroupCallCenterQueueCallDispositionCodeGetListResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterQueueCallDispositionCodeGetRequest(OCIRequest):
    """Get a Call Center Call Disposition Code.
        The response is either GroupCallCenterQueueCallDispositionCodeGetResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        code (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    code: str = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class GroupCallCenterQueueCallDispositionCodeModifyRequest(OCIRequest):
    """Modify a Call Center Call Disposition Code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        code (str):

        is_active (Optional[bool]):

        description (Optional[Nillable[str]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    code: str = field(metadata={"alias": "code"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterQueueCallDispositionCodeSettingsGetRequest(OCIRequest):
    """Request the user level data associated with Call Center Call Disposition Code Settings.
        The response is either a GroupCallCenterQueueCallDispositionCodeSettingsGetResponse or an
        ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterQueueCallDispositionCodeSettingsModifyRequest(OCIRequest):
    """Modify the enterprise level data associated with Call Center Agents Unavailable Code Settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        enable_call_disposition_codes (Optional[bool]):

        include_organization_codes (Optional[bool]):

        force_use_of_call_disposition_codes (Optional[bool]):

        default_call_disposition_code (Optional[Nillable[CallDispositionCodeWithLevel]]):

        call_disposition_code_activation (Optional[List[CallDispositionCodeActivation]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    enable_call_disposition_codes: Optional[bool] = field(
        default=None, metadata={"alias": "enableCallDispositionCodes"}
    )

    include_organization_codes: Optional[bool] = field(
        default=None, metadata={"alias": "includeOrganizationCodes"}
    )

    force_use_of_call_disposition_codes: Optional[bool] = field(
        default=None, metadata={"alias": "forceUseOfCallDispositionCodes"}
    )

    default_call_disposition_code: Optional[Nillable[CallDispositionCodeWithLevel]] = (
        field(default=None, metadata={"alias": "defaultCallDispositionCode"})
    )

    call_disposition_code_activation: Optional[List[CallDispositionCodeActivation]] = (
        field(default=None, metadata={"alias": "callDispositionCodeActivation"})
    )

    def __post_init__(self):
        nillable_fields = ["default_call_disposition_code"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterQueueStatusNotificationGetRequest(OCIRequest):
    """Get the status configuration for a given call center.
        The response is either a GroupCallCenterQueueStatusNotificationGetResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterQueueStatusNotificationModifyRequest(OCIRequest):
    """Set the status configuration for a given call center.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        enable_queue_status_notification (Optional[bool]):

        enable_queue_depth_threshold (Optional[bool]):

        enable_waiting_time_threshold (Optional[bool]):

        number_of_calls_threshold (Optional[int]):

        waiting_time_of_calls_threshold (Optional[int]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    enable_queue_status_notification: Optional[bool] = field(
        default=None, metadata={"alias": "enableQueueStatusNotification"}
    )

    enable_queue_depth_threshold: Optional[bool] = field(
        default=None, metadata={"alias": "enableQueueDepthThreshold"}
    )

    enable_waiting_time_threshold: Optional[bool] = field(
        default=None, metadata={"alias": "enableWaitingTimeThreshold"}
    )

    number_of_calls_threshold: Optional[int] = field(
        default=None, metadata={"alias": "numberOfCallsThreshold"}
    )

    waiting_time_of_calls_threshold: Optional[int] = field(
        default=None, metadata={"alias": "waitingTimeOfCallsThreshold"}
    )


@dataclass(kw_only=True)
class GroupCallCenterQueueThresholdsGetRequest(OCIRequest):
    """Get a call center's queue Thresholds settings.
        The response is either a GroupCallCenterQueueThresholdsGetRequest or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterQueueThresholdsModifyRequest(OCIRequest):
    """Modify a call center's queue Thresholds settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        is_active (Optional[bool]):

        threshold_current_calls_in_queue_yellow (Optional[Nillable[int]]):

        threshold_current_calls_in_queue_red (Optional[Nillable[int]]):

        threshold_current_longest_waiting_call_yellow (Optional[Nillable[int]]):

        threshold_current_longest_waiting_call_red (Optional[Nillable[int]]):

        threshold_average_estimated_wait_time_yellow (Optional[Nillable[int]]):

        threshold_average_estimated_wait_time_red (Optional[Nillable[int]]):

        threshold_average_handling_time_yellow (Optional[Nillable[int]]):

        threshold_average_handling_time_red (Optional[Nillable[int]]):

        threshold_average_speed_of_answer_yellow (Optional[Nillable[int]]):

        threshold_average_speed_of_answer_red (Optional[Nillable[int]]):

        enable_notification_email (Optional[bool]):

        notification_email_address_list (Optional[Nillable[CallCenterQueueThresholdReplacementNotificationEmailList]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    threshold_current_calls_in_queue_yellow: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdCurrentCallsInQueueYellow"}
    )

    threshold_current_calls_in_queue_red: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdCurrentCallsInQueueRed"}
    )

    threshold_current_longest_waiting_call_yellow: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdCurrentLongestWaitingCallYellow"}
    )

    threshold_current_longest_waiting_call_red: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdCurrentLongestWaitingCallRed"}
    )

    threshold_average_estimated_wait_time_yellow: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdAverageEstimatedWaitTimeYellow"}
    )

    threshold_average_estimated_wait_time_red: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdAverageEstimatedWaitTimeRed"}
    )

    threshold_average_handling_time_yellow: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdAverageHandlingTimeYellow"}
    )

    threshold_average_handling_time_red: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdAverageHandlingTimeRed"}
    )

    threshold_average_speed_of_answer_yellow: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdAverageSpeedOfAnswerYellow"}
    )

    threshold_average_speed_of_answer_red: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "thresholdAverageSpeedOfAnswerRed"}
    )

    enable_notification_email: Optional[bool] = field(
        default=None, metadata={"alias": "enableNotificationEmail"}
    )

    notification_email_address_list: Optional[
        Nillable[CallCenterQueueThresholdReplacementNotificationEmailList]
    ] = field(default=None, metadata={"alias": "notificationEmailAddressList"})

    def __post_init__(self):
        nillable_fields = [
            "threshold_current_calls_in_queue_yellow",
            "threshold_current_calls_in_queue_red",
            "threshold_current_longest_waiting_call_yellow",
            "threshold_current_longest_waiting_call_red",
            "threshold_average_estimated_wait_time_yellow",
            "threshold_average_estimated_wait_time_red",
            "threshold_average_handling_time_yellow",
            "threshold_average_handling_time_red",
            "threshold_average_speed_of_answer_yellow",
            "threshold_average_speed_of_answer_red",
            "notification_email_address_list",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterStrandedCallGetRequest20(OCIRequest):
    """Get a call center's stranded call settings.
        The response is either a GroupCallCenterStrandedCallGetResponse20 or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterStrandedCallModifyRequest20(OCIRequest):
    """Modify a call center's stranded call settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        action (Optional[str]):

        transfer_phone_number (Optional[Nillable[str]]):

        audio_message_selection (Optional[str]):

        audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        video_message_selection (Optional[str]):

        video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    action: Optional[str] = field(default=None, metadata={"alias": "action"})

    transfer_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioMessageSelection"}
    )

    audio_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoMessageSelection"}
    )

    video_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )

    def __post_init__(self):
        nillable_fields = ["transfer_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallCenterStrandedCallUnavailableGetRequest20(OCIRequest):
    """Get a call center's stranded calls - unavailable settings.
        The response is either a GroupCallCenterStrandedCallUnavailableGetResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCallCenterStrandedCallUnavailableModifyRequest20(OCIRequest):
    """Modify a call center's stranded calls - unavailable settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        condition_policy_on_number_of_agents_with_specified_unavailable_code (Optional[bool]):

        number_of_agents_with_specified_unavailable_code (Optional[Nillable[int]]):

        agents_unavailable_code (Optional[Nillable[str]]):

        action (Optional[str]):

        transfer_phone_number (Optional[Nillable[str]]):

        audio_message_selection (Optional[str]):

        audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        video_message_selection (Optional[str]):

        video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    condition_policy_on_number_of_agents_with_specified_unavailable_code: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "conditionPolicyOnNumberOfAgentsWithSpecifiedUnavailableCode"
        },
    )

    number_of_agents_with_specified_unavailable_code: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "numberOfAgentsWithSpecifiedUnavailableCode"}
    )

    agents_unavailable_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "agentsUnavailableCode"}
    )

    action: Optional[str] = field(default=None, metadata={"alias": "action"})

    transfer_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioMessageSelection"}
    )

    audio_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoMessageSelection"}
    )

    video_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )

    def __post_init__(self):
        nillable_fields = [
            "number_of_agents_with_specified_unavailable_code",
            "agents_unavailable_code",
            "transfer_phone_number",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallParkAddInstanceRequest16sp2(OCIRequest):
    """Adds a Call Park group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        user_id (Optional[List[str]]):

        recall_alternate_user_id (Optional[str]):

        recall_to (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    user_id: Optional[List[str]] = field(default=None, metadata={"alias": "userId"})

    recall_alternate_user_id: Optional[str] = field(
        default=None, metadata={"alias": "recallAlternateUserId"}
    )

    recall_to: str = field(metadata={"alias": "recallTo"})


@dataclass(kw_only=True)
class GroupCallParkDeleteInstanceRequest(OCIRequest):
    """Deletes a Call Park group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCallParkGetAvailableAlternateRecallUserListRequest(OCIRequest):
    """Get a list of hunt groups that are available to select as an alternate recall user.
        The response is either GroupCallParkGetAvailableAlternateRecallUserListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})


@dataclass(kw_only=True)
class GroupCallParkGetAvailableAlternateRecallUserPagedSortedListRequest(OCIRequest):
    """Get a list of hunt groups that are available to select as an alternate recall user.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        It is possible to search by various criteria to restrict the number of rows returned.

        If no sortOrder is included the response is sorted by User Id ascending by default.

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        The response is either GroupCallParkGetAvailableAlternateRecallUserPagedSortedListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderGroupCallParkGetAvailableAlternateRecallUserPagedSortedList]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[
        List[SortOrderGroupCallParkGetAvailableAlternateRecallUserPagedSortedList]
    ] = field(default=None, metadata={"alias": "sortOrder"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupCallParkGetAvailableUserListRequest(OCIRequest):
    """Get a list of users that can be assigned to a Call Park group.
        The available user list for a new Call Park group can be obtained
        by not setting the name.
        The response is either GroupCallParkGetAvailableUserListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (Optional[str]):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: Optional[str] = field(default=None, metadata={"alias": "name"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupCallParkGetAvailableUserPagedSortedListRequest(OCIRequest):
    """Get a list of users that can be assigned to a Call Park group.
        The available user list for a new Call Park group can be obtained
        by not setting the name.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        It is possible to search by various criteria to restrict the number of rows returned.

        If no sortOrder is included the response is sorted by User Id ascending by default.

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        The response is either GroupCallParkGetAvailableUserPagedSortedListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (Optional[str]):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderGroupCallParkGetAvailableUserPagedSortedList]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: Optional[str] = field(default=None, metadata={"alias": "name"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[
        List[SortOrderGroupCallParkGetAvailableUserPagedSortedList]
    ] = field(default=None, metadata={"alias": "sortOrder"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupCallParkGetInstanceListRequest(OCIRequest):
    """Request to get a list of Call Park group instances within a group.
        The response is either GroupCallParkGetInstanceListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCallParkGetInstancePagedSortedListRequest(OCIRequest):
    """Request to get a list of Call Park group instances within a group.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        It is possible to search by various criteria to restrict the number of rows returned.

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        The response is either GroupCallParkGetInstancePagedSortedListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_by_call_park_name (Optional[SortByCallParkName]):

        search_criteria_call_park_name (Optional[List[SearchCriteriaCallParkName]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_by_call_park_name: Optional[SortByCallParkName] = field(
        default=None, metadata={"alias": "sortByCallParkName"}
    )

    search_criteria_call_park_name: Optional[List[SearchCriteriaCallParkName]] = field(
        default=None, metadata={"alias": "searchCriteriaCallParkName"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupCallParkGetInstancePagedSortedRequest(OCIRequest):
    """Gets a Call Park group.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        It is possible to search by various criteria to restrict the number of rows returned.

        The sort order is based on the user order provided when creating or modifying the call park instance.

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        The response is either GroupCallParkGetInstancePagedSortedResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        response_paging_control (Optional[ResponsePagingControl]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupCallParkGetInstanceRequest16sp2(OCIRequest):
    """Gets a Call Park group.
        The response is either GroupCallParkGetInstanceResponse16sp2 or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCallParkGetRequest16sp2(OCIRequest):
    """Gets the Call Park Group settings.
        The response is either GroupCallParkGetResponse16sp2 or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCallParkModifyInstanceRequest(OCIRequest):
    """Modifies a Call Park group. Replaces the entire list of users in the group.
        The users are in the list are in the order they will try to be parked on.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        new_name (Optional[str]):

        user_id_list (Optional[Nillable[ReplacementUserIdList]]):

        recall_alternate_user_id (Optional[Nillable[str]]):

        recall_to (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "userIdList"}
    )

    recall_alternate_user_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "recallAlternateUserId"}
    )

    recall_to: Optional[str] = field(default=None, metadata={"alias": "recallTo"})

    def __post_init__(self):
        nillable_fields = ["user_id_list", "recall_alternate_user_id"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallParkModifyRequest(OCIRequest):
    """Modifies the Group's Call Park settings.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        recall_timer_seconds (Optional[int]):

        display_timer_seconds (Optional[int]):

        enable_destination_announcement (Optional[bool]):

        recall_alternate_user_id (Optional[Nillable[str]]):

        recall_ring_pattern (Optional[str]):

        recall_to (Optional[str]):

        alternate_user_recall_timer_seconds (Optional[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    recall_timer_seconds: Optional[int] = field(
        default=None, metadata={"alias": "recallTimerSeconds"}
    )

    display_timer_seconds: Optional[int] = field(
        default=None, metadata={"alias": "displayTimerSeconds"}
    )

    enable_destination_announcement: Optional[bool] = field(
        default=None, metadata={"alias": "enableDestinationAnnouncement"}
    )

    recall_alternate_user_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "recallAlternateUserId"}
    )

    recall_ring_pattern: Optional[str] = field(
        default=None, metadata={"alias": "recallRingPattern"}
    )

    recall_to: Optional[str] = field(default=None, metadata={"alias": "recallTo"})

    alternate_user_recall_timer_seconds: Optional[int] = field(
        default=None, metadata={"alias": "alternateUserRecallTimerSeconds"}
    )

    def __post_init__(self):
        nillable_fields = ["recall_alternate_user_id"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallPickupAddInstanceRequest(OCIRequest):
    """Adds a Call Pickup group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        user_id (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    user_id: Optional[List[str]] = field(default=None, metadata={"alias": "userId"})


@dataclass(kw_only=True)
class GroupCallPickupDeleteInstanceRequest(OCIRequest):
    """Deletes a Call Pickup group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCallPickupGetAvailableUserListRequest(OCIRequest):
    """Get a list of users that can be assigned to a Call Pickup group.
        The available user list for a new Call Pickup group can be obtained
        by not setting the name.
        The response is either GroupCallPickupGetAvailableUserListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (Optional[str]):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: Optional[str] = field(default=None, metadata={"alias": "name"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupCallPickupGetAvailableUserPagedSortedListRequest(OCIRequest):
    """Get a list of users that can be assigned to a Call Pickup group.
        The available user list for a new Call Pickup group can be obtained
        by not setting the name.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        It is possible to search by various criteria to restrict the number of rows returned.

        If no sortOrder is included the response is sorted by User Id ascending by default.

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        The response is either GroupCallPickupGetAvailableUserPagedSortedListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (Optional[str]):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderGroupCallPickupGetAvailableUserPagedSortedList]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: Optional[str] = field(default=None, metadata={"alias": "name"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[
        List[SortOrderGroupCallPickupGetAvailableUserPagedSortedList]
    ] = field(default=None, metadata={"alias": "sortOrder"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupCallPickupGetInstanceListRequest(OCIRequest):
    """Request to get a list of Call Pickup instances within a group.
        The response is either GroupCallPickupGetInstanceListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCallPickupGetInstancePagedSortedListRequest(OCIRequest):
    """Request to get a list of Call Pickup instances within a group.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        It is possible to search by various criteria to restrict the number of rows returned.

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        The response is either GroupCallPickupGetInstancePagedSortedListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_by_call_pickup_name (Optional[SortByCallPickupName]):

        search_criteria_call_pickup_name (Optional[List[SearchCriteriaCallPickupName]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_by_call_pickup_name: Optional[SortByCallPickupName] = field(
        default=None, metadata={"alias": "sortByCallPickupName"}
    )

    search_criteria_call_pickup_name: Optional[List[SearchCriteriaCallPickupName]] = (
        field(default=None, metadata={"alias": "searchCriteriaCallPickupName"})
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupCallPickupGetInstancePagedSortedRequest(OCIRequest):
    """Gets a Call Pickup group.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        It is possible to search by various criteria to restrict the number of rows returned.

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        If no sortOrder is included the response is sorted by User Id ascending by default.

        The response is either GroupCallPickupGetInstancePagedSortedResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderGroupCallPickupGetInstancePagedSorted]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[List[SortOrderGroupCallPickupGetInstancePagedSorted]] = field(
        default=None, metadata={"alias": "sortOrder"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupCallPickupGetInstanceRequest(OCIRequest):
    """Gets a Call Pickup group.
        The response is either GroupCallPickupGetInstanceResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCallPickupModifyInstanceRequest(OCIRequest):
    """Modifies a Call Pickup group. Replaces the entire list of users in the group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        new_name (Optional[str]):

        user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "userIdList"}
    )

    def __post_init__(self):
        nillable_fields = ["user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallProcessingGetPolicyRequest22V3(OCIRequest):
    """Request the group level data associated with Call Processing Policy.
        The response is either a GroupCallProcessingGetPolicyResponse22V3 or an
        ErrorResponse.

        The useGroupCLIDSetting attribute controls the CLID settings
        (clidPolicy,enterpriseCallsCLIDPolicy, groupCallsCLIDPolicy, emergencyClidPolicy, allowAlternateNumbersForRedirectingIdentity, useGroupName, allowDepartmentCLIDNameOverride)

        The useGroupMediaSetting attribute controls the Media settings
        (medisPolicySelection, supportedMediaSetName)

        The useGroupCallLimitsSetting attribute controls the Call Limits settings
        (useMaxSimultaneousCalls, maxSimultaneousCalls,
        useMaxSimultaneousVideoCalls, maxSimultaneousVideoCalls, useMaxCallTimeForAnsweredCalls,
        maxCallTimeForAnsweredCallsMinutes, useMaxCallTimeForUnansweredCalls, maxCallTimeForUnansweredCallsMinutes,
        useMaxConcurrentRedirectedCalls, useMaxFindMeFollowMeDepth, maxRedirectionDepth,
        useMaxConcurrentFindMeFollowMeInvocations, maxConcurrentFindMeFollowMeInvocations,
        useMaxConcurrentTerminatingAlertingRequests, maxConcurrentTerminatingAlertingRequests)

        The useGroupTranslationRoutingSetting attribute controls the routing and translation settings
        (networkUsageSelection, enforceGroupCallingLineIdentityRestriction,
        allowEnterpriseGroupCallTypingForPrivateDialingPlan, allowEnterpriseGroupCallTypingForPublicDialingPlan, overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan, enableEnterpriseExtensionDialing)

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCallProcessingModifyPolicyRequest15sp2(OCIRequest):
    """Modify the group level data associated with Call Processing Policy.
        The response is either a SuccessResponse or an ErrorResponse.
        The useGroupCLIDSetting attribute controls the CLID settings
        (clidPolicy,enterpriseCallsCLIDPolicy, groupCallsCLIDPolicy,  emergencyClidPolicy, allowAlternateNumbersForRedirectingIdentity, useGroupName, allowConfigurableCLIDForRedirectingIdentity, allowDepartmentCLIDNameOverride
         useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable, useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailabl)

        The allowDepartmentCLID attribute is automatically set to false when the useGroupName attribute is set to false.

        The useGroupMediaSetting attribute controls the Media settings
        (medisPolicySelection, supportedMediaSetName)

        The useGroupCallLimitsSetting attribute controls the Call Limits settings
        (useMaxSimultaneousCalls, maxSimultaneousCalls, useMaxSimultaneousVideoCalls, maxSimultaneousVideoCalls,
        useMaxCallTimeForAnsweredCalls, maxCallTimeForAnsweredCallsMinutes, useMaxCallTimeForUnansweredCalls,
        maxCallTimeForUnansweredCallsMinutes, useMaxConcurrentRedirectedCalls, useMaxFindMeFollowMeDepth,
        maxRedirectionDepth, useMaxConcurrentFindMeFollowMeInvocations, maxConcurrentFindMeFollowMeInvocations,
        useMaxConcurrentTerminatingAlertingRequests, maxConcurrentTerminatingAlertingRequests,
        includeRedirectionsInMaximumNumberOfConcurrentCalls)

        The useGroupTranslationRoutingSetting attribute controls the routing and translation settings (networkUsageSelection, enforceGroupCallingLineIdentityRestriction, allowEnterpriseGroupCallTypingForPrivateDialingPlan, allowEnterpriseGroupCallTypingForPublicDialingPlan, overrideCLIDRestrictionForExternalCallsViaPrivateDialingPlan, enableEnterpriseExtensionDialing, routeOverrideDomain, routeOverridePrefix)
        The useGroupDCLIDSetting controls the Dialable Caller ID settings (enableDialableCallerID)

        The useGroupPhoneListLookupSetting controls whether or not to use the enterprise/service provider setting for the Phone List Lookup policy (enablePhoneListLookup)

        The following elements are only used in AS data mode:
           useGroupDCLIDSetting
           enableDialableCallerID
           allowConfigurableCLIDForRedirectingIdentity
           allowDepartmentCLIDNameOverride

        The following elements are only used in AS data mode and ignored in XS data mode:
           useGroupPhoneListLookupSetting
           enablePhoneListLookup
           useMaxConcurrentTerminatingAlertingRequests
           maxConcurrentTerminatingAlertingRequests
           includeRedirectionsInMaximumNumberOfConcurrentCalls
           useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable
           useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable
           allowMobileDNForRedirectingIdentity
           enableGatewayRoutePolicy
           networkCallsGatewayRouteIdentity
           networkURLCallsGatewayRouteIdentity
           emergencyCallsGatewayRouteIdentity
           repairCallsGatewayRouteIdentity
           callTypingErrorsGatewayRouteIdentity

        The following elements are only used in XS data mode and ignored in AS data mode:
           routeOverrideDomain
           routeOverridePrefix

    Attributes:

        service_provider_id (str):

        group_id (str):

        use_group_clid_setting (Optional[bool]):

        use_group_media_setting (Optional[bool]):

        use_group_call_limits_setting (Optional[bool]):

        use_group_translation_routing_setting (Optional[bool]):

        use_group_dclid_setting (Optional[bool]):

        use_max_simultaneous_calls (Optional[bool]):

        max_simultaneous_calls (Optional[int]):

        use_max_simultaneous_video_calls (Optional[bool]):

        max_simultaneous_video_calls (Optional[int]):

        use_max_call_time_for_answered_calls (Optional[bool]):

        max_call_time_for_answered_calls_minutes (Optional[int]):

        use_max_call_time_for_unanswered_calls (Optional[bool]):

        max_call_time_for_unanswered_calls_minutes (Optional[int]):

        media_policy_selection (Optional[str]):

        supported_media_set_name (Optional[Nillable[str]]):

        network_usage_selection (Optional[str]):

        enforce_group_calling_line_identity_restriction (Optional[bool]):

        allow_enterprise_group_call_typing_for_private_dialing_plan (Optional[bool]):

        allow_enterprise_group_call_typing_for_public_dialing_plan (Optional[bool]):

        override_clid_restriction_for_private_call_category (Optional[bool]):

        use_enterprise_clid_for_private_call_category (Optional[bool]):

        enable_enterprise_extension_dialing (Optional[bool]):

        use_max_concurrent_redirected_calls (Optional[bool]):

        max_concurrent_redirected_calls (Optional[int]):

        use_max_find_me_follow_me_depth (Optional[bool]):

        max_find_me_follow_me_depth (Optional[int]):

        max_redirection_depth (Optional[int]):

        use_max_concurrent_find_me_follow_me_invocations (Optional[bool]):

        max_concurrent_find_me_follow_me_invocations (Optional[int]):

        clid_policy (Optional[str]):

        emergency_clid_policy (Optional[str]):

        allow_alternate_numbers_for_redirecting_identity (Optional[bool]):

        use_group_name (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        enable_dialable_caller_id (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        allow_department_clid_name_override (Optional[bool]):

        enterprise_calls_clid_policy (Optional[str]):

        group_calls_clid_policy (Optional[str]):

        use_group_phone_list_lookup_setting (Optional[bool]):

        enable_phone_list_lookup (Optional[bool]):

        use_max_concurrent_terminating_alerting_requests (Optional[bool]):

        max_concurrent_terminating_alerting_requests (Optional[int]):

        include_redirections_in_maximum_number_of_concurrent_calls (Optional[bool]):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (Optional[bool]):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (Optional[bool]):

        route_override_domain (Optional[Nillable[str]]):

        route_override_prefix (Optional[Nillable[str]]):

        allow_mobile_dn_for_redirecting_identity (Optional[bool]):

        enable_gateway_route_policy (Optional[bool]):

        network_calls_gateway_route_identity (Optional[Nillable[str]]):

        network_url_calls_gateway_route_identity (Optional[Nillable[str]]):

        emergency_calls_gateway_route_identity (Optional[Nillable[str]]):

        repair_calls_gateway_route_identity (Optional[Nillable[str]]):

        call_typing_errors_gateway_route_identity (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    use_group_clid_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupCLIDSetting"}
    )

    use_group_media_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupMediaSetting"}
    )

    use_group_call_limits_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupCallLimitsSetting"}
    )

    use_group_translation_routing_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupTranslationRoutingSetting"}
    )

    use_group_dclid_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupDCLIDSetting"}
    )

    use_max_simultaneous_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousCalls"}
    )

    use_max_simultaneous_video_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    media_policy_selection: Optional[str] = field(
        default=None, metadata={"alias": "mediaPolicySelection"}
    )

    supported_media_set_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "supportedMediaSetName"}
    )

    network_usage_selection: Optional[str] = field(
        default=None, metadata={"alias": "networkUsageSelection"}
    )

    enforce_group_calling_line_identity_restriction: Optional[bool] = field(
        default=None, metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"},
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"},
    )

    override_clid_restriction_for_private_call_category: Optional[bool] = field(
        default=None,
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"},
    )

    use_enterprise_clid_for_private_call_category: Optional[bool] = field(
        default=None, metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    enable_enterprise_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    use_max_concurrent_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_find_me_follow_me_depth: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxRedirectionDepth"}
    )

    use_max_concurrent_find_me_follow_me_invocations: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    emergency_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "emergencyClidPolicy"}
    )

    allow_alternate_numbers_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupName"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    enable_dialable_caller_id: Optional[bool] = field(
        default=None, metadata={"alias": "enableDialableCallerID"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: Optional[bool] = field(
        default=None, metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "groupCallsCLIDPolicy"}
    )

    use_group_phone_list_lookup_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupPhoneListLookupSetting"}
    )

    enable_phone_list_lookup: Optional[bool] = field(
        default=None, metadata={"alias": "enablePhoneListLookup"}
    )

    use_max_concurrent_terminating_alerting_requests: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentTerminatingAlertingRequests"}
    )

    max_concurrent_terminating_alerting_requests: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentTerminatingAlertingRequests"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"},
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"
        },
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        },
    )

    route_override_domain: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "routeOverrideDomain"}
    )

    route_override_prefix: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "routeOverridePrefix"}
    )

    allow_mobile_dn_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowMobileDNForRedirectingIdentity"}
    )

    enable_gateway_route_policy: Optional[bool] = field(
        default=None, metadata={"alias": "enableGatewayRoutePolicy"}
    )

    network_calls_gateway_route_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "networkCallsGatewayRouteIdentity"}
    )

    network_url_calls_gateway_route_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "networkURLCallsGatewayRouteIdentity"}
    )

    emergency_calls_gateway_route_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "emergencyCallsGatewayRouteIdentity"}
    )

    repair_calls_gateway_route_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repairCallsGatewayRouteIdentity"}
    )

    call_typing_errors_gateway_route_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callTypingErrorsGatewayRouteIdentity"}
    )

    def __post_init__(self):
        nillable_fields = [
            "supported_media_set_name",
            "route_override_domain",
            "route_override_prefix",
            "network_calls_gateway_route_identity",
            "network_url_calls_gateway_route_identity",
            "emergency_calls_gateway_route_identity",
            "repair_calls_gateway_route_identity",
            "call_typing_errors_gateway_route_identity",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallRecordingGetRequest(OCIRequest):
    """Get the Call Recording platform for a group.
        The response is either a GroupCallRecordingGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCallRecordingModifyRequest(OCIRequest):
    """Modify the Call Recording platform assignment for a group.
        The response is either a SuccessResponse or an ErrorResponse.

        The following element is only nillable in XS data mode:
          name

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: Optional[Nillable[str]] = field(default=None, metadata={"alias": "name"})

    def __post_init__(self):
        nillable_fields = ["name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCallingPlanAddDigitPatternRequest(OCIRequest):
    """Add a new calling plan digit string.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        digit_pattern (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    digit_pattern: str = field(metadata={"alias": "digitPattern"})


@dataclass(kw_only=True)
class GroupCallingPlanDeleteDigitPatternListRequest(OCIRequest):
    """Delete one or more calling plan digit strings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: List[str] = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCallingPlanGetDigitPatternListRequest(OCIRequest):
    """Get the list of calling plan digit strings for a group.
        The response is either a GroupCallingPlanGetDigitPatternListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCallingPlanModifyDigitPatternRequest(OCIRequest):
    """Modify a calling plan digit string. The name is a key; it cannot be changed.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        digit_pattern (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    digit_pattern: Optional[str] = field(
        default=None, metadata={"alias": "digitPattern"}
    )


@dataclass(kw_only=True)
class GroupCollaborateBridgeAddInstanceRequest20sp1(OCIRequest):
    """Add a collaborate bridge to a group.
        The domain is required in the serviceUserId.
        The request fails when supportOutdial is enabled and the system-level collaborate supportOutdial setting is disabled.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_user_id (str):

        service_instance_profile (ServiceInstanceAddProfile):

        maximum_bridge_participants (CollaborateBridgeMaximumParticipants):

        network_class_of_service (Optional[str]):

        max_collaborate_room_participants (int):

        support_outdial (bool):

        collaborate_owner_user_id (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: ServiceInstanceAddProfile = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    maximum_bridge_participants: CollaborateBridgeMaximumParticipants = field(
        metadata={"alias": "maximumBridgeParticipants"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    max_collaborate_room_participants: int = field(
        metadata={"alias": "maxCollaborateRoomParticipants"}
    )

    support_outdial: bool = field(metadata={"alias": "supportOutdial"})

    collaborate_owner_user_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "collaborateOwnerUserId"}
    )


@dataclass(kw_only=True)
class GroupCollaborateBridgeConsolidatedAddInstanceRequest(OCIRequest):
    """Add a collaborate bridge to a group.
        The domain is required in the serviceUserId.
        The request fails when supportOutdial is enabled and the system-level collaborate supportOutdial setting is disabled.
        If the phoneNumber has not been assigned to the group and addPhoneNumberToGroup is set to true,
        it will be added to group if the command is executed by a service provider administrator or above
        and the number is already assigned to the service provider. The command will fail otherwise.

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_user_id (str):

        add_phone_number_to_group (Optional[bool]):

        service_instance_profile (ServiceInstanceAddProfile):

        maximum_bridge_participants (CollaborateBridgeMaximumParticipants):

        network_class_of_service (Optional[str]):

        max_collaborate_room_participants (int):

        support_outdial (bool):

        collaborate_owner_user_id (Optional[List[str]]):

        service (Optional[List[ConsolidatedUserServiceAssignment]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    add_phone_number_to_group: Optional[bool] = field(
        default=None, metadata={"alias": "addPhoneNumberToGroup"}
    )

    service_instance_profile: ServiceInstanceAddProfile = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    maximum_bridge_participants: CollaborateBridgeMaximumParticipants = field(
        metadata={"alias": "maximumBridgeParticipants"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    max_collaborate_room_participants: int = field(
        metadata={"alias": "maxCollaborateRoomParticipants"}
    )

    support_outdial: bool = field(metadata={"alias": "supportOutdial"})

    collaborate_owner_user_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "collaborateOwnerUserId"}
    )

    service: Optional[List[ConsolidatedUserServiceAssignment]] = field(
        default=None, metadata={"alias": "service"}
    )


@dataclass(kw_only=True)
class GroupCollaborateBridgeConsolidatedDeleteInstanceRequest(OCIRequest):
    """Delete a collaborate bridge from a group.
        The request fails when attempting to delete the default collaborate bridge.
        If UnassignPhoneNumbersLevel is set to 'Group', the user's primary phone number, fax number and any alternate numbers, will be un-assigned from the group if the command is executed by a service provider administrator or above.
        When set to 'Service Provider', they will be un-assigned from the group and service provider if the command is executed by a provisioning administrator or above.
        When omitted, the number(s) will be left assigned to the group.
        An ErrorResponse will be returned if any number cannot be unassigned because of insufficient privilege.

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        unassign_phone_numbers (Optional[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    unassign_phone_numbers: Optional[str] = field(
        default=None, metadata={"alias": "unassignPhoneNumbers"}
    )


@dataclass(kw_only=True)
class GroupCollaborateBridgeConsolidatedModifyInstanceRequest(OCIRequest):
    """Request to modify a Collaborate bridge.
        The request fails when the collaborateOwnerUserIdList is included in the request for the default collaborate bridge.
        The request fails when the supportOutdial is included in the request and the system-level collaborate supportOutdial setting is disabled.
        When phone numbers are un-assigned from the user, the unused numbers may be un-assigned from the group and service provider. If UnassignPhoneNumbersLevel is set to 'Group', the user's primary phone number, fax number and any alternate numbers, will be un-assigned from the group if the command is executed by a service provider administrator or above.
        When set to 'Service Provider', they will be un-assigned from the group and service provider if the command is executed by a provisioning administrator or above.
        When omitted, the number(s) will be left assigned to the group.
        An ErrorResponse will be returned if any number cannot be unassigned because of insufficient privilege.

        If the phoneNumber has not been assigned to the group and addPhoneNumberToGroup is set to true, it will be added to group if needed if the command is executed by a service provider administrator and above. The command will fail otherwise.

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        unassign_phone_numbers (Optional[str]):

        add_phone_number_to_group (Optional[bool]):

        service_instance_profile (Optional[ServiceInstanceModifyProfile]):

        maximum_bridge_participants (Optional[CollaborateBridgeMaximumParticipants]):

        network_class_of_service (Optional[str]):

        max_collaborate_room_participants (Optional[int]):

        support_outdial (Optional[bool]):

        collaborate_owner_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

        service_list (Optional[Nillable[ReplacementConsolidatedUserServiceAssignmentList]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    unassign_phone_numbers: Optional[str] = field(
        default=None, metadata={"alias": "unassignPhoneNumbers"}
    )

    add_phone_number_to_group: Optional[bool] = field(
        default=None, metadata={"alias": "addPhoneNumberToGroup"}
    )

    service_instance_profile: Optional[ServiceInstanceModifyProfile] = field(
        default=None, metadata={"alias": "serviceInstanceProfile"}
    )

    maximum_bridge_participants: Optional[CollaborateBridgeMaximumParticipants] = field(
        default=None, metadata={"alias": "maximumBridgeParticipants"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    max_collaborate_room_participants: Optional[int] = field(
        default=None, metadata={"alias": "maxCollaborateRoomParticipants"}
    )

    support_outdial: Optional[bool] = field(
        default=None, metadata={"alias": "supportOutdial"}
    )

    collaborate_owner_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "collaborateOwnerUserIdList"}
    )

    service_list: Optional[
        Nillable[ReplacementConsolidatedUserServiceAssignmentList]
    ] = field(default=None, metadata={"alias": "serviceList"})

    def __post_init__(self):
        nillable_fields = ["collaborate_owner_user_id_list", "service_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCollaborateBridgeDeleteInstanceRequest(OCIRequest):
    """Delete a collaborate bridge from a group.
        The request fails when attempting to delete the default collaborate bridge.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCollaborateBridgeGetAvailableUserListRequest(OCIRequest):
    """Get a list of users with the Collaborate – Audio service assigned that can be assigned to a collaborate bridge.  For an Enterprise Group this will include all users in the group’s enterprise.
        The SearchCriteriaExactUserGroup parameter is only applicable for enterprise groups.
        The response is either GroupCollaborateBridgeGetAvailableUserListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupCollaborateBridgeGetAvailableUserPagedSortedListRequest(OCIRequest):
    """Get a list of users with the Collaborate – Audio service assigned that can be assigned to a collaborate bridge.  For an Enterprise Group this will include all users in the group’s enterprise.
        The searchCriteriaGroupId parameter is only applicable for enterprise groups.
        If no sortOrder is included the response is sorted by Last Name ascending by default.

        A limitation to the search by DN activation exists when the Number Activation mode is set to
        Off. In this case DNs not assigned to users are never returned by queries with the
        \"dnActivationSearchCriteria\" included.
        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        The response is either GroupCollaborateBridgeGetAvailableUserPagedSortedListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderGroupCollaborateBridgeGetAvailableUserPagedSortedList]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_dn_activation (Optional[SearchCriteriaExactDnActivation]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[
        List[SortOrderGroupCollaborateBridgeGetAvailableUserPagedSortedList]
    ] = field(default=None, metadata={"alias": "sortOrder"})

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_dn_activation: Optional[SearchCriteriaExactDnActivation] = (
        field(default=None, metadata={"alias": "searchCriteriaExactDnActivation"})
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupCollaborateBridgeGetInstanceListRequest(OCIRequest):
    """Get a list of collaborate bridges within a group.
        The response is either GroupCollaborateBridgeGetInstanceListResponse or ErrorResponse.
        It is possible to get the instances within a specified department.

    Attributes:

        service_provider_id (str):

        group_id (str):

        department_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    department_name: Optional[str] = field(
        default=None, metadata={"alias": "departmentName"}
    )


@dataclass(kw_only=True)
class GroupCollaborateBridgeGetInstancePagedSortedListRequest(OCIRequest):
    """Get a list of collaborate bridges within a group.
        The response is either GroupCollaborateBridgeGetInstancePagedSortedListResponse or ErrorResponse.

        If the responsePagingControl element is not provided,
        the paging startIndex will be set to 1 by default,
        and the responsePageSize will be set to the maximum responsePageSize by
        default.

        If no sortOrder is included the response is sorted by Name ascending by default. .

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderGroupCollaborateBridgeGetInstancePagedSortedList]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_dn_activation (Optional[SearchCriteriaExactDnActivation]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[
        List[SortOrderGroupCollaborateBridgeGetInstancePagedSortedList]
    ] = field(default=None, metadata={"alias": "sortOrder"})

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_dn_activation: Optional[SearchCriteriaExactDnActivation] = (
        field(default=None, metadata={"alias": "searchCriteriaExactDnActivation"})
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupCollaborateBridgeGetInstanceRequest20sp1(OCIRequest):
    """Request to get all the information of a collaborate bridge.
        The response is either GroupCollaborateBridgeGetInstanceResponse20sp1 or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupCollaborateBridgeModifyInstanceRequest20sp1(OCIRequest):
    """Request to modify a Collaborate bridge.
        The request fails when the collaborateOwnerUserIdList is included in the request for the default collaborate bridge.
        The request fails when the supportOutdial is included in the request and the system-level collaborate supportOutdial setting is disabled.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        service_instance_profile (Optional[ServiceInstanceModifyProfile]):

        maximum_bridge_participants (Optional[CollaborateBridgeMaximumParticipants]):

        network_class_of_service (Optional[str]):

        max_collaborate_room_participants (Optional[int]):

        support_outdial (Optional[bool]):

        collaborate_owner_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: Optional[ServiceInstanceModifyProfile] = field(
        default=None, metadata={"alias": "serviceInstanceProfile"}
    )

    maximum_bridge_participants: Optional[CollaborateBridgeMaximumParticipants] = field(
        default=None, metadata={"alias": "maximumBridgeParticipants"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    max_collaborate_room_participants: Optional[int] = field(
        default=None, metadata={"alias": "maxCollaborateRoomParticipants"}
    )

    support_outdial: Optional[bool] = field(
        default=None, metadata={"alias": "supportOutdial"}
    )

    collaborate_owner_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "collaborateOwnerUserIdList"}
    )

    def __post_init__(self):
        nillable_fields = ["collaborate_owner_user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCommonPhoneListAddListRequest(OCIRequest):
    """Add one or more entries to a group's common phone list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        entry (List[PhoneListEntry]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    entry: List[PhoneListEntry] = field(metadata={"alias": "entry"})


@dataclass(kw_only=True)
class GroupCommonPhoneListDeleteListRequest(OCIRequest):
    """Delete one or more entries from a group's common phone list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        entry_name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    entry_name: List[str] = field(metadata={"alias": "entryName"})


@dataclass(kw_only=True)
class GroupCommonPhoneListGetListRequest(OCIRequest):
    """Get a group's common phone list.
        The response is either a GroupCommonPhoneListGetListResponse or an ErrorResponse.
        The search can be done using multiple criterion.
        If the searchCriteriaModeOr is present, any result matching any one criteria is included in the results.
        Otherwise, only results matching all the search criterion are included in the results.
        If no search criteria is specified, all results are returned.
        Specifying searchCriteriaModeOr without any search criteria results in an ErrorResponse.
        In all cases, if a responseSizeLimit is specified and the number of matching results is more than this limit, then an
        ErrorResponse is returned.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_mode_or (Optional[bool]):

        search_criteria_group_common_phone_list_name (Optional[List[SearchCriteriaGroupCommonPhoneListName]]):

        search_criteria_group_common_phone_list_number (Optional[List[SearchCriteriaGroupCommonPhoneListNumber]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )

    search_criteria_group_common_phone_list_name: Optional[
        List[SearchCriteriaGroupCommonPhoneListName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaGroupCommonPhoneListName"}
    )

    search_criteria_group_common_phone_list_number: Optional[
        List[SearchCriteriaGroupCommonPhoneListNumber]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaGroupCommonPhoneListNumber"}
    )


@dataclass(kw_only=True)
class GroupCommonPhoneListModifyRequest(OCIRequest):
    """Modify an entry in a group's common phone list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        entry_name (str):

        new_entry_name (Optional[str]):

        phone_number (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    entry_name: str = field(metadata={"alias": "entryName"})

    new_entry_name: Optional[str] = field(
        default=None, metadata={"alias": "newEntryName"}
    )

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class GroupCommunicationBarringAuthorizationCodeAddListRequest21sp1(OCIRequest):
    """Add a list of Communication Barring Authorization codes to a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        code (List[CommunicationBarringAuthorizationCodeConfiguration]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    code: List[CommunicationBarringAuthorizationCodeConfiguration] = field(
        metadata={"alias": "code"}
    )


@dataclass(kw_only=True)
class GroupCommunicationBarringAuthorizationCodeDeleteListRequest(OCIRequest):
    """Delete a list of Communication Barring Authorization codes from a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        code (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    code: List[str] = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class GroupCommunicationBarringAuthorizationCodeGetListRequest21sp1(OCIRequest):
    """Get a list of Communication Barring Authorization Codes for a group.
        The response is either GroupCommunicationBarringAuthorizationCodeGetListResponse21sp1 or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_communication_barring_authorization_code (Optional[List[SearchCriteriaCommunicationBarringAuthorizationCode]]):

        search_criteria_communication_barring_authorization_code_description (Optional[List[SearchCriteriaCommunicationBarringAuthorizationCodeDescription]]):

        search_criteria_network_class_of_service_name (Optional[List[SearchCriteriaNetworkClassOfServiceName]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_communication_barring_authorization_code: Optional[
        List[SearchCriteriaCommunicationBarringAuthorizationCode]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaCommunicationBarringAuthorizationCode"},
    )

    search_criteria_communication_barring_authorization_code_description: Optional[
        List[SearchCriteriaCommunicationBarringAuthorizationCodeDescription]
    ] = field(
        default=None,
        metadata={
            "alias": "searchCriteriaCommunicationBarringAuthorizationCodeDescription"
        },
    )

    search_criteria_network_class_of_service_name: Optional[
        List[SearchCriteriaNetworkClassOfServiceName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaNetworkClassOfServiceName"}
    )


@dataclass(kw_only=True)
class GroupCommunicationBarringAuthorizationCodeGetRequest(OCIRequest):
    """Request the group Communication Barring Authorization Code setting.
        The response is either a GroupCommunicationBarringAuthorizationCodeGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    code: str = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class GroupCommunicationBarringAuthorizationCodeModifyRequest(OCIRequest):
    """Modify the group Communication Barring Authorization Code settings
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        code (str):

        description (Optional[Nillable[str]]):

        network_class_of_service (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    code: str = field(metadata={"alias": "code"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    network_class_of_service: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    def __post_init__(self):
        nillable_fields = ["description", "network_class_of_service"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCommunicationBarringGetRequest(OCIRequest):
    """Gets Communication Barring setting for a group.
        The response is either a GroupCommunicationBarringGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCommunicationBarringModifyRequest(OCIRequest):
    """Gets Communication Barring setting for a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        use_default_service_provider_profile (Optional[bool]):

        profile (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    use_default_service_provider_profile: Optional[bool] = field(
        default=None, metadata={"alias": "useDefaultServiceProviderProfile"}
    )

    profile: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "profile"}
    )

    def __post_init__(self):
        nillable_fields = ["profile"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCommunicationBarringProfileGetAssignedListRequest(OCIRequest):
    """Get the list of all communication barring profiles assigned to the group. The response is either a
        GroupCommunicationBarringProfileGetAssignedListResponse or an ErrorResponse.
        This command only applies to groups in an Enterprise. This command will fail for groups in a Service Provider.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCommunicationBarringProfileModifyListRequest(OCIRequest):
    """Assign a replacement list of Communication Barring Profiles to a group.
        The response is either a SuccessResponse or an ErrorResponse.
        This command only applies to groups in an Enterprise. This command will fail for groups in a Service Provider.

    Attributes:

        service_provider_id (str):

        group_id (str):

        profile_name (Optional[Nillable[CommunicationBarringProfileReplacementList]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    profile_name: Optional[Nillable[CommunicationBarringProfileReplacementList]] = (
        field(default=None, metadata={"alias": "profileName"})
    )

    def __post_init__(self):
        nillable_fields = ["profile_name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupConsolidatedAddRequest(OCIRequest):
    """Add a group.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          serviceProviderExternalId
          groupExternalId

        The following elements are ignored in AS and XS data mode:
        servicePolicy,
        callProcessingSliceId,
        provisioningSliceId,
        subscriberPartition.

        The following elements are only used in XS data mode and ignored in AS mode:
        preferredDataCenter.
        Only Provisioning admin and above can change the preferredDataCenter.

        The following elements are only used in XS data mode and ignored in AS data mode:
        defaultUserCallingLineIdPhoneNumber.

        The following elements are optional for the group. If the elements are included,
        they will be either added, authorized, or modified on the group. Should any of the
        following elements be rejected to due existing system or service provider settings,
        the group will not be added and the response will be an ErrorResponse:
          domain
          admin
          minExtensionLength
          maxExtensionLength
          defaultExtensionLength
          servicePackAuthorization
          groupServiceAuthorizationAndAssignment
          userServiceAuthorization
          servicePack
          activatablePhoneNumber
          activatableDNRange
          routingProfile
          trunkGroupMaxActiveCalls
          trunkGroupBurstingMaxActiveCalls
          meetMeConferencingAllocatedPorts


        When a group or user service is included that is not activated, is not licensed,
        or not authorized to the service provider, the response will be an ErrorResponse.

        If the group service authorized quantity is not included it will default to Unlimited.

        If activatablePhoneNumber and activatableDNRange elements are included, when
        activate element is present, this value overrides the system group default
        activatable settings.

    Attributes:

        service_provider_id (Optional[str]):

        service_provider_external_id (Optional[str]):

        group_id (Optional[str]):

        group_external_id (Optional[str]):

        default_domain (str):

        user_limit (int):

        group_name (Optional[str]):

        calling_line_id_name (Optional[str]):

        time_zone (Optional[str]):

        location_dialing_code (Optional[str]):

        contact (Optional[Contact]):

        address (Optional[StreetAddress]):

        service_policy (Optional[str]):

        call_processing_slice_id (Optional[str]):

        provisioning_slice_id (Optional[str]):

        subscriber_partition (Optional[str]):

        preferred_data_center (Optional[str]):

        default_user_calling_line_id_phone_number (Optional[str]):

        domain (Optional[List[str]]):

        admin (Optional[List[GroupAdmin]]):

        min_extension_length (Optional[int]):

        max_extension_length (Optional[int]):

        default_extension_length (Optional[int]):

        group_service_authorization_and_assignment (Optional[List[GroupServiceAuthorizationAndAssignment]]):

        user_service_authorization (Optional[List[UserServiceAuthorization]]):

        service_pack_authorization (Optional[List[ServicePackAuthorization]]):

        activatable_phone_number (Optional[List[ActivatableDN]]):

        activatable_dn_range (Optional[List[ActivatableDNRange]]):

        routing_profile (Optional[Nillable[str]]):

        meet_me_conferencing_allocated_ports (Optional[MeetMeConferencingConferencePorts]):

        trunk_group_max_active_calls (Optional[int]):

        trunk_group_bursting_max_active_calls (Optional[UnboundedNonNegativeInt]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    service_provider_external_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderExternalId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    group_external_id: Optional[str] = field(
        default=None, metadata={"alias": "groupExternalId"}
    )

    default_domain: str = field(metadata={"alias": "defaultDomain"})

    user_limit: int = field(metadata={"alias": "userLimit"})

    group_name: Optional[str] = field(default=None, metadata={"alias": "groupName"})

    calling_line_id_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdName"}
    )

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    location_dialing_code: Optional[str] = field(
        default=None, metadata={"alias": "locationDialingCode"}
    )

    contact: Optional[Contact] = field(default=None, metadata={"alias": "contact"})

    address: Optional[StreetAddress] = field(
        default=None, metadata={"alias": "address"}
    )

    service_policy: Optional[str] = field(
        default=None, metadata={"alias": "servicePolicy"}
    )

    call_processing_slice_id: Optional[str] = field(
        default=None, metadata={"alias": "callProcessingSliceId"}
    )

    provisioning_slice_id: Optional[str] = field(
        default=None, metadata={"alias": "provisioningSliceId"}
    )

    subscriber_partition: Optional[str] = field(
        default=None, metadata={"alias": "subscriberPartition"}
    )

    preferred_data_center: Optional[str] = field(
        default=None, metadata={"alias": "preferredDataCenter"}
    )

    default_user_calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "defaultUserCallingLineIdPhoneNumber"}
    )

    domain: Optional[List[str]] = field(default=None, metadata={"alias": "domain"})

    admin: Optional[List[GroupAdmin]] = field(default=None, metadata={"alias": "admin"})

    min_extension_length: Optional[int] = field(
        default=None, metadata={"alias": "minExtensionLength"}
    )

    max_extension_length: Optional[int] = field(
        default=None, metadata={"alias": "maxExtensionLength"}
    )

    default_extension_length: Optional[int] = field(
        default=None, metadata={"alias": "defaultExtensionLength"}
    )

    group_service_authorization_and_assignment: Optional[
        List[GroupServiceAuthorizationAndAssignment]
    ] = field(
        default=None, metadata={"alias": "groupServiceAuthorizationAndAssignment"}
    )

    user_service_authorization: Optional[List[UserServiceAuthorization]] = field(
        default=None, metadata={"alias": "userServiceAuthorization"}
    )

    service_pack_authorization: Optional[List[ServicePackAuthorization]] = field(
        default=None, metadata={"alias": "servicePackAuthorization"}
    )

    activatable_phone_number: Optional[List[ActivatableDN]] = field(
        default=None, metadata={"alias": "activatablePhoneNumber"}
    )

    activatable_dn_range: Optional[List[ActivatableDNRange]] = field(
        default=None, metadata={"alias": "activatableDNRange"}
    )

    routing_profile: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "routingProfile"}
    )

    meet_me_conferencing_allocated_ports: Optional[
        MeetMeConferencingConferencePorts
    ] = field(default=None, metadata={"alias": "meetMeConferencingAllocatedPorts"})

    trunk_group_max_active_calls: Optional[int] = field(
        default=None, metadata={"alias": "trunkGroupMaxActiveCalls"}
    )

    trunk_group_bursting_max_active_calls: Optional[UnboundedNonNegativeInt] = field(
        default=None, metadata={"alias": "trunkGroupBurstingMaxActiveCalls"}
    )

    def __post_init__(self):
        nillable_fields = ["routing_profile"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupConsolidatedAddRequest22(OCIRequest):
    """Add a group.

            The following elements are only used in AS data mode and ignored in XS data mode:
              serviceProviderExternalId
              groupExternalId

            The following elements are ignored in AS and XS data mode:
            servicePolicy,
            callProcessingSliceId,
            provisioningSliceId,
            subscriberPartition.

            The following elements are only used in XS data mode and ignored in AS mode:
            preferredDataCenter.
            Only Provisioning admin and above can change the preferredDataCenter.

            The following elements are only used in XS data mode and ignored in AS data mode:
            defaultUserCallingLineIdPhoneNumber.

            The following elements are optional for the group. If the elements are included,
            they will be either added, authorized, or modified on the group. Should any of the
            following elements be rejected to due existing system or service provider settings,
            the group will not be added and the response will be an ErrorResponse:
              domain
              admin
              minExtensionLength
              maxExtensionLength
              defaultExtensionLength
              servicePackAuthorization
              groupServiceAuthorizationAndAssignment
              userServiceAuthorization
              servicePack
              activatablePhoneNumber
              activatableDNRange
              routingProfile
              trunkGroupMaxActiveCalls
              trunkGroupBurstingMaxActiveCalls
              meetMeConferencingAllocatedPorts
            When a group or user service is included that is not activated, is not licensed,
            or not authorized to the service provider, the response will be an ErrorResponse.

            If the group service authorized quantity is not included it will default to Unlimited.

            If activatablePhoneNumber and activatableDNRange elements are included, when
            activate element is present, this value overrides the system group default
            activatable settings.
           If the activatablePhoneNumber and activatableDNRange element are included, the phone numbers are added to the service provider if they are available to be assigned to the group and not currently added to the service provider.
            The response returned is a
    -	SuccessResponse if all the data is successfully added.
    -	ErrorResponse if any data other than the DN validation/assignment fails.
    -	GroupConsolidatedAddResponse22 if any of the activatablePhoneNumber or activatableDNRange fails validation.

        Attributes:

            service_provider_id (Optional[str]):

            service_provider_external_id (Optional[str]):

            group_id (Optional[str]):

            group_external_id (Optional[str]):

            default_domain (str):

            user_limit (int):

            group_name (Optional[str]):

            calling_line_id_name (Optional[str]):

            time_zone (Optional[str]):

            location_dialing_code (Optional[str]):

            contact (Optional[Contact]):

            address (Optional[StreetAddress]):

            service_policy (Optional[str]):

            call_processing_slice_id (Optional[str]):

            provisioning_slice_id (Optional[str]):

            subscriber_partition (Optional[str]):

            preferred_data_center (Optional[str]):

            default_user_calling_line_id_phone_number (Optional[str]):

            domain (Optional[List[str]]):

            admin (Optional[List[GroupAdmin]]):

            min_extension_length (Optional[int]):

            max_extension_length (Optional[int]):

            default_extension_length (Optional[int]):

            group_service_authorization_and_assignment (Optional[List[GroupServiceAuthorizationAndAssignment]]):

            user_service_authorization (Optional[List[UserServiceAuthorization]]):

            service_pack_authorization (Optional[List[ServicePackAuthorization]]):

            activatable_phone_number (Optional[List[ActivatableDN]]):

            activatable_dn_range (Optional[List[ActivatableDNRange]]):

            routing_profile (Optional[Nillable[str]]):

            meet_me_conferencing_allocated_ports (Optional[MeetMeConferencingConferencePorts]):

            trunk_group_max_active_calls (Optional[int]):

            trunk_group_bursting_max_active_calls (Optional[UnboundedNonNegativeInt]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    service_provider_external_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderExternalId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    group_external_id: Optional[str] = field(
        default=None, metadata={"alias": "groupExternalId"}
    )

    default_domain: str = field(metadata={"alias": "defaultDomain"})

    user_limit: int = field(metadata={"alias": "userLimit"})

    group_name: Optional[str] = field(default=None, metadata={"alias": "groupName"})

    calling_line_id_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdName"}
    )

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    location_dialing_code: Optional[str] = field(
        default=None, metadata={"alias": "locationDialingCode"}
    )

    contact: Optional[Contact] = field(default=None, metadata={"alias": "contact"})

    address: Optional[StreetAddress] = field(
        default=None, metadata={"alias": "address"}
    )

    service_policy: Optional[str] = field(
        default=None, metadata={"alias": "servicePolicy"}
    )

    call_processing_slice_id: Optional[str] = field(
        default=None, metadata={"alias": "callProcessingSliceId"}
    )

    provisioning_slice_id: Optional[str] = field(
        default=None, metadata={"alias": "provisioningSliceId"}
    )

    subscriber_partition: Optional[str] = field(
        default=None, metadata={"alias": "subscriberPartition"}
    )

    preferred_data_center: Optional[str] = field(
        default=None, metadata={"alias": "preferredDataCenter"}
    )

    default_user_calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "defaultUserCallingLineIdPhoneNumber"}
    )

    domain: Optional[List[str]] = field(default=None, metadata={"alias": "domain"})

    admin: Optional[List[GroupAdmin]] = field(default=None, metadata={"alias": "admin"})

    min_extension_length: Optional[int] = field(
        default=None, metadata={"alias": "minExtensionLength"}
    )

    max_extension_length: Optional[int] = field(
        default=None, metadata={"alias": "maxExtensionLength"}
    )

    default_extension_length: Optional[int] = field(
        default=None, metadata={"alias": "defaultExtensionLength"}
    )

    group_service_authorization_and_assignment: Optional[
        List[GroupServiceAuthorizationAndAssignment]
    ] = field(
        default=None, metadata={"alias": "groupServiceAuthorizationAndAssignment"}
    )

    user_service_authorization: Optional[List[UserServiceAuthorization]] = field(
        default=None, metadata={"alias": "userServiceAuthorization"}
    )

    service_pack_authorization: Optional[List[ServicePackAuthorization]] = field(
        default=None, metadata={"alias": "servicePackAuthorization"}
    )

    activatable_phone_number: Optional[List[ActivatableDN]] = field(
        default=None, metadata={"alias": "activatablePhoneNumber"}
    )

    activatable_dn_range: Optional[List[ActivatableDNRange]] = field(
        default=None, metadata={"alias": "activatableDNRange"}
    )

    routing_profile: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "routingProfile"}
    )

    meet_me_conferencing_allocated_ports: Optional[
        MeetMeConferencingConferencePorts
    ] = field(default=None, metadata={"alias": "meetMeConferencingAllocatedPorts"})

    trunk_group_max_active_calls: Optional[int] = field(
        default=None, metadata={"alias": "trunkGroupMaxActiveCalls"}
    )

    trunk_group_bursting_max_active_calls: Optional[UnboundedNonNegativeInt] = field(
        default=None, metadata={"alias": "trunkGroupBurstingMaxActiveCalls"}
    )

    def __post_init__(self):
        nillable_fields = ["routing_profile"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupConsolidatedDnAssignListRequest(OCIRequest):
    """Adds DNs to enterprise and group and activates the DNs on assignment.
        It is possible to add either: a single DN,
        or a list of DNs, or a range of DNs, or any combination thereof.
        The response is either SuccessResponse or GroupConsolidatedDnAssignListResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        phone_number (Optional[List[ActivatableDN]]):

        dn_range (Optional[List[ActivatableDNRange]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    phone_number: Optional[List[ActivatableDN]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    dn_range: Optional[List[ActivatableDNRange]] = field(
        default=None, metadata={"alias": "dnRange"}
    )


@dataclass(kw_only=True)
class GroupCustomContactDirectoryAddRequest17(OCIRequest):
    """Adds a Custom Contact Directory to a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        entry (Optional[List[CustomContactDirectoryEntry]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    entry: Optional[List[CustomContactDirectoryEntry]] = field(
        default=None, metadata={"alias": "entry"}
    )


@dataclass(kw_only=True)
class GroupCustomContactDirectoryDeleteRequest(OCIRequest):
    """Deletes a Custom Contact Directory to a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCustomContactDirectoryGetAvailableUserListRequest17(OCIRequest):
    """Get a list of users that can be part of a custom contact directory.
        The response is either GroupCustomContactDirectoryGetAvailableUserListResponse17 or  ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupCustomContactDirectoryGetListRequest(OCIRequest):
    """Gets the list of Custom Contact Directories for a group.
        The response is either GroupCustomContactDirectoryGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCustomContactDirectoryGetRequest17(OCIRequest):
    """Gets a Custom Contact Directory in a group.
        The response is either GroupCustomContactDirectoryGetResponse17 or
        ErrorResponse.
        The search can be done using multiple criterion.
        If the searchCriteriaModeOr is present, any result matching any one criteria is included in the results.
        Otherwise, only results matching all the search criterion are included in the results.
        If no search criteria is specified, all results are returned.
        Specifying searchCriteriaModeOr without any search criteria results in an ErrorResponse.
        In all cases, if a responseSizeLimit is specified and the number of matching results is more than this limit, then an
        ErrorResponse is returned. The Receptionist Note column is only populated in AS mode; and populated only if the user
        sending the request is a the owner of this Receptionist Note and a Note exists.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        response_size_limit (Optional[int]):

        search_criteria_mode_or (Optional[bool]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_mobile_phone_number (Optional[List[SearchCriteriaMobilePhoneNumber]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_imp_id (Optional[List[SearchCriteriaImpId]]):

        search_criteria_title (Optional[List[SearchCriteriaTitle]]):

        search_criteria_receptionist_note (Optional[List[SearchCriteriaReceptionistNote]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_mobile_phone_number: Optional[
        List[SearchCriteriaMobilePhoneNumber]
    ] = field(default=None, metadata={"alias": "searchCriteriaMobilePhoneNumber"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_imp_id: Optional[List[SearchCriteriaImpId]] = field(
        default=None, metadata={"alias": "searchCriteriaImpId"}
    )

    search_criteria_title: Optional[List[SearchCriteriaTitle]] = field(
        default=None, metadata={"alias": "searchCriteriaTitle"}
    )

    search_criteria_receptionist_note: Optional[
        List[SearchCriteriaReceptionistNote]
    ] = field(default=None, metadata={"alias": "searchCriteriaReceptionistNote"})


@dataclass(kw_only=True)
class GroupCustomContactDirectoryModifyRequest17(OCIRequest):
    """Adds a Custom Contact Directory to a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        new_name (Optional[str]):

        entry_list (Optional[Nillable[ReplacementCustomContactDirectoryEntryList]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    entry_list: Optional[Nillable[ReplacementCustomContactDirectoryEntryList]] = field(
        default=None, metadata={"alias": "entryList"}
    )

    def __post_init__(self):
        nillable_fields = ["entry_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCustomRingbackGroupGetRequest20(OCIRequest):
    """Get the group's custom ring back service settings.
        The response is either a GroupCustomRingbackGroupGetResponse20 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupCustomRingbackGroupModifyRequest20(OCIRequest):
    """Modify the group's custom ring back service settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        is_active (Optional[bool]):

        audio_selection (Optional[str]):

        audio_file (Optional[Nillable[ExtendedMediaFileResource20]]):

        video_selection (Optional[str]):

        video_file (Optional[Nillable[ExtendedMediaFileResource20]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    audio_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioSelection"}
    )

    audio_file: Optional[Nillable[ExtendedMediaFileResource20]] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoSelection"}
    )

    video_file: Optional[Nillable[ExtendedMediaFileResource20]] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    def __post_init__(self):
        nillable_fields = ["audio_file", "video_file"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupDeleteRequest(OCIRequest):
    """Delete a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupDepartmentAddRequest(OCIRequest):
    """Add a department to a group.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode:
           callingLineIdName
           caliingLineIdPhoneNumber

    Attributes:

        service_provider_id (str):

        group_id (str):

        department_name (str):

        parent_department_key (Optional[DepartmentKey]):

        calling_line_id_name (Optional[str]):

        calling_line_id_phone_number (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    department_name: str = field(metadata={"alias": "departmentName"})

    parent_department_key: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "parentDepartmentKey"}
    )

    calling_line_id_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdName"}
    )

    calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )


@dataclass(kw_only=True)
class GroupDepartmentAdminAddRequest(OCIRequest):
    """Add a department administrator to a group department.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        department_key (GroupDepartmentKey):

        user_id (str):

        first_name (Optional[str]):

        last_name (Optional[str]):

        password (Optional[str]):

        language (Optional[str]):

    """

    department_key: GroupDepartmentKey = field(metadata={"alias": "departmentKey"})

    user_id: str = field(metadata={"alias": "userId"})

    first_name: Optional[str] = field(default=None, metadata={"alias": "firstName"})

    last_name: Optional[str] = field(default=None, metadata={"alias": "lastName"})

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    language: Optional[str] = field(default=None, metadata={"alias": "language"})


@dataclass(kw_only=True)
class GroupDepartmentAdminDeleteRequest(OCIRequest):
    """Delete a group department administrator.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class GroupDepartmentAdminGetListRequest(OCIRequest):
    """Get a list of department administrators for the department.
        The response is either a GroupDepartmentAdminGetListResponse or an ErrorResponse.

    Attributes:

        department_key (GroupDepartmentKey):

    """

    department_key: GroupDepartmentKey = field(metadata={"alias": "departmentKey"})


@dataclass(kw_only=True)
class GroupDepartmentAdminGetRequest22V2(OCIRequest):
    """Get a group department administrators profile.
        The response is either a GroupDepartmentAdminGetResponse22V2 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class GroupDepartmentAdminModifyRequest(OCIRequest):
    """Modify a group department administrator.
        Since old password is not specified here, any password rule related to old password
        does not apply.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode.
        accountDisabled

    Attributes:

        user_id (str):

        first_name (Optional[Nillable[str]]):

        last_name (Optional[Nillable[str]]):

        password (Optional[Nillable[str]]):

        language (Optional[str]):

        account_disabled (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    first_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "firstName"}
    )

    last_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "lastName"}
    )

    password: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "password"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    account_disabled: Optional[bool] = field(
        default=None, metadata={"alias": "accountDisabled"}
    )

    def __post_init__(self):
        nillable_fields = ["first_name", "last_name", "password"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupDepartmentDeleteRequest(OCIRequest):
    """Delete a department from a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        department_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    department_name: str = field(metadata={"alias": "departmentName"})


@dataclass(kw_only=True)
class GroupDepartmentGetAvailableParentListRequest(OCIRequest):
    """Get a list of departments that could be the parent department of the specified
        department. The department itself and all its descendents are not eligible to be
        the parent department. If the group belongs to an enterprise, it also returns the
        departments defined in the enterprise it belongs to.
        The response is either GroupDepartmentGetAvailableParentListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        department_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    department_name: str = field(metadata={"alias": "departmentName"})


@dataclass(kw_only=True)
class GroupDepartmentGetListRequest18(OCIRequest):
    """Request a list of departments in a group. You may request only the
        list of departments defined at the group-level, or you may request
        the list of all departments in the group including all the departments
        defined within the enterprise the group belongs to.
        The response is either GroupDepartmentGetListResponse18 or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        include_enterprise_departments (bool):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    include_enterprise_departments: bool = field(
        metadata={"alias": "includeEnterpriseDepartments"}
    )


@dataclass(kw_only=True)
class GroupDepartmentGetRequest(OCIRequest):
    """Request the attributes of a department.
        The response is either a GroupDepartmentGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        department_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    department_name: str = field(metadata={"alias": "departmentName"})


@dataclass(kw_only=True)
class GroupDepartmentModifyRequest(OCIRequest):
    """Modify a department of a group.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode:
           callingLineIdName
           caliingLineIdPhoneNumber

    Attributes:

        service_provider_id (str):

        group_id (str):

        department_name (str):

        new_department_name (Optional[str]):

        new_parent_department_key (Optional[Nillable[DepartmentKey]]):

        calling_line_id_name (Optional[Nillable[str]]):

        calling_line_id_phone_number (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    department_name: str = field(metadata={"alias": "departmentName"})

    new_department_name: Optional[str] = field(
        default=None, metadata={"alias": "newDepartmentName"}
    )

    new_parent_department_key: Optional[Nillable[DepartmentKey]] = field(
        default=None, metadata={"alias": "newParentDepartmentKey"}
    )

    calling_line_id_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callingLineIdName"}
    )

    calling_line_id_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )

    def __post_init__(self):
        nillable_fields = [
            "new_parent_department_key",
            "calling_line_id_name",
            "calling_line_id_phone_number",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupDeviceActivationPolicyGetRequest(OCIRequest):
    """Request the Device Activation policy of a group.
        The response is either a GroupDeviceActivationPolicyGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupDeviceActivationPolicyModifyRequest(OCIRequest):
    """Modify the Device Activation policy of a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        use_group_settings (Optional[bool]):

        allow_activation_code_request_by_user (Optional[bool]):

        send_activation_code_in_email (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    use_group_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupSettings"}
    )

    allow_activation_code_request_by_user: Optional[bool] = field(
        default=None, metadata={"alias": "allowActivationCodeRequestByUser"}
    )

    send_activation_code_in_email: Optional[bool] = field(
        default=None, metadata={"alias": "sendActivationCodeInEmail"}
    )


@dataclass(kw_only=True)
class GroupDeviceManagementEventGetListRequest22(OCIRequest):
    """Request device management's events for a specific queue.
        It is possible to restrict the number of rows returned using
        responseSizeLimit.
        If eventQueueType is not specified, the events from all the
        event queues are returned.
        The response is either a GroupDeviceManagementEventGetListResponse22 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        event_queue_type (Optional[str]):

        response_size_limit (Optional[int]):

        search_criteria_exact_device_management_event_status_in_progress_or_pending (Optional[SearchCriteriaExactDeviceManagementEventStatusInProgressOrPending]):

        search_criteria_exact_device_management_event_status_completed (Optional[SearchCriteriaExactDeviceManagementEventStatusCompleted]):

        search_criteria_exact_device_management_event_action (Optional[SearchCriteriaExactDeviceManagementEventAction]):

        search_criteria_exact_device_management_event_level (Optional[SearchCriteriaExactDeviceManagementEventLevel]):

        search_criteria_exact_device_management_event_type (Optional[SearchCriteriaExactDeviceManagementEventType]):

        search_criteria_device_management_event_additional_info (Optional[List[SearchCriteriaDeviceManagementEventAdditionalInfo]]):

        search_criteria_device_management_event_login_id (Optional[List[SearchCriteriaDeviceManagementEventLoginId]]):

        search_criteria_device_management_event_request (Optional[List[SearchCriteriaDeviceManagementEventRequest]]):

        search_criteria_device_management_event_request_tracking_id (Optional[List[SearchCriteriaDeviceManagementEventRequestTrackingId]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    event_queue_type: Optional[str] = field(
        default=None, metadata={"alias": "eventQueueType"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_exact_device_management_event_status_in_progress_or_pending: Optional[
        SearchCriteriaExactDeviceManagementEventStatusInProgressOrPending
    ] = field(
        default=None,
        metadata={
            "alias": "searchCriteriaExactDeviceManagementEventStatusInProgressOrPending"
        },
    )

    search_criteria_exact_device_management_event_status_completed: Optional[
        SearchCriteriaExactDeviceManagementEventStatusCompleted
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaExactDeviceManagementEventStatusCompleted"},
    )

    search_criteria_exact_device_management_event_action: Optional[
        SearchCriteriaExactDeviceManagementEventAction
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaExactDeviceManagementEventAction"},
    )

    search_criteria_exact_device_management_event_level: Optional[
        SearchCriteriaExactDeviceManagementEventLevel
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaExactDeviceManagementEventLevel"},
    )

    search_criteria_exact_device_management_event_type: Optional[
        SearchCriteriaExactDeviceManagementEventType
    ] = field(
        default=None, metadata={"alias": "searchCriteriaExactDeviceManagementEventType"}
    )

    search_criteria_device_management_event_additional_info: Optional[
        List[SearchCriteriaDeviceManagementEventAdditionalInfo]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaDeviceManagementEventAdditionalInfo"},
    )

    search_criteria_device_management_event_login_id: Optional[
        List[SearchCriteriaDeviceManagementEventLoginId]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceManagementEventLoginId"}
    )

    search_criteria_device_management_event_request: Optional[
        List[SearchCriteriaDeviceManagementEventRequest]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceManagementEventRequest"}
    )

    search_criteria_device_management_event_request_tracking_id: Optional[
        List[SearchCriteriaDeviceManagementEventRequestTrackingId]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaDeviceManagementEventRequestTrackingId"},
    )


@dataclass(kw_only=True)
class GroupDeviceManagementGetAccessDeviceCountForDeviceTypeGroupRequest(OCIRequest):
    """Request the number of access device of a particular device type and group.
        If countOnlyResetSupportedDevice is true, count only access devices if the device type supports reset.
        By default unmanaged device types are not allowed and devices are counted only if their device type supports Device Management.
        An error is returned if deviceType is specified but does not support device management.
        When allowUnmanagedDeviceType is true, unmanaged device type will be counted and a successful response is returned.
        The response is either GroupDeviceManagementGetAccessDeviceCountForDeviceTypeGroupResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_type (str):

        count_only_reset_supported_device (Optional[bool]):

        allow_unmanaged_device_type (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_type: str = field(metadata={"alias": "deviceType"})

    count_only_reset_supported_device: Optional[bool] = field(
        default=None, metadata={"alias": "countOnlyResetSupportedDevice"}
    )

    allow_unmanaged_device_type: Optional[bool] = field(
        default=None, metadata={"alias": "allowUnmanagedDeviceType"}
    )


@dataclass(kw_only=True)
class GroupDeviceManagementInProgressAndPendingEventCancelRequest(OCIRequest):
    """Cancel pending and in progress events.  A list of individual events can
        be canceled.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        event_id (List[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    event_id: List[int] = field(metadata={"alias": "eventId"})


@dataclass(kw_only=True)
class GroupDeviceTypeCustomTagAddRequest(OCIRequest):
    """Request to add a static configuration tag for an access device type used in a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_type (str):

        tag_name (str):

        tag_value (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_type: str = field(metadata={"alias": "deviceType"})

    tag_name: str = field(metadata={"alias": "tagName"})

    tag_value: Optional[str] = field(default=None, metadata={"alias": "tagValue"})


@dataclass(kw_only=True)
class GroupDeviceTypeCustomTagDeleteListRequest(OCIRequest):
    """Request to delete static configuration tags for an access device type used in a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_type (str):

        tag_name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_type: str = field(metadata={"alias": "deviceType"})

    tag_name: List[str] = field(metadata={"alias": "tagName"})


@dataclass(kw_only=True)
class GroupDeviceTypeCustomTagGetListRequest(OCIRequest):
    """Request to get the list of custom configuration tags managed by the Device Management System, on a per-device type basis for a group.
        The response is either GroupDeviceTypeCustomTagGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_type (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class GroupDeviceTypeCustomTagModifyRequest(OCIRequest):
    """Request to modify a static configuration tag for an access device type used in a group.

        The tagValueToEncrypt element can only be used by a system administrator.

        The following elements are only used in XS data mode and ignored in AS data mode:
          tagValueToEncrypt

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_type (str):

        tag_name (str):

        tag_value (Optional[Nillable[str]]):

        tag_value_to_encrypt (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_type: str = field(metadata={"alias": "deviceType"})

    tag_name: str = field(metadata={"alias": "tagName"})

    tag_value: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "tagValue"}
    )

    tag_value_to_encrypt: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "tagValueToEncrypt"}
    )

    def __post_init__(self):
        nillable_fields = ["tag_value", "tag_value_to_encrypt"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupDeviceTypeFileGetListRequest21(OCIRequest):
    """Request to get the list of device type files managed by the Device Management System, on a per-group basis.
        The response is either GroupDeviceTypeFileGetListResponse21 or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_type (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class GroupDeviceTypeFileGetRequest16sp1(OCIRequest):
    """Request to get a group device type file.
        The response is either GroupDeviceTypeFileGetResponse16sp1 or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_type (str):

        file_format (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_type: str = field(metadata={"alias": "deviceType"})

    file_format: str = field(metadata={"alias": "fileFormat"})


@dataclass(kw_only=True)
class GroupDeviceTypeFileModifyRequest14sp8(OCIRequest):
    """Request to modify a specified device type file for a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_type (str):

        file_format (str):

        file_source (Optional[str]):

        upload_file (Optional[FileResource]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_type: str = field(metadata={"alias": "deviceType"})

    file_format: str = field(metadata={"alias": "fileFormat"})

    file_source: Optional[str] = field(default=None, metadata={"alias": "fileSource"})

    upload_file: Optional[FileResource] = field(
        default=None, metadata={"alias": "uploadFile"}
    )


@dataclass(kw_only=True)
class GroupDeviceTypeTagSetGetRequest(OCIRequest):
    """Request to get the custom configuration tag set defined for the group and device type.
        The response is either GroupDeviceTypeTagSetGetResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_type (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class GroupDeviceTypeTagSetModifyRequest(OCIRequest):
    """Request to modify a static configuration tag set.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_type (str):

        tag_set_name (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_type: str = field(metadata={"alias": "deviceType"})

    tag_set_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "tagSetName"}
    )

    def __post_init__(self):
        nillable_fields = ["tag_set_name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupDialPlanPolicyAddAccessCodeRequest(OCIRequest):
    """Request to add a Group level Dial Plan Access Code and its all attribues.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        access_code (str):

        include_code_for_network_translations_and_routing (bool):

        include_code_for_screening_services (bool):

        enable_secondary_dial_tone (bool):

        description (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    access_code: str = field(metadata={"alias": "accessCode"})

    include_code_for_network_translations_and_routing: bool = field(
        metadata={"alias": "includeCodeForNetworkTranslationsAndRouting"}
    )

    include_code_for_screening_services: bool = field(
        metadata={"alias": "includeCodeForScreeningServices"}
    )

    enable_secondary_dial_tone: bool = field(
        metadata={"alias": "enableSecondaryDialTone"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class GroupDialPlanPolicyDeleteAccessCodeRequest(OCIRequest):
    """Request to delete a Group level Dial Plan Access Code and its all attribues.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        access_code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    access_code: str = field(metadata={"alias": "accessCode"})


@dataclass(kw_only=True)
class GroupDialPlanPolicyGetAccessCodeListRequest(OCIRequest):
    """Request the Group level data associated with Dial Plan Policy.
        The response is either a GroupDialPlanPolicyGetAccessCodeListResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupDialPlanPolicyGetAccessCodeRequest(OCIRequest):
    """Request access code data associated with Group level Dial Plan Policy access codes.
        The response is either a GroupDialPlanPolicyGetAccessCodeResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        access_code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    access_code: str = field(metadata={"alias": "accessCode"})


@dataclass(kw_only=True)
class GroupDialPlanPolicyGetRequest22(OCIRequest):
    """Request the Group level data associated with Dial Plan Policy.
        The response is either a GroupDialPlanPolicyGetResponse22 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupDialPlanPolicyModifyAccessCodeRequest(OCIRequest):
    """Request to modify a Group level Dial Plan Access Code and its attribues.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        access_code (str):

        include_code_for_network_translations_and_routing (Optional[bool]):

        include_code_for_screening_services (Optional[bool]):

        enable_secondary_dial_tone (Optional[bool]):

        description (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    access_code: str = field(metadata={"alias": "accessCode"})

    include_code_for_network_translations_and_routing: Optional[bool] = field(
        default=None, metadata={"alias": "includeCodeForNetworkTranslationsAndRouting"}
    )

    include_code_for_screening_services: Optional[bool] = field(
        default=None, metadata={"alias": "includeCodeForScreeningServices"}
    )

    enable_secondary_dial_tone: Optional[bool] = field(
        default=None, metadata={"alias": "enableSecondaryDialTone"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupDialPlanPolicyModifyRequest(OCIRequest):
    """Modify the Group level data associated with Dial Plan Policy.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
          overrideResolvedDeviceDigitMap
          deviceDigitMap

    Attributes:

        service_provider_id (str):

        group_id (str):

        use_setting (Optional[str]):

        requires_access_code_for_public_calls (Optional[bool]):

        allow_e164_public_calls (Optional[bool]):

        prefer_e164_number_format_for_callback_services (Optional[bool]):

        public_digit_map (Optional[Nillable[str]]):

        private_digit_map (Optional[Nillable[str]]):

        override_resolved_device_digit_map (Optional[bool]):

        device_digit_map (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    use_setting: Optional[str] = field(default=None, metadata={"alias": "useSetting"})

    requires_access_code_for_public_calls: Optional[bool] = field(
        default=None, metadata={"alias": "requiresAccessCodeForPublicCalls"}
    )

    allow_e164_public_calls: Optional[bool] = field(
        default=None, metadata={"alias": "allowE164PublicCalls"}
    )

    prefer_e164_number_format_for_callback_services: Optional[bool] = field(
        default=None, metadata={"alias": "preferE164NumberFormatForCallbackServices"}
    )

    public_digit_map: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "publicDigitMap"}
    )

    private_digit_map: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "privateDigitMap"}
    )

    override_resolved_device_digit_map: Optional[bool] = field(
        default=None, metadata={"alias": "overrideResolvedDeviceDigitMap"}
    )

    device_digit_map: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceDigitMap"}
    )

    def __post_init__(self):
        nillable_fields = ["public_digit_map", "private_digit_map", "device_digit_map"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupDialableCallerIDCriteriaAddRequest(OCIRequest):
    """Add a new Dialable Caller ID Criteria. Criteria are added at the bottom of the list with the lowest priority. The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        description (Optional[str]):

        prefix_digits (Optional[str]):

        match_call_type (Optional[List[str]]):

        match_alternate_call_indicator (Optional[List[str]]):

        match_local_category (bool):

        match_national_category (bool):

        match_interlata_category (bool):

        match_intralata_category (bool):

        match_international_category (bool):

        match_private_category (bool):

        match_emergency_category (bool):

        match_other_category (bool):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    prefix_digits: Optional[str] = field(
        default=None, metadata={"alias": "prefixDigits"}
    )

    match_call_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchCallType"}
    )

    match_alternate_call_indicator: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchAlternateCallIndicator"}
    )

    match_local_category: bool = field(metadata={"alias": "matchLocalCategory"})

    match_national_category: bool = field(metadata={"alias": "matchNationalCategory"})

    match_interlata_category: bool = field(metadata={"alias": "matchInterlataCategory"})

    match_intralata_category: bool = field(metadata={"alias": "matchIntralataCategory"})

    match_international_category: bool = field(
        metadata={"alias": "matchInternationalCategory"}
    )

    match_private_category: bool = field(metadata={"alias": "matchPrivateCategory"})

    match_emergency_category: bool = field(metadata={"alias": "matchEmergencyCategory"})

    match_other_category: bool = field(metadata={"alias": "matchOtherCategory"})


@dataclass(kw_only=True)
class GroupDialableCallerIDCriteriaDeleteRequest(OCIRequest):
    """Delete a Dialable Caller ID Criteria.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupDialableCallerIDCriteriaGetRequest(OCIRequest):
    """Get an existing Dialable Caller ID Criteria.
        The response is either a
        GroupDialableCallerIDCriteriaGetRequest or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupDialableCallerIDCriteriaModifyRequest(OCIRequest):
    """Modify a Dialable Caller ID Criteria.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        new_name (Optional[str]):

        description (Optional[Nillable[str]]):

        prefix_digits (Optional[Nillable[str]]):

        match_call_type (Optional[Nillable[ReplacementCommunicationBarringCallTypeList]]):

        match_alternate_call_indicator (Optional[Nillable[ReplacementCommunicationBarringAlternateCallIndicatorList]]):

        match_local_category (Optional[bool]):

        match_national_category (Optional[bool]):

        match_interlata_category (Optional[bool]):

        match_intralata_category (Optional[bool]):

        match_international_category (Optional[bool]):

        match_private_category (Optional[bool]):

        match_emergency_category (Optional[bool]):

        match_other_category (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    prefix_digits: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "prefixDigits"}
    )

    match_call_type: Optional[Nillable[ReplacementCommunicationBarringCallTypeList]] = (
        field(default=None, metadata={"alias": "matchCallType"})
    )

    match_alternate_call_indicator: Optional[
        Nillable[ReplacementCommunicationBarringAlternateCallIndicatorList]
    ] = field(default=None, metadata={"alias": "matchAlternateCallIndicator"})

    match_local_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchLocalCategory"}
    )

    match_national_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchNationalCategory"}
    )

    match_interlata_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchInterlataCategory"}
    )

    match_intralata_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchIntralataCategory"}
    )

    match_international_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchInternationalCategory"}
    )

    match_private_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchPrivateCategory"}
    )

    match_emergency_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchEmergencyCategory"}
    )

    match_other_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchOtherCategory"}
    )

    def __post_init__(self):
        nillable_fields = [
            "description",
            "prefix_digits",
            "match_call_type",
            "match_alternate_call_indicator",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupDialableCallerIDGetRequest(OCIRequest):
    """Get the Group's Dialable Caller ID settings and criteria list.
        The response is either a
        GroupDialableCallerIDGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupDialableCallerIDModifyRequest(OCIRequest):
    """Modify the group's Dialable Caller ID settings and criteria list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        use_group_criteria (Optional[bool]):

        ns_screening_failure_policy (Optional[str]):

        criteria_priority_order (Optional[List[DialableCallerIDCriteriaPriorityOrder]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    use_group_criteria: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupCriteria"}
    )

    ns_screening_failure_policy: Optional[str] = field(
        default=None, metadata={"alias": "nsScreeningFailurePolicy"}
    )

    criteria_priority_order: Optional[List[DialableCallerIDCriteriaPriorityOrder]] = (
        field(default=None, metadata={"alias": "criteriaPriorityOrder"})
    )


@dataclass(kw_only=True)
class GroupDigitCollectionGetRequest13mp4(OCIRequest):
    """Request the group's digit collection attributes.
        The response is either a GroupDigitCollectionGetResponse13mp4 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupDigitCollectionModifyRequest(OCIRequest):
    """Modifies the group's digit collection attributes.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        use_setting (Optional[str]):

        access_code (Optional[Nillable[str]]):

        public_digit_map (Optional[Nillable[str]]):

        private_digit_map (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    use_setting: Optional[str] = field(default=None, metadata={"alias": "useSetting"})

    access_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "accessCode"}
    )

    public_digit_map: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "publicDigitMap"}
    )

    private_digit_map: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "privateDigitMap"}
    )

    def __post_init__(self):
        nillable_fields = ["access_code", "public_digit_map", "private_digit_map"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupDirectoryNumberHuntingGetAvailableUserListRequest(OCIRequest):
    """Request to get the agents of a call center or hunt group that are available
        to be assigned to a directory number hunting group.  They are agents that
        are not already assigned to any other directory number hunting group.
        The response is either
        GroupDirectoryNumberHuntingGetAvailableUserListResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupDirectoryNumberHuntingGetRequest17sp1(OCIRequest):
    """Request to get the properties of the DNH service for a specified serviceUserId.
        It gets the agents of a call center or hunt group that are members
        of a directory number hunting group.  They are agents that are not already
        assigned to any other directory number hunting group.
        The response is either GroupDirectoryNumberHuntingGetResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupDirectoryNumberHuntingModifyRequest(OCIRequest):
    """Replaces a list of users as agents for a directory number hunting group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        agent_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

        use_terminate_call_to_agent_first (Optional[bool]):

        use_original_agent_services_for_busy_and_no_answer_calls (Optional[bool]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    agent_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "agentUserIdList"}
    )

    use_terminate_call_to_agent_first: Optional[bool] = field(
        default=None, metadata={"alias": "useTerminateCallToAgentFirst"}
    )

    use_original_agent_services_for_busy_and_no_answer_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "useOriginalAgentServicesForBusyAndNoAnswerCalls"},
    )

    def __post_init__(self):
        nillable_fields = ["agent_user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupDnActivateListRequest(OCIRequest):
    """Activate a list of assigned DNs on a group. It is possible to activate either: a single DN,
        or a list of DNs, or a range of DNs, or any combination thereof.

        It is not an error to activate an already activated DN
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        phone_number (Optional[List[str]]):

        dn_range (Optional[List[DNRange]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    dn_range: Optional[List[DNRange]] = field(
        default=None, metadata={"alias": "dnRange"}
    )


@dataclass(kw_only=True)
class GroupDnAssignListRequest(OCIRequest):
    """Assign a list of service provider DNs to a group. It is possible to assign either: a single DN,
        or a list of DNs, or a range of DNs, or any combination thereof.
        The DNs must have previously been added to the service provider or enterprise.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        phone_number (Optional[List[str]]):

        dn_range (Optional[List[DNRange]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    dn_range: Optional[List[DNRange]] = field(
        default=None, metadata={"alias": "dnRange"}
    )


@dataclass(kw_only=True)
class GroupDnDeactivateListRequest(OCIRequest):
    """Deactivate a list of activated DNs on a group. The DNs then become available for
        activation again. It is possible to deactivate either: a single DN,
        or a list of DNs, or a range of DNs, or any combination thereof.
        It is not an error to deactivate an already deactivated DN.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        phone_number (Optional[List[str]]):

        dn_range (Optional[List[DNRange]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    dn_range: Optional[List[DNRange]] = field(
        default=None, metadata={"alias": "dnRange"}
    )


@dataclass(kw_only=True)
class GroupDnGetActivationListRequest(OCIRequest):
    """Get the list of activated and deactivated DNs in a group.
        Ranges of DNs with identical assignment and activation properties are coalesced
        to a single table row entry.
        Only DNs assigned to a users are listed in the response when the number
        activation Mode is set to \"User Activation Enabled\"
        Dns assigned to the IMRN pool are not listed in the response.
        The response is either a GroupDnGetActivationListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupDnGetAssignmentListRequest18(OCIRequest):
    """Get the list of assigned and unassigned DNs in a group. Each DN can be assigned
        to a user and/or department. Ranges of DNs with identical assignment and activation properties
        are coalesced to a single table row entry.
        Dns assigned to the IMRN pool are not listed in the response.
        The response is either a GroupDnGetAssignmentListResponse18 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_exact_dn_department (Optional[SearchCriteriaExactDnDepartment]):

        search_criteria_exact_dn_activation (Optional[SearchCriteriaExactDnActivation]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_exact_dn_department: Optional[SearchCriteriaExactDnDepartment] = (
        field(default=None, metadata={"alias": "searchCriteriaExactDnDepartment"})
    )

    search_criteria_exact_dn_activation: Optional[SearchCriteriaExactDnActivation] = (
        field(default=None, metadata={"alias": "searchCriteriaExactDnActivation"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupDnGetAssignmentPagedSortedListRequest(OCIRequest):
    """Get the list of assigned and unassigned DNs in a group. Each DN can be assigned
        to a user and/or department. Ranges of DNs with identical assignment and activation properties
        are coalesced to a single table row entry.
        Dns assigned to the IMRN pool are not listed in the response.
        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the  responsePageSize will be set to  the maximum ResponsePageSize by default.
        If no sortOrder is included the response is sorted by Phone Number by default.
        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criterion are logically ORed together.

        The department in both the search criteria and sort by fields refer to the department to which
        the dn belongs.

        A limitation to the search by DN activation exists when the Number Activation mode is set to
        Off. In this case DNs not assigned to users are never returned by queries with the
        \"dnActivationSearchCriteria\" included.

        The response is either a GroupDnGetAssignmentPagedSortedListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderGroupDnGetAssignmentPagedSortedList]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_exact_dn_activation (Optional[SearchCriteriaExactDnActivation]):

        search_criteria_exact_dn_availability (Optional[SearchCriteriaExactDnAvailability]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_exact_user_type (Optional[List[SearchCriteriaExactUserType]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[List[SortOrderGroupDnGetAssignmentPagedSortedList]] = field(
        default=None, metadata={"alias": "sortOrder"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_exact_dn_activation: Optional[SearchCriteriaExactDnActivation] = (
        field(default=None, metadata={"alias": "searchCriteriaExactDnActivation"})
    )

    search_criteria_exact_dn_availability: Optional[
        SearchCriteriaExactDnAvailability
    ] = field(default=None, metadata={"alias": "searchCriteriaExactDnAvailability"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_exact_user_type: Optional[List[SearchCriteriaExactUserType]] = (
        field(default=None, metadata={"alias": "searchCriteriaExactUserType"})
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupDnGetAvailableListRequest(OCIRequest):
    """Get the list of DNs that are assigned to a group and still available for
        assignment to users or service instances within the group.
        Dns assigned to the IMRN pool are not listed in the response.
        The response is either a GroupDnGetAvailableListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupDnGetAvailableRangesListRequest(OCIRequest):
    """Get a list of group DNs that are not assigned to user, service instances or IMRN pool.
        The Dns are returned in a list of DNs or DN ranges and formated in E164 format for display.
        The response is either a GroupDnGetAvailableRangeListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupDnGetDetailedAvailableListRequest(OCIRequest):
    """Get the list of DNs that are assigned to a group and still available for
        assignment to users within the group with the department name, if the DN
        is assigned to the department.
        Dns assigned to the IMRN pool are not listed in the response.
        The response is either a GroupDnGetDetailedAvailableListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupDnGetListRequest(OCIRequest):
    """Get the list of DNs that are assigned to a group.
        Dns assigned to the IMRN pool are not listed in the response.
        The response is either a GroupDnGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupDnGetStatusListRequest(OCIRequest):
    """Validates DNs given in the request
        The response is GroupDnGetStatusListResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        dn (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    dn: List[str] = field(metadata={"alias": "dn"})


@dataclass(kw_only=True)
class GroupDnGetSummaryListRequest(OCIRequest):
    """Get the list of assigned and unassigned DN ranges in a group.
        Dns assigned to the IMRN pool are not listed in the response.
        The response is either a GroupDnGetSummaryListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupDnListAssignDepartmentRequest(OCIRequest):
    """Assign a list of group DNs to a department. If the department is not specified, this
        will make the DNs become unassigned from any department.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        department_key (Optional[DepartmentKey]):

        phone_number (Optional[List[str]]):

        dn_range (Optional[List[DNRange]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    department_key: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "departmentKey"}
    )

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    dn_range: Optional[List[DNRange]] = field(
        default=None, metadata={"alias": "dnRange"}
    )


@dataclass(kw_only=True)
class GroupDnUnassignListRequest(OCIRequest):
    """Unassign a list of service provider DNs from a group. The DNs then become available for
        assignment to other groups. It is possible to unassign either: a single DN,
        or a list of DNs, or a range of DNs, or any combination thereof.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        phone_number (Optional[List[str]]):

        dn_range (Optional[List[DNRange]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    dn_range: Optional[List[DNRange]] = field(
        default=None, metadata={"alias": "dnRange"}
    )


@dataclass(kw_only=True)
class GroupDomainAssignListRequest(OCIRequest):
    """Assign a list of domains to a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        domain (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    domain: List[str] = field(metadata={"alias": "domain"})


@dataclass(kw_only=True)
class GroupDomainGetAssignedListRequest(OCIRequest):
    """Requests the list of all domains assigned to a group.
        The response is either GroupDomainGetAssignedListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupDomainGetAssignedUserListRequest(OCIRequest):
    """Request a list of users within in a group that have a given domain assigned.
        The response is either GroupDomainGetAssignedUserListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        domain (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    domain: str = field(metadata={"alias": "domain"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupDomainUnassignListRequest(OCIRequest):
    """Unassign a list of domains from a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        domain (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    domain: List[str] = field(metadata={"alias": "domain"})


@dataclass(kw_only=True)
class GroupEmergencyCallNotificationGetRequest(OCIRequest):
    """Request the group level data associated with Emergency Call Notification.
        The response is either a GroupEmergencyCallNotificationGetResponse or an
        ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupEmergencyCallNotificationModifyRequest(OCIRequest):
    """Modify the group level data associated with Emergency Call Notification.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        send_emergency_call_notification_email (Optional[bool]):

        emergency_call_notify_email_address (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    send_emergency_call_notification_email: Optional[bool] = field(
        default=None, metadata={"alias": "sendEmergencyCallNotificationEmail"}
    )

    emergency_call_notify_email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "emergencyCallNotifyEmailAddress"}
    )

    def __post_init__(self):
        nillable_fields = ["emergency_call_notify_email_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupEmergencyZonesAddHomeZoneListRequest(OCIRequest):
    """Add a list of home zones and/or home zone ranges to the group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        home_zone_ip_address (Optional[List[str]]):

        home_zone_ip_address_range (Optional[List[IPAddressRange]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    home_zone_ip_address: Optional[List[str]] = field(
        default=None, metadata={"alias": "homeZoneIpAddress"}
    )

    home_zone_ip_address_range: Optional[List[IPAddressRange]] = field(
        default=None, metadata={"alias": "homeZoneIpAddressRange"}
    )


@dataclass(kw_only=True)
class GroupEmergencyZonesDeleteHomeZoneListRequest(OCIRequest):
    """Delete a list of home zones and/or home zone ranges to the group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        home_zone_ip_address (Optional[List[str]]):

        home_zone_ip_address_range (Optional[List[IPAddressRange]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    home_zone_ip_address: Optional[List[str]] = field(
        default=None, metadata={"alias": "homeZoneIpAddress"}
    )

    home_zone_ip_address_range: Optional[List[IPAddressRange]] = field(
        default=None, metadata={"alias": "homeZoneIpAddressRange"}
    )


@dataclass(kw_only=True)
class GroupEmergencyZonesGetHomeZoneListRequest(OCIRequest):
    """Request the group level data associated with Emergency Zones.
        The response is either a GroupEmergencyZonesGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupEmergencyZonesGetRequest(OCIRequest):
    """Request the group level data associated with Emergency Zones.
        The response is either a GroupEmergencyZonesGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupEmergencyZonesModifyHomeZoneListRequest(OCIRequest):
    """Modify a list of home zones and/or home zone ranges.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        home_zone_ip_address_list (Optional[List[object]]):

        home_zone_ip_address_range_list (Optional[List[object]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    home_zone_ip_address_list: Optional[List[object]] = field(
        default=None, metadata={"alias": "homeZoneIpAddressList"}
    )

    home_zone_ip_address_range_list: Optional[List[object]] = field(
        default=None, metadata={"alias": "homeZoneIpAddressRangeList"}
    )


@dataclass(kw_only=True)
class GroupEmergencyZonesModifyRequest(OCIRequest):
    """Modify the group level data associated with Emergency Zones.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        is_active (Optional[bool]):

        emergency_zones_prohibition (Optional[str]):

        send_emergency_call_notify_email (Optional[bool]):

        emergency_call_notify_email_address (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    emergency_zones_prohibition: Optional[str] = field(
        default=None, metadata={"alias": "emergencyZonesProhibition"}
    )

    send_emergency_call_notify_email: Optional[bool] = field(
        default=None, metadata={"alias": "sendEmergencyCallNotifyEmail"}
    )

    emergency_call_notify_email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "emergencyCallNotifyEmailAddress"}
    )

    def __post_init__(self):
        nillable_fields = ["emergency_call_notify_email_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupEndpointGetListRequest(OCIRequest):
    """Request to search endpoints in the group.
        The response is either GroupEndpointGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_line_port_user_part (Optional[List[SearchCriteriaLinePortUserPart]]):

        search_criteria_line_port_domain (Optional[List[SearchCriteriaLinePortDomain]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_device_type (Optional[List[SearchCriteriaDeviceType]]):

        search_criteria_device_name (Optional[List[SearchCriteriaDeviceName]]):

        search_criteria_device_mac_address (Optional[List[SearchCriteriaDeviceMACAddress]]):

        search_criteria_device_net_address (Optional[List[SearchCriteriaDeviceNetAddress]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_line_port_user_part: Optional[
        List[SearchCriteriaLinePortUserPart]
    ] = field(default=None, metadata={"alias": "searchCriteriaLinePortUserPart"})

    search_criteria_line_port_domain: Optional[List[SearchCriteriaLinePortDomain]] = (
        field(default=None, metadata={"alias": "searchCriteriaLinePortDomain"})
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_device_type: Optional[List[SearchCriteriaDeviceType]] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceType"}
    )

    search_criteria_device_name: Optional[List[SearchCriteriaDeviceName]] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceName"}
    )

    search_criteria_device_mac_address: Optional[
        List[SearchCriteriaDeviceMACAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceMACAddress"})

    search_criteria_device_net_address: Optional[
        List[SearchCriteriaDeviceNetAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceNetAddress"})

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})


@dataclass(kw_only=True)
class GroupEnhancedCallLogsSchemaInstanceGetRequest(OCIRequest):
    """Get the enhanced call log database schema instance associated with a group of
      a service provider.
      The response is either a GroupEnhancedCallLogsSchemaInstanceGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupEnhancedCallLogsSchemaInstanceModifyRequest(OCIRequest):
    """Modify the Enhanced Call Logs schema instance associated with a group of a service provider.
      The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: Optional[Nillable[str]] = field(default=None, metadata={"alias": "name"})

    def __post_init__(self):
        nillable_fields = ["name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupEnterpriseTrunkAddRequest21(OCIRequest):
    """Request to add an enterprise trunk in a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        enterprise_trunk_name (str):

        maximum_reroute_attempts (int):

        route_exhaustion_action (str):

        route_exhaustion_forward_address (Optional[str]):

        ordered_routing (Optional[object]):

        priority_weighted_routing (Optional[object]):

        enable_capacity_management (bool):

        max_active_calls (Optional[int]):

        capacity_exceeded_trap_initial_calls (Optional[int]):

        capacity_exceeded_trap_offset_calls (Optional[int]):

        maximum_active_incoming_calls_allowed (Optional[int]):

        maximum_active_outgoing_calls_allowed (Optional[int]):

        minimum_active_calls_reserved (Optional[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    enterprise_trunk_name: str = field(metadata={"alias": "enterpriseTrunkName"})

    maximum_reroute_attempts: int = field(metadata={"alias": "maximumRerouteAttempts"})

    route_exhaustion_action: str = field(metadata={"alias": "routeExhaustionAction"})

    route_exhaustion_forward_address: Optional[str] = field(
        default=None, metadata={"alias": "routeExhaustionForwardAddress"}
    )

    ordered_routing: Optional[object] = field(
        default=None, metadata={"alias": "orderedRouting"}
    )

    priority_weighted_routing: Optional[object] = field(
        default=None, metadata={"alias": "priorityWeightedRouting"}
    )

    enable_capacity_management: bool = field(
        metadata={"alias": "enableCapacityManagement"}
    )

    max_active_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxActiveCalls"}
    )

    capacity_exceeded_trap_initial_calls: Optional[int] = field(
        default=None, metadata={"alias": "capacityExceededTrapInitialCalls"}
    )

    capacity_exceeded_trap_offset_calls: Optional[int] = field(
        default=None, metadata={"alias": "capacityExceededTrapOffsetCalls"}
    )

    maximum_active_incoming_calls_allowed: Optional[int] = field(
        default=None, metadata={"alias": "maximumActiveIncomingCallsAllowed"}
    )

    maximum_active_outgoing_calls_allowed: Optional[int] = field(
        default=None, metadata={"alias": "maximumActiveOutgoingCallsAllowed"}
    )

    minimum_active_calls_reserved: Optional[int] = field(
        default=None, metadata={"alias": "minimumActiveCallsReserved"}
    )


@dataclass(kw_only=True)
class GroupEnterpriseTrunkAddUserListRequest(OCIRequest):
    """Request to add users to an enterprise trunk in a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        enterprise_trunk_name (str):

        user_id (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    enterprise_trunk_name: str = field(metadata={"alias": "enterpriseTrunkName"})

    user_id: List[str] = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class GroupEnterpriseTrunkDeleteRequest(OCIRequest):
    """Request to delete an enterprise trunk in a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        enterprise_trunk_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    enterprise_trunk_name: str = field(metadata={"alias": "enterpriseTrunkName"})


@dataclass(kw_only=True)
class GroupEnterpriseTrunkDeleteUserListRequest(OCIRequest):
    """Request to delete users from an enterprise trunk in a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        enterprise_trunk_name (str):

        user_id (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    enterprise_trunk_name: str = field(metadata={"alias": "enterpriseTrunkName"})

    user_id: List[str] = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class GroupEnterpriseTrunkForceAssignUserListRequest(OCIRequest):
    """Request to add users to an enterprise trunk in a group. If the user is already assigned to another enterprise trunk,
        it will be unassigned from the old enterprise trunk and assigned to the new enterprise trunk specified in this request.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        enterprise_trunk_name (str):

        user_id (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    enterprise_trunk_name: str = field(metadata={"alias": "enterpriseTrunkName"})

    user_id: List[str] = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class GroupEnterpriseTrunkGetAvailableTrunkGroupListRequest(OCIRequest):
    """Request to get the list of all available trunk groups defined in a group.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        The response is either a GroupEnterpriseTrunkGetAvailableTrunkGroupListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_trunk_group_name (Optional[List[SearchCriteriaTrunkGroupName]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_trunk_group_name: Optional[List[SearchCriteriaTrunkGroupName]] = (
        field(default=None, metadata={"alias": "searchCriteriaTrunkGroupName"})
    )


@dataclass(kw_only=True)
class GroupEnterpriseTrunkGetAvailableUserListRequest(OCIRequest):
    """Request the list of users that are available to be added to an enterprise trunk.  This list contains users in the group that are trunk users and not already assigned to an enterprise trunk.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        The response is either a GroupEnterpriseTrunkGetAvailableUserListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_alternate_trunk_identity (Optional[List[SearchCriteriaAlternateTrunkIdentity]]):

        search_criteria_alternate_trunk_identity_domain (Optional[List[SearchCriteriaAlternateTrunkIdentityDomain]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_alternate_trunk_identity: Optional[
        List[SearchCriteriaAlternateTrunkIdentity]
    ] = field(default=None, metadata={"alias": "searchCriteriaAlternateTrunkIdentity"})

    search_criteria_alternate_trunk_identity_domain: Optional[
        List[SearchCriteriaAlternateTrunkIdentityDomain]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaAlternateTrunkIdentityDomain"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})


@dataclass(kw_only=True)
class GroupEnterpriseTrunkGetListRequest(OCIRequest):
    """Request to get the list of all enterprise trunks defined in a group.
        The response is either a GroupEnterpriseTrunkGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupEnterpriseTrunkGetRequest22(OCIRequest):
    """Request to get an enterprise trunk
        The response is either an GroupEnterpriseTrunkGetResponse22 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        enterprise_trunk_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    enterprise_trunk_name: str = field(metadata={"alias": "enterpriseTrunkName"})


@dataclass(kw_only=True)
class GroupEnterpriseTrunkGetUserListRequest(OCIRequest):
    """Request the list of users in an enterprise trunk.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        The response is either a GroupEnterpriseTrunkGetUserListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        enterprise_trunk_name (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_alternate_trunk_identity (Optional[List[SearchCriteriaAlternateTrunkIdentity]]):

        search_criteria_alternate_trunk_identity_domain (Optional[List[SearchCriteriaAlternateTrunkIdentityDomain]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_route_list_assigned (Optional[SearchCriteriaExactUserRouteListAssigned]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    enterprise_trunk_name: str = field(metadata={"alias": "enterpriseTrunkName"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_alternate_trunk_identity: Optional[
        List[SearchCriteriaAlternateTrunkIdentity]
    ] = field(default=None, metadata={"alias": "searchCriteriaAlternateTrunkIdentity"})

    search_criteria_alternate_trunk_identity_domain: Optional[
        List[SearchCriteriaAlternateTrunkIdentityDomain]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaAlternateTrunkIdentityDomain"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_route_list_assigned: Optional[
        SearchCriteriaExactUserRouteListAssigned
    ] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserRouteListAssigned"}
    )


@dataclass(kw_only=True)
class GroupEnterpriseTrunkModifyRequest(OCIRequest):
    """Request to modify an enterprise trunk in a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        enterprise_trunk_name (str):

        new_enterprise_trunk_name (Optional[str]):

        maximum_reroute_attempts (Optional[int]):

        route_exhaustion_action (Optional[str]):

        route_exhaustion_forward_address (Optional[Nillable[str]]):

        ordered_routing (Optional[object]):

        priority_weighted_routing (Optional[object]):

        enable_capacity_management (Optional[bool]):

        max_active_calls (Optional[Nillable[int]]):

        capacity_exceeded_trap_initial_calls (Optional[Nillable[int]]):

        capacity_exceeded_trap_offset_calls (Optional[Nillable[int]]):

        maximum_active_incoming_calls_allowed (Optional[Nillable[int]]):

        maximum_active_outgoing_calls_allowed (Optional[Nillable[int]]):

        minimum_active_calls_reserved (Optional[Nillable[int]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    enterprise_trunk_name: str = field(metadata={"alias": "enterpriseTrunkName"})

    new_enterprise_trunk_name: Optional[str] = field(
        default=None, metadata={"alias": "newEnterpriseTrunkName"}
    )

    maximum_reroute_attempts: Optional[int] = field(
        default=None, metadata={"alias": "maximumRerouteAttempts"}
    )

    route_exhaustion_action: Optional[str] = field(
        default=None, metadata={"alias": "routeExhaustionAction"}
    )

    route_exhaustion_forward_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "routeExhaustionForwardAddress"}
    )

    ordered_routing: Optional[object] = field(
        default=None, metadata={"alias": "orderedRouting"}
    )

    priority_weighted_routing: Optional[object] = field(
        default=None, metadata={"alias": "priorityWeightedRouting"}
    )

    enable_capacity_management: Optional[bool] = field(
        default=None, metadata={"alias": "enableCapacityManagement"}
    )

    max_active_calls: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxActiveCalls"}
    )

    capacity_exceeded_trap_initial_calls: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "capacityExceededTrapInitialCalls"}
    )

    capacity_exceeded_trap_offset_calls: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "capacityExceededTrapOffsetCalls"}
    )

    maximum_active_incoming_calls_allowed: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maximumActiveIncomingCallsAllowed"}
    )

    maximum_active_outgoing_calls_allowed: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maximumActiveOutgoingCallsAllowed"}
    )

    minimum_active_calls_reserved: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "minimumActiveCallsReserved"}
    )

    def __post_init__(self):
        nillable_fields = [
            "route_exhaustion_forward_address",
            "max_active_calls",
            "capacity_exceeded_trap_initial_calls",
            "capacity_exceeded_trap_offset_calls",
            "maximum_active_incoming_calls_allowed",
            "maximum_active_outgoing_calls_allowed",
            "minimum_active_calls_reserved",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupExchangeIntegrationGetRequest(OCIRequest):
    """Request the group level configuration for Exchange Integration.
        The response is either a GroupExchangeIntegrationGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupExchangeIntegrationModifyRequest(OCIRequest):
    """Modify the group level configuration for Exchange Integration.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        enable_exchange_integration (Optional[bool]):

        exchange_url (Optional[Nillable[str]]):

        exchange_credentials (Optional[Nillable[ExchangeUserNamePassword]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    enable_exchange_integration: Optional[bool] = field(
        default=None, metadata={"alias": "enableExchangeIntegration"}
    )

    exchange_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "exchangeURL"}
    )

    exchange_credentials: Optional[Nillable[ExchangeUserNamePassword]] = field(
        default=None, metadata={"alias": "exchangeCredentials"}
    )

    def __post_init__(self):
        nillable_fields = ["exchange_url", "exchange_credentials"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupExistingUsersAssignUserServiceListRequest(OCIRequest):
    """Request to assign the user services and service packs to all existing users within the group.
        BroadSoft recommends using this command only for small groups with less than 100 users.  This
        command will return an error if the group has over 500 users.  The recommended way to bulk
        assign/unassign services is Service Pack Migration.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_name (Optional[List[str]]):

        service_pack_name (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "serviceName"}
    )

    service_pack_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "servicePackName"}
    )


@dataclass(kw_only=True)
class GroupExistingUsersUnassignUserServiceListRequest(OCIRequest):
    """Requests to unassign the user services and service packs for all existing users within the group.
        BroadSoft recommends using this command only for small groups with less than 100 users.  This
        command will return an error if the group has over 500 users.  The recommended way to bulk
        assign/unassign services is Service Pack Migration.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_name (Optional[List[str]]):

        service_pack_name (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "serviceName"}
    )

    service_pack_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "servicePackName"}
    )


@dataclass(kw_only=True)
class GroupExtensionLengthGetRequest22(OCIRequest):
    """Request the group's extension length.
        The response is either a GroupExtensionLengthGetResponse22 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupExtensionLengthModifyRequest17(OCIRequest):
    """Modify the group's extension length range.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
         useExterpriseExtensionLengthSetting

    Attributes:

        service_provider_id (str):

        group_id (str):

        min_extension_length (Optional[int]):

        max_extension_length (Optional[int]):

        default_extension_length (Optional[int]):

        use_enterprise_extension_length_setting (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    min_extension_length: Optional[int] = field(
        default=None, metadata={"alias": "minExtensionLength"}
    )

    max_extension_length: Optional[int] = field(
        default=None, metadata={"alias": "maxExtensionLength"}
    )

    default_extension_length: Optional[int] = field(
        default=None, metadata={"alias": "defaultExtensionLength"}
    )

    use_enterprise_extension_length_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useEnterpriseExtensionLengthSetting"}
    )


@dataclass(kw_only=True)
class GroupFeatureAccessCodeGetRequest21(OCIRequest):
    """Get group FAC code level and the list of feature access codes for a group.
        The response is either a GroupFeatureAccessCodeGetResponse21 or an
        ErrorResponse.
        Returned Feature Access Codes may be group specific, or Service Provider
        Feature Access Codes, depending on FAC code level.

        In release 20 the \"Call Recording\" FAC name is changed to
        \"Call Recording - Start\".

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupFeatureAccessCodeModifyRequest21(OCIRequest):
    """Modify group FAC code level and the list of feature access codes for a
        group.
        The response is either a SuccessResponse or an ErrorResponse.
        Note: choice element is only valid when useFeatureAccessCodeLevel is set
        to \"Group\", otherwise an ErrorResponse will be returned.

        In release 20 the \"Call Recording\" FAC name is changed to
        \"Call Recording - Start\".

    Attributes:

        service_provider_id (str):

        group_id (str):

        use_feature_access_code_level (Optional[str]):

        restore_default_codes (Optional[bool]):

        feature_access_code (Optional[List[FeatureAccessCodeModifyEntry]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    use_feature_access_code_level: Optional[str] = field(
        default=None, metadata={"alias": "useFeatureAccessCodeLevel"}
    )

    restore_default_codes: Optional[bool] = field(
        default=None, metadata={"alias": "restoreDefaultCodes"}
    )

    feature_access_code: Optional[List[FeatureAccessCodeModifyEntry]] = field(
        default=None, metadata={"alias": "featureAccessCode"}
    )


@dataclass(kw_only=True)
class GroupFileRepositoryDeviceUserAddRequest(OCIRequest):
    """Add a new group file repository user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        file_repository_name (str):

        user_name (str):

        password (str):

        allow_put (bool):

        allow_delete (bool):

        allow_get (bool):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    file_repository_name: str = field(metadata={"alias": "fileRepositoryName"})

    user_name: str = field(metadata={"alias": "userName"})

    password: str = field(metadata={"alias": "password"})

    allow_put: bool = field(metadata={"alias": "allowPut"})

    allow_delete: bool = field(metadata={"alias": "allowDelete"})

    allow_get: bool = field(metadata={"alias": "allowGet"})


@dataclass(kw_only=True)
class GroupFileRepositoryDeviceUserDeleteRequest(OCIRequest):
    """Delete a group file repository user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        file_repository_name (str):

        user_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    file_repository_name: str = field(metadata={"alias": "fileRepositoryName"})

    user_name: str = field(metadata={"alias": "userName"})


@dataclass(kw_only=True)
class GroupFileRepositoryDeviceUserGetListRequest(OCIRequest):
    """Request the list of group users for a file repository in the system.
        The response is either a GroupFileRepositoryDeviceUserGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        file_repository_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    file_repository_name: str = field(metadata={"alias": "fileRepositoryName"})


@dataclass(kw_only=True)
class GroupFileRepositoryDeviceUserModifyRequest(OCIRequest):
    """Modify a group file repository user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        file_repository_name (str):

        user_name (str):

        password (Optional[str]):

        allow_put (Optional[bool]):

        allow_delete (Optional[bool]):

        allow_get (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    file_repository_name: str = field(metadata={"alias": "fileRepositoryName"})

    user_name: str = field(metadata={"alias": "userName"})

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    allow_put: Optional[bool] = field(default=None, metadata={"alias": "allowPut"})

    allow_delete: Optional[bool] = field(
        default=None, metadata={"alias": "allowDelete"}
    )

    allow_get: Optional[bool] = field(default=None, metadata={"alias": "allowGet"})


@dataclass(kw_only=True)
class GroupFindMeFollowMeAddAlertingGroupRequest(OCIRequest):
    """Add an alerting group to a Find-me/Follow-me instance.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        alerting_group_name (str):

        alerting_group_description (Optional[str]):

        use_diversion_inhibitor (bool):

        answer_confirmation_required (bool):

        number_of_rings (int):

        phone_number (Optional[str]):

        user_id (Optional[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    alerting_group_name: str = field(metadata={"alias": "alertingGroupName"})

    alerting_group_description: Optional[str] = field(
        default=None, metadata={"alias": "alertingGroupDescription"}
    )

    use_diversion_inhibitor: bool = field(metadata={"alias": "useDiversionInhibitor"})

    answer_confirmation_required: bool = field(
        metadata={"alias": "answerConfirmationRequired"}
    )

    number_of_rings: int = field(metadata={"alias": "numberOfRings"})

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})


@dataclass(kw_only=True)
class GroupFindMeFollowMeAddAlertingGroupSelectiveCriteriaRequest(OCIRequest):
    """Add a criteria to the Find-me/Follow-me alerting group.
        For the callToNumber, the extension and number elements are not used and the only types accepted for each number are Primary and Alternates. If other type is specified the command fails.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        alerting_group_name (str):

        criteria_name (str):

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria (CriteriaFromDn):

        call_to_number (Optional[List[CallToNumber]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    alerting_group_name: str = field(metadata={"alias": "alertingGroupName"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria: CriteriaFromDn = field(metadata={"alias": "fromDnCriteria"})

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class GroupFindMeFollowMeAddInstanceRequest(OCIRequest):
    """Add a Find-me/Follow-me instance to a group.
        The domain is required in the serviceUserId.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_user_id (str):

        service_instance_profile (ServiceInstanceAddProfile):

        network_class_of_service (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: ServiceInstanceAddProfile = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupFindMeFollowMeAlertingGroupGetAvailableUserListRequest(OCIRequest):
    """Get a list of users that can be assigned to a Find-me/Follow-me alerting group.
        The response is either GroupFindMeFollowMeAlertingGroupGetAvailableUserListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupFindMeFollowMeDeleteAlertingGroupRequest(OCIRequest):
    """Delete an alerting group from a Find-me/Follow-me instance.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        alerting_group_name (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    alerting_group_name: str = field(metadata={"alias": "alertingGroupName"})


@dataclass(kw_only=True)
class GroupFindMeFollowMeDeleteAlertingGroupSelectiveCriteriaRequest(OCIRequest):
    """Delete a criteria from the Find-me/Follow-me alerting group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        alerting_group_name (str):

        criteria_name (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    alerting_group_name: str = field(metadata={"alias": "alertingGroupName"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class GroupFindMeFollowMeDeleteInstanceRequest(OCIRequest):
    """Delete a Find-me/Follow-me instance from a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupFindMeFollowMeGetAlertingGroupListRequest(OCIRequest):
    """Get a list of Find-me/Follow-me alerting groups within a group.
        The response is either GroupFindMeFollowMeGetAlertingGroupListResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupFindMeFollowMeGetAlertingGroupRequest(OCIRequest):
    """Request to get all the information of a Find-me/Follow-me alerting group.
        The response is either GroupFindMeFollowMeGetAlertingGroupResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        alerting_group_name (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    alerting_group_name: str = field(metadata={"alias": "alertingGroupName"})


@dataclass(kw_only=True)
class GroupFindMeFollowMeGetAlertingGroupSelectiveCriteriaRequest21(OCIRequest):
    """Request to get all the information of a specific Find-me/Follow-me alerting group selective criteria.
        The response is either GroupFindMeFollowMeGetAlertingGroupResponse21 or ErrorResponse.

    Attributes:

        service_user_id (str):

        alerting_group_name (str):

        criteria_name (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    alerting_group_name: str = field(metadata={"alias": "alertingGroupName"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class GroupFindMeFollowMeGetInstanceListRequest(OCIRequest):
    """Get a list of Find-me/Follow-me instances within a group.
        The response is either GroupFindMeFollowMeGetInstanceListResponse or ErrorResponse.
        It is possible to get the instances within a specified department.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_department_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_department_name: Optional[str] = field(
        default=None, metadata={"alias": "groupDepartmentName"}
    )


@dataclass(kw_only=True)
class GroupFindMeFollowMeGetInstanceRequest19sp1(OCIRequest):
    """Request to get all the information of a Find-me/Follow-me instance.
        The response is either GroupFindMeFollowMeGetInstanceResponse19sp1 or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupFindMeFollowMeModifyActiveInstanceListRequest(OCIRequest):
    """Request to set the active status of Find-me/Follow-me instances.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_activation (Optional[List[ServiceActivation]]):

    """

    service_activation: Optional[List[ServiceActivation]] = field(
        default=None, metadata={"alias": "serviceActivation"}
    )


@dataclass(kw_only=True)
class GroupFindMeFollowMeModifyAlertingGroupListRequest(OCIRequest):
    """Modify the priorities assigned to alerting groups
        The response is either a SuccessResponse or an ErrorResponse.
        NOTE: The command fails if all the alerting groups defined for the user are not provided.

    Attributes:

        service_user_id (str):

        alerting_group_name (Optional[List[str]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    alerting_group_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "alertingGroupName"}
    )


@dataclass(kw_only=True)
class GroupFindMeFollowMeModifyAlertingGroupRequest(OCIRequest):
    """Modify a Find-me/Follow-me alerting group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        alerting_group_name (str):

        new_alerting_group_name (Optional[str]):

        alerting_group_description (Optional[Nillable[str]]):

        use_diversion_inhibitor (Optional[bool]):

        answer_confirmation_required (Optional[bool]):

        number_of_rings (Optional[int]):

        phone_number_or_user_list (Optional[Nillable[FindMeFollowMeAlertingGroupReplacementOutgoingDNSIPURIorUserIdList]]):

        criteria_activation (Optional[List[CriteriaActivation]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    alerting_group_name: str = field(metadata={"alias": "alertingGroupName"})

    new_alerting_group_name: Optional[str] = field(
        default=None, metadata={"alias": "newAlertingGroupName"}
    )

    alerting_group_description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "alertingGroupDescription"}
    )

    use_diversion_inhibitor: Optional[bool] = field(
        default=None, metadata={"alias": "useDiversionInhibitor"}
    )

    answer_confirmation_required: Optional[bool] = field(
        default=None, metadata={"alias": "answerConfirmationRequired"}
    )

    number_of_rings: Optional[int] = field(
        default=None, metadata={"alias": "numberOfRings"}
    )

    phone_number_or_user_list: Optional[
        Nillable[FindMeFollowMeAlertingGroupReplacementOutgoingDNSIPURIorUserIdList]
    ] = field(default=None, metadata={"alias": "phoneNumberOrUserList"})

    criteria_activation: Optional[List[CriteriaActivation]] = field(
        default=None, metadata={"alias": "criteriaActivation"}
    )

    def __post_init__(self):
        nillable_fields = ["alerting_group_description", "phone_number_or_user_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupFindMeFollowMeModifyAlertingGroupSelectiveCriteriaRequest(OCIRequest):
    """Modify a Find-me/Follow-me alerting group criteria.
        For the callToNumbers in the callToNumberList, the extension and number elements are not used and the only types accepted for each number are Primary and Alternates. If other type is specified the command fails.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        alerting_group_name (str):

        criteria_name (str):

        new_criteria_name (Optional[str]):

        time_schedule (Optional[Nillable[TimeSchedule]]):

        from_dn_criteria (Optional[CriteriaFromDnModify]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        blacklisted (Optional[bool]):

        call_to_number_list (Optional[Nillable[ReplacementCallToNumberList]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    alerting_group_name: str = field(metadata={"alias": "alertingGroupName"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    new_criteria_name: Optional[str] = field(
        default=None, metadata={"alias": "newCriteriaName"}
    )

    time_schedule: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    from_dn_criteria: Optional[CriteriaFromDnModify] = field(
        default=None, metadata={"alias": "fromDnCriteria"}
    )

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: Optional[bool] = field(default=None, metadata={"alias": "blacklisted"})

    call_to_number_list: Optional[Nillable[ReplacementCallToNumberList]] = field(
        default=None, metadata={"alias": "callToNumberList"}
    )

    def __post_init__(self):
        nillable_fields = ["time_schedule", "holiday_schedule", "call_to_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupFindMeFollowMeModifyInstanceRequest(OCIRequest):
    """Request to modify a Find-me/Follow-me instance.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        service_instance_profile (Optional[ServiceInstanceModifyProfile]):

        network_class_of_service (Optional[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: Optional[ServiceInstanceModifyProfile] = field(
        default=None, metadata={"alias": "serviceInstanceProfile"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupFlexibleSeatingAccessDeviceGetListRequest(OCIRequest):
    """Requests the list of access devices available for assignment to a flexible
        seating host or guest. The list includes devices created at the system, service
        provider, and group levels that support device management.
        The response is either GroupFlexibleSeatingAccessDeviceGetListResponse or
        ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupFlexibleSeatingHostAddInstanceRequest22(OCIRequest):
    """Add a flexible seating host instance to a group.
        The domain is required in the serviceUserId.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_user_id (str):

        service_instance_profile (ServiceInstanceAddProfileFlexibleSeatingHost):

        access_device_endpoint (Optional[AccessDeviceMultipleContactEndpointAdd22]):

        network_class_of_service (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: ServiceInstanceAddProfileFlexibleSeatingHost = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    access_device_endpoint: Optional[AccessDeviceMultipleContactEndpointAdd22] = field(
        default=None, metadata={"alias": "accessDeviceEndpoint"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupFlexibleSeatingHostDeleteInstanceRequest(OCIRequest):
    """Delete a flexible seating host instance from a group. Host cannot be deleted when a guest is associated to a host.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupFlexibleSeatingHostGetInstanceListRequest(OCIRequest):
    """Get a list of flexible seating host instances within a group.
        The response is either GroupFlexibleSeatingHostGetInstanceListResponse or ErrorResponse.
        It is possible to get the instances within a specified department.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_department_name (Optional[str]):

        response_size_limit (Optional[int]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_service_instance_name (Optional[List[SearchCriteriaServiceInstanceName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_department_name: Optional[str] = field(
        default=None, metadata={"alias": "groupDepartmentName"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_service_instance_name: Optional[
        List[SearchCriteriaServiceInstanceName]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceInstanceName"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupFlexibleSeatingHostGetInstanceRequest22(OCIRequest):
    """Request to get all the information of a flexible seating host instance.
        The response is either GroupFlexibleSeatingHostGetInstanceResponse22 or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupFlexibleSeatingHostGuestAssociationGetRequest(OCIRequest):
    """Request the flexible seating host guest association details.
            The response is either a GroupFlexibleSeatingHostGuestAssociationGetResponse or an ErrorResponse.
    accessLevel is always set to Group for a Service Provider

        Attributes:

            service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupFlexibleSeatingHostGuestAssociationModifyRequest(OCIRequest):
    """Modify the flexible seating host’s guest association attributes.
        The request fails if enforceAssociationLimit or associationLimitHours are changed when the host is associated to a guest.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        enforce_association_limit (Optional[bool]):

        association_limit_hours (Optional[int]):

        access_level (Optional[str]):

        remove_guest_association (Optional[bool]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    enforce_association_limit: Optional[bool] = field(
        default=None, metadata={"alias": "enforceAssociationLimit"}
    )

    association_limit_hours: Optional[int] = field(
        default=None, metadata={"alias": "associationLimitHours"}
    )

    access_level: Optional[str] = field(default=None, metadata={"alias": "accessLevel"})

    remove_guest_association: Optional[bool] = field(
        default=None, metadata={"alias": "removeGuestAssociation"}
    )


@dataclass(kw_only=True)
class GroupFlexibleSeatingHostModifyActiveInstanceListRequest(OCIRequest):
    """Request to set the active status of flexible seating host instances. Host cannot be disabled when a flexible seating guest is associated.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_activation (Optional[List[ServiceActivation]]):

    """

    service_activation: Optional[List[ServiceActivation]] = field(
        default=None, metadata={"alias": "serviceActivation"}
    )


@dataclass(kw_only=True)
class GroupFlexibleSeatingHostModifyInstanceRequest22(OCIRequest):
    """Request to modify a flexible seating host instance.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        service_instance_profile (Optional[ServiceInstanceModifyProfileFlexibleSeatingHost]):

        access_device_endpoint (Optional[Nillable[AccessDeviceMultipleContactEndpointModify22]]):

        network_class_of_service (Optional[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: Optional[
        ServiceInstanceModifyProfileFlexibleSeatingHost
    ] = field(default=None, metadata={"alias": "serviceInstanceProfile"})

    access_device_endpoint: Optional[
        Nillable[AccessDeviceMultipleContactEndpointModify22]
    ] = field(default=None, metadata={"alias": "accessDeviceEndpoint"})

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    def __post_init__(self):
        nillable_fields = ["access_device_endpoint"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupFlexibleSeatingHostRoutingPoliciesGetRequest(OCIRequest):
    """Get a flexible seating host’s routing policies
        The response is either a GroupFlexibleSeatingHostRoutingPoliciesGetResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupFlexibleSeatingHostRoutingPoliciesModifyRequest(OCIRequest):
    """Modify a flexible seating host’s routing policies
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        allow_emergency_calls (Optional[bool]):

        allow_calls_to_voice_portal (Optional[bool]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    allow_emergency_calls: Optional[bool] = field(
        default=None, metadata={"alias": "allowEmergencyCalls"}
    )

    allow_calls_to_voice_portal: Optional[bool] = field(
        default=None, metadata={"alias": "allowCallsToVoicePortal"}
    )


@dataclass(kw_only=True)
class GroupGetAvailableLeafDeviceListRequest22(OCIRequest):
    """Requests the list of available leaf devices that can be linked to a tree device within a specific group.
        A leaf device is a device associated with a device type that has the option
        supportLinks set to \"Support Link to Device\" or \"Support Link to Device and User\".  It can
        be linked to only one tree device.
        The list returned includes devices created at the system, service provider, and group levels.
        If the leafDeviceCategory is not set in the request, then linked leaf devices of all categories are requested, otherwise only the linked leaf devices of the specified category are requested.
        The category values are: \"Handset\", \"Base Station\", \"All\".

        The response is either GroupGetAvailableLeafDeviceListResponse22 or
        ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        leaf_device_category (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    leaf_device_category: Optional[str] = field(
        default=None, metadata={"alias": "leafDeviceCategory"}
    )


@dataclass(kw_only=True)
class GroupGetAvailableTreeDeviceListRequest(OCIRequest):
    """Requests the list of available tree devices to which leaf devices can be linked to within a specific group.
        A tree device is a device associated with a device type that has the option
        supportLinks set to \"Support Links from Devices\". Many leaf devices can be linked to it.
        The list returned includes devices created at the system, service provider, and group levels.
        The response is either GroupGetAvailableTreeDeviceListResponse or
        ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupGetDefaultRequest(OCIRequest):
    """Request the default profile for a group.
        The response is either a GroupGetDefaultResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class GroupGetListInServiceProviderPagedSortedListRequest(OCIRequest):
    """Request the list of groups in a service provider or enterprise.
        If no sortOrder is included, the response is sorted by Group Id ascending by default.
        The response is either a GroupGetListInServiceProviderPagedSortedListResponse or an ErrorResponse.
        If the responsePagingControl element is not provided, the paging startIndex will be set to 1 by
        default, and the responsePageSize will be set to the maximum responsePageSize by default.
        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is
        included. Then the search criteria are logically ORed together.

    Attributes:

        service_provider_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderGroupGetListInServiceProviderPagedSortedList]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_group_name (Optional[List[SearchCriteriaGroupName]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[
        List[SortOrderGroupGetListInServiceProviderPagedSortedList]
    ] = field(default=None, metadata={"alias": "sortOrder"})

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_group_name: Optional[List[SearchCriteriaGroupName]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupName"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupGetListInServiceProviderRequest(OCIRequest):
    """Request the list of groups in a service provider or enterprise.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        The response is either a GroupGetListInServiceProviderResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_group_name (Optional[List[SearchCriteriaGroupName]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_group_name: Optional[List[SearchCriteriaGroupName]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupName"}
    )


@dataclass(kw_only=True)
class GroupGetListInSystemRequest(OCIRequest):
    """Request the list of groups in the system.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        If reseller administrator sends the request, searchCriteriaResellerId is ignored. All the groups
        in the administrator's reseller meeting the search criteria are returned.

        The response is either a GroupGetListInSystemResponse or an ErrorResponse.

        The following data elements are only used in AS data mode:
          searchCriteriaResellerId

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_group_name (Optional[List[SearchCriteriaGroupName]]):

        search_criteria_exact_service_provider (Optional[SearchCriteriaExactServiceProvider]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_reseller_id (Optional[List[SearchCriteriaResellerId]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_group_name: Optional[List[SearchCriteriaGroupName]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupName"}
    )

    search_criteria_exact_service_provider: Optional[
        SearchCriteriaExactServiceProvider
    ] = field(default=None, metadata={"alias": "searchCriteriaExactServiceProvider"})

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_reseller_id: Optional[List[SearchCriteriaResellerId]] = field(
        default=None, metadata={"alias": "searchCriteriaResellerId"}
    )


@dataclass(kw_only=True)
class GroupGetRequest22V5(OCIRequest):
    """Get the profile for a group.
        The response is either a GroupGetResponse22V5 or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          groupExternalId

    Attributes:

        service_provider_id (Optional[str]):

        group_id (Optional[str]):

        group_external_id (Optional[str]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    group_external_id: Optional[str] = field(
        default=None, metadata={"alias": "groupExternalId"}
    )


@dataclass(kw_only=True)
class GroupGetUserServiceAssignedUserListRequest(OCIRequest):
    """Get the list of users assigned the user service or service pack.
        The response is either a GroupGetUserServiceAssignedUserListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_name (Optional[str]):

        service_pack_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_name: Optional[str] = field(default=None, metadata={"alias": "serviceName"})

    service_pack_name: Optional[str] = field(
        default=None, metadata={"alias": "servicePackName"}
    )


@dataclass(kw_only=True)
class GroupGroupNightForwardingGetRequest(OCIRequest):
    """Request to get the Group Night Forwarding group parameters.
        The response is either GroupGroupNightForwardingGetResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupGroupNightForwardingModifyRequest(OCIRequest):
    """Request to modify the Group Night Forwarding group parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        night_forwarding (Optional[str]):

        business_hours (Optional[Nillable[TimeSchedule]]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        forward_to_phone_number (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    night_forwarding: Optional[str] = field(
        default=None, metadata={"alias": "nightForwarding"}
    )

    business_hours: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "businessHours"}
    )

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    forward_to_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    def __post_init__(self):
        nillable_fields = [
            "business_hours",
            "holiday_schedule",
            "forward_to_phone_number",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupGroupPagingAddInstanceRequest(OCIRequest):
    """Add a Group Paging instance to a group.
        The domain is required in the serviceUserId.
        The response is either SuccessResponse or ErrorResponse.

        The following element is only used in AS data mode and ignored in XS data mode:
           networkClassOfService

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_user_id (str):

        service_instance_profile (ServiceInstanceAddProfile):

        confirmation_tone_timeout_seconds (int):

        deliver_originator_clid_instead (bool):

        originator_clid_prefix (Optional[str]):

        network_class_of_service (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: ServiceInstanceAddProfile = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    confirmation_tone_timeout_seconds: int = field(
        metadata={"alias": "confirmationToneTimeoutSeconds"}
    )

    deliver_originator_clid_instead: bool = field(
        metadata={"alias": "deliverOriginatorCLIDInstead"}
    )

    originator_clid_prefix: Optional[str] = field(
        default=None, metadata={"alias": "originatorCLIDPrefix"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupGroupPagingAddOriginatorListRequest(OCIRequest):
    """Add originator(s) to a paging group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        originator_user_id (List[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    originator_user_id: List[str] = field(metadata={"alias": "originatorUserId"})


@dataclass(kw_only=True)
class GroupGroupPagingAddTargetListRequest(OCIRequest):
    """Add target(s) to a paging group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        target_user_id (List[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    target_user_id: List[str] = field(metadata={"alias": "targetUserId"})


@dataclass(kw_only=True)
class GroupGroupPagingDeleteInstanceRequest(OCIRequest):
    """Delete a Group Paging instance from a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupGroupPagingDeleteOriginatorListRequest(OCIRequest):
    """Delete originator(s) from a paging group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        originator_user_id (List[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    originator_user_id: List[str] = field(metadata={"alias": "originatorUserId"})


@dataclass(kw_only=True)
class GroupGroupPagingDeleteTargetListRequest(OCIRequest):
    """Delete target(s) from a paging group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        target_user_id (List[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    target_user_id: List[str] = field(metadata={"alias": "targetUserId"})


@dataclass(kw_only=True)
class GroupGroupPagingGetAvailableOriginatorListRequest(OCIRequest):
    """Get a list of users that can be assigned as originators to a given paging group.
        Searching for users by group only makes sense when the paging group is part of an Enterprise.
        The response is either GroupGroupPagingGetAvailableOriginatorListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupGroupPagingGetAvailableTargetListRequest(OCIRequest):
    """Get a list of users that can be assigned as targets to a given paging group.
        Searching for users by group only makes sense when the paging group is part of an Enterprise.
        The response is either GroupGroupPagingGetAvailableTargetListResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupGroupPagingGetInstanceListRequest(OCIRequest):
    """Get a list of Paging Groups instances within a group.
        The response is either GroupGroupPagingGetInstanceListResponse or ErrorResponse.
        It is possible to get the instances within a specified department.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_department_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_department_name: Optional[str] = field(
        default=None, metadata={"alias": "groupDepartmentName"}
    )


@dataclass(kw_only=True)
class GroupGroupPagingGetInstanceRequest19sp1(OCIRequest):
    """Request to get all the information of a Group Paging instance.
        The response is either GroupGroupPagingGetInstanceResponse19sp1 or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupGroupPagingGetOriginatorListRequest(OCIRequest):
    """Get a list of originators assigned to a paging group.
        The response is either a
        GroupGroupPagingGetOriginatorListResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupGroupPagingGetTargetListRequest(OCIRequest):
    """Get a list of targets assigned to a paging group.
        The response is either a
        GroupGroupPagingGetTargetListResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupGroupPagingModifyActiveInstanceListRequest(OCIRequest):
    """Request to set the active status of Group Paging instances.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_activation (Optional[List[ServiceActivation]]):

    """

    service_activation: Optional[List[ServiceActivation]] = field(
        default=None, metadata={"alias": "serviceActivation"}
    )


@dataclass(kw_only=True)
class GroupGroupPagingModifyInstanceRequest(OCIRequest):
    """Request to modify a Group Paging instance.
        The response is either SuccessResponse or ErrorResponse.

        The following element is only used in AS data mode and ignored in XS data mode:
           networkClassOfService

    Attributes:

        service_user_id (str):

        service_instance_profile (Optional[ServiceInstanceModifyProfile]):

        confirmation_tone_timeout_seconds (Optional[int]):

        deliver_originator_clid_instead (Optional[bool]):

        originator_clid_prefix (Optional[Nillable[str]]):

        network_class_of_service (Optional[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: Optional[ServiceInstanceModifyProfile] = field(
        default=None, metadata={"alias": "serviceInstanceProfile"}
    )

    confirmation_tone_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "confirmationToneTimeoutSeconds"}
    )

    deliver_originator_clid_instead: Optional[bool] = field(
        default=None, metadata={"alias": "deliverOriginatorCLIDInstead"}
    )

    originator_clid_prefix: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "originatorCLIDPrefix"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    def __post_init__(self):
        nillable_fields = ["originator_clid_prefix"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupGroupPagingModifyOriginatorListRequest(OCIRequest):
    """Request to modify the originator list for a paging group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        originator_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    originator_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "originatorUserIdList"}
    )

    def __post_init__(self):
        nillable_fields = ["originator_user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupGroupPagingModifyTargetListRequest(OCIRequest):
    """Request to modify the target list for a paging group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        target_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    target_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "targetUserIdList"}
    )

    def __post_init__(self):
        nillable_fields = ["target_user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupGroupPagingTargetsCapacityGetRequest22(OCIRequest):
    """Request the maximum number of target users per paging group configured for a group.
        The response is either a GroupGroupPagingTargetsCapacityGetResponse22
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupGroupPagingTargetsCapacityModifyRequest22(OCIRequest):
    """Modify the maximum number of target users per paging group configured for a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        maximum_target_users (Optional[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    maximum_target_users: Optional[int] = field(
        default=None, metadata={"alias": "maximumTargetUsers"}
    )


@dataclass(kw_only=True)
class GroupHuntGroupAddInstanceRequest20(OCIRequest):
    """Add a Hunt Group instance to a group.
        The domain is required in the serviceUserId.
        The response is either SuccessResponse or ErrorResponse.
        The following elements are only used in AS data mode:
           useSystemHuntGroupCLIDSetting, use value \"true\" in XS data mode
           includeHuntGroupNameInCLID, use value \"true\" in XS data mode

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_user_id (str):

        service_instance_profile (ServiceInstanceAddProfile):

        policy (str):

        hunt_after_no_answer (bool):

        no_answer_number_of_rings (int):

        forward_after_timeout (bool):

        forward_timeout_seconds (int):

        forward_to_phone_number (Optional[str]):

        agent_user_id (Optional[List[str]]):

        allow_call_waiting_for_agents (bool):

        use_system_hunt_group_clid_setting (bool):

        include_hunt_group_name_in_clid (bool):

        enable_not_reachable_forwarding (bool):

        not_reachable_forward_to_phone_number (Optional[str]):

        make_busy_when_not_reachable (bool):

        allow_members_to_control_group_busy (bool):

        enable_group_busy (bool):

        apply_group_busy_when_terminating_to_agent (bool):

        network_class_of_service (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: ServiceInstanceAddProfile = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    policy: str = field(metadata={"alias": "policy"})

    hunt_after_no_answer: bool = field(metadata={"alias": "huntAfterNoAnswer"})

    no_answer_number_of_rings: int = field(metadata={"alias": "noAnswerNumberOfRings"})

    forward_after_timeout: bool = field(metadata={"alias": "forwardAfterTimeout"})

    forward_timeout_seconds: int = field(metadata={"alias": "forwardTimeoutSeconds"})

    forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    agent_user_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "agentUserId"}
    )

    allow_call_waiting_for_agents: bool = field(
        metadata={"alias": "allowCallWaitingForAgents"}
    )

    use_system_hunt_group_clid_setting: bool = field(
        metadata={"alias": "useSystemHuntGroupCLIDSetting"}
    )

    include_hunt_group_name_in_clid: bool = field(
        metadata={"alias": "includeHuntGroupNameInCLID"}
    )

    enable_not_reachable_forwarding: bool = field(
        metadata={"alias": "enableNotReachableForwarding"}
    )

    not_reachable_forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "notReachableForwardToPhoneNumber"}
    )

    make_busy_when_not_reachable: bool = field(
        metadata={"alias": "makeBusyWhenNotReachable"}
    )

    allow_members_to_control_group_busy: bool = field(
        metadata={"alias": "allowMembersToControlGroupBusy"}
    )

    enable_group_busy: bool = field(metadata={"alias": "enableGroupBusy"})

    apply_group_busy_when_terminating_to_agent: bool = field(
        metadata={"alias": "applyGroupBusyWhenTerminatingToAgent"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupHuntGroupConsolidatedAddInstanceRequest(OCIRequest):
    """Add a Hunt Group instance to a group.
        The domain is required in the serviceUserId.

        If the phoneNumber has not been assigned to the group and addPhoneNumberToGroup is set to true,
        it will be added to group if the command is executed by a service provider administrator or above
        and the number is already assigned to the service provider. The command will fail otherwise.

        The weight element inside the agentWeight element will only take effect if the policy element is
        set to \"Weighted\" in the request.

        The response is either SuccessResponse or ErrorResponse.
        The following elements are only used in AS data mode:
           useSystemHuntGroupCLIDSetting, use value \"true\" in XS data mode
           includeHuntGroupNameInCLID, use value \"true\" in XS data mode

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_user_id (str):

        add_phone_number_to_group (Optional[bool]):

        service_instance_profile (ServiceInstanceAddProfile):

        policy (str):

        hunt_after_no_answer (bool):

        no_answer_number_of_rings (int):

        forward_after_timeout (bool):

        forward_timeout_seconds (int):

        forward_to_phone_number (Optional[str]):

        agent_user_id (Optional[List[str]]):

        agent_weight (Optional[List[HuntAgentWeight]]):

        allow_call_waiting_for_agents (bool):

        use_system_hunt_group_clid_setting (bool):

        include_hunt_group_name_in_clid (bool):

        enable_not_reachable_forwarding (bool):

        not_reachable_forward_to_phone_number (Optional[str]):

        make_busy_when_not_reachable (bool):

        allow_members_to_control_group_busy (bool):

        enable_group_busy (bool):

        apply_group_busy_when_terminating_to_agent (bool):

        network_class_of_service (Optional[str]):

        service (Optional[List[ConsolidatedUserServiceAssignment]]):

        is_active (bool):

        directory_number_hunting_agent_user_id_list (Optional[List[str]]):

        directory_number_hunting_use_terminate_call_to_agent_first (Optional[bool]):

        directory_number_hunting_use_original_agent_services_for_busy_and_no_answer_calls (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    add_phone_number_to_group: Optional[bool] = field(
        default=None, metadata={"alias": "addPhoneNumberToGroup"}
    )

    service_instance_profile: ServiceInstanceAddProfile = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    policy: str = field(metadata={"alias": "policy"})

    hunt_after_no_answer: bool = field(metadata={"alias": "huntAfterNoAnswer"})

    no_answer_number_of_rings: int = field(metadata={"alias": "noAnswerNumberOfRings"})

    forward_after_timeout: bool = field(metadata={"alias": "forwardAfterTimeout"})

    forward_timeout_seconds: int = field(metadata={"alias": "forwardTimeoutSeconds"})

    forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    agent_user_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "agentUserId"}
    )

    agent_weight: Optional[List[HuntAgentWeight]] = field(
        default=None, metadata={"alias": "agentWeight"}
    )

    allow_call_waiting_for_agents: bool = field(
        metadata={"alias": "allowCallWaitingForAgents"}
    )

    use_system_hunt_group_clid_setting: bool = field(
        metadata={"alias": "useSystemHuntGroupCLIDSetting"}
    )

    include_hunt_group_name_in_clid: bool = field(
        metadata={"alias": "includeHuntGroupNameInCLID"}
    )

    enable_not_reachable_forwarding: bool = field(
        metadata={"alias": "enableNotReachableForwarding"}
    )

    not_reachable_forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "notReachableForwardToPhoneNumber"}
    )

    make_busy_when_not_reachable: bool = field(
        metadata={"alias": "makeBusyWhenNotReachable"}
    )

    allow_members_to_control_group_busy: bool = field(
        metadata={"alias": "allowMembersToControlGroupBusy"}
    )

    enable_group_busy: bool = field(metadata={"alias": "enableGroupBusy"})

    apply_group_busy_when_terminating_to_agent: bool = field(
        metadata={"alias": "applyGroupBusyWhenTerminatingToAgent"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    service: Optional[List[ConsolidatedUserServiceAssignment]] = field(
        default=None, metadata={"alias": "service"}
    )

    is_active: bool = field(metadata={"alias": "isActive"})

    directory_number_hunting_agent_user_id_list: Optional[List[str]] = field(
        default=None, metadata={"alias": "directoryNumberHuntingAgentUserIdList"}
    )

    directory_number_hunting_use_terminate_call_to_agent_first: Optional[bool] = field(
        default=None,
        metadata={"alias": "directoryNumberHuntingUseTerminateCallToAgentFirst"},
    )

    directory_number_hunting_use_original_agent_services_for_busy_and_no_answer_calls: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "directoryNumberHuntingUseOriginalAgentServicesForBusyAndNoAnswerCalls"
        },
    )


@dataclass(kw_only=True)
class GroupHuntGroupConsolidatedDeleteInstanceRequest(OCIRequest):
    """Delete a Hunt Group instance from a group.

        If UnassignPhoneNumbersLevel is set to 'Group', the user's primary phone number, fax number and any alternate numbers, will be un-assigned from the group if the command is executed by a service provider administrator or above.
        When set to 'Service Provider', they will be un-assigned from the group and service provider if the command is executed by a provisioning administrator or above.
        When omitted, the number(s) will be left assigned to the group.
        An ErrorResponse will be returned if any number cannot be unassigned because of insufficient privilege.

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        unassign_phone_numbers (Optional[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    unassign_phone_numbers: Optional[str] = field(
        default=None, metadata={"alias": "unassignPhoneNumbers"}
    )


@dataclass(kw_only=True)
class GroupHuntGroupConsolidatedModifyInstanceRequest(OCIRequest):
    """Request to modify a Hunt Group instance.

        When phone numbers are un-assigned from the user, the unused numbers may be un-assigned from the group and service provider. If UnassignPhoneNumbersLevel is set to 'Group', the user's primary phone number, fax number and any alternate numbers, will be un-assigned from the group if the command is executed by a service provider administrator or above.
        When set to 'Service Provider', they will be un-assigned from the group and service provider if the command is executed by a provisioning administrator or above.
        When omitted, the number(s) will be left assigned to the group.
        An ErrorResponse will be returned if any number cannot be unassigned because of insufficient privilege.

        If the phoneNumber has not been assigned to the group and addPhoneNumberToGroup is set to true, it will be added to group if needed if the command is executed by a service provider administrator and above. The command will fail otherwise.

        The response is either SuccessResponse or ErrorResponse.
        The following elements are only used in AS data mode:
           useSystemHuntGroupCLIDSetting
           includeHuntGroupNameInCLID

    Attributes:

        service_user_id (str):

        unassign_phone_numbers (Optional[str]):

        add_phone_number_to_group (Optional[bool]):

        service_instance_profile (Optional[ServiceInstanceModifyProfile]):

        policy (Optional[str]):

        hunt_after_no_answer (Optional[bool]):

        no_answer_number_of_rings (Optional[int]):

        forward_after_timeout (Optional[bool]):

        forward_timeout_seconds (Optional[int]):

        forward_to_phone_number (Optional[Nillable[str]]):

        agent_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

        agent_weight_list (Optional[Nillable[ReplacementAgentWeightList]]):

        allow_call_waiting_for_agents (Optional[bool]):

        use_system_hunt_group_clid_setting (Optional[bool]):

        include_hunt_group_name_in_clid (Optional[bool]):

        enable_not_reachable_forwarding (Optional[bool]):

        not_reachable_forward_to_phone_number (Optional[Nillable[str]]):

        make_busy_when_not_reachable (Optional[bool]):

        allow_members_to_control_group_busy (Optional[bool]):

        enable_group_busy (Optional[bool]):

        apply_group_busy_when_terminating_to_agent (Optional[bool]):

        network_class_of_service (Optional[str]):

        service_list (Optional[Nillable[ReplacementConsolidatedUserServiceAssignmentList]]):

        is_active (Optional[bool]):

        directory_number_hunting_agent_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

        directory_number_hunting_use_terminate_call_to_agent_first (Optional[bool]):

        directory_number_hunting_use_original_agent_services_for_busy_and_no_answer_calls (Optional[bool]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    unassign_phone_numbers: Optional[str] = field(
        default=None, metadata={"alias": "unassignPhoneNumbers"}
    )

    add_phone_number_to_group: Optional[bool] = field(
        default=None, metadata={"alias": "addPhoneNumberToGroup"}
    )

    service_instance_profile: Optional[ServiceInstanceModifyProfile] = field(
        default=None, metadata={"alias": "serviceInstanceProfile"}
    )

    policy: Optional[str] = field(default=None, metadata={"alias": "policy"})

    hunt_after_no_answer: Optional[bool] = field(
        default=None, metadata={"alias": "huntAfterNoAnswer"}
    )

    no_answer_number_of_rings: Optional[int] = field(
        default=None, metadata={"alias": "noAnswerNumberOfRings"}
    )

    forward_after_timeout: Optional[bool] = field(
        default=None, metadata={"alias": "forwardAfterTimeout"}
    )

    forward_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "forwardTimeoutSeconds"}
    )

    forward_to_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    agent_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "agentUserIdList"}
    )

    agent_weight_list: Optional[Nillable[ReplacementAgentWeightList]] = field(
        default=None, metadata={"alias": "agentWeightList"}
    )

    allow_call_waiting_for_agents: Optional[bool] = field(
        default=None, metadata={"alias": "allowCallWaitingForAgents"}
    )

    use_system_hunt_group_clid_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemHuntGroupCLIDSetting"}
    )

    include_hunt_group_name_in_clid: Optional[bool] = field(
        default=None, metadata={"alias": "includeHuntGroupNameInCLID"}
    )

    enable_not_reachable_forwarding: Optional[bool] = field(
        default=None, metadata={"alias": "enableNotReachableForwarding"}
    )

    not_reachable_forward_to_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "notReachableForwardToPhoneNumber"}
    )

    make_busy_when_not_reachable: Optional[bool] = field(
        default=None, metadata={"alias": "makeBusyWhenNotReachable"}
    )

    allow_members_to_control_group_busy: Optional[bool] = field(
        default=None, metadata={"alias": "allowMembersToControlGroupBusy"}
    )

    enable_group_busy: Optional[bool] = field(
        default=None, metadata={"alias": "enableGroupBusy"}
    )

    apply_group_busy_when_terminating_to_agent: Optional[bool] = field(
        default=None, metadata={"alias": "applyGroupBusyWhenTerminatingToAgent"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    service_list: Optional[
        Nillable[ReplacementConsolidatedUserServiceAssignmentList]
    ] = field(default=None, metadata={"alias": "serviceList"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    directory_number_hunting_agent_user_id_list: Optional[
        Nillable[ReplacementUserIdList]
    ] = field(default=None, metadata={"alias": "directoryNumberHuntingAgentUserIdList"})

    directory_number_hunting_use_terminate_call_to_agent_first: Optional[bool] = field(
        default=None,
        metadata={"alias": "directoryNumberHuntingUseTerminateCallToAgentFirst"},
    )

    directory_number_hunting_use_original_agent_services_for_busy_and_no_answer_calls: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "directoryNumberHuntingUseOriginalAgentServicesForBusyAndNoAnswerCalls"
        },
    )

    def __post_init__(self):
        nillable_fields = [
            "forward_to_phone_number",
            "agent_user_id_list",
            "agent_weight_list",
            "not_reachable_forward_to_phone_number",
            "service_list",
            "directory_number_hunting_agent_user_id_list",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupHuntGroupDeleteInstanceRequest(OCIRequest):
    """Delete a Hunt Group instance from a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupHuntGroupGetAvailableUserListRequest(OCIRequest):
    """Get a list of users that can be assigned to a Hunt Group group.
        Searching for users by group only makes sense when the hunt group is part of an Enterprise.
        The response is either GroupHuntGroupGetAvailableUserListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupHuntGroupGetAvailableUserPagedSortedListRequest(OCIRequest):
    """Get a list of users that can be assigned to a Hunt Group group.
        Searching for users by group only makes sense when the hunt group is part of an Enterprise.

        A limitation to the search by DN activation exists when the Number Activation mode is set to
        Off. In this case DNs not assigned to users are never returned by queries with the
        \"dnActivationSearchCriteria\" included.

        The response is either GroupHuntGroupGetAvailableUserPagedSortedListResponse or ErrorResponse.
        If no sortOrder is included, the response is sorted by User Id ascending by default.
        If the responsePagingControl element is not provided, the paging startIndex will be set to 1 by
        default, and the responsePageSize will be set to the maximum responsePageSize by default.
        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is
        included. Then the search criteria are logically ORed together.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderGroupHuntGroupGetAvailableUserPagedSortedList]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_dn_activation (Optional[SearchCriteriaExactDnActivation]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[
        List[SortOrderGroupHuntGroupGetAvailableUserPagedSortedList]
    ] = field(default=None, metadata={"alias": "sortOrder"})

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_dn_activation: Optional[SearchCriteriaExactDnActivation] = (
        field(default=None, metadata={"alias": "searchCriteriaExactDnActivation"})
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupHuntGroupGetInstanceListRequest(OCIRequest):
    """Get a list of Hunt Group instances within a group.
        The response is either GroupHuntGroupGetInstanceListResponse or ErrorResponse.
        It is possible to get the instances within a specified department.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_department_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_department_name: Optional[str] = field(
        default=None, metadata={"alias": "groupDepartmentName"}
    )


@dataclass(kw_only=True)
class GroupHuntGroupGetInstancePagedSortedListRequest(OCIRequest):
    """Get a list of Hunt Group instances within a group.
        The response is either GroupHuntGroupGetInstancePagedSortedListResponse or ErrorResponse.
        It is possible to get the instances within a specified department.

        The department in both the search criteria and sort by fields refer to the department to which
        the dn belongs.
        If no sortOrder is included, the response is sorted by User Id ascending by default.
        If the responsePagingControl element is not provided, the paging startIndex will be set to 1 by
        default, and the responsePageSize will be set to the maximum responsePageSize by default.
        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is
        included. Then the search criteria are logically ORed together.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderGroupHuntGroupGetInstancePagedSortedList]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_dn_activation (Optional[SearchCriteriaExactDnActivation]):

        search_criteria_service_status (Optional[SearchCriteriaServiceStatus]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[List[SortOrderGroupHuntGroupGetInstancePagedSortedList]] = (
        field(default=None, metadata={"alias": "sortOrder"})
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_dn_activation: Optional[SearchCriteriaExactDnActivation] = (
        field(default=None, metadata={"alias": "searchCriteriaExactDnActivation"})
    )

    search_criteria_service_status: Optional[SearchCriteriaServiceStatus] = field(
        default=None, metadata={"alias": "searchCriteriaServiceStatus"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupHuntGroupGetInstanceRequest20(OCIRequest):
    """Request to get all the information of a Hunt Group instance.
        The response is either GroupHuntGroupGetInstanceResponse20 or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupHuntGroupModifyActiveInstanceListRequest(OCIRequest):
    """Request to set the active status of Hunt Group instances.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_activation (Optional[List[ServiceActivation]]):

    """

    service_activation: Optional[List[ServiceActivation]] = field(
        default=None, metadata={"alias": "serviceActivation"}
    )


@dataclass(kw_only=True)
class GroupHuntGroupModifyInstanceRequest(OCIRequest):
    """Request to modify a Hunt Group instance.
        The response is either SuccessResponse or ErrorResponse.
        The following elements are only used in AS data mode:
           useSystemHuntGroupCLIDSetting
           includeHuntGroupNameInCLID
           applyGroupBusyWhenTerminatingToAgent
           networkClassOfService

    Attributes:

        service_user_id (str):

        service_instance_profile (Optional[ServiceInstanceModifyProfile]):

        policy (Optional[str]):

        hunt_after_no_answer (Optional[bool]):

        no_answer_number_of_rings (Optional[int]):

        forward_after_timeout (Optional[bool]):

        forward_timeout_seconds (Optional[int]):

        forward_to_phone_number (Optional[Nillable[str]]):

        agent_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

        allow_call_waiting_for_agents (Optional[bool]):

        use_system_hunt_group_clid_setting (Optional[bool]):

        include_hunt_group_name_in_clid (Optional[bool]):

        enable_not_reachable_forwarding (Optional[bool]):

        not_reachable_forward_to_phone_number (Optional[Nillable[str]]):

        make_busy_when_not_reachable (Optional[bool]):

        allow_members_to_control_group_busy (Optional[bool]):

        enable_group_busy (Optional[bool]):

        apply_group_busy_when_terminating_to_agent (Optional[bool]):

        network_class_of_service (Optional[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: Optional[ServiceInstanceModifyProfile] = field(
        default=None, metadata={"alias": "serviceInstanceProfile"}
    )

    policy: Optional[str] = field(default=None, metadata={"alias": "policy"})

    hunt_after_no_answer: Optional[bool] = field(
        default=None, metadata={"alias": "huntAfterNoAnswer"}
    )

    no_answer_number_of_rings: Optional[int] = field(
        default=None, metadata={"alias": "noAnswerNumberOfRings"}
    )

    forward_after_timeout: Optional[bool] = field(
        default=None, metadata={"alias": "forwardAfterTimeout"}
    )

    forward_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "forwardTimeoutSeconds"}
    )

    forward_to_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    agent_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "agentUserIdList"}
    )

    allow_call_waiting_for_agents: Optional[bool] = field(
        default=None, metadata={"alias": "allowCallWaitingForAgents"}
    )

    use_system_hunt_group_clid_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemHuntGroupCLIDSetting"}
    )

    include_hunt_group_name_in_clid: Optional[bool] = field(
        default=None, metadata={"alias": "includeHuntGroupNameInCLID"}
    )

    enable_not_reachable_forwarding: Optional[bool] = field(
        default=None, metadata={"alias": "enableNotReachableForwarding"}
    )

    not_reachable_forward_to_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "notReachableForwardToPhoneNumber"}
    )

    make_busy_when_not_reachable: Optional[bool] = field(
        default=None, metadata={"alias": "makeBusyWhenNotReachable"}
    )

    allow_members_to_control_group_busy: Optional[bool] = field(
        default=None, metadata={"alias": "allowMembersToControlGroupBusy"}
    )

    enable_group_busy: Optional[bool] = field(
        default=None, metadata={"alias": "enableGroupBusy"}
    )

    apply_group_busy_when_terminating_to_agent: Optional[bool] = field(
        default=None, metadata={"alias": "applyGroupBusyWhenTerminatingToAgent"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    def __post_init__(self):
        nillable_fields = [
            "forward_to_phone_number",
            "agent_user_id_list",
            "not_reachable_forward_to_phone_number",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupHuntGroupModifyInstanceWeightedCallDistributionRequest(OCIRequest):
    """Request to modify the weighted call distribution of a Hunt Group instance.
        The response is either SuccessResponse or ErrorResponse.
        NOTE: Prior to release 14, any agents who were not in the list kept their
        existing weight setting. In release 14, any agents who are not in the list
        will have their weight set to 0.

    Attributes:

        service_user_id (str):

        agent_weight (Optional[List[HuntAgentWeight]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    agent_weight: Optional[List[HuntAgentWeight]] = field(
        default=None, metadata={"alias": "agentWeight"}
    )


@dataclass(kw_only=True)
class GroupIMRNAssignListRequest(OCIRequest):
    """Assign a list of group DNs to the IMRN pool. It is possible to assign either: a single DN,
        or a list of DNs, or a range of DNs, or any combination thereof.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        imrn (Optional[List[str]]):

        imrn_range (Optional[List[DNRange]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    imrn: Optional[List[str]] = field(default=None, metadata={"alias": "imrn"})

    imrn_range: Optional[List[DNRange]] = field(
        default=None, metadata={"alias": "imrnRange"}
    )


@dataclass(kw_only=True)
class GroupIMRNGetListRequest(OCIRequest):
    """Request a summary table of all DNs in a group IMRN pool.
        The response is either GroupIMRNGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupIMRNUnassignListRequest(OCIRequest):
    """Unassign a list of group DNs from the group IMRN pool. The DNs then become available for
        assignment to users. It is possible to delete either: a single DN,
        or a list of DNs, or a range of DNs, or any combination thereof.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        imrn (Optional[List[str]]):

        imrn_range (Optional[List[DNRange]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    imrn: Optional[List[str]] = field(default=None, metadata={"alias": "imrn"})

    imrn_range: Optional[List[DNRange]] = field(
        default=None, metadata={"alias": "imrnRange"}
    )


@dataclass(kw_only=True)
class GroupIncomingCallingPlanGetListRequest(OCIRequest):
    """Request the group's incoming calling plan settings.
        The response is either a GroupIncomingCallingPlanGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupIncomingCallingPlanModifyListRequest(OCIRequest):
    """Change the group's incoming calling plan settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_permissions (Optional[IncomingCallingPlanPermissionsModify]):

        department_permissions (Optional[List[IncomingCallingPlanDepartmentPermissionsModify]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_permissions: Optional[IncomingCallingPlanPermissionsModify] = field(
        default=None, metadata={"alias": "groupPermissions"}
    )

    department_permissions: Optional[
        List[IncomingCallingPlanDepartmentPermissionsModify]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupInstantGroupCallAddInstanceRequest14(OCIRequest):
    """Request to add an Instant Group Call service instance to a group.
        The domain is required in the serviceUserId.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_user_id (str):

        service_instance_profile (ServiceInstanceAddProfile):

        destination_phone_number (Optional[List[str]]):

        is_answer_timeout_enabled (bool):

        answer_timeout_minutes (Optional[int]):

        network_class_of_service (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: ServiceInstanceAddProfile = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    destination_phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "destinationPhoneNumber"}
    )

    is_answer_timeout_enabled: bool = field(
        metadata={"alias": "isAnswerTimeoutEnabled"}
    )

    answer_timeout_minutes: Optional[int] = field(
        default=None, metadata={"alias": "answerTimeoutMinutes"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupInstantGroupCallDeleteInstanceRequest(OCIRequest):
    """Request to delete an Instant Group Call service instance from a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupInstantGroupCallGetInstanceListRequest(OCIRequest):
    """Request to get a list of Instant Group Call service instances within a group.
        The response is either GroupInstantGroupCallGetInstanceListResponse or ErrorResponse.
        It is possible to get the service instances within a specified department.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_department_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_department_name: Optional[str] = field(
        default=None, metadata={"alias": "groupDepartmentName"}
    )


@dataclass(kw_only=True)
class GroupInstantGroupCallGetInstanceRequest19sp1(OCIRequest):
    """Request to get all the information of an Instant Group Call service instance.
        The response is either GroupInstantGroupCallGetInstanceResponse19sp1 or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupInstantGroupCallModifyActiveInstanceListRequest(OCIRequest):
    """Request to set the active status of Instant Group Call service instances.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_activation (Optional[List[ServiceActivation]]):

    """

    service_activation: Optional[List[ServiceActivation]] = field(
        default=None, metadata={"alias": "serviceActivation"}
    )


@dataclass(kw_only=True)
class GroupInstantGroupCallModifyInstanceRequest(OCIRequest):
    """Request to modify an Instant Group Call service instance.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        service_instance_profile (Optional[ServiceInstanceModifyProfile]):

        destination_phone_number_list (Optional[Nillable[ReplacementOutgoingDNorSIPURIList]]):

        is_answer_timeout_enabled (Optional[bool]):

        answer_timeout_minutes (Optional[Nillable[int]]):

        network_class_of_service (Optional[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: Optional[ServiceInstanceModifyProfile] = field(
        default=None, metadata={"alias": "serviceInstanceProfile"}
    )

    destination_phone_number_list: Optional[
        Nillable[ReplacementOutgoingDNorSIPURIList]
    ] = field(default=None, metadata={"alias": "destinationPhoneNumberList"})

    is_answer_timeout_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "isAnswerTimeoutEnabled"}
    )

    answer_timeout_minutes: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "answerTimeoutMinutes"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    def __post_init__(self):
        nillable_fields = ["destination_phone_number_list", "answer_timeout_minutes"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupIntegratedIMPGetRequest23(OCIRequest):
    """Get the Integrated IMP service attributes for the group.
        The response is either GroupIntegratedIMPGetResponse23 or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupIntegratedIMPModifyRequest(OCIRequest):
    """Modify the Integrated IMP service attributes for the group.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements can only be used by a reseller administrator or above:
          useServiceProviderMessagingServer
          provisioningUrl
          provisioningUserId
          provisioningPassword

    Attributes:

        service_provider_id (str):

        group_id (str):

        use_service_provider_setting (Optional[bool]):

        service_domain (Optional[Nillable[str]]):

        use_service_provider_messaging_server (Optional[bool]):

        provisioning_url (Optional[Nillable[str]]):

        provisioning_user_id (Optional[Nillable[str]]):

        provisioning_password (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    use_service_provider_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useServiceProviderSetting"}
    )

    service_domain: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "serviceDomain"}
    )

    use_service_provider_messaging_server: Optional[bool] = field(
        default=None, metadata={"alias": "useServiceProviderMessagingServer"}
    )

    provisioning_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "provisioningUrl"}
    )

    provisioning_user_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "provisioningUserId"}
    )

    provisioning_password: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "provisioningPassword"}
    )

    def __post_init__(self):
        nillable_fields = [
            "service_domain",
            "provisioning_url",
            "provisioning_user_id",
            "provisioning_password",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupInterceptGroupGetRequest21sp1(OCIRequest):
    """Get the group's intercept group service settings.
        The response is either a GroupInterceptGroupGetResponse21sp1 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupInterceptGroupModifyRequest21sp1(OCIRequest):
    """Modify the group's intercept group service settings.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          exemptInboundMobilityCalls
          exemptOutboundMobilityCalls
          disableParallelRingingToNetworkLocations

    Attributes:

        service_provider_id (str):

        group_id (str):

        is_active (Optional[bool]):

        announcement_selection (Optional[str]):

        audio_file (Optional[LabeledMediaFileResource]):

        video_file (Optional[LabeledMediaFileResource]):

        inbound_call_mode (Optional[str]):

        alternate_blocking_announcement (Optional[bool]):

        exempt_inbound_mobility_calls (Optional[bool]):

        disable_parallel_ringing_to_network_locations (Optional[bool]):

        route_to_voice_mail (Optional[bool]):

        play_new_phone_number (Optional[bool]):

        new_phone_number (Optional[Nillable[str]]):

        transfer_on_zero_to_phone_number (Optional[bool]):

        transfer_phone_number (Optional[Nillable[str]]):

        outbound_call_mode (Optional[str]):

        exempt_outbound_mobility_calls (Optional[bool]):

        reroute_outbound_calls (Optional[bool]):

        outbound_reroute_phone_number (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    announcement_selection: Optional[str] = field(
        default=None, metadata={"alias": "announcementSelection"}
    )

    audio_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    inbound_call_mode: Optional[str] = field(
        default=None, metadata={"alias": "inboundCallMode"}
    )

    alternate_blocking_announcement: Optional[bool] = field(
        default=None, metadata={"alias": "alternateBlockingAnnouncement"}
    )

    exempt_inbound_mobility_calls: Optional[bool] = field(
        default=None, metadata={"alias": "exemptInboundMobilityCalls"}
    )

    disable_parallel_ringing_to_network_locations: Optional[bool] = field(
        default=None, metadata={"alias": "disableParallelRingingToNetworkLocations"}
    )

    route_to_voice_mail: Optional[bool] = field(
        default=None, metadata={"alias": "routeToVoiceMail"}
    )

    play_new_phone_number: Optional[bool] = field(
        default=None, metadata={"alias": "playNewPhoneNumber"}
    )

    new_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "newPhoneNumber"}
    )

    transfer_on_zero_to_phone_number: Optional[bool] = field(
        default=None, metadata={"alias": "transferOnZeroToPhoneNumber"}
    )

    transfer_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    outbound_call_mode: Optional[str] = field(
        default=None, metadata={"alias": "outboundCallMode"}
    )

    exempt_outbound_mobility_calls: Optional[bool] = field(
        default=None, metadata={"alias": "exemptOutboundMobilityCalls"}
    )

    reroute_outbound_calls: Optional[bool] = field(
        default=None, metadata={"alias": "rerouteOutboundCalls"}
    )

    outbound_reroute_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "outboundReroutePhoneNumber"}
    )

    def __post_init__(self):
        nillable_fields = [
            "new_phone_number",
            "transfer_phone_number",
            "outbound_reroute_phone_number",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupInventoryReportGetRequest(OCIRequest):
    """Request the group's inventory report.
        The response is either a GroupInventoryReportGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        include_users (bool):

        include_services (bool):

        include_dns (bool):

        include_access_devices (bool):

        include_departments (bool):

        report_delivery_email_address (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    include_users: bool = field(metadata={"alias": "includeUsers"})

    include_services: bool = field(metadata={"alias": "includeServices"})

    include_dns: bool = field(metadata={"alias": "includeDns"})

    include_access_devices: bool = field(metadata={"alias": "includeAccessDevices"})

    include_departments: bool = field(metadata={"alias": "includeDepartments"})

    report_delivery_email_address: Optional[str] = field(
        default=None, metadata={"alias": "reportDeliveryEmailAddress"}
    )


@dataclass(kw_only=True)
class GroupMWIDeliveryToMobileEndpointCustomTemplateAddRequest23(OCIRequest):
    """Create a MWI Delivery to Mobile Endpoint Custom Template.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        language (str):

        type (str):

        is_enabled (bool):

        month_abbreviations (Optional[str]):

        template_body (MWIDeliveryToMobileEndpointTemplateBody23):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    language: str = field(metadata={"alias": "language"})

    type: str = field(metadata={"alias": "type"})

    is_enabled: bool = field(metadata={"alias": "isEnabled"})

    month_abbreviations: Optional[str] = field(
        default=None, metadata={"alias": "monthAbbreviations"}
    )

    template_body: MWIDeliveryToMobileEndpointTemplateBody23 = field(
        metadata={"alias": "templateBody"}
    )


@dataclass(kw_only=True)
class GroupMWIDeliveryToMobileEndpointCustomTemplateDeleteRequest23(OCIRequest):
    """Delete a MWI Delivery to Mobile Endpoint Custom Template.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        language (str):

        type (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    language: str = field(metadata={"alias": "language"})

    type: str = field(metadata={"alias": "type"})


@dataclass(kw_only=True)
class GroupMWIDeliveryToMobileEndpointCustomTemplateGetRequest23(OCIRequest):
    """Request a MWI Delivery to Mobile Endpoint Custom Template.
        The response is either a GroupMWIDeliveryToMobileEndpointCustomTemplateGetResponse23 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        language (str):

        type (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    language: str = field(metadata={"alias": "language"})

    type: str = field(metadata={"alias": "type"})


@dataclass(kw_only=True)
class GroupMWIDeliveryToMobileEndpointCustomTemplateModifyRequest23(OCIRequest):
    """Modify a MWI Delivery to Mobile Endpoint Custom Template.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        language (str):

        type (str):

        is_enabled (Optional[bool]):

        month_abbreviations (Optional[Nillable[str]]):

        template_body (Optional[MWIDeliveryToMobileEndpointTemplateBody23]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    language: str = field(metadata={"alias": "language"})

    type: str = field(metadata={"alias": "type"})

    is_enabled: Optional[bool] = field(default=None, metadata={"alias": "isEnabled"})

    month_abbreviations: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "monthAbbreviations"}
    )

    template_body: Optional[MWIDeliveryToMobileEndpointTemplateBody23] = field(
        default=None, metadata={"alias": "templateBody"}
    )

    def __post_init__(self):
        nillable_fields = ["month_abbreviations"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupMWIDeliveryToMobileEndpointGetRequest(OCIRequest):
    """Requests group MWI custom notifications settings.
        The response is either a GroupMWIDeliveryToMobileEndpointGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupMWIDeliveryToMobileEndpointModifyRequest23(OCIRequest):
    """Modify the group level MWI custom notifications settings.
        The response is either a SuccessResponse or an ErrorResponse.

        If the request is executed by a group administrator and modifies the useSettingLevel, the request is rejected.

    Attributes:

        service_provider_id (str):

        group_id (str):

        use_setting_level (Optional[str]):

        template_activation (Optional[List[MWIDeliveryToMobileEndpointTemplateActivation23]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    use_setting_level: Optional[str] = field(
        default=None, metadata={"alias": "useSettingLevel"}
    )

    template_activation: Optional[
        List[MWIDeliveryToMobileEndpointTemplateActivation23]
    ] = field(default=None, metadata={"alias": "templateActivation"})


@dataclass(kw_only=True)
class GroupMeetMeConferencingAddInstanceRequest19(OCIRequest):
    """Add a Meet-Me Conferencing bridge to a group.
        The domain is required in the serviceUserId.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_user_id (str):

        service_instance_profile (ServiceInstanceAddProfile):

        allocated_ports (MeetMeConferencingConferencePorts):

        network_class_of_service (Optional[str]):

        security_pin_length (int):

        allow_individual_out_dial (bool):

        operator_number (Optional[str]):

        conference_host_user_id (Optional[List[str]]):

        play_warning_prompt (bool):

        conference_end_warning_prompt_minutes (int):

        enable_max_conference_duration (bool):

        max_conference_duration_minutes (MeetMeConferencingConferenceDuration):

        max_scheduled_conference_duration_minutes (MeetMeConferencingConferenceDuration):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: ServiceInstanceAddProfile = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    allocated_ports: MeetMeConferencingConferencePorts = field(
        metadata={"alias": "allocatedPorts"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    security_pin_length: int = field(metadata={"alias": "securityPinLength"})

    allow_individual_out_dial: bool = field(
        metadata={"alias": "allowIndividualOutDial"}
    )

    operator_number: Optional[str] = field(
        default=None, metadata={"alias": "operatorNumber"}
    )

    conference_host_user_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "conferenceHostUserId"}
    )

    play_warning_prompt: bool = field(metadata={"alias": "playWarningPrompt"})

    conference_end_warning_prompt_minutes: int = field(
        metadata={"alias": "conferenceEndWarningPromptMinutes"}
    )

    enable_max_conference_duration: bool = field(
        metadata={"alias": "enableMaxConferenceDuration"}
    )

    max_conference_duration_minutes: MeetMeConferencingConferenceDuration = field(
        metadata={"alias": "maxConferenceDurationMinutes"}
    )

    max_scheduled_conference_duration_minutes: MeetMeConferencingConferenceDuration = (
        field(metadata={"alias": "maxScheduledConferenceDurationMinutes"})
    )


@dataclass(kw_only=True)
class GroupMeetMeConferencingDeleteInstanceRequest(OCIRequest):
    """Delete a Meet-Me Conferencing bridge from a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupMeetMeConferencingGetAvailableUserListRequest(OCIRequest):
    """Get a list of users that can be assigned to a Meet-Me Conferencing bridge.
        Searching for users by group only makes sense when the Meet-Me Conferencing is part of an Enterprise.
        The response is either GroupMeetMeConferencingGetAvailableUserListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupMeetMeConferencingGetInstanceListRequest(OCIRequest):
    """Get a list of Meet-Me Conferencing instances within a group.
        The response is either GroupMeetMeConferencingGetInstanceListResponse or ErrorResponse.
        It is possible to get the instances within a specified department.

    Attributes:

        service_provider_id (str):

        group_id (str):

        department_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    department_name: Optional[str] = field(
        default=None, metadata={"alias": "departmentName"}
    )


@dataclass(kw_only=True)
class GroupMeetMeConferencingGetInstanceRequest19sp1(OCIRequest):
    """Request to get all the information of a Meet-Me Conferencing bridge.
        The response is either GroupMeetMeConferencingGetInstanceResponse19sp1 or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupMeetMeConferencingGetRequest(OCIRequest):
    """Request the group level data associated with Meet-Me Conferencing functions.
        The response is either a GroupMeetMeConferencingGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupMeetMeConferencingModifyActiveInstanceListRequest(OCIRequest):
    """Request to set the active status of Meet-Me Conferencing instances.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_activation (Optional[List[ServiceActivation]]):

    """

    service_activation: Optional[List[ServiceActivation]] = field(
        default=None, metadata={"alias": "serviceActivation"}
    )


@dataclass(kw_only=True)
class GroupMeetMeConferencingModifyInstanceRequest(OCIRequest):
    """Request to modify a Meet-Me Conferencing bridge.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        service_instance_profile (Optional[ServiceInstanceModifyProfile]):

        allocated_ports (Optional[MeetMeConferencingConferencePorts]):

        network_class_of_service (Optional[str]):

        security_pin_length (Optional[int]):

        allow_individual_out_dial (Optional[bool]):

        operator_number (Optional[Nillable[str]]):

        conference_host_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

        play_warning_prompt (Optional[bool]):

        conference_end_warning_prompt_minutes (Optional[int]):

        enable_max_conference_duration (Optional[bool]):

        max_conference_duration_minutes (Optional[MeetMeConferencingConferenceDuration]):

        max_scheduled_conference_duration_minutes (Optional[MeetMeConferencingConferenceDuration]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: Optional[ServiceInstanceModifyProfile] = field(
        default=None, metadata={"alias": "serviceInstanceProfile"}
    )

    allocated_ports: Optional[MeetMeConferencingConferencePorts] = field(
        default=None, metadata={"alias": "allocatedPorts"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    security_pin_length: Optional[int] = field(
        default=None, metadata={"alias": "securityPinLength"}
    )

    allow_individual_out_dial: Optional[bool] = field(
        default=None, metadata={"alias": "allowIndividualOutDial"}
    )

    operator_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "operatorNumber"}
    )

    conference_host_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "conferenceHostUserIdList"}
    )

    play_warning_prompt: Optional[bool] = field(
        default=None, metadata={"alias": "playWarningPrompt"}
    )

    conference_end_warning_prompt_minutes: Optional[int] = field(
        default=None, metadata={"alias": "conferenceEndWarningPromptMinutes"}
    )

    enable_max_conference_duration: Optional[bool] = field(
        default=None, metadata={"alias": "enableMaxConferenceDuration"}
    )

    max_conference_duration_minutes: Optional[MeetMeConferencingConferenceDuration] = (
        field(default=None, metadata={"alias": "maxConferenceDurationMinutes"})
    )

    max_scheduled_conference_duration_minutes: Optional[
        MeetMeConferencingConferenceDuration
    ] = field(default=None, metadata={"alias": "maxScheduledConferenceDurationMinutes"})

    def __post_init__(self):
        nillable_fields = ["operator_number", "conference_host_user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupMeetMeConferencingModifyRequest(OCIRequest):
    """Modify the group level data associated with Meet-Me Conferencing functions.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        allocated_ports (Optional[MeetMeConferencingConferencePorts]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    allocated_ports: Optional[MeetMeConferencingConferencePorts] = field(
        default=None, metadata={"alias": "allocatedPorts"}
    )


@dataclass(kw_only=True)
class GroupModifyRequest(OCIRequest):
    """Modify the profile for a group.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are ignored in AS and XS data mode:
        servicePolicy,
        callProcessingSliceId,
        provisioningSliceId,
        subscriberPartition.

        The following elements are only used in XS data mode and ignored in AS data mode:
        preferredDataCenter.
        Only Provisioning admin and above can change the preferredDataCenter.

        The following elements are only used in XS data mode and ignored in AS data mode:
        defaultUserCallingLineIdPhoneNumber.

        The following elements are only used in AS data mode and ignored in the XS data mode:
                 extensionLengthSettings
                 dialPlanAccessCode
                 dialPlanPolicy

    Attributes:

        service_provider_id (str):

        group_id (str):

        default_domain (Optional[str]):

        user_limit (Optional[int]):

        group_name (Optional[Nillable[str]]):

        calling_line_id_name (Optional[Nillable[str]]):

        calling_line_id_phone_number (Optional[Nillable[str]]):

        time_zone (Optional[str]):

        location_dialing_code (Optional[Nillable[str]]):

        contact (Optional[Contact]):

        address (Optional[StreetAddress]):

        service_policy (Optional[Nillable[str]]):

        call_processing_slice_id (Optional[Nillable[str]]):

        provisioning_slice_id (Optional[Nillable[str]]):

        subscriber_partition (Optional[Nillable[str]]):

        preferred_data_center (Optional[Nillable[str]]):

        default_user_calling_line_id_phone_number (Optional[Nillable[str]]):

        extension_length_settings (Optional[GroupExtensionLengthSettings]):

        dial_plan_access_code (Optional[Nillable[DialPlanPolicyAccessCode]]):

        dial_plan_policy (Optional[DialPlanPolicy]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    default_domain: Optional[str] = field(
        default=None, metadata={"alias": "defaultDomain"}
    )

    user_limit: Optional[int] = field(default=None, metadata={"alias": "userLimit"})

    group_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "groupName"}
    )

    calling_line_id_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callingLineIdName"}
    )

    calling_line_id_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    location_dialing_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "locationDialingCode"}
    )

    contact: Optional[Contact] = field(default=None, metadata={"alias": "contact"})

    address: Optional[StreetAddress] = field(
        default=None, metadata={"alias": "address"}
    )

    service_policy: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "servicePolicy"}
    )

    call_processing_slice_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callProcessingSliceId"}
    )

    provisioning_slice_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "provisioningSliceId"}
    )

    subscriber_partition: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "subscriberPartition"}
    )

    preferred_data_center: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "preferredDataCenter"}
    )

    default_user_calling_line_id_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultUserCallingLineIdPhoneNumber"}
    )

    extension_length_settings: Optional[GroupExtensionLengthSettings] = field(
        default=None, metadata={"alias": "extensionLengthSettings"}
    )

    dial_plan_access_code: Optional[Nillable[DialPlanPolicyAccessCode]] = field(
        default=None, metadata={"alias": "dialPlanAccessCode"}
    )

    dial_plan_policy: Optional[DialPlanPolicy] = field(
        default=None, metadata={"alias": "dialPlanPolicy"}
    )

    def __post_init__(self):
        nillable_fields = [
            "group_name",
            "calling_line_id_name",
            "calling_line_id_phone_number",
            "location_dialing_code",
            "service_policy",
            "call_processing_slice_id",
            "provisioning_slice_id",
            "subscriber_partition",
            "preferred_data_center",
            "default_user_calling_line_id_phone_number",
            "dial_plan_access_code",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupMusicOnHoldAddInstanceRequest23(OCIRequest):
    """Add a Music on Hold Instance to a department.
        The response is either SuccessResponse or ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
        - useDynamicMOHDuringCallHold

    Attributes:

        service_provider_id (str):

        group_id (str):

        department (DepartmentKey):

        is_active_during_call_hold (bool):

        is_active_during_call_park (bool):

        is_active_during_busy_camp_on (bool):

        source (MusicOnHoldSourceAdd22):

        use_alternate_source_for_internal_calls (bool):

        internal_source (Optional[MusicOnHoldSourceAdd22]):

        use_dynamic_moh_during_call_hold (bool):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    department: DepartmentKey = field(metadata={"alias": "department"})

    is_active_during_call_hold: bool = field(
        metadata={"alias": "isActiveDuringCallHold"}
    )

    is_active_during_call_park: bool = field(
        metadata={"alias": "isActiveDuringCallPark"}
    )

    is_active_during_busy_camp_on: bool = field(
        metadata={"alias": "isActiveDuringBusyCampOn"}
    )

    source: MusicOnHoldSourceAdd22 = field(metadata={"alias": "source"})

    use_alternate_source_for_internal_calls: bool = field(
        metadata={"alias": "useAlternateSourceForInternalCalls"}
    )

    internal_source: Optional[MusicOnHoldSourceAdd22] = field(
        default=None, metadata={"alias": "internalSource"}
    )

    use_dynamic_moh_during_call_hold: bool = field(
        metadata={"alias": "useDynamicMOHDuringCallHold"}
    )


@dataclass(kw_only=True)
class GroupMusicOnHoldDeleteInstanceRequest(OCIRequest):
    """Delete a Music On Hold department instance.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        department (DepartmentKey):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    department: DepartmentKey = field(metadata={"alias": "department"})


@dataclass(kw_only=True)
class GroupMusicOnHoldGetDepartmentListRequest(OCIRequest):
    """Returns a list of all departments that have a Music On Hold instance.
        The response is either GroupMusicOnHoldGetDepartmentListResponse or ErrorResponse.
        It is possible to get the instances within a specified department.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_department_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_department_name: Optional[str] = field(
        default=None, metadata={"alias": "groupDepartmentName"}
    )


@dataclass(kw_only=True)
class GroupMusicOnHoldGetInstanceRequest23V2(OCIRequest):
    """Get a Music On Hold data for a group or department instance.
        The response is either GroupMusicOnHoldGetInstanceResponse23V2 or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        department (Optional[DepartmentKey]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    department: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "department"}
    )


@dataclass(kw_only=True)
class GroupMusicOnHoldModifyInstanceRequest22(OCIRequest):
    """Modify data for a group or department Music On Hold Instance.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        department (Optional[DepartmentKey]):

        is_active_during_call_hold (Optional[bool]):

        is_active_during_call_park (Optional[bool]):

        is_active_during_busy_camp_on (Optional[bool]):

        source (Optional[MusicOnHoldSourceModify22]):

        use_alternate_source_for_internal_calls (Optional[bool]):

        internal_source (Optional[MusicOnHoldSourceModify22]):

        use_dynamic_moh_during_call_hold (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    department: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "department"}
    )

    is_active_during_call_hold: Optional[bool] = field(
        default=None, metadata={"alias": "isActiveDuringCallHold"}
    )

    is_active_during_call_park: Optional[bool] = field(
        default=None, metadata={"alias": "isActiveDuringCallPark"}
    )

    is_active_during_busy_camp_on: Optional[bool] = field(
        default=None, metadata={"alias": "isActiveDuringBusyCampOn"}
    )

    source: Optional[MusicOnHoldSourceModify22] = field(
        default=None, metadata={"alias": "source"}
    )

    use_alternate_source_for_internal_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useAlternateSourceForInternalCalls"}
    )

    internal_source: Optional[MusicOnHoldSourceModify22] = field(
        default=None, metadata={"alias": "internalSource"}
    )

    use_dynamic_moh_during_call_hold: Optional[bool] = field(
        default=None, metadata={"alias": "useDynamicMOHDuringCallHold"}
    )


@dataclass(kw_only=True)
class GroupNetworkClassOfServiceAssignListRequest21(OCIRequest):
    """Assign a list of Network Classes of Service to a group.
        A default Network Class of Service must be specified unless there is already one assigned to the group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        network_class_of_service (Optional[List[str]]):

        default_network_class_of_service (DefaultNetworkClassOfService):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    network_class_of_service: Optional[List[str]] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    default_network_class_of_service: DefaultNetworkClassOfService = field(
        metadata={"alias": "defaultNetworkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupNetworkClassOfServiceAssignToAllUsersRequest(OCIRequest):
    """Assign a Network Classes of Service to all users with in a
        group. The Network Classes of Service must be currently assigned to
        the group. The response is either a SuccessResponse or
       an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        network_class_of_service (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    network_class_of_service: str = field(metadata={"alias": "networkClassOfService"})


@dataclass(kw_only=True)
class GroupNetworkClassOfServiceGetAssignedListRequest(OCIRequest):
    """Get a list of Network Classes of Service assigned to a group.
        The response is either a GroupNetworkClassOfServiceGetAssignedListResponse
        or an ErorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupNetworkClassOfServiceGetAssignedUserListRequest21(OCIRequest):
    """Get a list of users within a group that have a given Network Class
        of Service assigned.
        The response is either a GroupNetworkClassOfServiceGetAssignedUserListResponse21
        or an ErorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        network_class_of_service (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    network_class_of_service: str = field(metadata={"alias": "networkClassOfService"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupNetworkClassOfServiceModifyDefaultRequest(OCIRequest):
    """Modifies the default Network Classes of Service of a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        network_class_of_service (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    network_class_of_service: str = field(metadata={"alias": "networkClassOfService"})


@dataclass(kw_only=True)
class GroupNetworkClassOfServiceUnassignListRequest21(OCIRequest):
    """Unassign a list of Network Classes of Service from a group.
        If the default Network Class of Service is being unassigned, a new one must be specified unless there are no more
        Network Classes of Service assigned to the group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        network_class_of_service (Optional[List[str]]):

        default_network_class_of_service (DefaultNetworkClassOfService):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    network_class_of_service: Optional[List[str]] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    default_network_class_of_service: DefaultNetworkClassOfService = field(
        metadata={"alias": "defaultNetworkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupNewUserTemplateAssignUserServiceListRequest(OCIRequest):
    """Request to assign the user services and service packs to all new users created within the group
        after the completion of this request.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_name (Optional[List[str]]):

        service_pack_name (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "serviceName"}
    )

    service_pack_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "servicePackName"}
    )


@dataclass(kw_only=True)
class GroupNewUserTemplateUnassignUserServiceListRequest(OCIRequest):
    """Requests to unassign the user services and service packs for all new users created within the group
        after the completion of this request.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_name (Optional[List[str]]):

        service_pack_name (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "serviceName"}
    )

    service_pack_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "servicePackName"}
    )


@dataclass(kw_only=True)
class GroupOfficeZoneAssignListRequest(OCIRequest):
    """Assign a list of Office Zones to a group.
        The Element defaultOfficeZone is required only for the first assignment, for subsequent assignments it is optional.
        Office Zones can only be assigned if the Location-Based Calling Restrictions has been authorized to the group otherwise the request will fail.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        office_zone_name (Optional[List[str]]):

        default_office_zone_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    office_zone_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "officeZoneName"}
    )

    default_office_zone_name: Optional[str] = field(
        default=None, metadata={"alias": "defaultOfficeZoneName"}
    )


@dataclass(kw_only=True)
class GroupOfficeZoneGetAssignedListRequest(OCIRequest):
    """Get a list of Office Zones assigned to a group.
        The response is either a GroupOfficeZoneGetAssignedListResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupOfficeZoneGetAssignedUserListRequest(OCIRequest):
    """Get a list of users within a group that have a given Office Zone assigned.
        The response is either a GroupOfficeZoneGetAssignedUserListResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        office_zone_name (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    office_zone_name: str = field(metadata={"alias": "officeZoneName"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupOfficeZoneUnassignListRequest(OCIRequest):
    """Unassign a list of OfficeZones from a group.  Note: a new default must be provided if unassigning the current default.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        office_zone_name (Optional[List[str]]):

        default_office_zone_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    office_zone_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "officeZoneName"}
    )

    default_office_zone_name: Optional[str] = field(
        default=None, metadata={"alias": "defaultOfficeZoneName"}
    )


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanAuthorizationCodeGetListRequest(OCIRequest):
    """Request the list of authorization codes for a group default and it's departments.
        The response is either a GroupOutgoingCallingPlanAuthorizationCodeGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanCallMeNowGetListRequest(OCIRequest):
    """Request the Call Me Now call permissions for a group default and it's departments.
        The response is either a GroupOutgoingCallingPlanCallMeNowGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanCallMeNowModifyListRequest(OCIRequest):
    """Modify the Call Me Now call permissions for a group default and it's departments.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_permissions (Optional[OutgoingCallingPlanCallMeNowPermissionsModify]):

        department_permissions (Optional[List[OutgoingCallingPlanCallMeNowDepartmentPermissionsModify]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_permissions: Optional[OutgoingCallingPlanCallMeNowPermissionsModify] = field(
        default=None, metadata={"alias": "groupPermissions"}
    )

    department_permissions: Optional[
        List[OutgoingCallingPlanCallMeNowDepartmentPermissionsModify]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanDepartmentAuthorizationCodeAddListRequest(OCIRequest):
    """Add a list of authorization codes to the group's default or a department. When department is not
        specified, it is for the group default.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        department_key (Optional[DepartmentKey]):

        code_entry (List[OutgoingCallingPlanAuthorizationCodeEntry]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    department_key: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "departmentKey"}
    )

    code_entry: List[OutgoingCallingPlanAuthorizationCodeEntry] = field(
        metadata={"alias": "codeEntry"}
    )


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanDepartmentAuthorizationCodeDeleteListRequest(OCIRequest):
    """Delete a list of authorization codes from the group's default or a department. When department is not
        specified, it is for the group default.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        department_key (Optional[DepartmentKey]):

        code (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    department_key: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "departmentKey"}
    )

    code: List[str] = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanDepartmentAuthorizationCodeGetListRequest(OCIRequest):
    """Request the list of authorization codes for a group default or a department.  When department is not
        specified, it is for the group default.
        The response is either a GroupOutgoingCallingPlanDepartmentAuthorizationCodeGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        department_key (Optional[DepartmentKey]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    department_key: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "departmentKey"}
    )


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanDigitPlanCallMeNowGetListRequest(OCIRequest):
    """Request the Call Me Now call permissions for digit patterns for a group default and it's departments.
        The response is either a GroupOutgoingCallingPlanDigitPlanCallMeNowGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanDigitPlanCallMeNowModifyListRequest(OCIRequest):
    """Modify the Call Me Now call permissions for digit patterns for a group default and it's departments.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_permissions (Optional[OutgoingCallingPlanDigitPatternCallMeNowPermissions]):

        department_permissions (Optional[List[OutgoingCallingPlanDigitPatternCallMeNowDepartmentPermissionsModify]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_permissions: Optional[OutgoingCallingPlanDigitPatternCallMeNowPermissions] = (
        field(default=None, metadata={"alias": "groupPermissions"})
    )

    department_permissions: Optional[
        List[OutgoingCallingPlanDigitPatternCallMeNowDepartmentPermissionsModify]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanDigitPlanOriginatingGetListRequest(OCIRequest):
    """Request the originating permissions for digit patterns for a group default and it's departments.
        The response is either a GroupOutgoingCallingPlanDigitPlanOriginatingGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanDigitPlanOriginatingModifyListRequest(OCIRequest):
    """Modify the originating permissions for digit patterns for a group default and it's departments.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_permissions (Optional[OutgoingCallingPlanDigitPatternOriginatingPermissions]):

        department_permissions (Optional[List[OutgoingCallingPlanDigitPatternOriginatingDepartmentPermissionsModify]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_permissions: Optional[
        OutgoingCallingPlanDigitPatternOriginatingPermissions
    ] = field(default=None, metadata={"alias": "groupPermissions"})

    department_permissions: Optional[
        List[OutgoingCallingPlanDigitPatternOriginatingDepartmentPermissionsModify]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanDigitPlanRedirectingGetListRequest(OCIRequest):
    """Request the redirecting permissions for digit patterns for a group default and it's departments.
        The response is either a GroupOutgoingCallingPlanDigitPlanRedirectingGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanDigitPlanRedirectingModifyListRequest(OCIRequest):
    """Modify the redirecting permissions for digit patterns for a group default and it's departments.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_permissions (Optional[OutgoingCallingPlanDigitPatternRedirectingPermissions]):

        department_permissions (Optional[List[OutgoingCallingPlanDigitPatternRedirectingDepartmentPermissionsModify]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_permissions: Optional[
        OutgoingCallingPlanDigitPatternRedirectingPermissions
    ] = field(default=None, metadata={"alias": "groupPermissions"})

    department_permissions: Optional[
        List[OutgoingCallingPlanDigitPatternRedirectingDepartmentPermissionsModify]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanOriginatingGetListRequest(OCIRequest):
    """Request the originating permissions for a group default and it's departments.
        The response is either a GroupOutgoingCallingPlanOriginatingGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanOriginatingModifyListRequest(OCIRequest):
    """Modify the originating permissions for a group default and it's departments.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_permissions (Optional[OutgoingCallingPlanOriginatingPermissionsModify]):

        department_permissions (Optional[List[OutgoingCallingPlanOriginatingDepartmentPermissionsModify]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_permissions: Optional[OutgoingCallingPlanOriginatingPermissionsModify] = (
        field(default=None, metadata={"alias": "groupPermissions"})
    )

    department_permissions: Optional[
        List[OutgoingCallingPlanOriginatingDepartmentPermissionsModify]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanPinholeDigitPatternAddRequest(OCIRequest):
    """Add a new calling plan Pinhole digit string.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        digit_pattern (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    digit_pattern: str = field(metadata={"alias": "digitPattern"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanPinholeDigitPatternDeleteListRequest(OCIRequest):
    """Delete one or more calling plan Pinhole digit strings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: List[str] = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanPinholeDigitPatternGetListRequest(OCIRequest):
    """Get the list of calling plan Pinhole digit strings for a group.
        The response is either a GroupOutgoingCallingPlanPinholeDigitPatternGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanPinholeDigitPatternModifyRequest(OCIRequest):
    """Modify a calling plan Pinhole digit string. The name is a key; it cannot be changed.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        digit_pattern (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    digit_pattern: Optional[str] = field(
        default=None, metadata={"alias": "digitPattern"}
    )


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanPinholeDigitPlanCallMeNowGetListRequest(OCIRequest):
    """Request the Call Me Now permissions for Pinhole digit patterns for a group default and its departments.
        The response is either a GroupOutgoingCallingPlanPinholeDigitPlanCallMeNowGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanPinholeDigitPlanCallMeNowModifyListRequest(OCIRequest):
    """Modify the Call Me Now permissions for Pinhole digit patterns for a group default and its departments.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_permissions (Optional[OutgoingPinholeDigitPlanDigitPatternCallMeNowPermissions]):

        department_permissions (Optional[List[OutgoingPinholeDigitPlanDigitPatternCallMeNowDepartmentPermissionsModify]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_permissions: Optional[
        OutgoingPinholeDigitPlanDigitPatternCallMeNowPermissions
    ] = field(default=None, metadata={"alias": "groupPermissions"})

    department_permissions: Optional[
        List[OutgoingPinholeDigitPlanDigitPatternCallMeNowDepartmentPermissionsModify]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanPinholeDigitPlanOriginatingGetListRequest(OCIRequest):
    """Request the originating permissions for Pinhole digit patterns for a group default and its departments.
        The response is either a GroupOutgoingCallingPlanPinholeDigitPlanOriginatingGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanPinholeDigitPlanOriginatingModifyListRequest(OCIRequest):
    """Modify the originating permissions for Pinhole digit patterns for a group default and its departments.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_permissions (Optional[OutgoingPinholeDigitPlanDigitPatternOriginatingPermissions]):

        department_permissions (Optional[List[OutgoingPinholeDigitPlanDigitPatternOriginatingDepartmentPermissionsModify]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_permissions: Optional[
        OutgoingPinholeDigitPlanDigitPatternOriginatingPermissions
    ] = field(default=None, metadata={"alias": "groupPermissions"})

    department_permissions: Optional[
        List[OutgoingPinholeDigitPlanDigitPatternOriginatingDepartmentPermissionsModify]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanPinholeDigitPlanRedirectingGetListRequest(OCIRequest):
    """Request the redirecting permissions for Pinhole digit patterns for a group default and its departments.
        The response is either a GroupOutgoingCallingPlanPinholeDigitPlanRedirectingGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanPinholeDigitPlanRedirectingModifyListRequest(OCIRequest):
    """Modify the redirecting permissions for Pinhole digit patterns for a group default and its departments.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_permissions (Optional[OutgoingPinholeDigitPlanDigitPatternRedirectingPermissions]):

        department_permissions (Optional[List[OutgoingPinholeDigitPlanDigitPatternRedirectingDepartmentPermissionsModify]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_permissions: Optional[
        OutgoingPinholeDigitPlanDigitPatternRedirectingPermissions
    ] = field(default=None, metadata={"alias": "groupPermissions"})

    department_permissions: Optional[
        List[OutgoingPinholeDigitPlanDigitPatternRedirectingDepartmentPermissionsModify]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanRedirectedGetListRequest(OCIRequest):
    """Request the call forwarded/transferred permissions for a group default and it's departments.
        The response is either a GroupOutgoingCallingPlanRedirectedGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanRedirectedModifyListRequest(OCIRequest):
    """Modify the call forwarded/transferred permissions for a group default and it's departments.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_permissions (Optional[OutgoingCallingPlanRedirectedPermissionsModify]):

        department_permissions (Optional[List[OutgoingCallingPlanRedirectedDepartmentPermissionsModify]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_permissions: Optional[OutgoingCallingPlanRedirectedPermissionsModify] = field(
        default=None, metadata={"alias": "groupPermissions"}
    )

    department_permissions: Optional[
        List[OutgoingCallingPlanRedirectedDepartmentPermissionsModify]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanRedirectingGetListRequest(OCIRequest):
    """Request the initiating call forwards/transfer permissions for a group default and it's departments.
        The response is either a GroupOutgoingCallingPlanRedirectingGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanRedirectingModifyListRequest(OCIRequest):
    """Modify the initiating call forwards/transfer permissions for a group default and it's departments.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_permissions (Optional[OutgoingCallingPlanRedirectingPermissionsModify]):

        department_permissions (Optional[List[OutgoingCallingPlanRedirectingDepartmentPermissionsModify]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_permissions: Optional[OutgoingCallingPlanRedirectingPermissionsModify] = (
        field(default=None, metadata={"alias": "groupPermissions"})
    )

    department_permissions: Optional[
        List[OutgoingCallingPlanRedirectingDepartmentPermissionsModify]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanTransferNumbersGetListRequest(OCIRequest):
    """Request the list of transfer numbers for a group default and it's departments.
        The response is either a GroupOutgoingCallingPlanTransferNumbersGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanTransferNumbersModifyListRequest(OCIRequest):
    """Modify the list of transfer numbers for a group default and it's departments.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_numbers (Optional[OutgoingCallingPlanTransferNumbersModify]):

        department_numbers (Optional[List[OutgoingCallingPlanDepartmentTransferNumbersModify]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_numbers: Optional[OutgoingCallingPlanTransferNumbersModify] = field(
        default=None, metadata={"alias": "groupNumbers"}
    )

    department_numbers: Optional[
        List[OutgoingCallingPlanDepartmentTransferNumbersModify]
    ] = field(default=None, metadata={"alias": "departmentNumbers"})


@dataclass(kw_only=True)
class GroupPasswordRulesGetRequestRI(OCIRequest):
    """Requests the group's password rules setting that is applicable to
        users within the group.
        The response is either GroupPasswordRulesGetResponseRI or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupPasswordRulesModifyRequest(OCIRequest):
    """Request to modify the group's password rules setting that apply to the
        users within the group.

        The following elements are only used in AS data mode and ignored in XS data mode:
        forcePasswordChangeAfterReset
        reenableLogin
        lockOutInMinutes

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        disallow_user_id (Optional[bool]):

        disallow_old_password (Optional[bool]):

        disallow_reversed_old_password (Optional[bool]):

        restrict_min_digits (Optional[bool]):

        min_digits (Optional[int]):

        restrict_min_upper_case_letters (Optional[bool]):

        min_upper_case_letters (Optional[int]):

        restrict_min_lower_case_letters (Optional[bool]):

        min_lower_case_letters (Optional[int]):

        restrict_min_non_alphanumeric_characters (Optional[bool]):

        min_non_alphanumeric_characters (Optional[int]):

        min_length (Optional[int]):

        max_failed_login_attempts (Optional[int]):

        password_expires_days (Optional[int]):

        send_login_disabled_notify_email (Optional[bool]):

        login_disabled_notify_email_address (Optional[Nillable[str]]):

        disallow_previous_passwords (Optional[bool]):

        number_of_previous_passwords (Optional[int]):

        force_password_change_after_reset (Optional[bool]):

        use_password_validation_service (Optional[bool]):

        reenable_login (Optional[bool]):

        lock_out_in_minutes (Optional[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    disallow_user_id: Optional[bool] = field(
        default=None, metadata={"alias": "disallowUserId"}
    )

    disallow_old_password: Optional[bool] = field(
        default=None, metadata={"alias": "disallowOldPassword"}
    )

    disallow_reversed_old_password: Optional[bool] = field(
        default=None, metadata={"alias": "disallowReversedOldPassword"}
    )

    restrict_min_digits: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinDigits"}
    )

    min_digits: Optional[int] = field(default=None, metadata={"alias": "minDigits"})

    restrict_min_upper_case_letters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinUpperCaseLetters"}
    )

    min_upper_case_letters: Optional[int] = field(
        default=None, metadata={"alias": "minUpperCaseLetters"}
    )

    restrict_min_lower_case_letters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinLowerCaseLetters"}
    )

    min_lower_case_letters: Optional[int] = field(
        default=None, metadata={"alias": "minLowerCaseLetters"}
    )

    restrict_min_non_alphanumeric_characters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinNonAlphanumericCharacters"}
    )

    min_non_alphanumeric_characters: Optional[int] = field(
        default=None, metadata={"alias": "minNonAlphanumericCharacters"}
    )

    min_length: Optional[int] = field(default=None, metadata={"alias": "minLength"})

    max_failed_login_attempts: Optional[int] = field(
        default=None, metadata={"alias": "maxFailedLoginAttempts"}
    )

    password_expires_days: Optional[int] = field(
        default=None, metadata={"alias": "passwordExpiresDays"}
    )

    send_login_disabled_notify_email: Optional[bool] = field(
        default=None, metadata={"alias": "sendLoginDisabledNotifyEmail"}
    )

    login_disabled_notify_email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "loginDisabledNotifyEmailAddress"}
    )

    disallow_previous_passwords: Optional[bool] = field(
        default=None, metadata={"alias": "disallowPreviousPasswords"}
    )

    number_of_previous_passwords: Optional[int] = field(
        default=None, metadata={"alias": "numberOfPreviousPasswords"}
    )

    force_password_change_after_reset: Optional[bool] = field(
        default=None, metadata={"alias": "forcePasswordChangeAfterReset"}
    )

    use_password_validation_service: Optional[bool] = field(
        default=None, metadata={"alias": "usePasswordValidationService"}
    )

    reenable_login: Optional[bool] = field(
        default=None, metadata={"alias": "reenableLogin"}
    )

    lock_out_in_minutes: Optional[int] = field(
        default=None, metadata={"alias": "lockOutInMinutes"}
    )

    def __post_init__(self):
        nillable_fields = ["login_disabled_notify_email_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupPhoneDirectoryGetPagedSortedListRequest(OCIRequest):
    """Request a table containing the phone directory for a group.
        The directory includes all users in the group and all entries in the group common phone list.

        If the specified group is part of an enterprise, the directory
        includes all users in the enterprise and all entries in the enterprise
        common phone list and the common phone list of the specified group.

        If the specified group is part of a service provider, the directory
        includes all users in the group and all entries in the common phone
        list of the specified group.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        It is possible to search by various criteria to restrict the number of rows returned.

        If no sortOrder is included the response is sorted by User Id ascending with a secondary
        sort by User Last Name ascending by default.

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        ErrorResponse is returned if searchCriteriaExactUserGroup or searchCriteriaExactUserDepartment have multiple entries and searchCriteriaModeOr is not included.

        The following elements are only used in AS data mode and ignored in XS data mode:
        \"sortByImpId\"
        \"searchCriteriaImpId\"

        The response is either GroupPhoneDirectoryGetPagedSortedListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        is_extended_info_requested (bool):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderGroupPhoneDirectoryGetPagedSortedList]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_group_location_code (Optional[List[SearchCriteriaGroupLocationCode]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_mobile_phone_number (Optional[List[SearchCriteriaMobilePhoneNumber]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_yahoo_id (Optional[List[SearchCriteriaYahooId]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_imp_id (Optional[List[SearchCriteriaImpId]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    is_extended_info_requested: bool = field(
        metadata={"alias": "isExtendedInfoRequested"}
    )

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[List[SortOrderGroupPhoneDirectoryGetPagedSortedList]] = field(
        default=None, metadata={"alias": "sortOrder"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_group_location_code: Optional[
        List[SearchCriteriaGroupLocationCode]
    ] = field(default=None, metadata={"alias": "searchCriteriaGroupLocationCode"})

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_mobile_phone_number: Optional[
        List[SearchCriteriaMobilePhoneNumber]
    ] = field(default=None, metadata={"alias": "searchCriteriaMobilePhoneNumber"})

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_yahoo_id: Optional[List[SearchCriteriaYahooId]] = field(
        default=None, metadata={"alias": "searchCriteriaYahooId"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_imp_id: Optional[List[SearchCriteriaImpId]] = field(
        default=None, metadata={"alias": "searchCriteriaImpId"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupPolicyGetRequest22(OCIRequest):
    """Requests the Group's policy settings.
        The response is either GroupPolicyGetResponse22 or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupPolicyModifyRequest22(OCIRequest):
    """Request to modify the policies for a Group.
          The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          userAutoAttendantNameDialingAccess

    Attributes:

        service_provider_id (str):

        group_id (str):

        calling_plan_access (Optional[str]):

        extension_access (Optional[str]):

        voice_messaging_access (Optional[str]):

        department_admin_user_access (Optional[str]):

        department_admin_trunk_group_access (Optional[str]):

        department_admin_phone_number_extension_access (Optional[str]):

        department_admin_calling_line_id_number_access (Optional[str]):

        user_authentication_access (Optional[str]):

        user_group_directory_access (Optional[str]):

        user_profile_access (Optional[str]):

        user_enhanced_call_log_access (Optional[str]):

        user_auto_attendant_name_dialing_access (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    calling_plan_access: Optional[str] = field(
        default=None, metadata={"alias": "callingPlanAccess"}
    )

    extension_access: Optional[str] = field(
        default=None, metadata={"alias": "extensionAccess"}
    )

    voice_messaging_access: Optional[str] = field(
        default=None, metadata={"alias": "voiceMessagingAccess"}
    )

    department_admin_user_access: Optional[str] = field(
        default=None, metadata={"alias": "departmentAdminUserAccess"}
    )

    department_admin_trunk_group_access: Optional[str] = field(
        default=None, metadata={"alias": "departmentAdminTrunkGroupAccess"}
    )

    department_admin_phone_number_extension_access: Optional[str] = field(
        default=None, metadata={"alias": "departmentAdminPhoneNumberExtensionAccess"}
    )

    department_admin_calling_line_id_number_access: Optional[str] = field(
        default=None, metadata={"alias": "departmentAdminCallingLineIdNumberAccess"}
    )

    user_authentication_access: Optional[str] = field(
        default=None, metadata={"alias": "userAuthenticationAccess"}
    )

    user_group_directory_access: Optional[str] = field(
        default=None, metadata={"alias": "userGroupDirectoryAccess"}
    )

    user_profile_access: Optional[str] = field(
        default=None, metadata={"alias": "userProfileAccess"}
    )

    user_enhanced_call_log_access: Optional[str] = field(
        default=None, metadata={"alias": "userEnhancedCallLogAccess"}
    )

    user_auto_attendant_name_dialing_access: Optional[str] = field(
        default=None, metadata={"alias": "userAutoAttendantNameDialingAccess"}
    )


@dataclass(kw_only=True)
class GroupPolycomPhoneServicesGetRequest(OCIRequest):
    """Request the group's Polycom Phone Services attributes.
        The response is either a GroupPolycomPhoneServicesGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupPolycomPhoneServicesModifyRequest(OCIRequest):
    """Modify the group's Polycom Phone Services attributes.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        include_group_common_phone_list_in_directory (Optional[bool]):

        include_group_custom_contact_directory_in_directory (Optional[bool]):

        group_custom_contact_directory (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    include_group_common_phone_list_in_directory: Optional[bool] = field(
        default=None, metadata={"alias": "includeGroupCommonPhoneListInDirectory"}
    )

    include_group_custom_contact_directory_in_directory: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeGroupCustomContactDirectoryInDirectory"},
    )

    group_custom_contact_directory: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "groupCustomContactDirectory"}
    )

    def __post_init__(self):
        nillable_fields = ["group_custom_contact_directory"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupPortalPasscodeRulesGetRequestRI(OCIRequest):
    """Requests the group's passcode rules setting.
        The response is either GroupPortalPasscodeRulesGetResponseRI or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupPortalPasscodeRulesModifyRequest(OCIRequest):
    """Request to modify the group's passcode rules setting.
        The response is either SuccessResponse or ErrorResponse.

        The following elements are only used in AS data mode:
          numberOfRepeatedDigits
          disallowRepeatedPatterns
          disallowContiguousSequences
          numberOfAscendingDigits
          numberOfDescendingDigits
          numberOfPreviousPasscodes
          reenableLogin
          lockOutInMinutes

    Attributes:

        service_provider_id (str):

        group_id (str):

        use_rule_level (Optional[str]):

        disallow_repeated_digits (Optional[bool]):

        number_of_repeated_digits (Optional[int]):

        disallow_repeated_patterns (Optional[bool]):

        disallow_contiguous_sequences (Optional[bool]):

        number_of_ascending_digits (Optional[int]):

        number_of_descending_digits (Optional[int]):

        disallow_user_number (Optional[bool]):

        disallow_reversed_user_number (Optional[bool]):

        disallow_old_passcode (Optional[bool]):

        number_of_previous_passcodes (Optional[int]):

        disallow_reversed_old_passcode (Optional[bool]):

        min_code_length (Optional[int]):

        max_code_length (Optional[int]):

        disable_login_after_max_failed_login_attempts (Optional[bool]):

        max_failed_login_attempts (Optional[int]):

        expire_password (Optional[bool]):

        passcode_expires_days (Optional[int]):

        send_login_disabled_notify_email (Optional[bool]):

        login_disabled_notify_email_address (Optional[Nillable[str]]):

        reenable_login (Optional[bool]):

        lock_out_in_minutes (Optional[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    use_rule_level: Optional[str] = field(
        default=None, metadata={"alias": "useRuleLevel"}
    )

    disallow_repeated_digits: Optional[bool] = field(
        default=None, metadata={"alias": "disallowRepeatedDigits"}
    )

    number_of_repeated_digits: Optional[int] = field(
        default=None, metadata={"alias": "numberOfRepeatedDigits"}
    )

    disallow_repeated_patterns: Optional[bool] = field(
        default=None, metadata={"alias": "disallowRepeatedPatterns"}
    )

    disallow_contiguous_sequences: Optional[bool] = field(
        default=None, metadata={"alias": "disallowContiguousSequences"}
    )

    number_of_ascending_digits: Optional[int] = field(
        default=None, metadata={"alias": "numberOfAscendingDigits"}
    )

    number_of_descending_digits: Optional[int] = field(
        default=None, metadata={"alias": "numberOfDescendingDigits"}
    )

    disallow_user_number: Optional[bool] = field(
        default=None, metadata={"alias": "disallowUserNumber"}
    )

    disallow_reversed_user_number: Optional[bool] = field(
        default=None, metadata={"alias": "disallowReversedUserNumber"}
    )

    disallow_old_passcode: Optional[bool] = field(
        default=None, metadata={"alias": "disallowOldPasscode"}
    )

    number_of_previous_passcodes: Optional[int] = field(
        default=None, metadata={"alias": "numberOfPreviousPasscodes"}
    )

    disallow_reversed_old_passcode: Optional[bool] = field(
        default=None, metadata={"alias": "disallowReversedOldPasscode"}
    )

    min_code_length: Optional[int] = field(
        default=None, metadata={"alias": "minCodeLength"}
    )

    max_code_length: Optional[int] = field(
        default=None, metadata={"alias": "maxCodeLength"}
    )

    disable_login_after_max_failed_login_attempts: Optional[bool] = field(
        default=None, metadata={"alias": "disableLoginAfterMaxFailedLoginAttempts"}
    )

    max_failed_login_attempts: Optional[int] = field(
        default=None, metadata={"alias": "maxFailedLoginAttempts"}
    )

    expire_password: Optional[bool] = field(
        default=None, metadata={"alias": "expirePassword"}
    )

    passcode_expires_days: Optional[int] = field(
        default=None, metadata={"alias": "passcodeExpiresDays"}
    )

    send_login_disabled_notify_email: Optional[bool] = field(
        default=None, metadata={"alias": "sendLoginDisabledNotifyEmail"}
    )

    login_disabled_notify_email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "loginDisabledNotifyEmailAddress"}
    )

    reenable_login: Optional[bool] = field(
        default=None, metadata={"alias": "reenableLogin"}
    )

    lock_out_in_minutes: Optional[int] = field(
        default=None, metadata={"alias": "lockOutInMinutes"}
    )

    def __post_init__(self):
        nillable_fields = ["login_disabled_notify_email_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupPreAlertingAnnouncementGetRequest20(OCIRequest):
    """Get the group’s PreAlertingservice settings.
        The response is either a GroupPreAlertingAnnouncementGetResponse20 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupPreAlertingAnnouncementModifyRequest20(OCIRequest):
    """Modify the group level pre-alerting service settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        announcement_interruption (Optional[str]):

        interruption_digit_sequence (Optional[str]):

        audio_selection (Optional[str]):

        audio_file (Optional[ExtendedMediaFileResource20]):

        video_selection (Optional[str]):

        video_file (Optional[ExtendedMediaFileResource20]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    announcement_interruption: Optional[str] = field(
        default=None, metadata={"alias": "announcementInterruption"}
    )

    interruption_digit_sequence: Optional[str] = field(
        default=None, metadata={"alias": "interruptionDigitSequence"}
    )

    audio_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioSelection"}
    )

    audio_file: Optional[ExtendedMediaFileResource20] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoSelection"}
    )

    video_file: Optional[ExtendedMediaFileResource20] = field(
        default=None, metadata={"alias": "videoFile"}
    )


@dataclass(kw_only=True)
class GroupPreferredCarrierGroupGetRequest(OCIRequest):
    """Requests the currently configured carriers for a group.
        The response is either a GroupPreferredCarrierGroupGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupPreferredCarrierGroupModifyRequest(OCIRequest):
    """Modifies the currently configured carriers for a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        intra_lata_carrier (Optional[GroupPreferredCarrierNameModify]):

        inter_lata_carrier (Optional[GroupPreferredCarrierNameModify]):

        international_carrier (Optional[GroupPreferredCarrierNameModify]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    intra_lata_carrier: Optional[GroupPreferredCarrierNameModify] = field(
        default=None, metadata={"alias": "intraLataCarrier"}
    )

    inter_lata_carrier: Optional[GroupPreferredCarrierNameModify] = field(
        default=None, metadata={"alias": "interLataCarrier"}
    )

    international_carrier: Optional[GroupPreferredCarrierNameModify] = field(
        default=None, metadata={"alias": "internationalCarrier"}
    )


@dataclass(kw_only=True)
class GroupRouteListEnterpriseTrunkNumberPrefixAssignListRequest(OCIRequest):
    """Assign a list of service provider number prefixes to a group.
        The number prefixes must have previously been added to the service provider.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        number_prefix (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    number_prefix: Optional[List[str]] = field(
        default=None, metadata={"alias": "numberPrefix"}
    )


@dataclass(kw_only=True)
class GroupRouteListEnterpriseTrunkNumberPrefixGetAvailableListRequest(OCIRequest):
    """Request a list of number prefixess that are assigned to a group and still available for assignment to users within the group.
        The response is either GroupRouteListEnterpriseTrunkNumberPrefixGetAvailableListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupRouteListEnterpriseTrunkNumberPrefixGetSummaryListRequest(OCIRequest):
    """Get the list of assigned and unassigned enterprise trunknumber prefixes in a group.
        The response is either GroupRouteListEnterpriseTrunkNumberPrefixGetSummaryListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupRouteListEnterpriseTrunkNumberPrefixUnassignListRequest(OCIRequest):
    """Unassign a list of service provider number prefixes from a group. The number prefixes then become available for assignment to other groups.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        number_prefix (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    number_prefix: Optional[List[str]] = field(
        default=None, metadata={"alias": "numberPrefix"}
    )


@dataclass(kw_only=True)
class GroupRouteListEnterpriseTrunkNumberRangeAssignListRequest(OCIRequest):
    """Assign a list of service provider number ranges to a group.
        The number ranges must have previously been added to the service provider.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        number_range_start (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    number_range_start: Optional[List[str]] = field(
        default=None, metadata={"alias": "numberRangeStart"}
    )


@dataclass(kw_only=True)
class GroupRouteListEnterpriseTrunkNumberRangeGetAvailableListRequest(OCIRequest):
    """Request a list of number ranges that are assigned to a group and still available for assignment to users within the group.
        The response is either GroupRouteListEnterpriseTrunkNumberRangeGetAvailableListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupRouteListEnterpriseTrunkNumberRangeGetSummaryListRequest(OCIRequest):
    """Get the list of assigned and unassigned enterprise trunknumber ranges in a group.
        The response is either GroupRouteListEnterpriseTrunkNumberRangeGetSummaryListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupRouteListEnterpriseTrunkNumberRangeUnassignListRequest(OCIRequest):
    """Unassign a list of service provider number ranges from a group. The number ranges then become available for assignment to other groups.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        number_range_start (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    number_range_start: Optional[List[str]] = field(
        default=None, metadata={"alias": "numberRangeStart"}
    )


@dataclass(kw_only=True)
class GroupRoutePointAddDNISRequest(OCIRequest):
    """Add a Route Point DNIS.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        dnis_key (DNISKey):

        dnis_phone_number (Optional[str]):

        extension (Optional[str]):

        use_custom_clid_settings (bool):

        calling_line_id_phone_number (Optional[str]):

        calling_line_id_last_name (Optional[str]):

        calling_line_id_first_name (Optional[str]):

        use_custom_dnis_announcement_settings (bool):

        allow_outgoing_acd_call (bool):

    """

    dnis_key: DNISKey = field(metadata={"alias": "dnisKey"})

    dnis_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "dnisPhoneNumber"}
    )

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})

    use_custom_clid_settings: bool = field(metadata={"alias": "useCustomCLIDSettings"})

    calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )

    calling_line_id_last_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdLastName"}
    )

    calling_line_id_first_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdFirstName"}
    )

    use_custom_dnis_announcement_settings: bool = field(
        metadata={"alias": "useCustomDnisAnnouncementSettings"}
    )

    allow_outgoing_acd_call: bool = field(metadata={"alias": "allowOutgoingACDCall"})


@dataclass(kw_only=True)
class GroupRoutePointAddInstanceRequest23(OCIRequest):
    """Add a Route Point instance to a group.
        The Route Point is a Call Center queue that performs the same function but
        allows an external system to perform the distribution of calls instead of making
        those decisions itself.
        The domain is required in the serviceUserId.
        The response is either SuccessResponse or ErrorResponse.
        The Following elements are only used in AS data mode and ignored in XS data mode:
              - sendCallAdmissionNotification, use value ‘false’ in XS data mode.
              - callAdmissionTimerSeconds, use value ‘3’ in XS data mode.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_user_id (str):

        service_instance_profile (ServiceInstanceAddProfile):

        network_class_of_service (Optional[str]):

        external_preferred_audio_codec (str):

        internal_preferred_audio_codec (str):

        queue_length (int):

        no_answer_timeout_rings (int):

        enable_video (bool):

        play_ringing_when_offering_call (bool):

        override_agent_wrap_up_time (bool):

        wrap_up_seconds (Optional[int]):

        enable_automatic_state_change_for_agents (bool):

        agent_state_after_call (str):

        agent_unavailable_code (Optional[str]):

        force_delivery_of_calls (bool):

        force_delivery_wait_time_seconds (Optional[int]):

        send_call_admission_notification (bool):

        call_admission_timer_seconds (int):

        enable_unlimited_queue_length (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: ServiceInstanceAddProfile = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    external_preferred_audio_codec: str = field(
        metadata={"alias": "externalPreferredAudioCodec"}
    )

    internal_preferred_audio_codec: str = field(
        metadata={"alias": "internalPreferredAudioCodec"}
    )

    queue_length: int = field(metadata={"alias": "queueLength"})

    no_answer_timeout_rings: int = field(metadata={"alias": "noAnswerTimeoutRings"})

    enable_video: bool = field(metadata={"alias": "enableVideo"})

    play_ringing_when_offering_call: bool = field(
        metadata={"alias": "playRingingWhenOfferingCall"}
    )

    override_agent_wrap_up_time: bool = field(
        metadata={"alias": "overrideAgentWrapUpTime"}
    )

    wrap_up_seconds: Optional[int] = field(
        default=None, metadata={"alias": "wrapUpSeconds"}
    )

    enable_automatic_state_change_for_agents: bool = field(
        metadata={"alias": "enableAutomaticStateChangeForAgents"}
    )

    agent_state_after_call: str = field(metadata={"alias": "agentStateAfterCall"})

    agent_unavailable_code: Optional[str] = field(
        default=None, metadata={"alias": "agentUnavailableCode"}
    )

    force_delivery_of_calls: bool = field(metadata={"alias": "forceDeliveryOfCalls"})

    force_delivery_wait_time_seconds: Optional[int] = field(
        default=None, metadata={"alias": "forceDeliveryWaitTimeSeconds"}
    )

    send_call_admission_notification: bool = field(
        metadata={"alias": "sendCallAdmissionNotification"}
    )

    call_admission_timer_seconds: int = field(
        metadata={"alias": "callAdmissionTimerSeconds"}
    )

    enable_unlimited_queue_length: Optional[bool] = field(
        default=None, metadata={"alias": "enableUnlimitedQueueLength"}
    )


@dataclass(kw_only=True)
class GroupRoutePointBouncedCallGetRequest(OCIRequest):
    """Get a route point's bounced call settings.
        The response is either a GroupRoutePointBouncedCallGetResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupRoutePointBouncedCallModifyRequest(OCIRequest):
    """Modify a route point's bounced call settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        is_active (Optional[bool]):

        number_of_rings_before_bouncing_call (Optional[int]):

        enable_transfer (Optional[bool]):

        transfer_phone_number (Optional[Nillable[str]]):

        bounce_call_when_agent_unavailable (Optional[bool]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    number_of_rings_before_bouncing_call: Optional[int] = field(
        default=None, metadata={"alias": "numberOfRingsBeforeBouncingCall"}
    )

    enable_transfer: Optional[bool] = field(
        default=None, metadata={"alias": "enableTransfer"}
    )

    transfer_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    bounce_call_when_agent_unavailable: Optional[bool] = field(
        default=None, metadata={"alias": "bounceCallWhenAgentUnavailable"}
    )

    def __post_init__(self):
        nillable_fields = ["transfer_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupRoutePointDeleteDNISRequest(OCIRequest):
    """Delete a route point's DNIS.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        dnis_key (DNISKey):

    """

    dnis_key: DNISKey = field(metadata={"alias": "dnisKey"})


@dataclass(kw_only=True)
class GroupRoutePointDeleteInstanceRequest(OCIRequest):
    """Delete a Route Point instance from a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupRoutePointDistinctiveRingingGetRequest(OCIRequest):
    """Get the distinctive ringing configuration values for route point.
        The response is either a GroupRoutePointDistinctiveRingingGetResponse
        or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupRoutePointDistinctiveRingingModifyRequest(OCIRequest):
    """Modify the distinctive ringing configuration values for route point.

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        enable_distinctive_ringing (Optional[bool]):

        distinctive_ringing_ring_pattern (Optional[str]):

        distinctive_ringing_force_delivery_ring_pattern (Optional[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    enable_distinctive_ringing: Optional[bool] = field(
        default=None, metadata={"alias": "enableDistinctiveRinging"}
    )

    distinctive_ringing_ring_pattern: Optional[str] = field(
        default=None, metadata={"alias": "distinctiveRingingRingPattern"}
    )

    distinctive_ringing_force_delivery_ring_pattern: Optional[str] = field(
        default=None, metadata={"alias": "distinctiveRingingForceDeliveryRingPattern"}
    )


@dataclass(kw_only=True)
class GroupRoutePointExternalSystemAssignListRequest(OCIRequest):
    """Assign a list of route point external systems to a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        route_point_external_system (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    route_point_external_system: Optional[List[str]] = field(
        default=None, metadata={"alias": "routePointExternalSystem"}
    )


@dataclass(kw_only=True)
class GroupRoutePointExternalSystemGetAssignedListRequest(OCIRequest):
    """Requests the list of all Route Point External Systems assigned to a group.
        The response is either GroupRoutePointExternalSystemGetAssignedListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupRoutePointExternalSystemGetAssignedRoutePointListRequest(OCIRequest):
    """Request a list of route points within in a group that have a given external system assigned.
        The response is either GroupRoutePointExternalSystemGetAssignedRoutePointListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        external_system (str):

        response_size_limit (Optional[int]):

        search_criteria_route_point_name (Optional[List[SearchCriteriaRoutePointName]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    external_system: str = field(metadata={"alias": "externalSystem"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_route_point_name: Optional[List[SearchCriteriaRoutePointName]] = (
        field(default=None, metadata={"alias": "searchCriteriaRoutePointName"})
    )


@dataclass(kw_only=True)
class GroupRoutePointExternalSystemUnassignListRequest(OCIRequest):
    """Unassign a list of route point external systems from a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        route_point_external_system (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    route_point_external_system: Optional[List[str]] = field(
        default=None, metadata={"alias": "routePointExternalSystem"}
    )


@dataclass(kw_only=True)
class GroupRoutePointForcedForwardingGetRequest20(OCIRequest):
    """Get a route point's forced forwarding settings.
        The response is either a GroupRoutePointForcedForwardingGetResponse20 or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupRoutePointForcedForwardingModifyRequest20(OCIRequest):
    """Modify a route point's forced forwarding settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        is_active (Optional[bool]):

        forward_to_phone_number (Optional[Nillable[str]]):

        play_announcement_before_forwarding (Optional[bool]):

        audio_message_selection (Optional[str]):

        audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        video_message_selection (Optional[str]):

        video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    forward_to_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    play_announcement_before_forwarding: Optional[bool] = field(
        default=None, metadata={"alias": "playAnnouncementBeforeForwarding"}
    )

    audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioMessageSelection"}
    )

    audio_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoMessageSelection"}
    )

    video_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )

    def __post_init__(self):
        nillable_fields = ["forward_to_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupRoutePointGetAnnouncementRequest22(OCIRequest):
    """Get a route point's announcement settings.
        The response is either a GroupRoutePointGetAnnouncementResponse22 or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupRoutePointGetDNISAgentListRequest(OCIRequest):
    """Get a list of agent who selected the DNIS as the outgoing call.
        The response is either GroupRoutePointGetDNISAgentListResponse or ErrorResponse.

    Attributes:

        dnis_key (DNISKey):

    """

    dnis_key: DNISKey = field(metadata={"alias": "dnisKey"})


@dataclass(kw_only=True)
class GroupRoutePointGetDNISAnnouncementRequest22(OCIRequest):
    """Get a route point's DNIS Announcements
        The response is either a GroupRoutePointGetDNISAnnouncementResponse22 or an ErrorResponse.

    Attributes:

        dnis_key (DNISKey):

    """

    dnis_key: DNISKey = field(metadata={"alias": "dnisKey"})


@dataclass(kw_only=True)
class GroupRoutePointGetDNISListRequest(OCIRequest):
    """Get a list of DNIS that are configured for a Route Point.
        The response is either GroupRoutePointGetDNISListResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupRoutePointGetDNISRequest(OCIRequest):
    """Get a route point's DNIS.
        The response is either a GroupRoutePointGetDNISResponse or an ErrorResponse.

    Attributes:

        dnis_key (DNISKey):

    """

    dnis_key: DNISKey = field(metadata={"alias": "dnisKey"})


@dataclass(kw_only=True)
class GroupRoutePointGetFailoverPolicyRequest(OCIRequest):
    """Get the route point failover policy.
        The response is either a GroupRoutePointGetFailoverPolicyResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupRoutePointGetInstanceListRequest(OCIRequest):
    """Get a list of Route Point instances within a group.
        It is possible to search by various criteria to restrict the number of rows returned.
        The response is either GroupRoutePointGetInstanceListResponse or ErrorResponse.
        It is possible to get the instances within a specified department.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_department_name (Optional[str]):

        response_size_limit (Optional[int]):

        search_criteria_route_point_name (Optional[List[SearchCriteriaRoutePointName]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_department_name: Optional[str] = field(
        default=None, metadata={"alias": "groupDepartmentName"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_route_point_name: Optional[List[SearchCriteriaRoutePointName]] = (
        field(default=None, metadata={"alias": "searchCriteriaRoutePointName"})
    )


@dataclass(kw_only=True)
class GroupRoutePointGetInstanceRequest23(OCIRequest):
    """Request to get all the information of a Route Point instance.
        The response is either GroupRoutePointGetInstanceResponse19sp1 or ErrorResponse.
        The Following elements are only used in AS data mode and ignored in XS data mode:
            - sendCallAdmissionNotification, use value ‘false’ in XS data mode.
            - callAdmissionTimerSeconds, use value ‘3’ in XS data mode.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupRoutePointHolidayServiceGetRequest20(OCIRequest):
    """Get a route point's holiday service settings.
        The response is either a GroupRoutePointHolidayServiceGetResponse20 or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupRoutePointHolidayServiceModifyRequest20(OCIRequest):
    """Modify a route point's holiday service settings.
        Only Group and Enterprise level schedules are accepted.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        action (Optional[str]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        transfer_phone_number (Optional[Nillable[str]]):

        play_announcement_before_action (Optional[bool]):

        audio_message_selection (Optional[str]):

        audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        video_message_selection (Optional[str]):

        video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    action: Optional[str] = field(default=None, metadata={"alias": "action"})

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    transfer_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    play_announcement_before_action: Optional[bool] = field(
        default=None, metadata={"alias": "playAnnouncementBeforeAction"}
    )

    audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioMessageSelection"}
    )

    audio_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoMessageSelection"}
    )

    video_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )

    def __post_init__(self):
        nillable_fields = ["holiday_schedule", "transfer_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupRoutePointManualFailoverRequest(OCIRequest):
    """Initiate manual failover for the Route Point.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupRoutePointModifyActiveInstanceListRequest(OCIRequest):
    """Request to set the active status of Route Point instances.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_activation (Optional[List[ServiceActivation]]):

    """

    service_activation: Optional[List[ServiceActivation]] = field(
        default=None, metadata={"alias": "serviceActivation"}
    )


@dataclass(kw_only=True)
class GroupRoutePointModifyAnnouncementRequest20(OCIRequest):
    """Modify a route point's announcement settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        media_on_hold_source (Optional[CallCenterMediaOnHoldSourceModify20]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    media_on_hold_source: Optional[CallCenterMediaOnHoldSourceModify20] = field(
        default=None, metadata={"alias": "mediaOnHoldSource"}
    )


@dataclass(kw_only=True)
class GroupRoutePointModifyDNISAnnouncementRequest20(OCIRequest):
    """Modify a route point DNIS announcement settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        dnis_key (DNISKey):

        media_on_hold_source (Optional[CallCenterMediaOnHoldSourceModify20]):

    """

    dnis_key: DNISKey = field(metadata={"alias": "dnisKey"})

    media_on_hold_source: Optional[CallCenterMediaOnHoldSourceModify20] = field(
        default=None, metadata={"alias": "mediaOnHoldSource"}
    )


@dataclass(kw_only=True)
class GroupRoutePointModifyDNISParametersRequest(OCIRequest):
    """Modify the setting that are configured for all the DNIS in a Route Point.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        display_dnis_number (Optional[bool]):

        display_dnis_name (Optional[bool]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    display_dnis_number: Optional[bool] = field(
        default=None, metadata={"alias": "displayDNISNumber"}
    )

    display_dnis_name: Optional[bool] = field(
        default=None, metadata={"alias": "displayDNISName"}
    )


@dataclass(kw_only=True)
class GroupRoutePointModifyDNISRequest(OCIRequest):
    """Modify a route point's DNIS settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        dnis_key (DNISKey):

        new_dnis_name (Optional[str]):

        dnis_phone_number (Optional[Nillable[str]]):

        extension (Optional[Nillable[str]]):

        use_custom_clid_settings (Optional[bool]):

        calling_line_id_phone_number (Optional[Nillable[str]]):

        calling_line_id_last_name (Optional[Nillable[str]]):

        calling_line_id_first_name (Optional[Nillable[str]]):

        use_custom_dnis_announcement_settings (Optional[bool]):

        allow_outgoing_acd_call (Optional[bool]):

    """

    dnis_key: DNISKey = field(metadata={"alias": "dnisKey"})

    new_dnis_name: Optional[str] = field(
        default=None, metadata={"alias": "newDNISName"}
    )

    dnis_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "dnisPhoneNumber"}
    )

    extension: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "extension"}
    )

    use_custom_clid_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomCLIDSettings"}
    )

    calling_line_id_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )

    calling_line_id_last_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callingLineIdLastName"}
    )

    calling_line_id_first_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callingLineIdFirstName"}
    )

    use_custom_dnis_announcement_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomDnisAnnouncementSettings"}
    )

    allow_outgoing_acd_call: Optional[bool] = field(
        default=None, metadata={"alias": "allowOutgoingACDCall"}
    )

    def __post_init__(self):
        nillable_fields = [
            "dnis_phone_number",
            "extension",
            "calling_line_id_phone_number",
            "calling_line_id_last_name",
            "calling_line_id_first_name",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupRoutePointModifyFailoverPolicyRequest(OCIRequest):
    """Modify the route point failover policy.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        enable_failover_support (Optional[bool]):

        external_system (Optional[Nillable[str]]):

        failover_phone_number (Optional[Nillable[str]]):

        per_call_enable_failover_support (Optional[bool]):

        per_call_call_failure_timeout_seconds (Optional[int]):

        per_call_outbound_call_failure_timeout_seconds (Optional[int]):

        per_call_failover_phone_number (Optional[Nillable[str]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    enable_failover_support: Optional[bool] = field(
        default=None, metadata={"alias": "enableFailoverSupport"}
    )

    external_system: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "externalSystem"}
    )

    failover_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "failoverPhoneNumber"}
    )

    per_call_enable_failover_support: Optional[bool] = field(
        default=None, metadata={"alias": "perCallEnableFailoverSupport"}
    )

    per_call_call_failure_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "perCallCallFailureTimeoutSeconds"}
    )

    per_call_outbound_call_failure_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "perCallOutboundCallFailureTimeoutSeconds"}
    )

    per_call_failover_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "perCallFailoverPhoneNumber"}
    )

    def __post_init__(self):
        nillable_fields = [
            "external_system",
            "failover_phone_number",
            "per_call_failover_phone_number",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupRoutePointModifyInstanceRequest22(OCIRequest):
    """Request to modify a Route Point instance.
        The response is either SuccessResponse or ErrorResponse.
        The Following elements are only used in AS data mode and ignored in XS data mode:
            - sendCallAdmissionNotification, use value ‘false’ in XS data mode.
            - callAdmissionTimerSeconds, use value ‘3’ in XS data mode.

    Attributes:

        service_user_id (str):

        service_instance_profile (Optional[ServiceInstanceModifyProfile]):

        network_class_of_service (Optional[str]):

        external_preferred_audio_codec (Optional[str]):

        internal_preferred_audio_codec (Optional[str]):

        queue_length (Optional[int]):

        no_answer_timeout_rings (Optional[int]):

        enable_video (Optional[bool]):

        play_ringing_when_offering_call (Optional[bool]):

        override_agent_wrap_up_time (Optional[bool]):

        wrap_up_seconds (Optional[Nillable[int]]):

        enable_automatic_state_change_for_agents (Optional[bool]):

        agent_state_after_call (Optional[str]):

        agent_unavailable_code (Optional[Nillable[str]]):

        force_delivery_of_calls (Optional[bool]):

        force_delivery_wait_time_seconds (Optional[Nillable[int]]):

        send_call_admission_notification (Optional[bool]):

        call_admission_timer_seconds (Optional[int]):

        enable_unlimited_queue_length (Optional[bool]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: Optional[ServiceInstanceModifyProfile] = field(
        default=None, metadata={"alias": "serviceInstanceProfile"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    external_preferred_audio_codec: Optional[str] = field(
        default=None, metadata={"alias": "externalPreferredAudioCodec"}
    )

    internal_preferred_audio_codec: Optional[str] = field(
        default=None, metadata={"alias": "internalPreferredAudioCodec"}
    )

    queue_length: Optional[int] = field(default=None, metadata={"alias": "queueLength"})

    no_answer_timeout_rings: Optional[int] = field(
        default=None, metadata={"alias": "noAnswerTimeoutRings"}
    )

    enable_video: Optional[bool] = field(
        default=None, metadata={"alias": "enableVideo"}
    )

    play_ringing_when_offering_call: Optional[bool] = field(
        default=None, metadata={"alias": "playRingingWhenOfferingCall"}
    )

    override_agent_wrap_up_time: Optional[bool] = field(
        default=None, metadata={"alias": "overrideAgentWrapUpTime"}
    )

    wrap_up_seconds: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "wrapUpSeconds"}
    )

    enable_automatic_state_change_for_agents: Optional[bool] = field(
        default=None, metadata={"alias": "enableAutomaticStateChangeForAgents"}
    )

    agent_state_after_call: Optional[str] = field(
        default=None, metadata={"alias": "agentStateAfterCall"}
    )

    agent_unavailable_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "agentUnavailableCode"}
    )

    force_delivery_of_calls: Optional[bool] = field(
        default=None, metadata={"alias": "forceDeliveryOfCalls"}
    )

    force_delivery_wait_time_seconds: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "forceDeliveryWaitTimeSeconds"}
    )

    send_call_admission_notification: Optional[bool] = field(
        default=None, metadata={"alias": "sendCallAdmissionNotification"}
    )

    call_admission_timer_seconds: Optional[int] = field(
        default=None, metadata={"alias": "callAdmissionTimerSeconds"}
    )

    enable_unlimited_queue_length: Optional[bool] = field(
        default=None, metadata={"alias": "enableUnlimitedQueueLength"}
    )

    def __post_init__(self):
        nillable_fields = [
            "wrap_up_seconds",
            "agent_unavailable_code",
            "force_delivery_wait_time_seconds",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupRoutePointNightServiceGetRequest20(OCIRequest):
    """Get a route point's night service settings.
        The response is either a GroupRoutePointNightServiceGetResponse20 or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupRoutePointNightServiceModifyRequest20(OCIRequest):
    """Modify a route point's night service settings.
        Only Group and Enterprise level schedules are accepted.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        action (Optional[str]):

        business_hours (Optional[Nillable[TimeSchedule]]):

        force_night_service (Optional[bool]):

        transfer_phone_number (Optional[Nillable[str]]):

        play_announcement_before_action (Optional[bool]):

        audio_message_selection (Optional[str]):

        audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        video_message_selection (Optional[str]):

        video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        manual_announcement_mode (Optional[str]):

        manual_audio_message_selection (Optional[str]):

        manual_audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        manual_audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        manual_video_message_selection (Optional[str]):

        manual_video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        manual_video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    action: Optional[str] = field(default=None, metadata={"alias": "action"})

    business_hours: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "businessHours"}
    )

    force_night_service: Optional[bool] = field(
        default=None, metadata={"alias": "forceNightService"}
    )

    transfer_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    play_announcement_before_action: Optional[bool] = field(
        default=None, metadata={"alias": "playAnnouncementBeforeAction"}
    )

    audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioMessageSelection"}
    )

    audio_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoMessageSelection"}
    )

    video_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )

    manual_announcement_mode: Optional[str] = field(
        default=None, metadata={"alias": "manualAnnouncementMode"}
    )

    manual_audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "manualAudioMessageSelection"}
    )

    manual_audio_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "manualAudioUrlList"}
    )

    manual_audio_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "manualAudioFileList"}
    )

    manual_video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "manualVideoMessageSelection"}
    )

    manual_video_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "manualVideoUrlList"}
    )

    manual_video_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "manualVideoFileList"}
    )

    def __post_init__(self):
        nillable_fields = ["business_hours", "transfer_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupRoutePointOverflowGetRequest20(OCIRequest):
    """Get a route point's overflow settings.
        The response is either a GroupRoutePointOverflowGetResponse20 or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupRoutePointOverflowModifyRequest20(OCIRequest):
    """Modify a route point's overflow settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        action (Optional[str]):

        transfer_phone_number (Optional[Nillable[str]]):

        overflow_after_timeout (Optional[bool]):

        timeout_seconds (Optional[int]):

        play_announcement_before_overflow_processing (Optional[bool]):

        audio_message_selection (Optional[str]):

        audio_url_list (Optional[CallCenterAnnouncementURLListModify]):

        audio_file_list (Optional[CallCenterAnnouncementFileListModify20]):

        video_message_selection (Optional[str]):

        video_url_list (Optional[CallCenterAnnouncementURLListModify]):

        video_file_list (Optional[CallCenterAnnouncementFileListModify20]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    action: Optional[str] = field(default=None, metadata={"alias": "action"})

    transfer_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    overflow_after_timeout: Optional[bool] = field(
        default=None, metadata={"alias": "overflowAfterTimeout"}
    )

    timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "timeoutSeconds"}
    )

    play_announcement_before_overflow_processing: Optional[bool] = field(
        default=None, metadata={"alias": "playAnnouncementBeforeOverflowProcessing"}
    )

    audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioMessageSelection"}
    )

    audio_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoMessageSelection"}
    )

    video_url_list: Optional[CallCenterAnnouncementURLListModify] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListModify20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )

    def __post_init__(self):
        nillable_fields = ["transfer_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupRoutePointQueueCallDispositionCodeAddRequest(OCIRequest):
    """Add a Route Point Call Disposition Code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        code (str):

        is_active (bool):

        description (Optional[str]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    code: str = field(metadata={"alias": "code"})

    is_active: bool = field(metadata={"alias": "isActive"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class GroupRoutePointQueueCallDispositionCodeDeleteRequest(OCIRequest):
    """Delete a Route Point Call Disposition Code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        code (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    code: str = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class GroupRoutePointQueueCallDispositionCodeGetListRequest(OCIRequest):
    """Get the list of Route Point Level and Organization Level Call Disposition Codes.
        The response is either GroupRoutePointQueueCallDispositionCodeGetListResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupRoutePointQueueCallDispositionCodeGetRequest(OCIRequest):
    """Get a Route Point Call Disposition Code.
        The response is either GroupRoutePointQueueCallDispositionCodeGetResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        code (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    code: str = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class GroupRoutePointQueueCallDispositionCodeModifyRequest(OCIRequest):
    """Modify a Route Point Call Disposition Code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        code (str):

        is_active (Optional[bool]):

        description (Optional[Nillable[str]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    code: str = field(metadata={"alias": "code"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupRoutePointQueueCallDispositionCodeSettingsGetRequest(OCIRequest):
    """Request the queue level data associated with Route Point Call Disposition Code Settings.
        The response is either an GroupRoutePointQueueCallDispositionCodeSettingsGetResponse or an
        ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupRoutePointQueueCallDispositionCodeSettingsModifyRequest(OCIRequest):
    """Modify the queue level data associated with Route Point Agents Unavailable Code Settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        enable_call_disposition_codes (Optional[bool]):

        include_organization_codes (Optional[bool]):

        force_use_of_call_disposition_codes (Optional[bool]):

        default_call_disposition_code (Optional[Nillable[CallDispositionCodeWithLevel]]):

        call_disposition_code_activation (Optional[List[CallDispositionCodeActivation]]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    enable_call_disposition_codes: Optional[bool] = field(
        default=None, metadata={"alias": "enableCallDispositionCodes"}
    )

    include_organization_codes: Optional[bool] = field(
        default=None, metadata={"alias": "includeOrganizationCodes"}
    )

    force_use_of_call_disposition_codes: Optional[bool] = field(
        default=None, metadata={"alias": "forceUseOfCallDispositionCodes"}
    )

    default_call_disposition_code: Optional[Nillable[CallDispositionCodeWithLevel]] = (
        field(default=None, metadata={"alias": "defaultCallDispositionCode"})
    )

    call_disposition_code_activation: Optional[List[CallDispositionCodeActivation]] = (
        field(default=None, metadata={"alias": "callDispositionCodeActivation"})
    )

    def __post_init__(self):
        nillable_fields = ["default_call_disposition_code"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupRoutingProfileGetRequest(OCIRequest):
    """Request the routing profile for the group.
        The response is either a GroupRoutingProfileGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupRoutingProfileModifyRequest(OCIRequest):
    """Requests to modify the routing profile for a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        routing_profile (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    routing_profile: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "routingProfile"}
    )

    def __post_init__(self):
        nillable_fields = ["routing_profile"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupScheduleAddEventRequest(OCIRequest):
    """Add an event to group schedule.
        The response is either a SuccessResponse or an ErrorResponse.
        The startDate element is adjusted to the first occurrence of the recurrent schedule that comes at or after the startDate.
        The endDate element is set to the sum of the adjusted starDate element value and the event duration.

    Attributes:

        service_provider_id (str):

        group_id (str):

        schedule_key (ScheduleKey):

        event_name (str):

        start_date (int):

        all_day_event (Optional[bool]):

        start_time (Optional[HourMinute]):

        end_time (Optional[HourMinute]):

        end_date (int):

        recurrence (Optional[Recurrence]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    event_name: str = field(metadata={"alias": "eventName"})

    start_date: int = field(metadata={"alias": "startDate"})

    all_day_event: Optional[bool] = field(
        default=None, metadata={"alias": "allDayEvent"}
    )

    start_time: Optional[HourMinute] = field(
        default=None, metadata={"alias": "startTime"}
    )

    end_time: Optional[HourMinute] = field(default=None, metadata={"alias": "endTime"})

    end_date: int = field(metadata={"alias": "endDate"})

    recurrence: Optional[Recurrence] = field(
        default=None, metadata={"alias": "recurrence"}
    )


@dataclass(kw_only=True)
class GroupScheduleAddRequest(OCIRequest):
    """Add a group schedule.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        schedule_name (str):

        schedule_type (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    schedule_name: str = field(metadata={"alias": "scheduleName"})

    schedule_type: str = field(metadata={"alias": "scheduleType"})


@dataclass(kw_only=True)
class GroupScheduleDeleteEventListRequest(OCIRequest):
    """Delete a list of events from a group schedule.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        schedule_key (ScheduleKey):

        event_name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    event_name: List[str] = field(metadata={"alias": "eventName"})


@dataclass(kw_only=True)
class GroupScheduleDeleteListRequest(OCIRequest):
    """Delete a list of group schedule.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        schedule_key (List[ScheduleKey]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    schedule_key: List[ScheduleKey] = field(metadata={"alias": "scheduleKey"})


@dataclass(kw_only=True)
class GroupScheduleGetEventDetailListRequest(OCIRequest):
    """Get the list of events of a group schedule.
        The response is either a GroupScheduleGetEventDetailListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        schedule_key (ScheduleKey):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})


@dataclass(kw_only=True)
class GroupScheduleGetEventListRequest(OCIRequest):
    """Get the list of events of a group schedule.
        The response is either a GroupScheduleGetEventListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        schedule_key (ScheduleKey):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})


@dataclass(kw_only=True)
class GroupScheduleGetEventRequest(OCIRequest):
    """Get an event from a group schedule.
        The response is either a GroupScheduleGetEventResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        schedule_key (ScheduleKey):

        event_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    event_name: str = field(metadata={"alias": "eventName"})


@dataclass(kw_only=True)
class GroupScheduleGetListRequest17sp1(OCIRequest):
    """Get the list of schedules viewable by a group. The list can be filtered by schedule type.
        The response is either a GroupScheduleGetListResponse17sp1 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        schedule_type (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    schedule_type: Optional[str] = field(
        default=None, metadata={"alias": "scheduleType"}
    )


@dataclass(kw_only=True)
class GroupScheduleGetPagedSortedListRequest(OCIRequest):
    """Get the list of schedules viewable by a group.
        The response is either a GroupScheduleGetPagedSortedListResponse or an ErrorResponse.
        If no sortOrder is included, the response is sorted by Name ascending by default.
        If the responsePagingControl element is not provided, the paging startIndex will be
        set to 1 by default, and the responsePageSize will be set to the maximum
        responsePageSize by default.
        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option
        is included. Then the search criteria are logically ORed together.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_by_schedule_name (Optional[SortByScheduleName]):

        search_criteria_schedule_name (Optional[List[SearchCriteriaScheduleName]]):

        search_criteria_exact_schedule_type (Optional[List[SearchCriteriaExactScheduleType]]):

        search_criteria_exact_schedule_level (Optional[List[SearchCriteriaExactScheduleLevel]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_by_schedule_name: Optional[SortByScheduleName] = field(
        default=None, metadata={"alias": "sortByScheduleName"}
    )

    search_criteria_schedule_name: Optional[List[SearchCriteriaScheduleName]] = field(
        default=None, metadata={"alias": "searchCriteriaScheduleName"}
    )

    search_criteria_exact_schedule_type: Optional[
        List[SearchCriteriaExactScheduleType]
    ] = field(default=None, metadata={"alias": "searchCriteriaExactScheduleType"})

    search_criteria_exact_schedule_level: Optional[
        List[SearchCriteriaExactScheduleLevel]
    ] = field(default=None, metadata={"alias": "searchCriteriaExactScheduleLevel"})

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class GroupScheduleModifyEventRequest(OCIRequest):
    """Modify an event of a group schedule.
        The response is either a SuccessResponse or an ErrorResponse.
        The startDate element is adjusted to the first occurrence of the recurrent schedule that comes at or after the startDate.
        The endDate element is set to the sum of the adjusted starDate element value and the event duration.

    Attributes:

        service_provider_id (str):

        group_id (str):

        schedule_key (ScheduleKey):

        event_name (str):

        new_event_name (Optional[str]):

        start_date (Optional[int]):

        all_day_event (Optional[bool]):

        start_time (Optional[HourMinute]):

        end_time (Optional[HourMinute]):

        end_date (Optional[int]):

        recurrence (Optional[Nillable[Recurrence]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    event_name: str = field(metadata={"alias": "eventName"})

    new_event_name: Optional[str] = field(
        default=None, metadata={"alias": "newEventName"}
    )

    start_date: Optional[int] = field(default=None, metadata={"alias": "startDate"})

    all_day_event: Optional[bool] = field(
        default=None, metadata={"alias": "allDayEvent"}
    )

    start_time: Optional[HourMinute] = field(
        default=None, metadata={"alias": "startTime"}
    )

    end_time: Optional[HourMinute] = field(default=None, metadata={"alias": "endTime"})

    end_date: Optional[int] = field(default=None, metadata={"alias": "endDate"})

    recurrence: Optional[Nillable[Recurrence]] = field(
        default=None, metadata={"alias": "recurrence"}
    )

    def __post_init__(self):
        nillable_fields = ["recurrence"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupScheduleModifyRequest(OCIRequest):
    """Modify a group schedule.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        schedule_key (ScheduleKey):

        new_schedule_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    new_schedule_name: Optional[str] = field(
        default=None, metadata={"alias": "newScheduleName"}
    )


@dataclass(kw_only=True)
class GroupScheduleUsageRequest(OCIRequest):
    """Get the list of services using a group schedule.
        The response is either a GroupScheduleUsageResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        schedule_key (ScheduleKey):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})


@dataclass(kw_only=True)
class GroupSecurityClassificationCustomizationGetAvailableListRequest(OCIRequest):
    """Get the available group security classification list. If it is not customized, it returns the system default list.
        The response is either an GroupSecurityClassificationCustomizationGetAvailableListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupSeriesCompletionAddInstanceRequest(OCIRequest):
    """Adds a Series Completion group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        user_id (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    user_id: Optional[List[str]] = field(default=None, metadata={"alias": "userId"})


@dataclass(kw_only=True)
class GroupSeriesCompletionDeleteInstanceRequest(OCIRequest):
    """Deletes a Series Completion group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupSeriesCompletionGetAvailableUserListRequest(OCIRequest):
    """Get a list of users that can be assigned to a Series Completion group.
        The available user list for a new Series Completion group can be obtained
        by not setting the name.
        The response is either GroupSeriesCompletionGetAvailableUserListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (Optional[str]):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: Optional[str] = field(default=None, metadata={"alias": "name"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupSeriesCompletionGetInstanceListRequest(OCIRequest):
    """Request to get a list of Series Completion instances within a group.
        The response is either GroupSeriesCompletionGetInstanceListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupSeriesCompletionGetInstanceRequest(OCIRequest):
    """Gets a Series Completion group.
        The response is either GroupSeriesCompletionGetInstanceResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupSeriesCompletionModifyInstanceRequest(OCIRequest):
    """Modifies a Series Completion group. Replaces the entire list of users in the group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        new_name (Optional[str]):

        user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "userIdList"}
    )

    def __post_init__(self):
        nillable_fields = ["user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupServiceAssignListRequest(OCIRequest):
    """Assign one or more group services to the group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_name: List[str] = field(metadata={"alias": "serviceName"})


@dataclass(kw_only=True)
class GroupServiceGetAuthorizationListRequest(OCIRequest):
    """Requests the group's service authorization status.
        The response is either GroupServiceGetAuthorizationListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupServiceGetAuthorizationRequest(OCIRequest):
    """Requests the group's service authorization information for a specific service or service pack.
        The response is either GroupServiceGetAuthorizationResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        user_service_name (Optional[str]):

        group_service_name (Optional[str]):

        service_pack_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    user_service_name: Optional[str] = field(
        default=None, metadata={"alias": "userServiceName"}
    )

    group_service_name: Optional[str] = field(
        default=None, metadata={"alias": "groupServiceName"}
    )

    service_pack_name: Optional[str] = field(
        default=None, metadata={"alias": "servicePackName"}
    )


@dataclass(kw_only=True)
class GroupServiceGetAuthorizedListRequest(OCIRequest):
    """Requests the list of services and service packs authorized to a group.
        The response is either GroupServiceGetAuthorizedListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupServiceInstancePrivacyGetRequest17sp4(OCIRequest):
    """Request the data associated with Privacy for a service instance.
        The response is either a GroupServiceInstancePrivacyGetResponse17sp4
        or an ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupServiceInstancePrivacyModifyRequest(OCIRequest):
    """Modify the data associated with Privacy for a service instance.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_user_id (str):

        enable_directory_privacy (Optional[bool]):

        enable_auto_attendant_extension_dialing_privacy (Optional[bool]):

        enable_auto_attendant_name_dialing_privacy (Optional[bool]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    enable_directory_privacy: Optional[bool] = field(
        default=None, metadata={"alias": "enableDirectoryPrivacy"}
    )

    enable_auto_attendant_extension_dialing_privacy: Optional[bool] = field(
        default=None, metadata={"alias": "enableAutoAttendantExtensionDialingPrivacy"}
    )

    enable_auto_attendant_name_dialing_privacy: Optional[bool] = field(
        default=None, metadata={"alias": "enableAutoAttendantNameDialingPrivacy"}
    )


@dataclass(kw_only=True)
class GroupServiceIsAssignedRequest(OCIRequest):
    """Request to determine if a GroupService is assigned to the group.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_name: str = field(metadata={"alias": "serviceName"})


@dataclass(kw_only=True)
class GroupServiceModifyAuthorizationListRequest(OCIRequest):
    """Requests to change the group's service authorization status.
        The boolean flags are used to authorize or unauthorize services and packs.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_pack_authorization (Optional[List[ServicePackAuthorization]]):

        group_service_authorization (Optional[List[GroupServiceAuthorization]]):

        user_service_authorization (Optional[List[UserServiceAuthorization]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_pack_authorization: Optional[List[ServicePackAuthorization]] = field(
        default=None, metadata={"alias": "servicePackAuthorization"}
    )

    group_service_authorization: Optional[List[GroupServiceAuthorization]] = field(
        default=None, metadata={"alias": "groupServiceAuthorization"}
    )

    user_service_authorization: Optional[List[UserServiceAuthorization]] = field(
        default=None, metadata={"alias": "userServiceAuthorization"}
    )


@dataclass(kw_only=True)
class GroupServicePhoneNumberLookupRequest(OCIRequest):
    """Lookup if the given number is defined in the specified service in the group.
        The response is GroupServicePhoneNumberLookupResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_type (str):

        phone_number (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_type: str = field(metadata={"alias": "serviceType"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class GroupServiceUnassignListRequest(OCIRequest):
    """Unassign one or more of the group's assigned services.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_name: List[str] = field(metadata={"alias": "serviceName"})


@dataclass(kw_only=True)
class GroupSessionAdmissionControlGetAvailableDeviceListRequest(OCIRequest):
    """Request to get the list of devices can be assigned to session admission control group for the group.
        The response is either an GroupSessionAdmissionControlGetAvailableDeviceListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_device_name (Optional[List[SearchCriteriaDeviceName]]):

        search_criteria_device_mac_address (Optional[List[SearchCriteriaDeviceMACAddress]]):

        search_criteria_device_net_address (Optional[List[SearchCriteriaDeviceNetAddress]]):

        search_criteria_exact_device_type (Optional[SearchCriteriaExactDeviceType]):

        search_criteria_exact_device_level (Optional[SearchCriteriaExactDeviceLevel]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_device_name: Optional[List[SearchCriteriaDeviceName]] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceName"}
    )

    search_criteria_device_mac_address: Optional[
        List[SearchCriteriaDeviceMACAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceMACAddress"})

    search_criteria_device_net_address: Optional[
        List[SearchCriteriaDeviceNetAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceNetAddress"})

    search_criteria_exact_device_type: Optional[SearchCriteriaExactDeviceType] = field(
        default=None, metadata={"alias": "searchCriteriaExactDeviceType"}
    )

    search_criteria_exact_device_level: Optional[SearchCriteriaExactDeviceLevel] = (
        field(default=None, metadata={"alias": "searchCriteriaExactDeviceLevel"})
    )


@dataclass(kw_only=True)
class GroupSessionAdmissionControlGetRequest(OCIRequest):
    """Get the session admission control capacity for the group.
        The response is either a GroupSessionAdmissionControlGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupSessionAdmissionControlGroupAddDeviceListRequest(OCIRequest):
    """Request to add one ore more devices to a group level session admission control group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        devices (List[AccessDevice]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    devices: List[AccessDevice] = field(metadata={"alias": "devices"})


@dataclass(kw_only=True)
class GroupSessionAdmissionControlGroupAddRequest19sp1(OCIRequest):
    """Request to add a session admission control group for the group.
        The response is either a SuccessResponse or an ErrorResponse.
        Note that to provision the accessInfoPattern element, the
        captureAccessInfoInPaniHeader system parameter needs to be set to \"true\".

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        max_session (int):

        max_user_originating_sessions (Optional[int]):

        max_user_terminating_sessions (Optional[int]):

        reserved_session (int):

        reserved_user_originating_sessions (Optional[int]):

        reserved_user_terminating_sessions (Optional[int]):

        become_default_group (bool):

        count_intra_sac_group_sessions (bool):

        devices (Optional[List[AccessDevice]]):

        block_emergency_and_repair_calls_due_to_sac_limits (bool):

        media_group_name (Optional[str]):

        access_info_pattern (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    max_session: int = field(metadata={"alias": "maxSession"})

    max_user_originating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "maxUserOriginatingSessions"}
    )

    max_user_terminating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "maxUserTerminatingSessions"}
    )

    reserved_session: int = field(metadata={"alias": "reservedSession"})

    reserved_user_originating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "reservedUserOriginatingSessions"}
    )

    reserved_user_terminating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "reservedUserTerminatingSessions"}
    )

    become_default_group: bool = field(metadata={"alias": "becomeDefaultGroup"})

    count_intra_sac_group_sessions: bool = field(
        metadata={"alias": "countIntraSACGroupSessions"}
    )

    devices: Optional[List[AccessDevice]] = field(
        default=None, metadata={"alias": "devices"}
    )

    block_emergency_and_repair_calls_due_to_sac_limits: bool = field(
        metadata={"alias": "blockEmergencyAndRepairCallsDueToSACLimits"}
    )

    media_group_name: Optional[str] = field(
        default=None, metadata={"alias": "mediaGroupName"}
    )

    access_info_pattern: Optional[str] = field(
        default=None, metadata={"alias": "accessInfoPattern"}
    )


@dataclass(kw_only=True)
class GroupSessionAdmissionControlGroupDeleteDeviceListRequest(OCIRequest):
    """Request to delete one or more devices from a group level session admission control group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        devices (List[AccessDevice]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    devices: List[AccessDevice] = field(metadata={"alias": "devices"})


@dataclass(kw_only=True)
class GroupSessionAdmissionControlGroupDeleteListRequest(OCIRequest):
    """Request to delete one or more session admission control groups for the group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: List[str] = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupSessionAdmissionControlGroupGetListRequest(OCIRequest):
    """Request to get the list of session admission control group for the group.
        The response is either a GroupSessionAdmissionControlGroupGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupSessionAdmissionControlGroupGetRequest21sp1V2(OCIRequest):
    """Request to get a session admission control group for the group.
        The response is either a GroupSessionAdmissionControlGroupGetResponse21sp1V2 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupSessionAdmissionControlGroupModifyRequest(OCIRequest):
    """Request to modify a session admission control group for the group.
        The response is either a SuccessResponse or an ErrorResponse.
        Note that to provision the accessInfoPattern element, the
        captureAccessInfoInPaniHeader system parameter needs to be set to \"true\".

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        new_name (Optional[str]):

        max_session (Optional[int]):

        max_user_originating_sessions (Optional[Nillable[int]]):

        max_user_terminating_sessions (Optional[Nillable[int]]):

        reserved_session (Optional[int]):

        reserved_user_originating_sessions (Optional[Nillable[int]]):

        reserved_user_terminating_sessions (Optional[Nillable[int]]):

        become_default_group (Optional[bool]):

        count_intra_sac_group_sessions (Optional[bool]):

        device_list (Optional[Nillable[ReplacementDeviceList]]):

        block_emergency_and_repair_calls_due_to_sac_limits (Optional[bool]):

        media_group_name (Optional[Nillable[str]]):

        access_info_pattern (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    max_session: Optional[int] = field(default=None, metadata={"alias": "maxSession"})

    max_user_originating_sessions: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxUserOriginatingSessions"}
    )

    max_user_terminating_sessions: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxUserTerminatingSessions"}
    )

    reserved_session: Optional[int] = field(
        default=None, metadata={"alias": "reservedSession"}
    )

    reserved_user_originating_sessions: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "reservedUserOriginatingSessions"}
    )

    reserved_user_terminating_sessions: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "reservedUserTerminatingSessions"}
    )

    become_default_group: Optional[bool] = field(
        default=None, metadata={"alias": "becomeDefaultGroup"}
    )

    count_intra_sac_group_sessions: Optional[bool] = field(
        default=None, metadata={"alias": "countIntraSACGroupSessions"}
    )

    device_list: Optional[Nillable[ReplacementDeviceList]] = field(
        default=None, metadata={"alias": "deviceList"}
    )

    block_emergency_and_repair_calls_due_to_sac_limits: Optional[bool] = field(
        default=None, metadata={"alias": "blockEmergencyAndRepairCallsDueToSACLimits"}
    )

    media_group_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "mediaGroupName"}
    )

    access_info_pattern: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "accessInfoPattern"}
    )

    def __post_init__(self):
        nillable_fields = [
            "max_user_originating_sessions",
            "max_user_terminating_sessions",
            "reserved_user_originating_sessions",
            "reserved_user_terminating_sessions",
            "device_list",
            "media_group_name",
            "access_info_pattern",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupSessionAdmissionControlModifyRequest(OCIRequest):
    """Request to modify session admission control capacity for the group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        restrict_aggregate_sessions (Optional[bool]):

        max_sessions (Optional[Nillable[int]]):

        max_user_originating_sessions (Optional[Nillable[int]]):

        max_user_terminating_sessions (Optional[Nillable[int]]):

        count_intra_group_sessions (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    restrict_aggregate_sessions: Optional[bool] = field(
        default=None, metadata={"alias": "restrictAggregateSessions"}
    )

    max_sessions: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxSessions"}
    )

    max_user_originating_sessions: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxUserOriginatingSessions"}
    )

    max_user_terminating_sessions: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxUserTerminatingSessions"}
    )

    count_intra_group_sessions: Optional[bool] = field(
        default=None, metadata={"alias": "countIntraGroupSessions"}
    )

    def __post_init__(self):
        nillable_fields = [
            "max_sessions",
            "max_user_originating_sessions",
            "max_user_terminating_sessions",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupShInterfaceGetUserListRequest21sp1(OCIRequest):
    """Returns a list of all Public User Identities and associated data in a group.
        The response is either a GroupShInterfaceGetUserListResponse21sp1 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupSpeedDial100GetRequest17sp1(OCIRequest):
    """Get the speed dial 100 service settings for a group.
        The response is either a GroupSpeedDial100GetResponse17sp1 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupSpeedDial100ModifyRequest(OCIRequest):
    """Modify the speed dial 100 prefix setting for a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        prefix (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    prefix: Optional[Nillable[str]] = field(default=None, metadata={"alias": "prefix"})

    def __post_init__(self):
        nillable_fields = ["prefix"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupStirShakenGetRequest23V2(OCIRequest):
    """Get Group Stir Shaken service settings.
        The response is either GroupStirShakenGetResponse23V2 or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupStirShakenModifyRequest(OCIRequest):
    """Modify Group Stir Shaken service settings.

    Attributes:

        service_provider_id (str):

        group_id (str):

        use_parent_level_settings (Optional[bool]):

        signing_policy (Optional[str]):

        tagging_policy (Optional[str]):

        signing_service_url (Optional[Nillable[str]]):

        tag_from_or_pai (Optional[str]):

        verstat_tag (Optional[str]):

        use_os_value_for_orig_id (Optional[bool]):

        orig_uuid (Optional[Nillable[str]]):

        attestation_level (Optional[str]):

        enable_verification (Optional[bool]):

        verification_service_url (Optional[Nillable[str]]):

        verification_error_handling (Optional[str]):

        proxy_verstat_to_cnam_subscribe (Optional[bool]):

        use_unknown_headers_from_cnam_notify (Optional[bool]):

        enable_signing_for_unscreened_trunk_group_originations (Optional[bool]):

        enable_tagging_for_unscreened_trunk_group_originations (Optional[bool]):

        unscreened_trunk_group_origination_attestation_level (Optional[str]):

        include_tagged_headers_to_access_side (Optional[bool]):

        proxy_identity_header_to_access_side (Optional[bool]):

        check_directory_numbers_for_attestation (Optional[bool]):

        match_unassigned_numbers_only (Optional[bool]):

        enable_tagging_for_redirected_calls (Optional[bool]):

        prefer_ingress_tagging (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    use_parent_level_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useParentLevelSettings"}
    )

    signing_policy: Optional[str] = field(
        default=None, metadata={"alias": "signingPolicy"}
    )

    tagging_policy: Optional[str] = field(
        default=None, metadata={"alias": "taggingPolicy"}
    )

    signing_service_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "signingServiceURL"}
    )

    tag_from_or_pai: Optional[str] = field(
        default=None, metadata={"alias": "tagFromOrPAI"}
    )

    verstat_tag: Optional[str] = field(default=None, metadata={"alias": "verstatTag"})

    use_os_value_for_orig_id: Optional[bool] = field(
        default=None, metadata={"alias": "useOSValueForOrigId"}
    )

    orig_uuid: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "origUUID"}
    )

    attestation_level: Optional[str] = field(
        default=None, metadata={"alias": "attestationLevel"}
    )

    enable_verification: Optional[bool] = field(
        default=None, metadata={"alias": "enableVerification"}
    )

    verification_service_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "verificationServiceURL"}
    )

    verification_error_handling: Optional[str] = field(
        default=None, metadata={"alias": "verificationErrorHandling"}
    )

    proxy_verstat_to_cnam_subscribe: Optional[bool] = field(
        default=None, metadata={"alias": "proxyVerstatToCNAMSubscribe"}
    )

    use_unknown_headers_from_cnam_notify: Optional[bool] = field(
        default=None, metadata={"alias": "useUnknownHeadersFromCNAMNotify"}
    )

    enable_signing_for_unscreened_trunk_group_originations: Optional[bool] = field(
        default=None,
        metadata={"alias": "enableSigningForUnscreenedTrunkGroupOriginations"},
    )

    enable_tagging_for_unscreened_trunk_group_originations: Optional[bool] = field(
        default=None,
        metadata={"alias": "enableTaggingForUnscreenedTrunkGroupOriginations"},
    )

    unscreened_trunk_group_origination_attestation_level: Optional[str] = field(
        default=None,
        metadata={"alias": "unscreenedTrunkGroupOriginationAttestationLevel"},
    )

    include_tagged_headers_to_access_side: Optional[bool] = field(
        default=None, metadata={"alias": "includeTaggedHeadersToAccessSide"}
    )

    proxy_identity_header_to_access_side: Optional[bool] = field(
        default=None, metadata={"alias": "proxyIdentityHeaderToAccessSide"}
    )

    check_directory_numbers_for_attestation: Optional[bool] = field(
        default=None, metadata={"alias": "checkDirectoryNumbersForAttestation"}
    )

    match_unassigned_numbers_only: Optional[bool] = field(
        default=None, metadata={"alias": "matchUnassignedNumbersOnly"}
    )

    enable_tagging_for_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "enableTaggingForRedirectedCalls"}
    )

    prefer_ingress_tagging: Optional[bool] = field(
        default=None, metadata={"alias": "preferIngressTagging"}
    )

    def __post_init__(self):
        nillable_fields = [
            "signing_service_url",
            "orig_uuid",
            "verification_service_url",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupTemplateOnlyDeviceFileGetListRequest(OCIRequest):
    """Request to get the list of template files used to support a VDM device defined at group level.
        The response is either GroupTemplateOnlyDeviceFileGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class GroupThirdPartyEmergencyCallingGetRequest22(OCIRequest):
    """Get the third-party emergency call service settings for the Group.
        The response is either a GroupThirdPartyEmergencyCallingGetResponse22 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupThirdPartyEmergencyCallingModifyRequest(OCIRequest):
    """Modify the third-party emergency call service settings for the Group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        enable_device_management (Optional[bool]):

        enable_routing (Optional[bool]):

        customer_id (Optional[Nillable[str]]):

        secret_key (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    enable_device_management: Optional[bool] = field(
        default=None, metadata={"alias": "enableDeviceManagement"}
    )

    enable_routing: Optional[bool] = field(
        default=None, metadata={"alias": "enableRouting"}
    )

    customer_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "customerId"}
    )

    secret_key: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "secretKey"}
    )

    def __post_init__(self):
        nillable_fields = ["customer_id", "secret_key"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupThirdPartyVoiceMailSupportGetRequest(OCIRequest):
    """Request the group level data associated with Third-Party Voice Mail Support.
        The response is either a GroupThirdPartyVoiceMailSupportGetResponse or an
        ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupThirdPartyVoiceMailSupportModifyRequest(OCIRequest):
    """Modify the Third Party Voice Mail Support settings for a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        is_active (Optional[bool]):

        group_server (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    group_server: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "groupServer"}
    )

    def __post_init__(self):
        nillable_fields = ["group_server"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupTrunkGroupAddInstanceRequest22(OCIRequest):
    """Add a Trunk Group instance to a group.
        The command will fail if enableNetworkAddressIdentity is set to
        true and administrator is not System/Provisioning level administrator.
        The response is either a SuccessResponse or an ErrorResponse.
        Following attributes are only used in IMS mode:
          implicitRegistrationSetSupportPolicy
          useSystemImplicitRegistrationSetSupportPolicy
          sipIdentityForPilotAndProxyTrunkModesPolicy
          useSystemSIPIdentityForPilotAndProxyTrunkModesPolicy

    Attributes:

        service_provider_id (str):

        group_id (str):

        name (str):

        pilot_user (Optional[TrunkGroupMultipleContactPilotUser22]):

        department (Optional[DepartmentKey]):

        access_device (Optional[AccessDevice]):

        max_active_calls (int):

        max_incoming_calls (Optional[int]):

        max_outgoing_calls (Optional[int]):

        enable_bursting (bool):

        bursting_max_active_calls (Optional[int]):

        bursting_max_incoming_calls (Optional[int]):

        bursting_max_outgoing_calls (Optional[int]):

        capacity_exceeded_action (Optional[str]):

        capacity_exceeded_forward_address (Optional[str]):

        capacity_exceeded_reroute_trunk_group_key (Optional[TrunkGroupKey]):

        capacity_exceeded_trap_initial_calls (int):

        capacity_exceeded_trap_offset_calls (int):

        unreachable_destination_action (Optional[str]):

        unreachable_destination_forward_address (Optional[str]):

        unreachable_destination_reroute_trunk_group_key (Optional[TrunkGroupKey]):

        invitation_timeout (int):

        require_authentication (bool):

        sip_authentication_user_name (Optional[str]):

        sip_authentication_password (Optional[str]):

        hosted_user_id (Optional[List[str]]):

        trunk_group_identity (Optional[str]):

        otg_dtg_identity (Optional[str]):

        allow_termination_to_trunk_group_identity (bool):

        allow_termination_to_dtg_identity (bool):

        include_trunk_group_identity (bool):

        include_dtg_identity (bool):

        include_trunk_group_identity_for_network_calls (bool):

        include_otg_identity_for_network_calls (bool):

        enable_network_address_identity (bool):

        allow_unscreened_calls (bool):

        allow_unscreened_emergency_calls (bool):

        pilot_user_calling_line_identity_for_external_calls_policy (str):

        pilot_user_charge_number_policy (str):

        call_forwarding_always_action (Optional[str]):

        call_forwarding_always_forward_address (Optional[str]):

        call_forwarding_always_reroute_trunk_group_key (Optional[TrunkGroupKey]):

        peering_domain (Optional[str]):

        route_to_peering_domain (bool):

        prefix_enabled (bool):

        prefix (Optional[str]):

        stateful_rerouting_enabled (bool):

        send_continuous_options_message (bool):

        continuous_options_sending_interval_seconds (int):

        failure_options_sending_interval_seconds (int):

        failure_threshold_counter (int):

        success_threshold_counter (int):

        invite_failure_threshold_counter (int):

        invite_failure_threshold_window_seconds (int):

        pilot_user_calling_line_asserted_identity_policy (str):

        use_system_calling_line_asserted_identity_policy (bool):

        pilot_user_call_optimization_policy (str):

        clid_source_for_screened_calls_policy (str):

        use_system_clid_source_for_screened_calls_policy (bool):

        user_lookup_policy (str):

        use_system_user_lookup_policy (bool):

        pilot_user_calling_line_identity_for_emergency_calls_policy (str):

        pilot_user_network_class_of_service (Optional[str]):

        implicit_registration_set_support_policy (str):

        use_system_implicit_registration_set_support_policy (bool):

        sip_identity_for_pilot_and_proxy_trunk_modes_policy (str):

        use_system_sip_identity_for_pilot_and_proxy_trunk_modes_policy (bool):

        use_system_support_connected_identity_policy (bool):

        support_connected_identity_policy (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    name: str = field(metadata={"alias": "name"})

    pilot_user: Optional[TrunkGroupMultipleContactPilotUser22] = field(
        default=None, metadata={"alias": "pilotUser"}
    )

    department: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "department"}
    )

    access_device: Optional[AccessDevice] = field(
        default=None, metadata={"alias": "accessDevice"}
    )

    max_active_calls: int = field(metadata={"alias": "maxActiveCalls"})

    max_incoming_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxIncomingCalls"}
    )

    max_outgoing_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxOutgoingCalls"}
    )

    enable_bursting: bool = field(metadata={"alias": "enableBursting"})

    bursting_max_active_calls: Optional[int] = field(
        default=None, metadata={"alias": "burstingMaxActiveCalls"}
    )

    bursting_max_incoming_calls: Optional[int] = field(
        default=None, metadata={"alias": "burstingMaxIncomingCalls"}
    )

    bursting_max_outgoing_calls: Optional[int] = field(
        default=None, metadata={"alias": "burstingMaxOutgoingCalls"}
    )

    capacity_exceeded_action: Optional[str] = field(
        default=None, metadata={"alias": "capacityExceededAction"}
    )

    capacity_exceeded_forward_address: Optional[str] = field(
        default=None, metadata={"alias": "capacityExceededForwardAddress"}
    )

    capacity_exceeded_reroute_trunk_group_key: Optional[TrunkGroupKey] = field(
        default=None, metadata={"alias": "capacityExceededRerouteTrunkGroupKey"}
    )

    capacity_exceeded_trap_initial_calls: int = field(
        metadata={"alias": "capacityExceededTrapInitialCalls"}
    )

    capacity_exceeded_trap_offset_calls: int = field(
        metadata={"alias": "capacityExceededTrapOffsetCalls"}
    )

    unreachable_destination_action: Optional[str] = field(
        default=None, metadata={"alias": "unreachableDestinationAction"}
    )

    unreachable_destination_forward_address: Optional[str] = field(
        default=None, metadata={"alias": "unreachableDestinationForwardAddress"}
    )

    unreachable_destination_reroute_trunk_group_key: Optional[TrunkGroupKey] = field(
        default=None, metadata={"alias": "unreachableDestinationRerouteTrunkGroupKey"}
    )

    invitation_timeout: int = field(metadata={"alias": "invitationTimeout"})

    require_authentication: bool = field(metadata={"alias": "requireAuthentication"})

    sip_authentication_user_name: Optional[str] = field(
        default=None, metadata={"alias": "sipAuthenticationUserName"}
    )

    sip_authentication_password: Optional[str] = field(
        default=None, metadata={"alias": "sipAuthenticationPassword"}
    )

    hosted_user_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "hostedUserId"}
    )

    trunk_group_identity: Optional[str] = field(
        default=None, metadata={"alias": "trunkGroupIdentity"}
    )

    otg_dtg_identity: Optional[str] = field(
        default=None, metadata={"alias": "otgDtgIdentity"}
    )

    allow_termination_to_trunk_group_identity: bool = field(
        metadata={"alias": "allowTerminationToTrunkGroupIdentity"}
    )

    allow_termination_to_dtg_identity: bool = field(
        metadata={"alias": "allowTerminationToDtgIdentity"}
    )

    include_trunk_group_identity: bool = field(
        metadata={"alias": "includeTrunkGroupIdentity"}
    )

    include_dtg_identity: bool = field(metadata={"alias": "includeDtgIdentity"})

    include_trunk_group_identity_for_network_calls: bool = field(
        metadata={"alias": "includeTrunkGroupIdentityForNetworkCalls"}
    )

    include_otg_identity_for_network_calls: bool = field(
        metadata={"alias": "includeOtgIdentityForNetworkCalls"}
    )

    enable_network_address_identity: bool = field(
        metadata={"alias": "enableNetworkAddressIdentity"}
    )

    allow_unscreened_calls: bool = field(metadata={"alias": "allowUnscreenedCalls"})

    allow_unscreened_emergency_calls: bool = field(
        metadata={"alias": "allowUnscreenedEmergencyCalls"}
    )

    pilot_user_calling_line_identity_for_external_calls_policy: str = field(
        metadata={"alias": "pilotUserCallingLineIdentityForExternalCallsPolicy"}
    )

    pilot_user_charge_number_policy: str = field(
        metadata={"alias": "pilotUserChargeNumberPolicy"}
    )

    call_forwarding_always_action: Optional[str] = field(
        default=None, metadata={"alias": "callForwardingAlwaysAction"}
    )

    call_forwarding_always_forward_address: Optional[str] = field(
        default=None, metadata={"alias": "callForwardingAlwaysForwardAddress"}
    )

    call_forwarding_always_reroute_trunk_group_key: Optional[TrunkGroupKey] = field(
        default=None, metadata={"alias": "callForwardingAlwaysRerouteTrunkGroupKey"}
    )

    peering_domain: Optional[str] = field(
        default=None, metadata={"alias": "peeringDomain"}
    )

    route_to_peering_domain: bool = field(metadata={"alias": "routeToPeeringDomain"})

    prefix_enabled: bool = field(metadata={"alias": "prefixEnabled"})

    prefix: Optional[str] = field(default=None, metadata={"alias": "prefix"})

    stateful_rerouting_enabled: bool = field(
        metadata={"alias": "statefulReroutingEnabled"}
    )

    send_continuous_options_message: bool = field(
        metadata={"alias": "sendContinuousOptionsMessage"}
    )

    continuous_options_sending_interval_seconds: int = field(
        metadata={"alias": "continuousOptionsSendingIntervalSeconds"}
    )

    failure_options_sending_interval_seconds: int = field(
        metadata={"alias": "failureOptionsSendingIntervalSeconds"}
    )

    failure_threshold_counter: int = field(
        metadata={"alias": "failureThresholdCounter"}
    )

    success_threshold_counter: int = field(
        metadata={"alias": "successThresholdCounter"}
    )

    invite_failure_threshold_counter: int = field(
        metadata={"alias": "inviteFailureThresholdCounter"}
    )

    invite_failure_threshold_window_seconds: int = field(
        metadata={"alias": "inviteFailureThresholdWindowSeconds"}
    )

    pilot_user_calling_line_asserted_identity_policy: str = field(
        metadata={"alias": "pilotUserCallingLineAssertedIdentityPolicy"}
    )

    use_system_calling_line_asserted_identity_policy: bool = field(
        metadata={"alias": "useSystemCallingLineAssertedIdentityPolicy"}
    )

    pilot_user_call_optimization_policy: str = field(
        metadata={"alias": "pilotUserCallOptimizationPolicy"}
    )

    clid_source_for_screened_calls_policy: str = field(
        metadata={"alias": "clidSourceForScreenedCallsPolicy"}
    )

    use_system_clid_source_for_screened_calls_policy: bool = field(
        metadata={"alias": "useSystemCLIDSourceForScreenedCallsPolicy"}
    )

    user_lookup_policy: str = field(metadata={"alias": "userLookupPolicy"})

    use_system_user_lookup_policy: bool = field(
        metadata={"alias": "useSystemUserLookupPolicy"}
    )

    pilot_user_calling_line_identity_for_emergency_calls_policy: str = field(
        metadata={"alias": "pilotUserCallingLineIdentityForEmergencyCallsPolicy"}
    )

    pilot_user_network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "pilotUserNetworkClassOfService"}
    )

    implicit_registration_set_support_policy: str = field(
        metadata={"alias": "implicitRegistrationSetSupportPolicy"}
    )

    use_system_implicit_registration_set_support_policy: bool = field(
        metadata={"alias": "useSystemImplicitRegistrationSetSupportPolicy"}
    )

    sip_identity_for_pilot_and_proxy_trunk_modes_policy: str = field(
        metadata={"alias": "sipIdentityForPilotAndProxyTrunkModesPolicy"}
    )

    use_system_sip_identity_for_pilot_and_proxy_trunk_modes_policy: bool = field(
        metadata={"alias": "useSystemSIPIdentityForPilotAndProxyTrunkModesPolicy"}
    )

    use_system_support_connected_identity_policy: bool = field(
        metadata={"alias": "useSystemSupportConnectedIdentityPolicy"}
    )

    support_connected_identity_policy: str = field(
        metadata={"alias": "supportConnectedIdentityPolicy"}
    )


@dataclass(kw_only=True)
class GroupTrunkGroupDeleteInstanceRequest14sp4(OCIRequest):
    """Delete a Trunk Group Instance from a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        trunk_group_key (TrunkGroupKey):

    """

    trunk_group_key: TrunkGroupKey = field(metadata={"alias": "trunkGroupKey"})


@dataclass(kw_only=True)
class GroupTrunkGroupGetAvailableDetailListRequest(OCIRequest):
    """Requests the list of available trunk groups within a group.
        The response is either GroupTrunkGroupGetAvailableDetailListResponse or
        ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupTrunkGroupGetAvailableHostedUserListRequest(OCIRequest):
    """Get a list of hosted users that can be assigned to a Trunk Group.
        The response is either GroupTrunkGroupGetAvailableHostedUserListResponse or ErrorResponse.

    Attributes:

        trunk_group_key (TrunkGroupKey):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    trunk_group_key: TrunkGroupKey = field(metadata={"alias": "trunkGroupKey"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupTrunkGroupGetInstanceListRequest14sp4(OCIRequest):
    """Get a list of Trunk Groups for the group or enterprise.
        It is possible to restrict the results to a particular department, or expand the list to the entire enterprise.
        The response is either a GroupTrunkGroupGetInstanceListResponse14sp4 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_department_name (Optional[str]):

        include_enterprise_trunk_groups (Optional[bool]):

        only_trunk_groups_with_device (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_department_name: Optional[str] = field(
        default=None, metadata={"alias": "groupDepartmentName"}
    )

    include_enterprise_trunk_groups: Optional[bool] = field(
        default=None, metadata={"alias": "includeEnterpriseTrunkGroups"}
    )

    only_trunk_groups_with_device: Optional[bool] = field(
        default=None, metadata={"alias": "onlyTrunkGroupsWithDevice"}
    )


@dataclass(kw_only=True)
class GroupTrunkGroupGetInstanceRequest23(OCIRequest):
    """Get a Trunk Group Instance's profile.
        The response is either a GroupTrunkGroupGetInstanceResponse23 or an ErrorResponse.
        The response contains a hosted user table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\", \"Phone Number\", \"Extension\",
        \"Department\", \"Email Address\".

    Attributes:

        trunk_group_key (TrunkGroupKey):

    """

    trunk_group_key: TrunkGroupKey = field(metadata={"alias": "trunkGroupKey"})


@dataclass(kw_only=True)
class GroupTrunkGroupGetInstanceUserListRequest14sp4(OCIRequest):
    """Get a list of user's on a Trunk Group Instance.
        The response is either a GroupTrunkGroupGetInstanceUserListResponse14sp4 or an ErrorResponse.

    Attributes:

        trunk_group_key (TrunkGroupKey):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    trunk_group_key: TrunkGroupKey = field(metadata={"alias": "trunkGroupKey"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupTrunkGroupGetRequest23(OCIRequest):
    """Get the maximum and bursting maximum permissible active trunk group calls for the group.
        The response is either a GroupTrunkGroupGetResponse23 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupTrunkGroupModifyInstanceRequest20sp1(OCIRequest):
    """Modify a Trunk Group Instance in a group.
      The access device cannot be modified or cleared if there are any users assigned to the Trunk Group.
          The command will fail if enableNetworkAddressIdentity is set and
          administrator is not System/Provisioning level administrator.
      Following attributes are only used in IMS mode:
        implicitRegistrationSetSupportPolicy
        useSystemImplicitRegistrationSetSupportPolicy
        sipIdentityForPilotAndProxyTrunkModesPolicy
        useSystemSIPIdentityForPilotAndProxyTrunkModesPolicy
      The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        trunk_group_key (TrunkGroupKey):

        new_name (Optional[str]):

        pilot_user_id (Optional[Nillable[str]]):

        department (Optional[Nillable[DepartmentKey]]):

        access_device (Optional[Nillable[AccessDevice]]):

        max_active_calls (Optional[int]):

        max_incoming_calls (Optional[Nillable[int]]):

        max_outgoing_calls (Optional[Nillable[int]]):

        enable_bursting (Optional[bool]):

        bursting_max_active_calls (Optional[Nillable[int]]):

        bursting_max_incoming_calls (Optional[Nillable[int]]):

        bursting_max_outgoing_calls (Optional[Nillable[int]]):

        capacity_exceeded_action (Optional[Nillable[str]]):

        capacity_exceeded_forward_address (Optional[Nillable[str]]):

        capacity_exceeded_reroute_trunk_group_key (Optional[Nillable[TrunkGroupKey]]):

        capacity_exceeded_trap_initial_calls (Optional[int]):

        capacity_exceeded_trap_offset_calls (Optional[int]):

        unreachable_destination_action (Optional[Nillable[str]]):

        unreachable_destination_forward_address (Optional[Nillable[str]]):

        unreachable_destination_reroute_trunk_group_key (Optional[Nillable[TrunkGroupKey]]):

        invitation_timeout (Optional[int]):

        require_authentication (Optional[bool]):

        sip_authentication_user_name (Optional[Nillable[str]]):

        sip_authentication_password (Optional[Nillable[str]]):

        hosted_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

        trunk_group_identity (Optional[Nillable[str]]):

        otg_dtg_identity (Optional[Nillable[str]]):

        allow_termination_to_trunk_group_identity (Optional[bool]):

        allow_termination_to_dtg_identity (Optional[bool]):

        include_trunk_group_identity (Optional[bool]):

        include_dtg_identity (Optional[bool]):

        include_trunk_group_identity_for_network_calls (Optional[bool]):

        include_otg_identity_for_network_calls (Optional[bool]):

        enable_network_address_identity (Optional[bool]):

        allow_unscreened_calls (Optional[bool]):

        allow_unscreened_emergency_calls (Optional[bool]):

        pilot_user_calling_line_identity_for_external_calls_policy (Optional[str]):

        pilot_user_charge_number_policy (Optional[str]):

        call_forwarding_always_action (Optional[Nillable[str]]):

        call_forwarding_always_forward_address (Optional[Nillable[str]]):

        call_forwarding_always_reroute_trunk_group_key (Optional[Nillable[TrunkGroupKey]]):

        peering_domain (Optional[Nillable[str]]):

        route_to_peering_domain (Optional[bool]):

        prefix_enabled (Optional[bool]):

        prefix (Optional[Nillable[str]]):

        stateful_rerouting_enabled (Optional[bool]):

        send_continuous_options_message (Optional[bool]):

        continuous_options_sending_interval_seconds (Optional[int]):

        failure_options_sending_interval_seconds (Optional[int]):

        failure_threshold_counter (Optional[int]):

        success_threshold_counter (Optional[int]):

        invite_failure_threshold_counter (Optional[int]):

        invite_failure_threshold_window_seconds (Optional[int]):

        pilot_user_calling_line_asserted_identity_policy (Optional[str]):

        use_system_calling_line_asserted_identity_policy (Optional[bool]):

        pilot_user_call_optimization_policy (Optional[str]):

        clid_source_for_screened_calls_policy (Optional[str]):

        use_system_clid_source_for_screened_calls_policy (Optional[bool]):

        user_lookup_policy (Optional[str]):

        use_system_user_lookup_policy (Optional[bool]):

        pilot_user_calling_line_identity_for_emergency_calls_policy (Optional[str]):

        implicit_registration_set_support_policy (Optional[str]):

        use_system_implicit_registration_set_support_policy (Optional[bool]):

        sip_identity_for_pilot_and_proxy_trunk_modes_policy (Optional[str]):

        use_system_sip_identity_for_pilot_and_proxy_trunk_modes_policy (Optional[bool]):

        use_system_support_connected_identity_policy (Optional[bool]):

        support_connected_identity_policy (Optional[str]):

        use_system_options_message_response_status_codes (Optional[bool]):

        delete_options_message_response_status_code (Optional[List[str]]):

    """

    trunk_group_key: TrunkGroupKey = field(metadata={"alias": "trunkGroupKey"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    pilot_user_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "pilotUserId"}
    )

    department: Optional[Nillable[DepartmentKey]] = field(
        default=None, metadata={"alias": "department"}
    )

    access_device: Optional[Nillable[AccessDevice]] = field(
        default=None, metadata={"alias": "accessDevice"}
    )

    max_active_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxActiveCalls"}
    )

    max_incoming_calls: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxIncomingCalls"}
    )

    max_outgoing_calls: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxOutgoingCalls"}
    )

    enable_bursting: Optional[bool] = field(
        default=None, metadata={"alias": "enableBursting"}
    )

    bursting_max_active_calls: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "burstingMaxActiveCalls"}
    )

    bursting_max_incoming_calls: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "burstingMaxIncomingCalls"}
    )

    bursting_max_outgoing_calls: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "burstingMaxOutgoingCalls"}
    )

    capacity_exceeded_action: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "capacityExceededAction"}
    )

    capacity_exceeded_forward_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "capacityExceededForwardAddress"}
    )

    capacity_exceeded_reroute_trunk_group_key: Optional[Nillable[TrunkGroupKey]] = (
        field(default=None, metadata={"alias": "capacityExceededRerouteTrunkGroupKey"})
    )

    capacity_exceeded_trap_initial_calls: Optional[int] = field(
        default=None, metadata={"alias": "capacityExceededTrapInitialCalls"}
    )

    capacity_exceeded_trap_offset_calls: Optional[int] = field(
        default=None, metadata={"alias": "capacityExceededTrapOffsetCalls"}
    )

    unreachable_destination_action: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "unreachableDestinationAction"}
    )

    unreachable_destination_forward_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "unreachableDestinationForwardAddress"}
    )

    unreachable_destination_reroute_trunk_group_key: Optional[
        Nillable[TrunkGroupKey]
    ] = field(
        default=None, metadata={"alias": "unreachableDestinationRerouteTrunkGroupKey"}
    )

    invitation_timeout: Optional[int] = field(
        default=None, metadata={"alias": "invitationTimeout"}
    )

    require_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "requireAuthentication"}
    )

    sip_authentication_user_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "sipAuthenticationUserName"}
    )

    sip_authentication_password: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "sipAuthenticationPassword"}
    )

    hosted_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "hostedUserIdList"}
    )

    trunk_group_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "trunkGroupIdentity"}
    )

    otg_dtg_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "otgDtgIdentity"}
    )

    allow_termination_to_trunk_group_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowTerminationToTrunkGroupIdentity"}
    )

    allow_termination_to_dtg_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowTerminationToDtgIdentity"}
    )

    include_trunk_group_identity: Optional[bool] = field(
        default=None, metadata={"alias": "includeTrunkGroupIdentity"}
    )

    include_dtg_identity: Optional[bool] = field(
        default=None, metadata={"alias": "includeDtgIdentity"}
    )

    include_trunk_group_identity_for_network_calls: Optional[bool] = field(
        default=None, metadata={"alias": "includeTrunkGroupIdentityForNetworkCalls"}
    )

    include_otg_identity_for_network_calls: Optional[bool] = field(
        default=None, metadata={"alias": "includeOtgIdentityForNetworkCalls"}
    )

    enable_network_address_identity: Optional[bool] = field(
        default=None, metadata={"alias": "enableNetworkAddressIdentity"}
    )

    allow_unscreened_calls: Optional[bool] = field(
        default=None, metadata={"alias": "allowUnscreenedCalls"}
    )

    allow_unscreened_emergency_calls: Optional[bool] = field(
        default=None, metadata={"alias": "allowUnscreenedEmergencyCalls"}
    )

    pilot_user_calling_line_identity_for_external_calls_policy: Optional[str] = field(
        default=None,
        metadata={"alias": "pilotUserCallingLineIdentityForExternalCallsPolicy"},
    )

    pilot_user_charge_number_policy: Optional[str] = field(
        default=None, metadata={"alias": "pilotUserChargeNumberPolicy"}
    )

    call_forwarding_always_action: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callForwardingAlwaysAction"}
    )

    call_forwarding_always_forward_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callForwardingAlwaysForwardAddress"}
    )

    call_forwarding_always_reroute_trunk_group_key: Optional[
        Nillable[TrunkGroupKey]
    ] = field(
        default=None, metadata={"alias": "callForwardingAlwaysRerouteTrunkGroupKey"}
    )

    peering_domain: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "peeringDomain"}
    )

    route_to_peering_domain: Optional[bool] = field(
        default=None, metadata={"alias": "routeToPeeringDomain"}
    )

    prefix_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "prefixEnabled"}
    )

    prefix: Optional[Nillable[str]] = field(default=None, metadata={"alias": "prefix"})

    stateful_rerouting_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "statefulReroutingEnabled"}
    )

    send_continuous_options_message: Optional[bool] = field(
        default=None, metadata={"alias": "sendContinuousOptionsMessage"}
    )

    continuous_options_sending_interval_seconds: Optional[int] = field(
        default=None, metadata={"alias": "continuousOptionsSendingIntervalSeconds"}
    )

    failure_options_sending_interval_seconds: Optional[int] = field(
        default=None, metadata={"alias": "failureOptionsSendingIntervalSeconds"}
    )

    failure_threshold_counter: Optional[int] = field(
        default=None, metadata={"alias": "failureThresholdCounter"}
    )

    success_threshold_counter: Optional[int] = field(
        default=None, metadata={"alias": "successThresholdCounter"}
    )

    invite_failure_threshold_counter: Optional[int] = field(
        default=None, metadata={"alias": "inviteFailureThresholdCounter"}
    )

    invite_failure_threshold_window_seconds: Optional[int] = field(
        default=None, metadata={"alias": "inviteFailureThresholdWindowSeconds"}
    )

    pilot_user_calling_line_asserted_identity_policy: Optional[str] = field(
        default=None, metadata={"alias": "pilotUserCallingLineAssertedIdentityPolicy"}
    )

    use_system_calling_line_asserted_identity_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemCallingLineAssertedIdentityPolicy"}
    )

    pilot_user_call_optimization_policy: Optional[str] = field(
        default=None, metadata={"alias": "pilotUserCallOptimizationPolicy"}
    )

    clid_source_for_screened_calls_policy: Optional[str] = field(
        default=None, metadata={"alias": "clidSourceForScreenedCallsPolicy"}
    )

    use_system_clid_source_for_screened_calls_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemCLIDSourceForScreenedCallsPolicy"}
    )

    user_lookup_policy: Optional[str] = field(
        default=None, metadata={"alias": "userLookupPolicy"}
    )

    use_system_user_lookup_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemUserLookupPolicy"}
    )

    pilot_user_calling_line_identity_for_emergency_calls_policy: Optional[str] = field(
        default=None,
        metadata={"alias": "pilotUserCallingLineIdentityForEmergencyCallsPolicy"},
    )

    implicit_registration_set_support_policy: Optional[str] = field(
        default=None, metadata={"alias": "implicitRegistrationSetSupportPolicy"}
    )

    use_system_implicit_registration_set_support_policy: Optional[bool] = field(
        default=None,
        metadata={"alias": "useSystemImplicitRegistrationSetSupportPolicy"},
    )

    sip_identity_for_pilot_and_proxy_trunk_modes_policy: Optional[str] = field(
        default=None, metadata={"alias": "sipIdentityForPilotAndProxyTrunkModesPolicy"}
    )

    use_system_sip_identity_for_pilot_and_proxy_trunk_modes_policy: Optional[bool] = (
        field(
            default=None,
            metadata={"alias": "useSystemSIPIdentityForPilotAndProxyTrunkModesPolicy"},
        )
    )

    use_system_support_connected_identity_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemSupportConnectedIdentityPolicy"}
    )

    support_connected_identity_policy: Optional[str] = field(
        default=None, metadata={"alias": "supportConnectedIdentityPolicy"}
    )

    use_system_options_message_response_status_codes: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemOptionsMessageResponseStatusCodes"}
    )

    delete_options_message_response_status_code: Optional[List[str]] = field(
        default=None, metadata={"alias": "deleteOptionsMessageResponseStatusCode"}
    )

    def __post_init__(self):
        nillable_fields = [
            "pilot_user_id",
            "department",
            "access_device",
            "max_incoming_calls",
            "max_outgoing_calls",
            "bursting_max_active_calls",
            "bursting_max_incoming_calls",
            "bursting_max_outgoing_calls",
            "capacity_exceeded_action",
            "capacity_exceeded_forward_address",
            "capacity_exceeded_reroute_trunk_group_key",
            "unreachable_destination_action",
            "unreachable_destination_forward_address",
            "unreachable_destination_reroute_trunk_group_key",
            "sip_authentication_user_name",
            "sip_authentication_password",
            "hosted_user_id_list",
            "trunk_group_identity",
            "otg_dtg_identity",
            "call_forwarding_always_action",
            "call_forwarding_always_forward_address",
            "call_forwarding_always_reroute_trunk_group_key",
            "peering_domain",
            "prefix",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupTrunkGroupModifyRequest14sp9(OCIRequest):
    """Modify the maximum and bursting maximum permissible active Trunk Group calls for the group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        max_active_calls (Optional[int]):

        bursting_max_active_calls (Optional[UnboundedNonNegativeInt]):

        number_of_bursting_btl_us (Optional[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    max_active_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxActiveCalls"}
    )

    bursting_max_active_calls: Optional[UnboundedNonNegativeInt] = field(
        default=None, metadata={"alias": "burstingMaxActiveCalls"}
    )

    number_of_bursting_btl_us: Optional[int] = field(
        default=None, metadata={"alias": "numberOfBurstingBTLUs"}
    )


@dataclass(kw_only=True)
class GroupTrunkGroupOptionsMessageResponseStatusCodeAddListRequest(OCIRequest):
    """Add a list of trunk group level successful SIP OPTIONS message respoonse status codes.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        trunk_group_key (TrunkGroupKey):

        status_code (List[str]):

    """

    trunk_group_key: TrunkGroupKey = field(metadata={"alias": "trunkGroupKey"})

    status_code: List[str] = field(metadata={"alias": "statusCode"})


@dataclass(kw_only=True)
class GroupTrunkGroupSecurityClassificationGetRequest(OCIRequest):
    """Get a trunk group's Security Classifications configuration.
        The response is either GroupTrunkGroupSecurityClassificationGetResponse or ErrorResponse.

    Attributes:

        trunk_group_key (TrunkGroupKey):

    """

    trunk_group_key: TrunkGroupKey = field(metadata={"alias": "trunkGroupKey"})


@dataclass(kw_only=True)
class GroupTrunkGroupSecurityClassificationModifyRequest(OCIRequest):
    """Modify a trunk group's Security Classification configuration
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        trunk_group_key (TrunkGroupKey):

        default_security_classification (Nillable[str]):

    """

    trunk_group_key: TrunkGroupKey = field(metadata={"alias": "trunkGroupKey"})

    default_security_classification: Nillable[str] = field(
        metadata={"alias": "defaultSecurityClassification"}
    )

    def __post_init__(self):
        nillable_fields = ["default_security_classification"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupTrunkGroupStirShakenGetRequest23V2(OCIRequest):
    """Get Group Trunk Group Stir Shaken service settings.
        The response is either GroupTrunkGroupStirShakenGetResponse23V2 or ErrorResponse.

    Attributes:

        trunk_group_key (TrunkGroupKey):

    """

    trunk_group_key: TrunkGroupKey = field(metadata={"alias": "trunkGroupKey"})


@dataclass(kw_only=True)
class GroupTrunkGroupStirShakenModifyRequest(OCIRequest):
    """Modify group trunk group Stir Shaken service settings.

    Attributes:

        trunk_group_key (TrunkGroupKey):

        use_parent_level_settings (Optional[bool]):

        signing_policy (Optional[str]):

        tagging_policy (Optional[str]):

        signing_service_url (Optional[Nillable[str]]):

        tag_from_or_pai (Optional[str]):

        verstat_tag (Optional[str]):

        use_os_value_for_orig_id (Optional[bool]):

        orig_uuid (Optional[Nillable[str]]):

        attestation_level (Optional[str]):

        enable_signing_for_unscreened_trunk_group_originations (Optional[bool]):

        enable_tagging_for_unscreened_trunk_group_originations (Optional[bool]):

        unscreened_trunk_group_origination_attestation_level (Optional[str]):

        check_directory_numbers_for_attestation (Optional[bool]):

        match_unassigned_numbers_only (Optional[bool]):

        enable_tagging_for_redirected_calls (Optional[bool]):

    """

    trunk_group_key: TrunkGroupKey = field(metadata={"alias": "trunkGroupKey"})

    use_parent_level_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useParentLevelSettings"}
    )

    signing_policy: Optional[str] = field(
        default=None, metadata={"alias": "signingPolicy"}
    )

    tagging_policy: Optional[str] = field(
        default=None, metadata={"alias": "taggingPolicy"}
    )

    signing_service_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "signingServiceURL"}
    )

    tag_from_or_pai: Optional[str] = field(
        default=None, metadata={"alias": "tagFromOrPAI"}
    )

    verstat_tag: Optional[str] = field(default=None, metadata={"alias": "verstatTag"})

    use_os_value_for_orig_id: Optional[bool] = field(
        default=None, metadata={"alias": "useOSValueForOrigId"}
    )

    orig_uuid: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "origUUID"}
    )

    attestation_level: Optional[str] = field(
        default=None, metadata={"alias": "attestationLevel"}
    )

    enable_signing_for_unscreened_trunk_group_originations: Optional[bool] = field(
        default=None,
        metadata={"alias": "enableSigningForUnscreenedTrunkGroupOriginations"},
    )

    enable_tagging_for_unscreened_trunk_group_originations: Optional[bool] = field(
        default=None,
        metadata={"alias": "enableTaggingForUnscreenedTrunkGroupOriginations"},
    )

    unscreened_trunk_group_origination_attestation_level: Optional[str] = field(
        default=None,
        metadata={"alias": "unscreenedTrunkGroupOriginationAttestationLevel"},
    )

    check_directory_numbers_for_attestation: Optional[bool] = field(
        default=None, metadata={"alias": "checkDirectoryNumbersForAttestation"}
    )

    match_unassigned_numbers_only: Optional[bool] = field(
        default=None, metadata={"alias": "matchUnassignedNumbersOnly"}
    )

    enable_tagging_for_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "enableTaggingForRedirectedCalls"}
    )

    def __post_init__(self):
        nillable_fields = ["signing_service_url", "orig_uuid"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupTrunkGroupUserCreationTaskAddRequest14sp4(OCIRequest):
    """Add a user creation task for a trunk group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        trunk_group_key (TrunkGroupKey):

        task_name (str):

        user_id_format (str):

        user_id_domain (str):

        populate_extension (bool):

        line_port_format (str):

        line_port_domain (str):

        populate_contact (bool):

        contact_format (Optional[str]):

        contact_domain (Optional[str]):

        user_phone_numbers (Optional[object]):

        user_extensions (Optional[object]):

        service_pack_name (Optional[List[str]]):

        user_service (Optional[List[str]]):

    """

    trunk_group_key: TrunkGroupKey = field(metadata={"alias": "trunkGroupKey"})

    task_name: str = field(metadata={"alias": "taskName"})

    user_id_format: str = field(metadata={"alias": "userIdFormat"})

    user_id_domain: str = field(metadata={"alias": "userIdDomain"})

    populate_extension: bool = field(metadata={"alias": "populateExtension"})

    line_port_format: str = field(metadata={"alias": "linePortFormat"})

    line_port_domain: str = field(metadata={"alias": "linePortDomain"})

    populate_contact: bool = field(metadata={"alias": "populateContact"})

    contact_format: Optional[str] = field(
        default=None, metadata={"alias": "contactFormat"}
    )

    contact_domain: Optional[str] = field(
        default=None, metadata={"alias": "contactDomain"}
    )

    user_phone_numbers: Optional[object] = field(
        default=None, metadata={"alias": "userPhoneNumbers"}
    )

    user_extensions: Optional[object] = field(
        default=None, metadata={"alias": "userExtensions"}
    )

    service_pack_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "servicePackName"}
    )

    user_service: Optional[List[str]] = field(
        default=None, metadata={"alias": "userService"}
    )


@dataclass(kw_only=True)
class GroupTrunkGroupUserCreationTaskDeleteRequest14sp4(OCIRequest):
    """Delete a user creation task for a trunk group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        trunk_group_key (TrunkGroupKey):

        task_name (str):

    """

    trunk_group_key: TrunkGroupKey = field(metadata={"alias": "trunkGroupKey"})

    task_name: str = field(metadata={"alias": "taskName"})


@dataclass(kw_only=True)
class GroupTrunkGroupUserCreationTaskGetListRequest14sp4(OCIRequest):
    """Get the list of user creation tasks for a trunk group.
        The response is either GroupTrunkGroupUserCreationTaskGetListResponse14sp4 or ErrorResponse.

    Attributes:

        trunk_group_key (TrunkGroupKey):

    """

    trunk_group_key: TrunkGroupKey = field(metadata={"alias": "trunkGroupKey"})


@dataclass(kw_only=True)
class GroupTrunkGroupUserCreationTaskGetRequest14sp4(OCIRequest):
    """Request the details of a specified user creation task for a trunk group.
        The response is either GroupTrunkGroupUserCreationTaskGetResponse14sp4 or ErrorResponse.

    Attributes:

        trunk_group_key (TrunkGroupKey):

        task_name (str):

    """

    trunk_group_key: TrunkGroupKey = field(metadata={"alias": "trunkGroupKey"})

    task_name: str = field(metadata={"alias": "taskName"})


@dataclass(kw_only=True)
class GroupUserCallForwardingSettingsGetListRequest(OCIRequest):
    """Get a list of users and the service settings for a Call Forwarding service.
        The response is either GroupUserCallForwardingSettingsGetListResponse or ErrorResponse.
        By default, virtual users and non-virtual users that match the selected search criteria are included in the response when \"includeVirtualUsers\" is present; otherwise, if \"includeVirtualUsers\" is absent, then only non-virtual users are returned.
        The search can be performed using multiple criteria. If search criteria is specified, only the users matching all of the specified search criteria are included in the response. If no search criteria is specified, all results are returned.

    Attributes:

        service_provider_id (str):

        group_id (str):

        call_forwarding_service (str):

        response_paging_control (ResponsePagingControl):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_user_department (Optional[SortByUserDepartment]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_forwarded_to_number (Optional[SortByForwardedToNumber]):

        include_virtual_users (Optional[bool]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_in_trunk_group (Optional[SearchCriteriaExactUserInTrunkGroup]):

        search_criteria_forwarded_to_number (Optional[List[SearchCriteriaForwardedToNumber]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    call_forwarding_service: str = field(metadata={"alias": "callForwardingService"})

    response_paging_control: ResponsePagingControl = field(
        metadata={"alias": "responsePagingControl"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_user_department: Optional[SortByUserDepartment] = field(
        default=None, metadata={"alias": "sortByUserDepartment"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_forwarded_to_number: Optional[SortByForwardedToNumber] = field(
        default=None, metadata={"alias": "sortByForwardedToNumber"}
    )

    include_virtual_users: Optional[bool] = field(
        default=None, metadata={"alias": "includeVirtualUsers"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_in_trunk_group: Optional[
        SearchCriteriaExactUserInTrunkGroup
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserInTrunkGroup"})

    search_criteria_forwarded_to_number: Optional[
        List[SearchCriteriaForwardedToNumber]
    ] = field(default=None, metadata={"alias": "searchCriteriaForwardedToNumber"})


@dataclass(kw_only=True)
class GroupUserCallWaitingSettingsGetListRequest(OCIRequest):
    """Get a list of users and the Call Waiting service status (active or not active).
        The response is either GroupUserCallWaitingSettingsGetListResponse or ErrorResponse.
        By default, virtual users and non-virtual users that match the selected search criteria are included in the response when \"includeVirtualUsers\" is present; otherwise, if \"includeVirtualUsers\" is absent, then only non-virtual users are returned.
        The search can be performed using multiple criteria. If search criteria is specified, only the users matching all of the specified search criteria are included in the response. If no search criteria is specified, all results are returned.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_paging_control (ResponsePagingControl):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_user_department (Optional[SortByUserDepartment]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_service_status (Optional[SortByServiceStatus]):

        include_virtual_users (Optional[bool]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_in_trunk_group (Optional[SearchCriteriaExactUserInTrunkGroup]):

        search_criteria_service_status (Optional[SearchCriteriaServiceStatus]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_paging_control: ResponsePagingControl = field(
        metadata={"alias": "responsePagingControl"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_user_department: Optional[SortByUserDepartment] = field(
        default=None, metadata={"alias": "sortByUserDepartment"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_service_status: Optional[SortByServiceStatus] = field(
        default=None, metadata={"alias": "sortByServiceStatus"}
    )

    include_virtual_users: Optional[bool] = field(
        default=None, metadata={"alias": "includeVirtualUsers"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_in_trunk_group: Optional[
        SearchCriteriaExactUserInTrunkGroup
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserInTrunkGroup"})

    search_criteria_service_status: Optional[SearchCriteriaServiceStatus] = field(
        default=None, metadata={"alias": "searchCriteriaServiceStatus"}
    )


@dataclass(kw_only=True)
class GroupUserCallingPlanSettingsGetListRequest(OCIRequest):
    """Get a list of users and the default or custom calling plan setting.
        The response is either GroupUserCallingPlanSettingsGetListResponse or ErrorResponse.
        By default, virtual users and non-virtual users that match the selected search criteria are included in the response when \"includeVirtualUsers\" is present; otherwise, if \"includeVirtualUsers\" is absent, then only non-virtual users are returned.
        The search can be performed using multiple criteria. If search criteria is specified, only the users matching all of the specified search criteria are included in the response. If no search criteria is specified, all results are returned.

    Attributes:

        service_provider_id (str):

        group_id (str):

        calling_plan_service (str):

        response_paging_control (ResponsePagingControl):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_user_department (Optional[SortByUserDepartment]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        include_virtual_users (Optional[bool]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_in_trunk_group (Optional[SearchCriteriaExactUserInTrunkGroup]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    calling_plan_service: str = field(metadata={"alias": "callingPlanService"})

    response_paging_control: ResponsePagingControl = field(
        metadata={"alias": "responsePagingControl"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_user_department: Optional[SortByUserDepartment] = field(
        default=None, metadata={"alias": "sortByUserDepartment"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    include_virtual_users: Optional[bool] = field(
        default=None, metadata={"alias": "includeVirtualUsers"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_in_trunk_group: Optional[
        SearchCriteriaExactUserInTrunkGroup
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserInTrunkGroup"})


@dataclass(kw_only=True)
class GroupUserHotelingGuestSettingsGetListRequest(OCIRequest):
    """Get a list of users and their Hoteling Guest service status (active or not active).
        The response is either GroupUserHotelingGuestSettingsGetListResponse or ErrorResponse.
        By default, virtual users and non-virtual users that match the selected search criteria are included in the response when \"includeVirtualUsers\" is present; otherwise, if \"includeVirtualUsers\" is absent, then only non-virtual users are returned.
        The search can be performed using multiple criteria. If search criteria is specified, only the users matching all of the specified search criteria are included in the response. If no search criteria is specified, all results are returned.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_paging_control (ResponsePagingControl):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_user_department (Optional[SortByUserDepartment]):

        sort_by_dn (Optional[SortByDn]):

        sort_by_extension (Optional[SortByExtension]):

        sort_by_service_status (Optional[SortByServiceStatus]):

        include_virtual_users (Optional[bool]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_in_trunk_group (Optional[SearchCriteriaExactUserInTrunkGroup]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_paging_control: ResponsePagingControl = field(
        metadata={"alias": "responsePagingControl"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_user_department: Optional[SortByUserDepartment] = field(
        default=None, metadata={"alias": "sortByUserDepartment"}
    )

    sort_by_dn: Optional[SortByDn] = field(default=None, metadata={"alias": "sortByDn"})

    sort_by_extension: Optional[SortByExtension] = field(
        default=None, metadata={"alias": "sortByExtension"}
    )

    sort_by_service_status: Optional[SortByServiceStatus] = field(
        default=None, metadata={"alias": "sortByServiceStatus"}
    )

    include_virtual_users: Optional[bool] = field(
        default=None, metadata={"alias": "includeVirtualUsers"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_in_trunk_group: Optional[
        SearchCriteriaExactUserInTrunkGroup
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserInTrunkGroup"})


@dataclass(kw_only=True)
class GroupUserLanguageModifyRequest(OCIRequest):
    """Request to modify language of the users within a group.
        If neither applyToUsers nor applyToServiceInstances is specified in the request, language is not changed for any user in the group.
        If applyToUsers is specified, regular users within the group have the language modified.
        If applyToServiceInstances is specified, the service instance users within the group have the language modified.

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        language (str):

        apply_to_users (Optional[bool]):

        apply_to_service_instances (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    language: str = field(metadata={"alias": "language"})

    apply_to_users: Optional[bool] = field(
        default=None, metadata={"alias": "applyToUsers"}
    )

    apply_to_service_instances: Optional[bool] = field(
        default=None, metadata={"alias": "applyToServiceInstances"}
    )


@dataclass(kw_only=True)
class GroupVirtualOnNetEnterpriseExtensionsAddUserRequest(OCIRequest):
    """Adds Virtual On-Net users to a Group. It is possible to add
        either: a single user,  or a list of users, or a range of users,
        or any combination thereof.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        virtual_on_net_user (Optional[List[VirtualOnNetUser]]):

        virtual_on_net_user_range (Optional[VirtualOnNetUserRange]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    virtual_on_net_user: Optional[List[VirtualOnNetUser]] = field(
        default=None, metadata={"alias": "virtualOnNetUser"}
    )

    virtual_on_net_user_range: Optional[VirtualOnNetUserRange] = field(
        default=None, metadata={"alias": "virtualOnNetUserRange"}
    )


@dataclass(kw_only=True)
class GroupVirtualOnNetEnterpriseExtensionsDeleteUserRequest(OCIRequest):
    """Delete an existing Virtual On-Net user from a Group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        phone_number (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class GroupVirtualOnNetEnterpriseExtensionsGetUserListRequest(OCIRequest):
    """Request the list of Virtual On-Net users in a Group.
        It is possible to search by various criteria to restrict the number
        of rows returned.
        Multiple search criteria are logically ANDed together.
        The response is either a
        GroupVirtualOnNetEnterpriseExtensionsGetUserListResponse or an
        ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_virtual_on_net_call_type_name (Optional[SearchCriteriaExactVirtualOnNetCallTypeName]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_virtual_on_net_call_type_name: Optional[
        SearchCriteriaExactVirtualOnNetCallTypeName
    ] = field(
        default=None, metadata={"alias": "searchCriteriaExactVirtualOnNetCallTypeName"}
    )


@dataclass(kw_only=True)
class GroupVirtualOnNetEnterpriseExtensionsGetUserRequest(OCIRequest):
    """Get an existing Virtual On-Net user from a Group.
        The response is either a
        GroupVirtualOnNetEnterpriseExtensionsGetUserResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        phone_number (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class GroupVirtualOnNetEnterpriseExtensionsModifyUserRequest(OCIRequest):
    """Modify an existing Virtual On-Net user of a Group.
        The serviceProviderId, groupId and phoneNumber combination uniquely
        identifies a Virtual On-Net User.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        phone_number (str):

        extension (Optional[str]):

        first_name (Optional[str]):

        last_name (Optional[str]):

        calling_line_id_first_name (Optional[str]):

        calling_line_id_last_name (Optional[str]):

        virtual_on_net_call_type_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})

    first_name: Optional[str] = field(default=None, metadata={"alias": "firstName"})

    last_name: Optional[str] = field(default=None, metadata={"alias": "lastName"})

    calling_line_id_first_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdFirstName"}
    )

    calling_line_id_last_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdLastName"}
    )

    virtual_on_net_call_type_name: Optional[str] = field(
        default=None, metadata={"alias": "virtualOnNetCallTypeName"}
    )


@dataclass(kw_only=True)
class GroupVisualDeviceManagementGetDeviceInfoRequest(OCIRequest):
    """Get the information for a specified device supporting visual device management.
        The response is either a GroupVisualDeviceManagementGetDeviceInfoResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class GroupVoiceMessagingGroupConsolidatedModifyVoicePortalRequest(OCIRequest):
    """Request to modify the group's voice messaging settings and voice portal branding settings.
        If UnassignPhoneNumbersLevel is set to 'Group', the user's primary phone number, fax number and any alternate numbers, will be un-assigned from the group if the command is executed by a service provider administrator or above.
        When set to 'Service Provider', they will be un-assigned from the group and service provider if the command is executed by a provisioning administrator or above.
        When omitted, the number(s) will be left assigned to the group.
        An ErrorResponse will be returned if any number cannot be unassigned because of insufficient privilege.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        unassign_phone_numbers (Optional[str]):

        add_phone_number_to_group (Optional[bool]):

        service_instance_profile (Optional[ServiceInstanceModifyProfile]):

        is_active (Optional[bool]):

        enable_extended_scope (Optional[bool]):

        allow_identification_by_phone_number_or_voice_mail_aliases_on_login (Optional[bool]):

        use_voice_portal_wizard (Optional[bool]):

        voice_portal_external_routing_scope (Optional[str]):

        use_external_routing (Optional[bool]):

        external_routing_address (Optional[Nillable[str]]):

        home_zone_name (Optional[Nillable[str]]):

        network_class_of_service (Optional[str]):

        voice_portal_greeting_selection (Optional[str]):

        voice_portal_greeting_file (Optional[Nillable[AnnouncementFileKey]]):

        voice_messaging_greeting_selection (Optional[str]):

        voice_messaging_greeting_file (Optional[Nillable[AnnouncementFileKey]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    unassign_phone_numbers: Optional[str] = field(
        default=None, metadata={"alias": "unassignPhoneNumbers"}
    )

    add_phone_number_to_group: Optional[bool] = field(
        default=None, metadata={"alias": "addPhoneNumberToGroup"}
    )

    service_instance_profile: Optional[ServiceInstanceModifyProfile] = field(
        default=None, metadata={"alias": "serviceInstanceProfile"}
    )

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    enable_extended_scope: Optional[bool] = field(
        default=None, metadata={"alias": "enableExtendedScope"}
    )

    allow_identification_by_phone_number_or_voice_mail_aliases_on_login: Optional[
        bool
    ] = field(
        default=None,
        metadata={"alias": "allowIdentificationByPhoneNumberOrVoiceMailAliasesOnLogin"},
    )

    use_voice_portal_wizard: Optional[bool] = field(
        default=None, metadata={"alias": "useVoicePortalWizard"}
    )

    voice_portal_external_routing_scope: Optional[str] = field(
        default=None, metadata={"alias": "voicePortalExternalRoutingScope"}
    )

    use_external_routing: Optional[bool] = field(
        default=None, metadata={"alias": "useExternalRouting"}
    )

    external_routing_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "externalRoutingAddress"}
    )

    home_zone_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "homeZoneName"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    voice_portal_greeting_selection: Optional[str] = field(
        default=None, metadata={"alias": "voicePortalGreetingSelection"}
    )

    voice_portal_greeting_file: Optional[Nillable[AnnouncementFileKey]] = field(
        default=None, metadata={"alias": "voicePortalGreetingFile"}
    )

    voice_messaging_greeting_selection: Optional[str] = field(
        default=None, metadata={"alias": "voiceMessagingGreetingSelection"}
    )

    voice_messaging_greeting_file: Optional[Nillable[AnnouncementFileKey]] = field(
        default=None, metadata={"alias": "voiceMessagingGreetingFile"}
    )

    def __post_init__(self):
        nillable_fields = [
            "external_routing_address",
            "home_zone_name",
            "voice_portal_greeting_file",
            "voice_messaging_greeting_file",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupVoiceMessagingGroupGetRequest(OCIRequest):
    """Requests the group's Voice Messaging settings.
        The response is either GroupVoiceMessagingGroupGetResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupVoiceMessagingGroupGetVoicePortalBrandingRequest20(OCIRequest):
    """Get the group's voice portal branding settings.
        The response is either a GroupVoiceMessagingGroupGetVoicePortalBrandingResponse20 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupVoiceMessagingGroupGetVoicePortalRequest21sp1(OCIRequest):
    """Request to get the group voice portal information for a voice messaging group.
        The response is either GroupVoiceMessagingGroupGetVoicePortalResponse21sp1 or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class GroupVoiceMessagingGroupModifyRequest(OCIRequest):
    """Request to modify the group's voice messaging settings.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        use_mail_server_setting (Optional[str]):

        warn_caller_before_recording_voice_message (Optional[bool]):

        allow_users_configuring_advanced_settings (Optional[bool]):

        allow_compose_or_forward_message_to_entire_group (Optional[bool]):

        mail_server_net_address (Optional[Nillable[str]]):

        mail_server_protocol (Optional[str]):

        real_delete_for_imap (Optional[bool]):

        max_mailbox_length_minutes (Optional[int]):

        does_message_age (Optional[bool]):

        hold_period_days (Optional[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    use_mail_server_setting: Optional[str] = field(
        default=None, metadata={"alias": "useMailServerSetting"}
    )

    warn_caller_before_recording_voice_message: Optional[bool] = field(
        default=None, metadata={"alias": "warnCallerBeforeRecordingVoiceMessage"}
    )

    allow_users_configuring_advanced_settings: Optional[bool] = field(
        default=None, metadata={"alias": "allowUsersConfiguringAdvancedSettings"}
    )

    allow_compose_or_forward_message_to_entire_group: Optional[bool] = field(
        default=None, metadata={"alias": "allowComposeOrForwardMessageToEntireGroup"}
    )

    mail_server_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "mailServerNetAddress"}
    )

    mail_server_protocol: Optional[str] = field(
        default=None, metadata={"alias": "mailServerProtocol"}
    )

    real_delete_for_imap: Optional[bool] = field(
        default=None, metadata={"alias": "realDeleteForImap"}
    )

    max_mailbox_length_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxMailboxLengthMinutes"}
    )

    does_message_age: Optional[bool] = field(
        default=None, metadata={"alias": "doesMessageAge"}
    )

    hold_period_days: Optional[int] = field(
        default=None, metadata={"alias": "holdPeriodDays"}
    )

    def __post_init__(self):
        nillable_fields = ["mail_server_net_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupVoiceMessagingGroupModifyVoicePortalBrandingExecutionServerRequest(
    OCIRequest
):
    """Modify the group's voice portal branding settings.
        The response is either a SuccessResponse or an ErrorResponse.
        Engineering Note: This command can only be executed from the Execution Server

    Attributes:

        service_provider_id (str):

        group_id (str):

        voice_portal_greeting_selection (Optional[str]):

        voice_portal_greeting_file (Optional[LabeledFileNameResource]):

        voice_messaging_greeting_selection (Optional[str]):

        voice_messaging_greeting_file (Optional[LabeledFileNameResource]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    voice_portal_greeting_selection: Optional[str] = field(
        default=None, metadata={"alias": "voicePortalGreetingSelection"}
    )

    voice_portal_greeting_file: Optional[LabeledFileNameResource] = field(
        default=None, metadata={"alias": "voicePortalGreetingFile"}
    )

    voice_messaging_greeting_selection: Optional[str] = field(
        default=None, metadata={"alias": "voiceMessagingGreetingSelection"}
    )

    voice_messaging_greeting_file: Optional[LabeledFileNameResource] = field(
        default=None, metadata={"alias": "voiceMessagingGreetingFile"}
    )


@dataclass(kw_only=True)
class GroupVoiceMessagingGroupModifyVoicePortalBrandingRequest20(OCIRequest):
    """Modify the group's voice portal branding settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        voice_portal_greeting_selection (Optional[str]):

        voice_portal_greeting_file (Optional[Nillable[AnnouncementFileKey]]):

        voice_messaging_greeting_selection (Optional[str]):

        voice_messaging_greeting_file (Optional[Nillable[AnnouncementFileKey]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    voice_portal_greeting_selection: Optional[str] = field(
        default=None, metadata={"alias": "voicePortalGreetingSelection"}
    )

    voice_portal_greeting_file: Optional[Nillable[AnnouncementFileKey]] = field(
        default=None, metadata={"alias": "voicePortalGreetingFile"}
    )

    voice_messaging_greeting_selection: Optional[str] = field(
        default=None, metadata={"alias": "voiceMessagingGreetingSelection"}
    )

    voice_messaging_greeting_file: Optional[Nillable[AnnouncementFileKey]] = field(
        default=None, metadata={"alias": "voiceMessagingGreetingFile"}
    )

    def __post_init__(self):
        nillable_fields = [
            "voice_portal_greeting_file",
            "voice_messaging_greeting_file",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupVoiceMessagingGroupModifyVoicePortalRequest(OCIRequest):
    """Request to modify the group voice portal information for a voice messaging group.
        The following elements are only used in AS data mode:
          networkClassOfService
        The following elements are only used in AS data mode and ignored in XS data mode:
         expressMode

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_instance_profile (Optional[ServiceInstanceModifyProfile]):

        is_active (Optional[bool]):

        enable_extended_scope (Optional[bool]):

        allow_identification_by_phone_number_or_voice_mail_aliases_on_login (Optional[bool]):

        use_voice_portal_wizard (Optional[bool]):

        voice_portal_external_routing_scope (Optional[str]):

        use_external_routing (Optional[bool]):

        external_routing_address (Optional[Nillable[str]]):

        home_zone_name (Optional[Nillable[str]]):

        network_class_of_service (Optional[str]):

        express_mode (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_instance_profile: Optional[ServiceInstanceModifyProfile] = field(
        default=None, metadata={"alias": "serviceInstanceProfile"}
    )

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    enable_extended_scope: Optional[bool] = field(
        default=None, metadata={"alias": "enableExtendedScope"}
    )

    allow_identification_by_phone_number_or_voice_mail_aliases_on_login: Optional[
        bool
    ] = field(
        default=None,
        metadata={"alias": "allowIdentificationByPhoneNumberOrVoiceMailAliasesOnLogin"},
    )

    use_voice_portal_wizard: Optional[bool] = field(
        default=None, metadata={"alias": "useVoicePortalWizard"}
    )

    voice_portal_external_routing_scope: Optional[str] = field(
        default=None, metadata={"alias": "voicePortalExternalRoutingScope"}
    )

    use_external_routing: Optional[bool] = field(
        default=None, metadata={"alias": "useExternalRouting"}
    )

    external_routing_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "externalRoutingAddress"}
    )

    home_zone_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "homeZoneName"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    express_mode: Optional[bool] = field(
        default=None, metadata={"alias": "expressMode"}
    )

    def __post_init__(self):
        nillable_fields = ["external_routing_address", "home_zone_name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupVoiceXmlAddInstanceRequest(OCIRequest):
    """Add a VoiceXML instance to a group.
        The domain is required in the serviceUserId.  For a valid voiceXml instance to work properly,
        a device with Static Registration is expected with a valid contact.
        If not set, The webexMeetingCallback element will be set to \"false\".
        The following elements are only used in AS data mode and ignored in XS data mode:
          webexMeetingCallback

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        service_user_id (str):

        service_instance_profile (ServiceInstanceAddProfile):

        network_class_of_service (Optional[str]):

        access_device_endpoint (Optional[AccessDeviceEndpointAdd]):

        webex_meeting_callback (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: ServiceInstanceAddProfile = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    access_device_endpoint: Optional[AccessDeviceEndpointAdd] = field(
        default=None, metadata={"alias": "accessDeviceEndpoint"}
    )

    webex_meeting_callback: Optional[bool] = field(
        default=None, metadata={"alias": "webexMeetingCallback"}
    )


@dataclass(kw_only=True)
class GroupVoiceXmlDeleteInstanceRequest(OCIRequest):
    """Delete a VoiceXML instance from a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupVoiceXmlGetInstanceListRequest(OCIRequest):
    """Get a list of VoiceXML instances within a group.
        The response is either GroupVoiceXmlGetInstanceListResponse or ErrorResponse.
        It is possible to get the instances within a specified department.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_department_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_department_name: Optional[str] = field(
        default=None, metadata={"alias": "groupDepartmentName"}
    )


@dataclass(kw_only=True)
class GroupVoiceXmlGetInstanceRequest23(OCIRequest):
    """Request to get all the information of a VoiceXML instance.
        The response is either GroupVoiceXmlGetInstanceResponse23 or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class GroupVoiceXmlModifyActiveInstanceListRequest(OCIRequest):
    """Request to set the active status of VoiceXML instances.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_activation (Optional[List[ServiceActivation]]):

    """

    service_activation: Optional[List[ServiceActivation]] = field(
        default=None, metadata={"alias": "serviceActivation"}
    )


@dataclass(kw_only=True)
class GroupVoiceXmlModifyInstanceRequest(OCIRequest):
    """Request to modify a VoiceXML instance. For a valid voiceXml instance to work properly,
        a device with Static Registration is expected with a valid contact.
        The following elements are only used in AS data mode and ignored in XS data mode:
          webexMeetingCallback
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

        service_instance_profile (Optional[ServiceInstanceModifyProfile]):

        network_class_of_service (Optional[str]):

        access_device_endpoint (Optional[Nillable[AccessDeviceEndpointModify]]):

        webex_meeting_callback (Optional[bool]):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: Optional[ServiceInstanceModifyProfile] = field(
        default=None, metadata={"alias": "serviceInstanceProfile"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    access_device_endpoint: Optional[Nillable[AccessDeviceEndpointModify]] = field(
        default=None, metadata={"alias": "accessDeviceEndpoint"}
    )

    webex_meeting_callback: Optional[bool] = field(
        default=None, metadata={"alias": "webexMeetingCallback"}
    )

    def __post_init__(self):
        nillable_fields = ["access_device_endpoint"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupXsiPolicyProfileAssignListRequest(OCIRequest):
    """Assign a group level Xsi policy profile and a list of user Xsi policy profiles
        to a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        group_xsi_policy_profile (Optional[str]):

        user_xsi_policy_profile (Optional[XsiPolicyProfileAssignEntry]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_xsi_policy_profile: Optional[str] = field(
        default=None, metadata={"alias": "groupXsiPolicyProfile"}
    )

    user_xsi_policy_profile: Optional[XsiPolicyProfileAssignEntry] = field(
        default=None, metadata={"alias": "userXsiPolicyProfile"}
    )


@dataclass(kw_only=True)
class GroupXsiPolicyProfileGetAssignedListRequest(OCIRequest):
    """Get a list of Xsi policy profile assigned.
        The response is either a GroupXsiPolicyProfileGetAssignedListResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        level (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    level: Optional[str] = field(default=None, metadata={"alias": "level"})


@dataclass(kw_only=True)
class GroupXsiPolicyProfileGetAssignedUserListRequest(OCIRequest):
    """Get a list of user within a group that have a given
        user Xsi policy profile assigned.
        The response is either a GroupXsiPolicyProfileGetAssignedUserListResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        xsi_policy_profile (XsiPolicyProfileKey):

        response_size_limit (Optional[int]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    xsi_policy_profile: XsiPolicyProfileKey = field(
        metadata={"alias": "xsiPolicyProfile"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class GroupXsiPolicyProfileModifyDefaultRequest(OCIRequest):
    """Modifies the default Xsi policy profile for a group.
        It can only modify the user level default Xsi policy profile.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        user_default_xsi_policy_profile (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    user_default_xsi_policy_profile: Optional[str] = field(
        default=None, metadata={"alias": "userDefaultXsiPolicyProfile"}
    )


@dataclass(kw_only=True)
class GroupXsiPolicyProfileUnassignListRequest(OCIRequest):
    """Unassign a list of Xsi policy profile.
        Only user level Xsi policy profile can be unassigned.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        user_xsi_policy_profile (Optional[XsiPolicyProfileUnassignEntry]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    user_xsi_policy_profile: Optional[XsiPolicyProfileUnassignEntry] = field(
        default=None, metadata={"alias": "userXsiPolicyProfile"}
    )


@dataclass(kw_only=True)
class LoginRequest22V5(OCIRequest):
    """Request to login to OCI.
        password is not required for external authentication login from a trusted host (ACL).

        The following data element is only used in XS data mode and will be ignored in AS data mode:
          signedPassword, ignored in AS data mode unless the password element is not present then an error is returned.

    Attributes:

        user_id (str):

        password (Optional[str]):

        signed_password (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    signed_password: Optional[str] = field(
        default=None, metadata={"alias": "signedPassword"}
    )


@dataclass(kw_only=True)
class LogoutRequest(OCIRequest):
    """LogoutRequest is sent when an OCI user logs out or when connection is lost.
        This command can be sent either to the server, or to the client from OCS.
        Response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        reason (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    reason: Optional[str] = field(default=None, metadata={"alias": "reason"})


@dataclass(kw_only=True)
class LongLivedTokenRevokeRequest(OCIRequest):
    """Revoke all previously issued long lived tokens.
        If the userId is not specified, revoke all tokens in the system.
        If the userId is specified, revoke all tokens issued to the user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (Optional[str]):

    """

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})


@dataclass(kw_only=True)
class PasswordGenerateRequest(OCIRequest):
    """Generate passwords based on the corresponding password/passcode rules.
        The response is either PasswordGenerateResponse or ErrorResponse.

    Attributes:

        system_administrator_password (Optional[PasswordForSystemAdministrator]):

        service_provider_administrator_password (Optional[PasswordForServiceProviderAdministrator]):

        group_administrator_password (Optional[PasswordForGroupAdministrator]):

        user_password (Optional[PasswordForUser]):

        access_device_authentication_password (Optional[PasswordForAccessDevice]):

        trunk_group_authentication_password (Optional[PasswordForTrunkGroup]):

    """

    system_administrator_password: Optional[PasswordForSystemAdministrator] = field(
        default=None, metadata={"alias": "systemAdministratorPassword"}
    )

    service_provider_administrator_password: Optional[
        PasswordForServiceProviderAdministrator
    ] = field(default=None, metadata={"alias": "serviceProviderAdministratorPassword"})

    group_administrator_password: Optional[PasswordForGroupAdministrator] = field(
        default=None, metadata={"alias": "groupAdministratorPassword"}
    )

    user_password: Optional[PasswordForUser] = field(
        default=None, metadata={"alias": "userPassword"}
    )

    access_device_authentication_password: Optional[PasswordForAccessDevice] = field(
        default=None, metadata={"alias": "accessDeviceAuthenticationPassword"}
    )

    trunk_group_authentication_password: Optional[PasswordForTrunkGroup] = field(
        default=None, metadata={"alias": "trunkGroupAuthenticationPassword"}
    )


@dataclass(kw_only=True)
class PasswordModifyRequest(OCIRequest):
    """Modify the password for a user/administrator.
        When oldPassword is specified, password rule applies. If oldPassword in not specified,
        any password rule related to old password does not apply.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        old_password (Optional[str]):

        new_password (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    old_password: Optional[str] = field(default=None, metadata={"alias": "oldPassword"})

    new_password: str = field(metadata={"alias": "newPassword"})


@dataclass(kw_only=True)
class PlaceModifyRequest(OCIRequest):
    """Request to configure a WebEx room/place to have the primary endpoint of WebEx Teams device.

        placeUserId refers to a WebEx room/place.
        webExSIPAddress specifies the WebEx SIP address of the place. The format of this parameter is: user@domain.
        The user part specified in webExSIPAddress will be set to the lineport of the place’s primary endpoint. The endpoint
        will have a static address with URI set to \"sip:user@domain\".
        The domain specified in webExSIPAddress will be:
        - added to the system if it does not exist yet.
        - assigned to the service provider/enterprise which the place belongs to, if it has not been assigned yet.
        - assigned to the group which the place belongs to, if it has not been assigned yet.

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        place_user_id (str):

        web_ex_sip_address (Optional[str]):

    """

    place_user_id: str = field(metadata={"alias": "placeUserId"})

    web_ex_sip_address: Optional[str] = field(
        default=None, metadata={"alias": "webExSIPAddress"}
    )


@dataclass(kw_only=True)
class PublicClusterGetFullyQualifiedDomainNameRequest(OCIRequest):
    """Get the public cluster fully qualified domain name (FQDN).
        The response is either a PublicClusterGetFullyQualifiedDomainNameResponse
        or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class ResellerAddRequest(OCIRequest):
    """Add a reseller.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        reseller_id (str):

        reseller_name (Optional[str]):

        reseller_external_id (Optional[str]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    reseller_name: Optional[str] = field(
        default=None, metadata={"alias": "resellerName"}
    )

    reseller_external_id: Optional[str] = field(
        default=None, metadata={"alias": "resellerExternalId"}
    )


@dataclass(kw_only=True)
class ResellerAdminAddRequest(OCIRequest):
    """Add a reseller administrator.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        user_id (str):

        first_name (Optional[str]):

        last_name (Optional[str]):

        password (Optional[str]):

        language (Optional[str]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    user_id: str = field(metadata={"alias": "userId"})

    first_name: Optional[str] = field(default=None, metadata={"alias": "firstName"})

    last_name: Optional[str] = field(default=None, metadata={"alias": "lastName"})

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    language: Optional[str] = field(default=None, metadata={"alias": "language"})


@dataclass(kw_only=True)
class ResellerAdminAlternateIdAddRequest(OCIRequest):
    """Request to add an alternate Id to a reseller admin.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        alternate_user_id (str):

        description (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    alternate_user_id: str = field(metadata={"alias": "alternateUserId"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class ResellerAdminAlternateIdDeleteRequest(OCIRequest):
    """Request to delete an alternate admin user id of a reseller admin.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        alternate_user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    alternate_user_id: str = field(metadata={"alias": "alternateUserId"})


@dataclass(kw_only=True)
class ResellerAdminAlternateIdGetListRequest(OCIRequest):
    """Request to get the admin id and the list of alternate admin ids of an admin.
        The response is either ResellerAdminAlternateIdGetListResponse or ErrorResponse.
        The \"userId\" can be either the admin user Id or an alternate admin user Id.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class ResellerAdminAlternateIdModifyRequest(OCIRequest):
    """Request to modify an alternate id of a reseller admin.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        alternate_user_id (str):

        new_alternate_user_id (Optional[str]):

        description (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    alternate_user_id: str = field(metadata={"alias": "alternateUserId"})

    new_alternate_user_id: Optional[str] = field(
        default=None, metadata={"alias": "newAlternateUserId"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerAdminDeleteRequest(OCIRequest):
    """Delete a reseller administrator.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class ResellerAdminGetListRequest(OCIRequest):
    """Get a list of reseller administrators.
        The response is either a ResellerAdminGetListResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class ResellerAdminGetRequest22V2(OCIRequest):
    """Get a reseller administrators profile.
        The response is either a ResellerAdminGetResponse22V2 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class ResellerAdminModifyRequest(OCIRequest):
    """Modify the profile for a reseller administrator.
        Since old password is not specified here, any password rule related to old password does not apply.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        first_name (Optional[Nillable[str]]):

        last_name (Optional[Nillable[str]]):

        password (Optional[Nillable[str]]):

        language (Optional[str]):

        account_disabled (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    first_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "firstName"}
    )

    last_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "lastName"}
    )

    password: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "password"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    account_disabled: Optional[bool] = field(
        default=None, metadata={"alias": "accountDisabled"}
    )

    def __post_init__(self):
        nillable_fields = ["first_name", "last_name", "password"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerCallAdmissionControlPoliciesGetRequest(OCIRequest):
    """Get a reseller call admission control policies.
        The response is either a ResellerCallAdmissionControlPoliciesGetResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class ResellerCallAdmissionControlPoliciesModifyRequest(OCIRequest):
    """Modify the reseller call admission control policies.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        enable_call_admission_control (Optional[bool]):

        max_concurrent_network_sessions (Optional[int]):

        max_concurrent_network_sessions_threshold (Optional[Nillable[int]]):

        max_network_calls_per_second (Optional[int]):

        max_network_calls_per_second_threshold (Optional[Nillable[int]]):

        max_concurrent_external_siprec_sessions (Optional[int]):

        max_concurrent_external_siprec_sessions_threshold (Optional[Nillable[int]]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    enable_call_admission_control: Optional[bool] = field(
        default=None, metadata={"alias": "enableCallAdmissionControl"}
    )

    max_concurrent_network_sessions: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentNetworkSessions"}
    )

    max_concurrent_network_sessions_threshold: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxConcurrentNetworkSessionsThreshold"}
    )

    max_network_calls_per_second: Optional[int] = field(
        default=None, metadata={"alias": "maxNetworkCallsPerSecond"}
    )

    max_network_calls_per_second_threshold: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxNetworkCallsPerSecondThreshold"}
    )

    max_concurrent_external_siprec_sessions: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentExternalSIPRECSessions"}
    )

    max_concurrent_external_siprec_sessions_threshold: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxConcurrentExternalSIPRECSessionsThreshold"}
    )

    def __post_init__(self):
        nillable_fields = [
            "max_concurrent_network_sessions_threshold",
            "max_network_calls_per_second_threshold",
            "max_concurrent_external_siprec_sessions_threshold",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerCallCenterGetRequest(OCIRequest):
    """Request the reseller level data associated with Call Center.
        The response is either a ResellerCallCenterGetResponse or an
        ErrorResponse.

    Attributes:

        reseller_id (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class ResellerCallCenterModifyRequest(OCIRequest):
    """Modify the reseller level data associated with Call Center.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        default_from_address (Optional[Nillable[str]]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    default_from_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultFromAddress"}
    )

    def __post_init__(self):
        nillable_fields = ["default_from_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerCallNotifyGetRequest(OCIRequest):
    """Request the reseller level data associated with Call Notify.
        The response is either a ResellerCallNotifyGetResponse or an
        ErrorResponse.

    Attributes:

        reseller_id (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class ResellerCallNotifyModifyRequest(OCIRequest):
    """Modify the reseller level data associated with Call Notify.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        default_from_address (Optional[Nillable[str]]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    default_from_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultFromAddress"}
    )

    def __post_init__(self):
        nillable_fields = ["default_from_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerCallPoliciesGetRequest22(OCIRequest):
    """Request the reseller level data associated with Call Policies.
        The response is either a ResellerCallPoliciesGetResponse22
        or an ErrorResponse.

    Attributes:

        reseller_id (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class ResellerCallPoliciesModifyRequest(OCIRequest):
    """Modify the reseller level data associated with Call Policies.
        The following elements are only used in AS data mode:
          forceRedirectingUserIdentityForRedirectedCalls
          applyRedirectingUserIdentityToNetworkLocations

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        force_redirecting_user_identity_for_redirected_calls (Optional[bool]):

        apply_redirecting_user_identity_to_network_locations (Optional[bool]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    force_redirecting_user_identity_for_redirected_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "forceRedirectingUserIdentityForRedirectedCalls"},
    )

    apply_redirecting_user_identity_to_network_locations: Optional[bool] = field(
        default=None,
        metadata={"alias": "applyRedirectingUserIdentityToNetworkLocations"},
    )


@dataclass(kw_only=True)
class ResellerCallRecordingGetRequest(OCIRequest):
    """Get the Call Recording attribute for a reseller.
        The response is either a ResellerCallRecordingGetResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class ResellerCallRecordingModifyRequest(OCIRequest):
    """Modify the Call Recording attribute for a reseller.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        fqdn (Optional[Nillable[str]]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    fqdn: Optional[Nillable[str]] = field(default=None, metadata={"alias": "FQDN"})

    def __post_init__(self):
        nillable_fields = ["fqdn"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerCollaborateGetRequest(OCIRequest):
    """Request the reseller level data associated with Collaborate.
        The response is either a ResellerCollaborateGetResponse or an
        ErrorResponse.

    Attributes:

        reseller_id (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class ResellerCollaborateModifyRequest(OCIRequest):
    """Modify the reseller level data associated with Collaborate.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        collaborate_from_address (Optional[Nillable[str]]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    collaborate_from_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "collaborateFromAddress"}
    )

    def __post_init__(self):
        nillable_fields = ["collaborate_from_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerDeleteRequest(OCIRequest):
    """Delete a reseller.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        reseller_id (Optional[str]):

        reseller_external_id (Optional[str]):

    """

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    reseller_external_id: Optional[str] = field(
        default=None, metadata={"alias": "resellerExternalId"}
    )


@dataclass(kw_only=True)
class ResellerDeviceActivationPolicyGetRequest(OCIRequest):
    """Request the Device Activation policy of a reseller.
        The response is either a ResellerDeviceActivationPolicyGetResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class ResellerDeviceActivationPolicyModifyRequest(OCIRequest):
    """Modify the Device Activation policy of a reseller.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        use_reseller_settings (Optional[bool]):

        allow_activation_code_request_by_user (Optional[bool]):

        send_activation_code_in_email (Optional[bool]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    use_reseller_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useResellerSettings"}
    )

    allow_activation_code_request_by_user: Optional[bool] = field(
        default=None, metadata={"alias": "allowActivationCodeRequestByUser"}
    )

    send_activation_code_in_email: Optional[bool] = field(
        default=None, metadata={"alias": "sendActivationCodeInEmail"}
    )


@dataclass(kw_only=True)
class ResellerEmergencyCallNotificationGetRequest(OCIRequest):
    """Request the reseller level data associated with Emergency Call
        Notification.
        The response is either a
        ResellerEmergencyCallNotificationGetResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class ResellerEmergencyCallNotificationModifyRequest(OCIRequest):
    """Modify the reseller level data associated with Emergency Call
        Notification.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        default_from_address (Optional[Nillable[str]]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    default_from_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultFromAddress"}
    )

    def __post_init__(self):
        nillable_fields = ["default_from_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerEmergencyZonesGetRequest(OCIRequest):
    """Request the reseller level data associated with Emergency Zones.
        The response is either a ResellerEmergencyZonesGetResponse or an
        ErrorResponse.

    Attributes:

        reseller_id (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class ResellerEmergencyZonesModifyRequest(OCIRequest):
    """Modify the reseller level data associated with Emergency Zones.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        default_from_address (Optional[Nillable[str]]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    default_from_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultFromAddress"}
    )

    def __post_init__(self):
        nillable_fields = ["default_from_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerGetListRequest(OCIRequest):
    """Request a list of resellers in the system.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        The response is either a ResellerGetListResponse or an ErrorResponse.

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_reseller_id (Optional[List[SearchCriteriaResellerId]]):

        search_criteria_reseller_name (Optional[List[SearchCriteriaResellerName]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_reseller_id: Optional[List[SearchCriteriaResellerId]] = field(
        default=None, metadata={"alias": "searchCriteriaResellerId"}
    )

    search_criteria_reseller_name: Optional[List[SearchCriteriaResellerName]] = field(
        default=None, metadata={"alias": "searchCriteriaResellerName"}
    )


@dataclass(kw_only=True)
class ResellerGetRequest22V2(OCIRequest):
    """Get the profile for a reseller.
        The response is either ResellerGetResponse22V2 or ErrorResponse.

    Attributes:

        reseller_id (Optional[str]):

        reseller_external_id (Optional[str]):

    """

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    reseller_external_id: Optional[str] = field(
        default=None, metadata={"alias": "resellerExternalId"}
    )


@dataclass(kw_only=True)
class ResellerIntegratedIMPGetRequest22(OCIRequest):
    """Get the Integrated IMP service attributes for the reseller.
        The response is either ResellerIntegratedIMPGetResponse22 or ErrorResponse.

    Attributes:

        reseller_id (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class ResellerIntegratedIMPModifyRequest(OCIRequest):
    """Modify the Integrated IMP service attributes for the reseller.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        use_system_service_domain (Optional[bool]):

        service_domain (Optional[Nillable[str]]):

        service_port (Optional[Nillable[int]]):

        use_system_messaging_server (Optional[bool]):

        provisioning_url (Optional[Nillable[str]]):

        provisioning_user_id (Optional[Nillable[str]]):

        provisioning_password (Optional[Nillable[str]]):

        bosh_url (Optional[Nillable[str]]):

        default_imp_id_type (Optional[str]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    use_system_service_domain: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemServiceDomain"}
    )

    service_domain: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "serviceDomain"}
    )

    service_port: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "servicePort"}
    )

    use_system_messaging_server: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemMessagingServer"}
    )

    provisioning_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "provisioningUrl"}
    )

    provisioning_user_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "provisioningUserId"}
    )

    provisioning_password: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "provisioningPassword"}
    )

    bosh_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "boshURL"}
    )

    default_imp_id_type: Optional[str] = field(
        default=None, metadata={"alias": "defaultImpIdType"}
    )

    def __post_init__(self):
        nillable_fields = [
            "service_domain",
            "service_port",
            "provisioning_url",
            "provisioning_user_id",
            "provisioning_password",
            "bosh_url",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerMailParametersGetRequest(OCIRequest):
    """Request the reseller Mail parameters.
        The response is either a ResellerMailParametersGetResponse or an
        ErrorResponse.

    Attributes:

        reseller_id (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class ResellerMailParametersModifyRequest(OCIRequest):
    """Request to modify the reseller Mail parameters.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        default_from_address (Optional[Nillable[str]]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    default_from_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultFromAddress"}
    )

    def __post_init__(self):
        nillable_fields = ["default_from_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerMeetMeConferencingGetRequest22(OCIRequest):
    """Request the reseller level data associated with Meet-Me Conferencing functions.
        The response is either a ResellerMeetMeConferencingGetResponse22 or an
        ErrorResponse.
        The following data elements are only returned for System and Provisioning Administrators:
                maxAllocatedPorts.
                The following data elements are only returned for System and Provisioning Administrators and AS Mode Only:
                disableUnlimitedMeetMePorts,
                enableMaxAllocatedPorts.

    Attributes:

        reseller_id (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class ResellerMeetMeConferencingModifyRequest(OCIRequest):
    """Modify the reseller level data associated with Meet-Me Conferencing functions.
        The response is either a SuccessResponse or an ErrorResponse.
        The following data elements are only modified for System and Provisioning Administrators:
                maxAllocatedPorts.
                The following data elements are only modified for System and Provisioning Administrators and AS Mode only:
                disableUnlimitedMeetMePorts,
                enableMaxAllocatedPorts.

    Attributes:

        reseller_id (str):

        conference_from_address (Optional[Nillable[str]]):

        max_allocated_ports (Optional[int]):

        disable_unlimited_meet_me_ports (Optional[bool]):

        enable_max_allocated_ports (Optional[bool]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    conference_from_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "conferenceFromAddress"}
    )

    max_allocated_ports: Optional[int] = field(
        default=None, metadata={"alias": "maxAllocatedPorts"}
    )

    disable_unlimited_meet_me_ports: Optional[bool] = field(
        default=None, metadata={"alias": "disableUnlimitedMeetMePorts"}
    )

    enable_max_allocated_ports: Optional[bool] = field(
        default=None, metadata={"alias": "enableMaxAllocatedPorts"}
    )

    def __post_init__(self):
        nillable_fields = ["conference_from_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerModifyRequest(OCIRequest):
    """Modify the reseller profile.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        reseller_id (Optional[str]):

        reseller_external_id (Optional[str]):

        reseller_name (Optional[Nillable[str]]):

    """

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    reseller_external_id: Optional[str] = field(
        default=None, metadata={"alias": "resellerExternalId"}
    )

    reseller_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "resellerName"}
    )

    def __post_init__(self):
        nillable_fields = ["reseller_name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerNetworkClassOfServiceAssignListRequest(OCIRequest):
    """Assign a list of Network Classes of Service to a reseller.
        A default Network Class of Service is optional.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        network_class_of_service (Optional[List[str]]):

        default_network_class_of_service (Optional[Nillable[DefaultNetworkClassOfService]]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    network_class_of_service: Optional[List[str]] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    default_network_class_of_service: Optional[
        Nillable[DefaultNetworkClassOfService]
    ] = field(default=None, metadata={"alias": "defaultNetworkClassOfService"})

    def __post_init__(self):
        nillable_fields = ["default_network_class_of_service"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerNetworkClassOfServiceGetAssignedListRequest(OCIRequest):
    """Get a list of Network Classes of Service assigned to a reseller.
        The response is either a ResellerNetworkClassOfServiceGetAssignedListResponse
        or an ErorResponse.

    Attributes:

        reseller_id (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class ResellerNetworkClassOfServiceGetAssignedServiceProviderListRequest(OCIRequest):
    """Get a list of service provider/enterprises within a reseller that have a given
        Network Class of Service assigned.
        The response is either a ResellerNetworkClassOfServiceGetAssignedServiceProviderListResponse
        or an ErorResponse.

    Attributes:

        reseller_id (str):

        network_class_of_service (str):

        response_size_limit (Optional[int]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_service_provider_name (Optional[List[SearchCriteriaServiceProviderName]]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    network_class_of_service: str = field(metadata={"alias": "networkClassOfService"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_service_provider_name: Optional[
        List[SearchCriteriaServiceProviderName]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderName"})


@dataclass(kw_only=True)
class ResellerNetworkClassOfServiceModifyDefaultRequest(OCIRequest):
    """Modifies the default Network Classes of Service of a reseller.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        network_class_of_service (Optional[Nillable[str]]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    network_class_of_service: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    def __post_init__(self):
        nillable_fields = ["network_class_of_service"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerNetworkClassOfServiceUnassignListRequest(OCIRequest):
    """Unassign a list of Network Classes of Service from a reseller.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        network_class_of_service (Optional[List[str]]):

        default_network_class_of_service (Optional[Nillable[DefaultNetworkClassOfService]]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    network_class_of_service: Optional[List[str]] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    default_network_class_of_service: Optional[
        Nillable[DefaultNetworkClassOfService]
    ] = field(default=None, metadata={"alias": "defaultNetworkClassOfService"})

    def __post_init__(self):
        nillable_fields = ["default_network_class_of_service"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerResourcePriorityGetRequest(OCIRequest):
    """Get the Resource Priority service attributes for the reseller.
        The response is either ResellerResourcePriorityGetResponse or ErrorResponse.

    Attributes:

        reseller_id (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class ResellerResourcePriorityModifyRequest(OCIRequest):
    """Modify the Resource Priority service attributes for the reseller.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        use_system_settings (Optional[bool]):

        send_resource_priority_to_network (Optional[bool]):

        resource_priority (Optional[str]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    use_system_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemSettings"}
    )

    send_resource_priority_to_network: Optional[bool] = field(
        default=None, metadata={"alias": "sendResourcePriorityToNetwork"}
    )

    resource_priority: Optional[str] = field(
        default=None, metadata={"alias": "resourcePriority"}
    )


@dataclass(kw_only=True)
class ResellerServiceAuthorizationGetRequest(OCIRequest):
    """Get the reseller service authorization
        The response is either ResellerServiceAuthorizationGetResponse or ErrorResponse.

    Attributes:

        reseller_id (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class ResellerServiceAuthorizationModifyRequest(OCIRequest):
    """Modify the reseller service authorization file.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        service_offering (Optional[Nillable[FileResource]]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    service_offering: Optional[Nillable[FileResource]] = field(
        default=None, metadata={"alias": "serviceOffering"}
    )

    def __post_init__(self):
        nillable_fields = ["service_offering"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerStirShakenGetRequest23V2(OCIRequest):
    """Get Reseller Stir Shaken service settings.
        The response is either ResellerStirShakenGetResponse23V2 or ErrorResponse.

    Attributes:

        reseller_id (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class ResellerStirShakenModifyRequest(OCIRequest):
    """Modify reseller Stir Shaken service settings.

    Attributes:

        reseller_id (str):

        use_parent_level_settings (Optional[bool]):

        signing_policy (Optional[str]):

        tagging_policy (Optional[str]):

        sign_emergency_calls (Optional[bool]):

        tag_emergency_calls (Optional[bool]):

        signing_service_url (Optional[Nillable[str]]):

        tag_from_or_pai (Optional[str]):

        verstat_tag (Optional[str]):

        use_os_value_for_orig_id (Optional[bool]):

        orig_uuid (Optional[Nillable[str]]):

        attestation_level (Optional[str]):

        enable_verification (Optional[bool]):

        verification_service_url (Optional[Nillable[str]]):

        verification_error_handling (Optional[str]):

        proxy_verstat_to_cnam_subscribe (Optional[bool]):

        use_unknown_headers_from_cnam_notify (Optional[bool]):

        enable_signing_for_unscreened_trunk_group_originations (Optional[bool]):

        enable_tagging_for_unscreened_trunk_group_originations (Optional[bool]):

        unscreened_trunk_group_origination_attestation_level (Optional[str]):

        verify_gets_calls (Optional[bool]):

        include_tagged_headers_to_access_side (Optional[bool]):

        proxy_identity_header_to_access_side (Optional[bool]):

        check_directory_numbers_for_attestation (Optional[bool]):

        match_unassigned_numbers_only (Optional[bool]):

        enable_tagging_for_redirected_calls (Optional[bool]):

        prefer_ingress_tagging (Optional[bool]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    use_parent_level_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useParentLevelSettings"}
    )

    signing_policy: Optional[str] = field(
        default=None, metadata={"alias": "signingPolicy"}
    )

    tagging_policy: Optional[str] = field(
        default=None, metadata={"alias": "taggingPolicy"}
    )

    sign_emergency_calls: Optional[bool] = field(
        default=None, metadata={"alias": "signEmergencyCalls"}
    )

    tag_emergency_calls: Optional[bool] = field(
        default=None, metadata={"alias": "tagEmergencyCalls"}
    )

    signing_service_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "signingServiceURL"}
    )

    tag_from_or_pai: Optional[str] = field(
        default=None, metadata={"alias": "tagFromOrPAI"}
    )

    verstat_tag: Optional[str] = field(default=None, metadata={"alias": "verstatTag"})

    use_os_value_for_orig_id: Optional[bool] = field(
        default=None, metadata={"alias": "useOSValueForOrigId"}
    )

    orig_uuid: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "origUUID"}
    )

    attestation_level: Optional[str] = field(
        default=None, metadata={"alias": "attestationLevel"}
    )

    enable_verification: Optional[bool] = field(
        default=None, metadata={"alias": "enableVerification"}
    )

    verification_service_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "verificationServiceURL"}
    )

    verification_error_handling: Optional[str] = field(
        default=None, metadata={"alias": "verificationErrorHandling"}
    )

    proxy_verstat_to_cnam_subscribe: Optional[bool] = field(
        default=None, metadata={"alias": "proxyVerstatToCNAMSubscribe"}
    )

    use_unknown_headers_from_cnam_notify: Optional[bool] = field(
        default=None, metadata={"alias": "useUnknownHeadersFromCNAMNotify"}
    )

    enable_signing_for_unscreened_trunk_group_originations: Optional[bool] = field(
        default=None,
        metadata={"alias": "enableSigningForUnscreenedTrunkGroupOriginations"},
    )

    enable_tagging_for_unscreened_trunk_group_originations: Optional[bool] = field(
        default=None,
        metadata={"alias": "enableTaggingForUnscreenedTrunkGroupOriginations"},
    )

    unscreened_trunk_group_origination_attestation_level: Optional[str] = field(
        default=None,
        metadata={"alias": "unscreenedTrunkGroupOriginationAttestationLevel"},
    )

    verify_gets_calls: Optional[bool] = field(
        default=None, metadata={"alias": "verifyGETSCalls"}
    )

    include_tagged_headers_to_access_side: Optional[bool] = field(
        default=None, metadata={"alias": "includeTaggedHeadersToAccessSide"}
    )

    proxy_identity_header_to_access_side: Optional[bool] = field(
        default=None, metadata={"alias": "proxyIdentityHeaderToAccessSide"}
    )

    check_directory_numbers_for_attestation: Optional[bool] = field(
        default=None, metadata={"alias": "checkDirectoryNumbersForAttestation"}
    )

    match_unassigned_numbers_only: Optional[bool] = field(
        default=None, metadata={"alias": "matchUnassignedNumbersOnly"}
    )

    enable_tagging_for_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "enableTaggingForRedirectedCalls"}
    )

    prefer_ingress_tagging: Optional[bool] = field(
        default=None, metadata={"alias": "preferIngressTagging"}
    )

    def __post_init__(self):
        nillable_fields = [
            "signing_service_url",
            "orig_uuid",
            "verification_service_url",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerVoiceMessagingGroupGetRequest(OCIRequest):
    """Request the reseller level data associated with Voice Messaging.
        The response is either a ResellerVoiceMessagingGroupGetResponse or an
        ErrorResponse.

    Attributes:

        reseller_id (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class ResellerVoiceMessagingGroupModifyRequest(OCIRequest):
    """Modify the reseller level data associated with Voice Messaging.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        delivery_from_address (Optional[Nillable[str]]):

        notification_from_address (Optional[Nillable[str]]):

        voice_portal_lockout_from_address (Optional[Nillable[str]]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    delivery_from_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deliveryFromAddress"}
    )

    notification_from_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "notificationFromAddress"}
    )

    voice_portal_lockout_from_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "voicePortalLockoutFromAddress"}
    )

    def __post_init__(self):
        nillable_fields = [
            "delivery_from_address",
            "notification_from_address",
            "voice_portal_lockout_from_address",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ResellerXsiPolicyProfileAssignListRequest(OCIRequest):
    """Assign a list of Xsi policy profile to a reseller.
        It contains the service provider, group, user level Xsi policy profile.
        Each level has one default Xsi policy profile assigned.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        sp_xsi_policy_profile (Optional[XsiPolicyProfileAssignEntry]):

        group_xsi_policy_profile (Optional[XsiPolicyProfileAssignEntry]):

        user_xsi_policy_profile (Optional[XsiPolicyProfileAssignEntry]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    sp_xsi_policy_profile: Optional[XsiPolicyProfileAssignEntry] = field(
        default=None, metadata={"alias": "spXsiPolicyProfile"}
    )

    group_xsi_policy_profile: Optional[XsiPolicyProfileAssignEntry] = field(
        default=None, metadata={"alias": "groupXsiPolicyProfile"}
    )

    user_xsi_policy_profile: Optional[XsiPolicyProfileAssignEntry] = field(
        default=None, metadata={"alias": "userXsiPolicyProfile"}
    )


@dataclass(kw_only=True)
class ResellerXsiPolicyProfileGetAssignedListRequest(OCIRequest):
    """Get a list of Xsi policy profile assigned.
        The response is either a XsiPolicyProfileGetAssignedListResponse
        or an ErrorResponse.

    Attributes:

        reseller_id (str):

        level (Optional[str]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    level: Optional[str] = field(default=None, metadata={"alias": "level"})


@dataclass(kw_only=True)
class ResellerXsiPolicyProfileGetAssignedServiceProviderListRequest(OCIRequest):
    """Get a list of service provider/enterprises within a reseller that have a given
        Service provider Xsi policy profile assigned.
        The response is either a ResellerXsiPolichProfileGetAssignedServiceProviderListResponse
        or an ErrorResponse.

    Attributes:

        reseller_id (str):

        xsi_policy_profile (XsiPolicyProfileKey):

        response_size_limit (Optional[int]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_service_provider_name (Optional[List[SearchCriteriaServiceProviderName]]):

        search_criteria_exact_organization_type (Optional[SearchCriteriaExactOrganizationType]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    xsi_policy_profile: XsiPolicyProfileKey = field(
        metadata={"alias": "xsiPolicyProfile"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_service_provider_name: Optional[
        List[SearchCriteriaServiceProviderName]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderName"})

    search_criteria_exact_organization_type: Optional[
        SearchCriteriaExactOrganizationType
    ] = field(default=None, metadata={"alias": "searchCriteriaExactOrganizationType"})


@dataclass(kw_only=True)
class ResellerXsiPolicyProfileModifyDefaultRequest(OCIRequest):
    """Modifies the default Xsi policy profile for a reseller.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        sp_default_xsi_policy_profile (Optional[str]):

        group_default_xsi_policy_profile (Optional[str]):

        user_default_xsi_policy_profile (Optional[str]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    sp_default_xsi_policy_profile: Optional[str] = field(
        default=None, metadata={"alias": "spDefaultXsiPolicyProfile"}
    )

    group_default_xsi_policy_profile: Optional[str] = field(
        default=None, metadata={"alias": "groupDefaultXsiPolicyProfile"}
    )

    user_default_xsi_policy_profile: Optional[str] = field(
        default=None, metadata={"alias": "userDefaultXsiPolicyProfile"}
    )


@dataclass(kw_only=True)
class ResellerXsiPolicyProfileUnassignListRequest(OCIRequest):
    """Unassign a list of Xsi policy profile.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        reseller_id (str):

        sp_xsi_policy_profile (Optional[XsiPolicyProfileUnassignEntry]):

        group_xsi_policy_profile (Optional[XsiPolicyProfileUnassignEntry]):

        user_xsi_policy_profile (Optional[XsiPolicyProfileUnassignEntry]):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    sp_xsi_policy_profile: Optional[XsiPolicyProfileUnassignEntry] = field(
        default=None, metadata={"alias": "spXsiPolicyProfile"}
    )

    group_xsi_policy_profile: Optional[XsiPolicyProfileUnassignEntry] = field(
        default=None, metadata={"alias": "groupXsiPolicyProfile"}
    )

    user_xsi_policy_profile: Optional[XsiPolicyProfileUnassignEntry] = field(
        default=None, metadata={"alias": "userXsiPolicyProfile"}
    )


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceAddRequest22V2(OCIRequest):
    """Request to add a service provider access device.
        The response is either SuccessResponse or ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          serviceProviderExternalId
          deviceExternalId
          deviceIPEI

    Attributes:

        service_provider_id (Optional[str]):

        device_name (Optional[str]):

        service_provider_external_id (Optional[str]):

        device_external_id (Optional[str]):

        device_type (str):

        protocol (Optional[str]):

        net_address (Optional[str]):

        port (Optional[int]):

        outbound_proxy_server_net_address (Optional[str]):

        stun_server_net_address (Optional[str]):

        mac_address (Optional[str]):

        serial_number (Optional[str]):

        description (Optional[str]):

        physical_location (Optional[str]):

        transport_protocol (Optional[str]):

        use_custom_user_name_password (Optional[bool]):

        access_device_credentials (Optional[DeviceManagementUserNamePassword16]):

        device_ipei (Optional[str]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    device_name: Optional[str] = field(default=None, metadata={"alias": "deviceName"})

    service_provider_external_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderExternalId"}
    )

    device_external_id: Optional[str] = field(
        default=None, metadata={"alias": "deviceExternalId"}
    )

    device_type: str = field(metadata={"alias": "deviceType"})

    protocol: Optional[str] = field(default=None, metadata={"alias": "protocol"})

    net_address: Optional[str] = field(default=None, metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    outbound_proxy_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "outboundProxyServerNetAddress"}
    )

    stun_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "stunServerNetAddress"}
    )

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})

    serial_number: Optional[str] = field(
        default=None, metadata={"alias": "serialNumber"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    use_custom_user_name_password: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomUserNamePassword"}
    )

    access_device_credentials: Optional[DeviceManagementUserNamePassword16] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )

    device_ipei: Optional[str] = field(default=None, metadata={"alias": "deviceIPEI"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceCustomTagAddOrModifyListRequest(OCIRequest):
    """Request to add or modify a list of static configuration tag for a service provider access
        device.  If the tag does not exist, it is added.  If the tag exists, its
        value is updated.

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

        tag (List[DeviceManagementTag]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    tag: List[DeviceManagementTag] = field(metadata={"alias": "tag"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceCustomTagAddRequest(OCIRequest):
    """Request to add a static configuration tag for a service provider access device.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

        tag_name (str):

        tag_value (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    tag_name: str = field(metadata={"alias": "tagName"})

    tag_value: Optional[str] = field(default=None, metadata={"alias": "tagValue"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceCustomTagDeleteListRequest(OCIRequest):
    """Request to delete static configuration tags for a service provider access device.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

        tag_name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    tag_name: List[str] = field(metadata={"alias": "tagName"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceCustomTagGetListRequest(OCIRequest):
    """Request to get the list of custom configuration tags managed by the Device Management System, on a per-device profile basis.
        The response is either ServiceProviderAccessDeviceCustomTagGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceCustomTagModifyRequest(OCIRequest):
    """Request to modify a static configuration tag for a service provider access device.

        The tagValueToEncrypt element can only be used by a system administrator.

        The following elements are only used in XS data mode and ignored in AS data mode:
          tagValueToEncrypt

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

        tag_name (str):

        tag_value (Optional[Nillable[str]]):

        tag_value_to_encrypt (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    tag_name: str = field(metadata={"alias": "tagName"})

    tag_value: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "tagValue"}
    )

    tag_value_to_encrypt: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "tagValueToEncrypt"}
    )

    def __post_init__(self):
        nillable_fields = ["tag_value", "tag_value_to_encrypt"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceDeleteRequest(OCIRequest):
    """Request to delete a specified service provider access device.

        The following elements are only used in AS data mode and ignored in XS data mode:
          deviceExternalId

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (Optional[str]):

        device_name (Optional[str]):

        device_external_id (Optional[str]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    device_name: Optional[str] = field(default=None, metadata={"alias": "deviceName"})

    device_external_id: Optional[str] = field(
        default=None, metadata={"alias": "deviceExternalId"}
    )


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceDeviceActivationGetRequest(OCIRequest):
    """Requests the activation information for a device configured at the Service Provider level.
        Returns a ServiceProviderAccessDeviceDeviceActivationGetResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceDeviceActivationModifyRequest(OCIRequest):
    """Activates or deactivates a device configured at the Service Provider level. It is only possible
        for this request to activate a device which is deactivated. Trying to activate a
        device in the activating state will result in an error response since only the DAS is
        allowed to execute this operation.
        Returns a SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

        activate_device (bool):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    activate_device: bool = field(metadata={"alias": "activateDevice"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceFileGetListRequest14sp8(OCIRequest):
    """Request to get the list of device files managed by the Device Management System, on a per-device profile basis.
        The response is either ServiceProviderAccessDeviceFileGetListResponse14sp8 or ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceFileGetRequest20(OCIRequest):
    """Request to get a service provider device profile file.
        The response is either ServiceProviderAccessDeviceFileGetResponse20 or ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

        file_format (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    file_format: str = field(metadata={"alias": "fileFormat"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceFileModifyRequest14sp8(OCIRequest):
    """Request to modify a specified service provider/enterprise access device file.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

        file_format (str):

        file_source (Optional[str]):

        upload_file (Optional[FileResource]):

        extended_capture_enabled (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    file_format: str = field(metadata={"alias": "fileFormat"})

    file_source: Optional[str] = field(default=None, metadata={"alias": "fileSource"})

    upload_file: Optional[FileResource] = field(
        default=None, metadata={"alias": "uploadFile"}
    )

    extended_capture_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "extendedCaptureEnabled"}
    )


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGenerateActivationCodeRequest(OCIRequest):
    """Requests a new activation code for a device configured at the Service Provider level.
        Returns a SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetAvailableCustomTagListRequest(OCIRequest):
    """Get the list of all available custom tags managed by the Device Management System, on a per-device profile basis.
        The response is either ServiceProviderAccessDeviceGetAvailableCustomTagListResponse or ErrorResponse.
        The following elements are used in AS mode and ignored in XS data mode:
          tagSetName

    Attributes:

        service_provider_id (str):

        device_name (str):

        tag_set_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    tag_set_name: Optional[str] = field(default=None, metadata={"alias": "tagSetName"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetEnhancedConfigurationTypeListRequest(OCIRequest):
    """Requests the list of configurable device types of devices that have already been
        added to the service provider.
        The response is either ServiceProviderAccessDeviceGetEnhancedConfigurationTypeListResponse
        or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetEnhancedConfigurationTypeRequest(OCIRequest):
    """Requests the details of a specified configurable device type for a service provider.
        The response is either ServiceProviderAccessDeviceGetEnhancedConfigurationTypeResponse
        or ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_type (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetLinkedLeafDeviceListRequest22(OCIRequest):
    """Requests the list of linked leaf devices for the service provider level tree device passed in the request.
        A tree device is a device associated with a device type that has the option
        supportLinks set to \"Support Links from Devices\". Many leaf devices can be linked to it.
        A leaf device is a device associated with a device type that has the option
        supportLinks set to \"Support Link to Device\" or \"Support Link to Device and User\".  It can
        be linked to only one tree device.
        The list includes devices created at the system, service provider, and group levels.
        If the leafDeviceCategory is not set in the request, then linked leaf devices of all categories are requested, otherwise only the linked leaf devices of the specified category are requested.
        The category values are: \"Handset\", \"Base Station\", \"All\".

        The response is either ServiceProviderAccessDeviceGetLinkedLeafDeviceListResponse22 or
        ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

        leaf_device_category (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    leaf_device_category: Optional[str] = field(
        default=None, metadata={"alias": "leafDeviceCategory"}
    )


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetLinkedTreeDeviceRequest(OCIRequest):
    """Requests the tree device linked with the service provider level leaf device passed in the request.
        A tree device is a device associated with a device type that has the option
        supportLinks set to \"Support Links from Devices\". Many leaf devices can be linked to it.
        A leaf device is a device associated with a device type that has the option
        supportLinks set to \"Support Link to Device\" or \"Support Link to Device and User\".  It can
        be linked to only one tree device.

        The response is either ServiceProviderAccessDeviceGetLinkedTreeDeviceResponse or
        ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetListRequest(OCIRequest):
    """Requests the list of access devices in a service provider.

        The following elements are only used in AS data mode and ignored in XS data mode:
          serviceProviderExternalId

        The response is either ServiceProviderAccessDeviceGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (Optional[str]):

        service_provider_external_id (Optional[str]):

        response_size_limit (Optional[int]):

        search_criteria_device_name (Optional[List[SearchCriteriaDeviceName]]):

        search_criteria_device_mac_address (Optional[List[SearchCriteriaDeviceMACAddress]]):

        search_criteria_device_net_address (Optional[List[SearchCriteriaDeviceNetAddress]]):

        search_criteria_exact_device_type (Optional[SearchCriteriaExactDeviceType]):

        search_criteria_access_device_version (Optional[List[SearchCriteriaAccessDeviceVersion]]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    service_provider_external_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderExternalId"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_device_name: Optional[List[SearchCriteriaDeviceName]] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceName"}
    )

    search_criteria_device_mac_address: Optional[
        List[SearchCriteriaDeviceMACAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceMACAddress"})

    search_criteria_device_net_address: Optional[
        List[SearchCriteriaDeviceNetAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceNetAddress"})

    search_criteria_exact_device_type: Optional[SearchCriteriaExactDeviceType] = field(
        default=None, metadata={"alias": "searchCriteriaExactDeviceType"}
    )

    search_criteria_access_device_version: Optional[
        List[SearchCriteriaAccessDeviceVersion]
    ] = field(default=None, metadata={"alias": "searchCriteriaAccessDeviceVersion"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetNativeTagsWithLogicListRequest(OCIRequest):
    """Get the list of all native tags with logic managed by the Device Management System, on a per-device profile basis.
        The response is either ServiceProviderAccessDeviceGetNativeTagsWithLogicListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetPagedSortedListRequest(OCIRequest):
    """Requests the list of service provider level access devices.
        The response is either ServiceProviderAccessDeviceGetPagedSortedListResponse or ErrorResponse.
        If no sortOrder is included, the response is sorted by Device Name ascending
        by default.  If the responsePagingControl element is not provided, the paging startIndex
        will be set to 1 by default, and the responsePageSize will be set to the maximum
        responsePageSize by default.
        Multiple search criteria are logically ANDed together unless the
        searchCriteriaModeOr option is included. Then the search criteria are logically
        ORed together.
        The getVisualDeviceManagementAPIDevicesOnly element can only be set when CloudPBX is licenced.
        If the getVisualDeviceManagementAPIDevicesOnly element is not set, all devices are returned with Visual Device Management API flag set to empty.
        If the getVisualDeviceManagementAPIDevicesOnly element is set to true, only SIP devices supporting Visual Device Management API are returned.
        If the getVisualDeviceManagementAPIDevicesOnly element is set to false, all SIP devices are returned with their current Visual Device Management API flag value.

    Attributes:

        service_provider_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_by_device_name (Optional[SortByDeviceName]):

        sort_by_device_type (Optional[SortByDeviceType]):

        sort_by_device_net_address (Optional[SortByDeviceNetAddress]):

        sort_by_device_mac_address (Optional[SortByDeviceMACAddress]):

        search_criteria_device_name (Optional[List[SearchCriteriaDeviceName]]):

        search_criteria_device_mac_address (Optional[List[SearchCriteriaDeviceMACAddress]]):

        search_criteria_device_net_address (Optional[List[SearchCriteriaDeviceNetAddress]]):

        search_criteria_exact_device_type (Optional[List[SearchCriteriaExactDeviceType]]):

        search_criteria_access_device_version (Optional[List[SearchCriteriaAccessDeviceVersion]]):

        search_criteria_mode_or (Optional[bool]):

        get_visual_device_management_api_devices_only (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_by_device_name: Optional[SortByDeviceName] = field(
        default=None, metadata={"alias": "sortByDeviceName"}
    )

    sort_by_device_type: Optional[SortByDeviceType] = field(
        default=None, metadata={"alias": "sortByDeviceType"}
    )

    sort_by_device_net_address: Optional[SortByDeviceNetAddress] = field(
        default=None, metadata={"alias": "sortByDeviceNetAddress"}
    )

    sort_by_device_mac_address: Optional[SortByDeviceMACAddress] = field(
        default=None, metadata={"alias": "sortByDeviceMACAddress"}
    )

    search_criteria_device_name: Optional[List[SearchCriteriaDeviceName]] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceName"}
    )

    search_criteria_device_mac_address: Optional[
        List[SearchCriteriaDeviceMACAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceMACAddress"})

    search_criteria_device_net_address: Optional[
        List[SearchCriteriaDeviceNetAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceNetAddress"})

    search_criteria_exact_device_type: Optional[List[SearchCriteriaExactDeviceType]] = (
        field(default=None, metadata={"alias": "searchCriteriaExactDeviceType"})
    )

    search_criteria_access_device_version: Optional[
        List[SearchCriteriaAccessDeviceVersion]
    ] = field(default=None, metadata={"alias": "searchCriteriaAccessDeviceVersion"})

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )

    get_visual_device_management_api_devices_only: Optional[bool] = field(
        default=None, metadata={"alias": "getVisualDeviceManagementAPIDevicesOnly"}
    )


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetRequest24V3(OCIRequest):
    """Requests the configuration of a specified service provider access device.

        The following elements are only used in AS data mode and ignored in XS data mode:
          deviceExternalId

        The response is either ServiceProviderAccessDeviceGetResponse24V3 or ErrorResponse.

    Attributes:

        service_provider_id (Optional[str]):

        device_name (Optional[str]):

        device_external_id (Optional[str]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    device_name: Optional[str] = field(default=None, metadata={"alias": "deviceName"})

    device_external_id: Optional[str] = field(
        default=None, metadata={"alias": "deviceExternalId"}
    )


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetUserListRequest21sp1(OCIRequest):
    """Requests the list of users on a specified device.
        The response is either ServiceProviderAccessDeviceGetUserListResponse21sp1 or ErrorResponse.
        The following elements are only used in XS data mode and ignored in AS data mode:
          searchCriteriaAccessDeviceEndpointPrivateIdentity

    Attributes:

        service_provider_id (str):

        device_name (str):

        response_size_limit (Optional[int]):

        search_criteria_line_port_user_part (Optional[List[SearchCriteriaLinePortUserPart]]):

        search_criteria_line_port_domain (Optional[List[SearchCriteriaLinePortDomain]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_exact_endpoint_type (Optional[SearchCriteriaExactEndpointType21sp1]):

        search_criteria_exact_user_type (Optional[SearchCriteriaExactUserType]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_port_number (Optional[SearchCriteriaExactPortNumber]):

        search_criteria_access_device_endpoint_private_identity (Optional[List[SearchCriteriaAccessDeviceEndpointPrivateIdentity]]):

        search_criteria_user_hotline_contact (Optional[List[SearchCriteriaUserHotlineContact]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_line_port_user_part: Optional[
        List[SearchCriteriaLinePortUserPart]
    ] = field(default=None, metadata={"alias": "searchCriteriaLinePortUserPart"})

    search_criteria_line_port_domain: Optional[List[SearchCriteriaLinePortDomain]] = (
        field(default=None, metadata={"alias": "searchCriteriaLinePortDomain"})
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_exact_endpoint_type: Optional[
        SearchCriteriaExactEndpointType21sp1
    ] = field(default=None, metadata={"alias": "searchCriteriaExactEndpointType"})

    search_criteria_exact_user_type: Optional[SearchCriteriaExactUserType] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserType"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_port_number: Optional[SearchCriteriaExactPortNumber] = field(
        default=None, metadata={"alias": "searchCriteriaExactPortNumber"}
    )

    search_criteria_access_device_endpoint_private_identity: Optional[
        List[SearchCriteriaAccessDeviceEndpointPrivateIdentity]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaAccessDeviceEndpointPrivateIdentity"},
    )

    search_criteria_user_hotline_contact: Optional[
        List[SearchCriteriaUserHotlineContact]
    ] = field(default=None, metadata={"alias": "searchCriteriaUserHotlineContact"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceLinkDeviceListRequest(OCIRequest):
    """Request to link one or more leaf devices to a service provider level tree device.
        A tree device is a device associated with a device type that has the option
        supportLinks set to \"Support Links from Devices\". Many leaf devices can be linked to it.
        A leaf device is a device associated with a device type that has the option
        supportLinks set to \"Support Link to Device\" or \"Support Link to Device and User\".  It can
        be linked to only one tree device.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

        leaf_device_key (List[AccessDeviceKey]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    leaf_device_key: List[AccessDeviceKey] = field(metadata={"alias": "leafDeviceKey"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceModifyRequest22(OCIRequest):
    """Request to modify a specified service provider access device.
        The response is either SuccessResponse or ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
         deviceExternalId
          deviceIPEI
          useDeviceCode
          deviceCode

    Attributes:

        service_provider_id (Optional[str]):

        device_name (Optional[str]):

        device_external_id (Optional[str]):

        protocol (Optional[str]):

        net_address (Optional[Nillable[str]]):

        port (Optional[Nillable[int]]):

        outbound_proxy_server_net_address (Optional[Nillable[str]]):

        stun_server_net_address (Optional[Nillable[str]]):

        mac_address (Optional[Nillable[str]]):

        serial_number (Optional[Nillable[str]]):

        description (Optional[Nillable[str]]):

        physical_location (Optional[Nillable[str]]):

        transport_protocol (Optional[str]):

        use_custom_user_name_password (Optional[bool]):

        access_device_credentials (Optional[Nillable[DeviceManagementUserNamePassword16]]):

        device_ipei (Optional[Nillable[str]]):

        use_device_code (Optional[bool]):

        device_code (Optional[Nillable[str]]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    device_name: Optional[str] = field(default=None, metadata={"alias": "deviceName"})

    device_external_id: Optional[str] = field(
        default=None, metadata={"alias": "deviceExternalId"}
    )

    protocol: Optional[str] = field(default=None, metadata={"alias": "protocol"})

    net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "netAddress"}
    )

    port: Optional[Nillable[int]] = field(default=None, metadata={"alias": "port"})

    outbound_proxy_server_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "outboundProxyServerNetAddress"}
    )

    stun_server_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "stunServerNetAddress"}
    )

    mac_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "macAddress"}
    )

    serial_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "serialNumber"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    physical_location: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    use_custom_user_name_password: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomUserNamePassword"}
    )

    access_device_credentials: Optional[
        Nillable[DeviceManagementUserNamePassword16]
    ] = field(default=None, metadata={"alias": "accessDeviceCredentials"})

    device_ipei: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceIPEI"}
    )

    use_device_code: Optional[bool] = field(
        default=None, metadata={"alias": "useDeviceCode"}
    )

    device_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceCode"}
    )

    def __post_init__(self):
        nillable_fields = [
            "net_address",
            "port",
            "outbound_proxy_server_net_address",
            "stun_server_net_address",
            "mac_address",
            "serial_number",
            "description",
            "physical_location",
            "access_device_credentials",
            "device_ipei",
            "device_code",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceModifyUserRequest(OCIRequest):
    """Request to modify attributes for line/ports assigned on the service provider device profile.
        The response is either SuccessResponse or ErrorResponse.
        The following elements are only used in XS data mode and ignored in AS data mode:
          privateIdentity

    Attributes:

        service_provider_id (str):

        device_name (str):

        line_port (str):

        private_identity (Optional[str]):

        is_primary_line_port (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    is_primary_line_port: Optional[bool] = field(
        default=None, metadata={"alias": "isPrimaryLinePort"}
    )


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceResetRequest(OCIRequest):
    """Reset a specific service provider SIP device that supports the reset operation.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceTagSetGetRequest(OCIRequest):
    """Request to get the custom configuration tag set defined at the access device.
        The response is either ServiceProviderAccessDeviceTagSetGetResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceTagSetModifyRequest(OCIRequest):
    """Request to modify a static configuration tag set.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

        tag_set_name (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    tag_set_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "tagSetName"}
    )

    def __post_init__(self):
        nillable_fields = ["tag_set_name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceUnlinkDeviceListRequest(OCIRequest):
    """Request to unlink one or more leaf access devices from a tree device.
        A leaf device is a device associated with a device type that has the option
        supportLinks set to \"Support Link to Device\" or \"Support Link to Device and User\".  It can
        be linked to only one tree device.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        leaf_device_key (List[AccessDeviceKey]):

    """

    leaf_device_key: List[AccessDeviceKey] = field(metadata={"alias": "leafDeviceKey"})


@dataclass(kw_only=True)
class ServiceProviderAdminAddRequest14(OCIRequest):
    """Add a service provider administrator.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        user_id (str):

        first_name (Optional[str]):

        last_name (Optional[str]):

        password (Optional[str]):

        language (Optional[str]):

        administrator_type (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    user_id: str = field(metadata={"alias": "userId"})

    first_name: Optional[str] = field(default=None, metadata={"alias": "firstName"})

    last_name: Optional[str] = field(default=None, metadata={"alias": "lastName"})

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    administrator_type: str = field(metadata={"alias": "administratorType"})


@dataclass(kw_only=True)
class ServiceProviderAdminAlternateIdAddRequest(OCIRequest):
    """Request to add an alternate admin Id to a service provider administrator.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        alternate_user_id (str):

        description (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    alternate_user_id: str = field(metadata={"alias": "alternateUserId"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class ServiceProviderAdminAlternateIdDeleteRequest(OCIRequest):
    """Request to delete an alternate admin user id of a user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        alternate_user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    alternate_user_id: str = field(metadata={"alias": "alternateUserId"})


@dataclass(kw_only=True)
class ServiceProviderAdminAlternateIdGetListRequest(OCIRequest):
    """Request to get the admin id and the list of alternate admin ids of an admin.
        The response is either ServiceProviderAdminAlternateIdGetListResponse or ErrorResponse.
        The \"userId\" can be either the admin user Id or an alternate admin user Id.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class ServiceProviderAdminAlternateIdModifyRequest(OCIRequest):
    """Request to modify an alternate id of a service provider admin.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        alternate_user_id (str):

        new_alternate_user_id (Optional[str]):

        description (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    alternate_user_id: str = field(metadata={"alias": "alternateUserId"})

    new_alternate_user_id: Optional[str] = field(
        default=None, metadata={"alias": "newAlternateUserId"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderAdminDeleteRequest(OCIRequest):
    """Delete a service provider administrator.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class ServiceProviderAdminGetListRequest14(OCIRequest):
    """Get a list of service provider administrators.
        The response is either a ServiceProviderAdminGetListResponse14 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderAdminGetPagedSortedListRequest(OCIRequest):
    """Get a list of service provider administrators.
        The response is either a ServiceProviderAdminGetPagedSortedListResponse or an ErrorResponse.
        If no sortOrder is included, the response is sorted by Administrator ID ascending by default.
        If the responsePagingControl element is not provided, the paging startIndex will be
        set to 1 by default, and the responsePageSize will be set to the maximum
        responsePageSize by default.
        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is
        included. Then the search criteria are logically ORed together.

    Attributes:

        service_provider_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderServiceProviderAdminGetPagedSortedList]]):

        search_criteria_admin_id (Optional[List[SearchCriteriaAdminId]]):

        search_criteria_admin_last_name (Optional[List[SearchCriteriaAdminLastName]]):

        search_criteria_admin_first_name (Optional[List[SearchCriteriaAdminFirstName]]):

        search_criteria_exact_service_provider_admin_type (Optional[List[SearchCriteriaExactServiceProviderAdminType]]):

        search_criteria_language (Optional[List[SearchCriteriaLanguage]]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[List[SortOrderServiceProviderAdminGetPagedSortedList]] = field(
        default=None, metadata={"alias": "sortOrder"}
    )

    search_criteria_admin_id: Optional[List[SearchCriteriaAdminId]] = field(
        default=None, metadata={"alias": "searchCriteriaAdminId"}
    )

    search_criteria_admin_last_name: Optional[List[SearchCriteriaAdminLastName]] = (
        field(default=None, metadata={"alias": "searchCriteriaAdminLastName"})
    )

    search_criteria_admin_first_name: Optional[List[SearchCriteriaAdminFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaAdminFirstName"})
    )

    search_criteria_exact_service_provider_admin_type: Optional[
        List[SearchCriteriaExactServiceProviderAdminType]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaExactServiceProviderAdminType"}
    )

    search_criteria_language: Optional[List[SearchCriteriaLanguage]] = field(
        default=None, metadata={"alias": "searchCriteriaLanguage"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class ServiceProviderAdminGetPolicyRequest20(OCIRequest):
    """Requests the service provider administrator's policy settings.
        The response is either ServiceProviderAdminGetPolicyResponse20 or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class ServiceProviderAdminGetRequest22V3(OCIRequest):
    """Get a service provider administrators profile.
        The response is either a ServiceProviderAdminGetResponse22V3 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class ServiceProviderAdminModifyPolicyRequest14(OCIRequest):
    """Request to modify the service provider administrator's policy settings.
        The response is either SuccessResponse or ErrorResponse.
        The networkPolicyAccess is only modified for the enterprise administrator.
        The following elements are only used in AS data mode:
            dialableCallerIDAccess
            verifyTranslationAndroutingAccess

    Attributes:

        user_id (str):

        profile_access (Optional[str]):

        group_access (Optional[str]):

        user_access (Optional[str]):

        admin_access (Optional[str]):

        department_access (Optional[str]):

        access_device_access (Optional[str]):

        phone_number_extension_access (Optional[str]):

        calling_line_id_number_access (Optional[str]):

        service_access (Optional[str]):

        service_pack_access (Optional[str]):

        session_admission_control_access (Optional[str]):

        web_branding_access (Optional[str]):

        office_zone_access (Optional[str]):

        communication_barring_access (Optional[str]):

        network_policy_access (Optional[str]):

        number_activation_access (Optional[str]):

        dialable_caller_id_access (Optional[str]):

        verify_translation_and_routing_access (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    profile_access: Optional[str] = field(
        default=None, metadata={"alias": "profileAccess"}
    )

    group_access: Optional[str] = field(default=None, metadata={"alias": "groupAccess"})

    user_access: Optional[str] = field(default=None, metadata={"alias": "userAccess"})

    admin_access: Optional[str] = field(default=None, metadata={"alias": "adminAccess"})

    department_access: Optional[str] = field(
        default=None, metadata={"alias": "departmentAccess"}
    )

    access_device_access: Optional[str] = field(
        default=None, metadata={"alias": "accessDeviceAccess"}
    )

    phone_number_extension_access: Optional[str] = field(
        default=None, metadata={"alias": "phoneNumberExtensionAccess"}
    )

    calling_line_id_number_access: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdNumberAccess"}
    )

    service_access: Optional[str] = field(
        default=None, metadata={"alias": "serviceAccess"}
    )

    service_pack_access: Optional[str] = field(
        default=None, metadata={"alias": "servicePackAccess"}
    )

    session_admission_control_access: Optional[str] = field(
        default=None, metadata={"alias": "sessionAdmissionControlAccess"}
    )

    web_branding_access: Optional[str] = field(
        default=None, metadata={"alias": "webBrandingAccess"}
    )

    office_zone_access: Optional[str] = field(
        default=None, metadata={"alias": "officeZoneAccess"}
    )

    communication_barring_access: Optional[str] = field(
        default=None, metadata={"alias": "communicationBarringAccess"}
    )

    network_policy_access: Optional[str] = field(
        default=None, metadata={"alias": "networkPolicyAccess"}
    )

    number_activation_access: Optional[str] = field(
        default=None, metadata={"alias": "numberActivationAccess"}
    )

    dialable_caller_id_access: Optional[str] = field(
        default=None, metadata={"alias": "dialableCallerIDAccess"}
    )

    verify_translation_and_routing_access: Optional[str] = field(
        default=None, metadata={"alias": "verifyTranslationAndRoutingAccess"}
    )


@dataclass(kw_only=True)
class ServiceProviderAdminModifyRequest(OCIRequest):
    """Modify a service provider administrator.
        Since old password is not specified here, any password rule related to old password
        does not apply.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode.
        accountDisabled

    Attributes:

        user_id (str):

        first_name (Optional[Nillable[str]]):

        last_name (Optional[Nillable[str]]):

        password (Optional[Nillable[str]]):

        language (Optional[str]):

        account_disabled (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    first_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "firstName"}
    )

    last_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "lastName"}
    )

    password: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "password"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    account_disabled: Optional[bool] = field(
        default=None, metadata={"alias": "accountDisabled"}
    )

    def __post_init__(self):
        nillable_fields = ["first_name", "last_name", "password"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderAdministratorPasswordRulesGetRequestRI(OCIRequest):
    """Requests the effective password rules setting for a service provider administrator
        The response is either ServiceProviderAdministratorPasswordRulesGetResponseRI or
        ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderAdviceOfChargeGetRequest(OCIRequest):
    """Request to get the list of Advice of Charge service provider parameters.
        The response is either ServiceProviderAdviceOfChargeGetResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderAdviceOfChargeModifyRequest(OCIRequest):
    """Modify the service provider level Advice Of Charge service provider settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        use_sp_level_ao_c_settings (Optional[bool]):

        delay_between_notification_seconds (Optional[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    use_sp_level_ao_c_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useSPLevelAoCSettings"}
    )

    delay_between_notification_seconds: Optional[int] = field(
        default=None, metadata={"alias": "delayBetweenNotificationSeconds"}
    )


@dataclass(kw_only=True)
class ServiceProviderAlternateUserIdGetListRequest(OCIRequest):
    """Request to get the list of alternate user ids in the service provider/enterprise.
        The response is either ServiceProviderAlternateUserIdGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_alternate_user_id (Optional[List[SearchCriteriaAlternateUserId]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_alternate_user_id: Optional[List[SearchCriteriaAlternateUserId]] = (
        field(default=None, metadata={"alias": "searchCriteriaAlternateUserId"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )


@dataclass(kw_only=True)
class ServiceProviderAnswerConfirmationGetRequest16(OCIRequest):
    """Get a service provider or enterprise's answer confirmation settings.
        The response is either a ServiceProviderAnswerConfirmationGetResponse16 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderAnswerConfirmationModifyRequest16(OCIRequest):
    """Modify a service provider or enterprise's answer confirmation settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        announcement_message_selection (Optional[str]):

        confirmation_message_audio_file (Optional[LabeledMediaFileResource]):

        confirmation_timout_seconds (Optional[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    announcement_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "announcementMessageSelection"}
    )

    confirmation_message_audio_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "confirmationMessageAudioFile"}
    )

    confirmation_timout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "confirmationTimoutSeconds"}
    )


@dataclass(kw_only=True)
class ServiceProviderApplicationServerSetGetRequest(OCIRequest):
    """Get the Application Server set for a service provider or enterprise.
        The response is either a ServiceProviderApplicationServerSetGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderApplicationServerSetModifyRequest(OCIRequest):
    """Modify the Application Server set assigned to the service provider or enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        application_server_set_name (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    application_server_set_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "applicationServerSetName"}
    )

    def __post_init__(self):
        nillable_fields = ["application_server_set_name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderBroadWorksCommunicatorGetRequest(OCIRequest):
    """Request to get Configuration Server for a specified service
        provider. The response is either a ServiceProviderBroadWorksCommunicatorGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderBroadWorksCommunicatorModifyRequest(OCIRequest):
    """Request to modify the Configuration URL. The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (Optional[str]):

        configuration_server_url (Optional[Nillable[str]]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    configuration_server_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "configurationServerURL"}
    )

    def __post_init__(self):
        nillable_fields = ["configuration_server_url"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderBroadWorksMobilityGetRequest22V3(OCIRequest):
    """Get the service provider BroadWorks Mobility service settings.
        The response is either a ServiceProviderBroadWorksMobilityGetResponse22V3 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderBroadWorksMobilityMobileSubscriberDirectoryNumberAddListRequest21(
    OCIRequest
):
    """Adds Mobile Subscriber Directory Numbers to a service provider-mobile network combination. It is possible to add a single DN,
        or a list of DNs.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        mobile_network_name (str):

        mobile_subscriber_directory_number (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    mobile_network_name: str = field(metadata={"alias": "mobileNetworkName"})

    mobile_subscriber_directory_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "mobileSubscriberDirectoryNumber"}
    )


@dataclass(kw_only=True)
class ServiceProviderBroadWorksMobilityMobileSubscriberDirectoryNumberDeleteListRequest(
    OCIRequest
):
    """Deletes Mobile Subscriber Directory Numbers from a service provider. It is possible to delete either: a single number,
        or a list of numbers.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        mobile_subscriber_directory_number (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    mobile_subscriber_directory_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "mobileSubscriberDirectoryNumber"}
    )


@dataclass(kw_only=True)
class ServiceProviderBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailableListRequest(
    OCIRequest
):
    """Request a list of available Mobile Subscriber Directory Numbers not yet assigned to any group. This command is applicable only for service providers and will fail for enterprises.
        The response is either ServiceProviderBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailableListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderBroadWorksMobilityMobileSubscriberDirectoryNumberGetSummaryListRequest(
    OCIRequest
):
    """Request a summary table of all Mobile Subscriber Directory Numbers in a service provider. This command is applicable only for service providers and will fail for enterprises.
        The response is either ServiceProviderBroadWorksMobilityMobileSubscriberDirectoryNumberGetSummaryListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_mobile_subscriber_directory_number (Optional[List[SearchCriteriaMobileSubscriberDirectoryNumber]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_exact_mobile_network (Optional[SearchCriteriaExactMobileNetwork]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_mobile_subscriber_directory_number: Optional[
        List[SearchCriteriaMobileSubscriberDirectoryNumber]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaMobileSubscriberDirectoryNumber"},
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_exact_mobile_network: Optional[SearchCriteriaExactMobileNetwork] = (
        field(default=None, metadata={"alias": "searchCriteriaExactMobileNetwork"})
    )


@dataclass(kw_only=True)
class ServiceProviderBroadWorksMobilityModifyRequest(OCIRequest):
    """Modify the service provider level BroadWorks Mobility service settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        use_setting_level (Optional[str]):

        enable_location_services (Optional[bool]):

        enable_msrn_lookup (Optional[bool]):

        enable_mobile_state_checking (Optional[bool]):

        deny_call_originations (Optional[bool]):

        deny_call_terminations (Optional[bool]):

        enable_announcement_suppression (Optional[bool]):

        enable_internal_clid_delivery (Optional[bool]):

        enable_internal_clid_delivery_access_locations (Optional[bool]):

        enable_enhanced_unreachable_state_checking (Optional[bool]):

        enable_network_call_barring_status_check (Optional[bool]):

        network_translation_index (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    use_setting_level: Optional[str] = field(
        default=None, metadata={"alias": "useSettingLevel"}
    )

    enable_location_services: Optional[bool] = field(
        default=None, metadata={"alias": "enableLocationServices"}
    )

    enable_msrn_lookup: Optional[bool] = field(
        default=None, metadata={"alias": "enableMSRNLookup"}
    )

    enable_mobile_state_checking: Optional[bool] = field(
        default=None, metadata={"alias": "enableMobileStateChecking"}
    )

    deny_call_originations: Optional[bool] = field(
        default=None, metadata={"alias": "denyCallOriginations"}
    )

    deny_call_terminations: Optional[bool] = field(
        default=None, metadata={"alias": "denyCallTerminations"}
    )

    enable_announcement_suppression: Optional[bool] = field(
        default=None, metadata={"alias": "enableAnnouncementSuppression"}
    )

    enable_internal_clid_delivery: Optional[bool] = field(
        default=None, metadata={"alias": "enableInternalCLIDDelivery"}
    )

    enable_internal_clid_delivery_access_locations: Optional[bool] = field(
        default=None, metadata={"alias": "enableInternalCLIDDeliveryAccessLocations"}
    )

    enable_enhanced_unreachable_state_checking: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnhancedUnreachableStateChecking"}
    )

    enable_network_call_barring_status_check: Optional[bool] = field(
        default=None, metadata={"alias": "enableNetworkCallBarringStatusCheck"}
    )

    network_translation_index: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "networkTranslationIndex"}
    )

    def __post_init__(self):
        nillable_fields = ["network_translation_index"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderCPEConfigRebuildConfigFileRequest(OCIRequest):
    """Rebuild the service provider default config file for the specified device type.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_type (str):

        force (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_type: str = field(metadata={"alias": "deviceType"})

    force: Optional[bool] = field(default=None, metadata={"alias": "force"})


@dataclass(kw_only=True)
class ServiceProviderCPEConfigRebuildDeviceConfigFileRequest(OCIRequest):
    """Rebuild the config file for a specified device.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

        force (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    force: Optional[bool] = field(default=None, metadata={"alias": "force"})


@dataclass(kw_only=True)
class ServiceProviderCPEConfigReorderDeviceLinePortsRequest(OCIRequest):
    """Reorder the lines of a Service Provider device. You can not add or delete line ports, only
        re-ordering the list is allowed. The ordered list of line ports can be obtained
        with the ServiceProviderAccessDeviceGetRequest command.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

        ordered_line_port_list (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    ordered_line_port_list: List[str] = field(metadata={"alias": "orderedLinePortList"})


@dataclass(kw_only=True)
class ServiceProviderCPEConfigResetDeviceRequest(OCIRequest):
    """Reset a specific service provider or enterprise device.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

        force (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    force: Optional[bool] = field(default=None, metadata={"alias": "force"})


@dataclass(kw_only=True)
class ServiceProviderCPEConfigResetDeviceTypeRequest(OCIRequest):
    """Reset all the devices of the specified device type in a service provider.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_type (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class ServiceProviderCPEConfigSetConfigFileRequest(OCIRequest):
    """Request to set a new service provider default configuration file for a device type.
        The response is either a SuccessResponse or an ErrorResponse.

        When the element configFile is set to nil, the configuration file defined
        at the parent level is used.

    Attributes:

        service_provider_id (str):

        device_type (str):

        config_file (Nillable[FileResource]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_type: str = field(metadata={"alias": "deviceType"})

    config_file: Nillable[FileResource] = field(metadata={"alias": "configFile"})

    def __post_init__(self):
        nillable_fields = ["config_file"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderCallProcessingGetPolicyRequest22V3(OCIRequest):
    """Request the service provider level data associated with Call Processing
        Policy. The response is either a
        ServiceProviderCallProcessingGetPolicyResponse22V3 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderCallProcessingModifyPolicyRequest15(OCIRequest):
    """Modify the service provider level data associated with Call Processing
        Policy. The response is either a SuccessResponse or an ErrorResponse.
         The following elements are only used in AS data mode:
           useServiceProviderDCLIDSetting
           enableDialableCallerID
           allowConfigurableCLIDForRedirectingIdentity
        The following elements are only used in AS data mode and ignored in XS data mode:
           enablePhoneListLookup
           useMaxConcurrentTerminatingAlertingRequests
           maxConcurrentTerminatingAlertingRequests
           includeRedirectionsInMaximumNumberOfConcurrentCalls
           useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable
           useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable
           allowMobileDNForRedirectingIdentity
           enableGatewayRoutePolicy
           networkCallsGatewayRouteIdentity
           networkURLCallsGatewayRouteIdentity
           emergencyCallsGatewayRouteIdentity
           repairCallsGatewayRouteIdentity
           callTypingErrorsGatewayRouteIdentity

        The following elements are only used in XS data mode and ignored in AS data mode:
           routeOverrideDomain
           routeOverridePrefix

    Attributes:

        service_provider_id (str):

        use_service_provider_dclid_setting (Optional[bool]):

        use_max_simultaneous_calls (Optional[bool]):

        max_simultaneous_calls (Optional[int]):

        use_max_simultaneous_video_calls (Optional[bool]):

        max_simultaneous_video_calls (Optional[int]):

        use_max_call_time_for_answered_calls (Optional[bool]):

        max_call_time_for_answered_calls_minutes (Optional[int]):

        use_max_call_time_for_unanswered_calls (Optional[bool]):

        max_call_time_for_unanswered_calls_minutes (Optional[int]):

        media_policy_selection (Optional[str]):

        supported_media_set_name (Optional[Nillable[str]]):

        network_usage_selection (Optional[str]):

        enforce_group_calling_line_identity_restriction (Optional[bool]):

        allow_enterprise_group_call_typing_for_private_dialing_plan (Optional[bool]):

        allow_enterprise_group_call_typing_for_public_dialing_plan (Optional[bool]):

        override_clid_restriction_for_private_call_category (Optional[bool]):

        use_enterprise_clid_for_private_call_category (Optional[bool]):

        enable_enterprise_extension_dialing (Optional[bool]):

        enforce_enterprise_calling_line_identity_restriction (Optional[bool]):

        use_setting_level (Optional[str]):

        conference_uri (Optional[Nillable[str]]):

        use_max_concurrent_redirected_calls (Optional[bool]):

        max_concurrent_redirected_calls (Optional[int]):

        use_max_find_me_follow_me_depth (Optional[bool]):

        max_find_me_follow_me_depth (Optional[int]):

        max_redirection_depth (Optional[int]):

        use_max_concurrent_find_me_follow_me_invocations (Optional[bool]):

        max_concurrent_find_me_follow_me_invocations (Optional[int]):

        clid_policy (Optional[str]):

        emergency_clid_policy (Optional[str]):

        allow_alternate_numbers_for_redirecting_identity (Optional[bool]):

        enable_dialable_caller_id (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        enterprise_calls_clid_policy (Optional[str]):

        group_calls_clid_policy (Optional[str]):

        enable_phone_list_lookup (Optional[bool]):

        use_max_concurrent_terminating_alerting_requests (Optional[bool]):

        max_concurrent_terminating_alerting_requests (Optional[int]):

        include_redirections_in_maximum_number_of_concurrent_calls (Optional[bool]):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (Optional[bool]):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (Optional[bool]):

        route_override_domain (Optional[Nillable[str]]):

        route_override_prefix (Optional[Nillable[str]]):

        allow_mobile_dn_for_redirecting_identity (Optional[bool]):

        enable_gateway_route_policy (Optional[bool]):

        network_calls_gateway_route_identity (Optional[Nillable[str]]):

        network_url_calls_gateway_route_identity (Optional[Nillable[str]]):

        emergency_calls_gateway_route_identity (Optional[Nillable[str]]):

        repair_calls_gateway_route_identity (Optional[Nillable[str]]):

        call_typing_errors_gateway_route_identity (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    use_service_provider_dclid_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useServiceProviderDCLIDSetting"}
    )

    use_max_simultaneous_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousCalls"}
    )

    use_max_simultaneous_video_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    media_policy_selection: Optional[str] = field(
        default=None, metadata={"alias": "mediaPolicySelection"}
    )

    supported_media_set_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "supportedMediaSetName"}
    )

    network_usage_selection: Optional[str] = field(
        default=None, metadata={"alias": "networkUsageSelection"}
    )

    enforce_group_calling_line_identity_restriction: Optional[bool] = field(
        default=None, metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"},
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"},
    )

    override_clid_restriction_for_private_call_category: Optional[bool] = field(
        default=None,
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"},
    )

    use_enterprise_clid_for_private_call_category: Optional[bool] = field(
        default=None, metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    enable_enterprise_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_enterprise_calling_line_identity_restriction: Optional[bool] = field(
        default=None,
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"},
    )

    use_setting_level: Optional[str] = field(
        default=None, metadata={"alias": "useSettingLevel"}
    )

    conference_uri: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "conferenceURI"}
    )

    use_max_concurrent_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_find_me_follow_me_depth: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxRedirectionDepth"}
    )

    use_max_concurrent_find_me_follow_me_invocations: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    emergency_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "emergencyClidPolicy"}
    )

    allow_alternate_numbers_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    enable_dialable_caller_id: Optional[bool] = field(
        default=None, metadata={"alias": "enableDialableCallerID"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    enterprise_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "groupCallsCLIDPolicy"}
    )

    enable_phone_list_lookup: Optional[bool] = field(
        default=None, metadata={"alias": "enablePhoneListLookup"}
    )

    use_max_concurrent_terminating_alerting_requests: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentTerminatingAlertingRequests"}
    )

    max_concurrent_terminating_alerting_requests: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentTerminatingAlertingRequests"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"},
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"
        },
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        },
    )

    route_override_domain: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "routeOverrideDomain"}
    )

    route_override_prefix: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "routeOverridePrefix"}
    )

    allow_mobile_dn_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowMobileDNForRedirectingIdentity"}
    )

    enable_gateway_route_policy: Optional[bool] = field(
        default=None, metadata={"alias": "enableGatewayRoutePolicy"}
    )

    network_calls_gateway_route_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "networkCallsGatewayRouteIdentity"}
    )

    network_url_calls_gateway_route_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "networkURLCallsGatewayRouteIdentity"}
    )

    emergency_calls_gateway_route_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "emergencyCallsGatewayRouteIdentity"}
    )

    repair_calls_gateway_route_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repairCallsGatewayRouteIdentity"}
    )

    call_typing_errors_gateway_route_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callTypingErrorsGatewayRouteIdentity"}
    )

    def __post_init__(self):
        nillable_fields = [
            "supported_media_set_name",
            "conference_uri",
            "route_override_domain",
            "route_override_prefix",
            "network_calls_gateway_route_identity",
            "network_url_calls_gateway_route_identity",
            "emergency_calls_gateway_route_identity",
            "repair_calls_gateway_route_identity",
            "call_typing_errors_gateway_route_identity",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringCriteriaAssignListRequest(OCIRequest):
    """Assign a list of Communication Barring Criteria to a service provider.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        criteria_name (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    criteria_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "criteriaName"}
    )


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringCriteriaGetAssignedListRequest(OCIRequest):
    """Get a list of Communication Barring Criteria assigned to a service provider.
        The response is either a ServiceProviderCommunicationBarringCriteriaGetAssignedListResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringCriteriaUnassignListRequest(OCIRequest):
    """Unassign a list of Communication Barring Criteria from a service provider.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        criteria_name (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    criteria_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "criteriaName"}
    )


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringDigitPatternCriteriaAddRequest(OCIRequest):
    """Add a new Communication Barring Digit Pattern Criteria.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

        description (Optional[str]):

        match_digit_pattern (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    match_digit_pattern: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchDigitPattern"}
    )


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringDigitPatternCriteriaDeleteRequest(OCIRequest):
    """Delete an existing Communication Barring Digit Pattern Criteria.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringDigitPatternCriteriaGetListRequest(OCIRequest):
    """Get the list of all Digit Pattern Criteria defined for the service provider.
        The response is either a ServiceProviderCommunicationBarringDigitPatternCriteriaGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringDigitPatternCriteriaGetPatternListRequest(
    OCIRequest
):
    """Get an existing Digit Pattern Criteria.
        The response is either a ServiceProviderCommunicationBarringDigitPatternCriteriaGetPatternListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

        response_size_limit (Optional[int]):

        search_criteria_digit_pattern (Optional[List[SearchCriteriaDigitPattern]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_digit_pattern: Optional[List[SearchCriteriaDigitPattern]] = field(
        default=None, metadata={"alias": "searchCriteriaDigitPattern"}
    )


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringDigitPatternCriteriaGetRequest(OCIRequest):
    """Get an existing Digit Pattern Criteria.
        The response is either a ServiceProviderCommunicationBarringDigitPatternCriteriaGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringDigitPatternCriteriaModifyRequest(OCIRequest):
    """Modify an existing Communication Barring Digit Pattern Criteria.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

        new_name (Optional[str]):

        description (Optional[Nillable[str]]):

        add_match_digit_pattern (Optional[List[str]]):

        delete_match_digit_pattern (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    add_match_digit_pattern: Optional[List[str]] = field(
        default=None, metadata={"alias": "addMatchDigitPattern"}
    )

    delete_match_digit_pattern: Optional[List[str]] = field(
        default=None, metadata={"alias": "deleteMatchDigitPattern"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringIncomingCriteriaAssignListRequest(OCIRequest):
    """Assign a list of Communication Barring Incoming Criteria to a service provider.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        criteria_name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    criteria_name: List[str] = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringIncomingCriteriaGetAssignedListRequest(
    OCIRequest
):
    """Get a list of Communication Barring Incoming Criteria assigned to a service provider.
        The response is either a ServiceProviderCommunicationBarringIncomingCriteriaGetAssignedListResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringIncomingCriteriaUnassignListRequest(
    OCIRequest
):
    """Unassign a list of Communication Barring Incoming Criteria from a service provider.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        criteria_name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    criteria_name: List[str] = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringProfileAddRequest19sp1(OCIRequest):
    """Add a new Communication Barring Profile.
        The priorities for OriginatingRules, RedirectingRules, CallMeNowRules and IncomingRules are requantized to consecutive integers as part of the add.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode:
           callMeNowDefaultAction, use value \"Block\" in XS data mode
           callMeNowDefaultCallTimeout
           callMeNowRule
           applyToAttendedCallTransfers, use value \"false\" in XS data mode

    Attributes:

        service_provider_id (str):

        name (str):

        description (Optional[str]):

        originating_default_action (str):

        originating_default_treatment_id (Optional[str]):

        originating_default_transfer_number (Optional[str]):

        originating_default_call_timeout (Optional[int]):

        originating_rule (Optional[List[ServiceProviderCommunicationBarringHierarchicalOriginatingRule]]):

        redirecting_default_action (str):

        redirecting_default_call_timeout (Optional[int]):

        redirecting_rule (Optional[List[ServiceProviderCommunicationBarringHierarchicalRedirectingRule]]):

        call_me_now_default_action (str):

        call_me_now_default_call_timeout (Optional[int]):

        call_me_now_rule (Optional[List[ServiceProviderCommunicationBarringHierarchicalCallMeNowRule]]):

        incoming_default_action (str):

        incoming_default_call_timeout (Optional[int]):

        incoming_rule (Optional[List[CommunicationBarringIncomingRule19sp1]]):

        become_default (bool):

        apply_to_attended_call_transfers (bool):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    originating_default_action: str = field(
        metadata={"alias": "originatingDefaultAction"}
    )

    originating_default_treatment_id: Optional[str] = field(
        default=None, metadata={"alias": "originatingDefaultTreatmentId"}
    )

    originating_default_transfer_number: Optional[str] = field(
        default=None, metadata={"alias": "originatingDefaultTransferNumber"}
    )

    originating_default_call_timeout: Optional[int] = field(
        default=None, metadata={"alias": "originatingDefaultCallTimeout"}
    )

    originating_rule: Optional[
        List[ServiceProviderCommunicationBarringHierarchicalOriginatingRule]
    ] = field(default=None, metadata={"alias": "originatingRule"})

    redirecting_default_action: str = field(
        metadata={"alias": "redirectingDefaultAction"}
    )

    redirecting_default_call_timeout: Optional[int] = field(
        default=None, metadata={"alias": "redirectingDefaultCallTimeout"}
    )

    redirecting_rule: Optional[
        List[ServiceProviderCommunicationBarringHierarchicalRedirectingRule]
    ] = field(default=None, metadata={"alias": "redirectingRule"})

    call_me_now_default_action: str = field(
        metadata={"alias": "callMeNowDefaultAction"}
    )

    call_me_now_default_call_timeout: Optional[int] = field(
        default=None, metadata={"alias": "callMeNowDefaultCallTimeout"}
    )

    call_me_now_rule: Optional[
        List[ServiceProviderCommunicationBarringHierarchicalCallMeNowRule]
    ] = field(default=None, metadata={"alias": "callMeNowRule"})

    incoming_default_action: str = field(metadata={"alias": "incomingDefaultAction"})

    incoming_default_call_timeout: Optional[int] = field(
        default=None, metadata={"alias": "incomingDefaultCallTimeout"}
    )

    incoming_rule: Optional[List[CommunicationBarringIncomingRule19sp1]] = field(
        default=None, metadata={"alias": "incomingRule"}
    )

    become_default: bool = field(metadata={"alias": "becomeDefault"})

    apply_to_attended_call_transfers: bool = field(
        metadata={"alias": "applyToAttendedCallTransfers"}
    )


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringProfileDeleteRequest(OCIRequest):
    """Deletes an existing Communication Barring Profile.  Optionally, a new default profile can be chosen if the current default profile is being deleted.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

        default_profile (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})

    default_profile: Optional[str] = field(
        default=None, metadata={"alias": "defaultProfile"}
    )


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringProfileGetAssignedGroupListRequest(OCIRequest):
    """Get a list of groups within a service provider that have a given
        Communication Barring Profile assigned.
        The response is either a ServiceProviderCommunicationBarringProfileGetAssignedGroupListResponse
        or an ErorResponse.

    Attributes:

        service_provider_id (str):

        profile (str):

        response_size_limit (Optional[int]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_group_name (Optional[List[SearchCriteriaGroupName]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    profile: str = field(metadata={"alias": "profile"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_group_name: Optional[List[SearchCriteriaGroupName]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupName"}
    )


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringProfileGetCriteriaUsageListRequest(OCIRequest):
    """Get a list of Communication Barring profiles within a service provider that have a given Communication Barring Criteria assigned.
        The response is either a ServiceProviderCommunicationBarring ProfileGetCriteriaUsageListResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        criteria_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringProfileGetDigitPatternCriteriaUsageListRequest(
    OCIRequest
):
    """Get the list of Profiles that use a specific Digit Pattern Criteria.
        The response is either a ServiceProviderCommunicationBarringProfileGetDigitPatternCriteriaUsageListResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringProfileGetIncomingCriteriaUsageListRequest(
    OCIRequest
):
    """Get a list of Communication Barring profiles within a service provider that have a given Communication Barring Incoming Criteria assigned.
        The response is either a ServiceProviderCommunicationBarring ProfileGetIncomingCriteriaUsageListResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        criteria_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringProfileGetListRequest(OCIRequest):
    """Get the list of all Communication Barring Profiles.
        The response is either a
        ServiceProviderCommunicationBarringProfileGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringProfileGetRequest19sp1V2(OCIRequest):
    """Get an existing Communication Barring Profile.
        The response is either a ServiceProviderCommunicationBarringProfileGetResponse19sp1V2
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringProfileModifyDefaultRequest(OCIRequest):
    """Modifies the default Communication Barring Profile of a Service Provider.  If a default has been previously selected, this command will swap the default profile with the profile provided.  Selecting a nil profile will cause the service provider to not have a default Communicaton Barring Profile.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (Nillable[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: Nillable[str] = field(metadata={"alias": "name"})

    def __post_init__(self):
        nillable_fields = ["name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringProfileModifyRequest(OCIRequest):
    """Modify an existing Communication Barring Profile.
        The priorities for OriginatingRules, RedirectingRules, CallMeNowRules and IncomingRules are requantized to consecutive integers as part of the modify.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode:
           callMeNowDefaultAction
           callMeNowDefaultCallTimeout
           callMeNowRule
           applyToAttendedCallTransfers

    Attributes:

        service_provider_id (str):

        name (str):

        new_name (Optional[str]):

        description (Optional[Nillable[str]]):

        originating_default_action (Optional[str]):

        originating_default_treatment_id (Optional[Nillable[str]]):

        originating_default_transfer_number (Optional[Nillable[str]]):

        originating_default_call_timeout (Optional[Nillable[int]]):

        originating_rule (Optional[Nillable[ServiceProviderReplacementCommunicationBarringHierarchicalOriginatingRuleList]]):

        redirecting_default_action (Optional[str]):

        redirecting_default_call_timeout (Optional[Nillable[int]]):

        redirecting_rule (Optional[Nillable[ServiceProviderReplacementCommunicationBarringHierarchicalRedirectingRuleList]]):

        call_me_now_default_action (Optional[str]):

        call_me_now_default_call_timeout (Optional[Nillable[int]]):

        call_me_now_rule (Optional[Nillable[ServiceProviderReplacementCommunicationBarringHierarchicalCallMeNowRuleList]]):

        incoming_default_action (Optional[str]):

        incoming_default_call_timeout (Optional[Nillable[int]]):

        incoming_rule (Optional[Nillable[ReplacementCommunicationBarringIncomingRuleList19sp1]]):

        become_default (Optional[bool]):

        apply_to_attended_call_transfers (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    originating_default_action: Optional[str] = field(
        default=None, metadata={"alias": "originatingDefaultAction"}
    )

    originating_default_treatment_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "originatingDefaultTreatmentId"}
    )

    originating_default_transfer_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "originatingDefaultTransferNumber"}
    )

    originating_default_call_timeout: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "originatingDefaultCallTimeout"}
    )

    originating_rule: Optional[
        Nillable[
            ServiceProviderReplacementCommunicationBarringHierarchicalOriginatingRuleList
        ]
    ] = field(default=None, metadata={"alias": "originatingRule"})

    redirecting_default_action: Optional[str] = field(
        default=None, metadata={"alias": "redirectingDefaultAction"}
    )

    redirecting_default_call_timeout: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "redirectingDefaultCallTimeout"}
    )

    redirecting_rule: Optional[
        Nillable[
            ServiceProviderReplacementCommunicationBarringHierarchicalRedirectingRuleList
        ]
    ] = field(default=None, metadata={"alias": "redirectingRule"})

    call_me_now_default_action: Optional[str] = field(
        default=None, metadata={"alias": "callMeNowDefaultAction"}
    )

    call_me_now_default_call_timeout: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "callMeNowDefaultCallTimeout"}
    )

    call_me_now_rule: Optional[
        Nillable[
            ServiceProviderReplacementCommunicationBarringHierarchicalCallMeNowRuleList
        ]
    ] = field(default=None, metadata={"alias": "callMeNowRule"})

    incoming_default_action: Optional[str] = field(
        default=None, metadata={"alias": "incomingDefaultAction"}
    )

    incoming_default_call_timeout: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "incomingDefaultCallTimeout"}
    )

    incoming_rule: Optional[
        Nillable[ReplacementCommunicationBarringIncomingRuleList19sp1]
    ] = field(default=None, metadata={"alias": "incomingRule"})

    become_default: Optional[bool] = field(
        default=None, metadata={"alias": "becomeDefault"}
    )

    apply_to_attended_call_transfers: Optional[bool] = field(
        default=None, metadata={"alias": "applyToAttendedCallTransfers"}
    )

    def __post_init__(self):
        nillable_fields = [
            "description",
            "originating_default_treatment_id",
            "originating_default_transfer_number",
            "originating_default_call_timeout",
            "originating_rule",
            "redirecting_default_call_timeout",
            "redirecting_rule",
            "call_me_now_default_call_timeout",
            "call_me_now_rule",
            "incoming_default_call_timeout",
            "incoming_rule",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderConsolidatedAddRequest(OCIRequest):
    """Add a service provider or enterprise.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
          serviceProviderExtenalId
          provisioningSliceId

        The following elements are ignored in AS and XS data mode:
        servicePolicy,
        callProcessingSliceId,
        subscriberPartition.

        Only Provisioning admin and above can change the preferredDataCenter and provisioningSliceId.

        The following data elements are only used in AS data mode:
          resellerId
          resellerName

        The following elements are optional for the service provider. If the elements are included,
        they will be either added, authorized, or modified on the service provider. Should any of the
        following elements be rejected to due existing system settings, the service provider will not
        be added and the response will be an ErrorResponse:
          domain
          admin
          groupServiceAuthorization
          userServiceAuthorization
          servicePack
          phoneNumber
          dnRange
          routingProfile
          meetMeConferencingAllocatedPorts
          trunkGroupMaxActiveCalls
          trunkGroupBurstingMaxActiveCalls
          voiceMessagingGroupSettings
          voiceMessagingVoicePortalScope

        When a group or user service is included that is not activated or is not licensed,
        the response will be an ErrorResponse.

    Attributes:

        is_enterprise (Optional[bool]):

        use_custom_routing_profile (Optional[bool]):

        service_provider_id (Optional[str]):

        service_provider_external_id (Optional[str]):

        default_domain (str):

        service_provider_name (Optional[str]):

        support_email (Optional[str]):

        contact (Optional[Contact]):

        address (Optional[StreetAddress]):

        service_policy (Optional[str]):

        call_processing_slice_id (Optional[str]):

        provisioning_slice_id (Optional[str]):

        subscriber_partition (Optional[str]):

        preferred_data_center (Optional[str]):

        reseller_id (Optional[str]):

        reseller_name (Optional[str]):

        domain (Optional[List[str]]):

        admin (Optional[List[ServiceProviderAdmin]]):

        group_service_authorization (Optional[List[GroupServiceAuthorization]]):

        user_service_authorization (Optional[List[UserServiceAuthorization]]):

        service_pack (Optional[List[ServicePack]]):

        phone_number (Optional[List[str]]):

        dn_range (Optional[List[DNRange]]):

        routing_profile (Optional[Nillable[str]]):

        meet_me_conferencing_allocated_ports (Optional[MeetMeConferencingConferencePorts]):

        trunk_group_max_active_calls (Optional[UnboundedNonNegativeInt]):

        trunk_group_bursting_max_active_calls (Optional[UnboundedNonNegativeInt]):

        voice_messaging_group_settings (Optional[ServiceProviderVoiceMessagingGroupSettingsAdd]):

        voice_messaging_group_voice_portal_scope (Optional[str]):

    """

    is_enterprise: Optional[bool] = field(
        default=None, metadata={"alias": "isEnterprise"}
    )

    use_custom_routing_profile: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomRoutingProfile"}
    )

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    service_provider_external_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderExternalId"}
    )

    default_domain: str = field(metadata={"alias": "defaultDomain"})

    service_provider_name: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderName"}
    )

    support_email: Optional[str] = field(
        default=None, metadata={"alias": "supportEmail"}
    )

    contact: Optional[Contact] = field(default=None, metadata={"alias": "contact"})

    address: Optional[StreetAddress] = field(
        default=None, metadata={"alias": "address"}
    )

    service_policy: Optional[str] = field(
        default=None, metadata={"alias": "servicePolicy"}
    )

    call_processing_slice_id: Optional[str] = field(
        default=None, metadata={"alias": "callProcessingSliceId"}
    )

    provisioning_slice_id: Optional[str] = field(
        default=None, metadata={"alias": "provisioningSliceId"}
    )

    subscriber_partition: Optional[str] = field(
        default=None, metadata={"alias": "subscriberPartition"}
    )

    preferred_data_center: Optional[str] = field(
        default=None, metadata={"alias": "preferredDataCenter"}
    )

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    reseller_name: Optional[str] = field(
        default=None, metadata={"alias": "resellerName"}
    )

    domain: Optional[List[str]] = field(default=None, metadata={"alias": "domain"})

    admin: Optional[List[ServiceProviderAdmin]] = field(
        default=None, metadata={"alias": "admin"}
    )

    group_service_authorization: Optional[List[GroupServiceAuthorization]] = field(
        default=None, metadata={"alias": "groupServiceAuthorization"}
    )

    user_service_authorization: Optional[List[UserServiceAuthorization]] = field(
        default=None, metadata={"alias": "userServiceAuthorization"}
    )

    service_pack: Optional[List[ServicePack]] = field(
        default=None, metadata={"alias": "servicePack"}
    )

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    dn_range: Optional[List[DNRange]] = field(
        default=None, metadata={"alias": "dnRange"}
    )

    routing_profile: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "routingProfile"}
    )

    meet_me_conferencing_allocated_ports: Optional[
        MeetMeConferencingConferencePorts
    ] = field(default=None, metadata={"alias": "meetMeConferencingAllocatedPorts"})

    trunk_group_max_active_calls: Optional[UnboundedNonNegativeInt] = field(
        default=None, metadata={"alias": "trunkGroupMaxActiveCalls"}
    )

    trunk_group_bursting_max_active_calls: Optional[UnboundedNonNegativeInt] = field(
        default=None, metadata={"alias": "trunkGroupBurstingMaxActiveCalls"}
    )

    voice_messaging_group_settings: Optional[
        ServiceProviderVoiceMessagingGroupSettingsAdd
    ] = field(default=None, metadata={"alias": "voiceMessagingGroupSettings"})

    voice_messaging_group_voice_portal_scope: Optional[str] = field(
        default=None, metadata={"alias": "voiceMessagingGroupVoicePortalScope"}
    )

    def __post_init__(self):
        nillable_fields = ["routing_profile"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderDeleteRequest(OCIRequest):
    """Delete a service provider or enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderDeviceActivationPolicyGetRequest(OCIRequest):
    """Request the Device Activation policy of a service provider or an enterprise.
        The response is either a ServiceProviderDeviceActivationPolicyGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderDeviceActivationPolicyModifyRequest(OCIRequest):
    """Modify the Device Activation policy of a service provider or an enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        use_service_provider_settings (Optional[bool]):

        allow_activation_code_request_by_user (Optional[bool]):

        send_activation_code_in_email (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    use_service_provider_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useServiceProviderSettings"}
    )

    allow_activation_code_request_by_user: Optional[bool] = field(
        default=None, metadata={"alias": "allowActivationCodeRequestByUser"}
    )

    send_activation_code_in_email: Optional[bool] = field(
        default=None, metadata={"alias": "sendActivationCodeInEmail"}
    )


@dataclass(kw_only=True)
class ServiceProviderDeviceManagementEventGetListRequest22(OCIRequest):
    """Request device management's events for a specific queue.
        It is possible to restrict the number of rows returned using
        responseSizeLimit.
        If eventQueueType is not specified, the events from all the
        event queues are returned.
        The response is either a ServiceProviderDeviceManagementEventGetListResponse22 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        event_queue_type (Optional[str]):

        response_size_limit (Optional[int]):

        search_criteria_exact_device_management_event_status_in_progress_or_pending (Optional[SearchCriteriaExactDeviceManagementEventStatusInProgressOrPending]):

        search_criteria_exact_device_management_event_status_completed (Optional[SearchCriteriaExactDeviceManagementEventStatusCompleted]):

        search_criteria_exact_device_management_event_action (Optional[SearchCriteriaExactDeviceManagementEventAction]):

        search_criteria_exact_device_management_event_level (Optional[SearchCriteriaExactDeviceManagementEventLevel]):

        search_criteria_exact_device_management_event_type (Optional[SearchCriteriaExactDeviceManagementEventType]):

        search_criteria_device_management_event_additional_info (Optional[List[SearchCriteriaDeviceManagementEventAdditionalInfo]]):

        search_criteria_device_management_event_login_id (Optional[List[SearchCriteriaDeviceManagementEventLoginId]]):

        search_criteria_device_management_event_request (Optional[List[SearchCriteriaDeviceManagementEventRequest]]):

        search_criteria_device_management_event_request_tracking_id (Optional[List[SearchCriteriaDeviceManagementEventRequestTrackingId]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    event_queue_type: Optional[str] = field(
        default=None, metadata={"alias": "eventQueueType"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_exact_device_management_event_status_in_progress_or_pending: Optional[
        SearchCriteriaExactDeviceManagementEventStatusInProgressOrPending
    ] = field(
        default=None,
        metadata={
            "alias": "searchCriteriaExactDeviceManagementEventStatusInProgressOrPending"
        },
    )

    search_criteria_exact_device_management_event_status_completed: Optional[
        SearchCriteriaExactDeviceManagementEventStatusCompleted
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaExactDeviceManagementEventStatusCompleted"},
    )

    search_criteria_exact_device_management_event_action: Optional[
        SearchCriteriaExactDeviceManagementEventAction
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaExactDeviceManagementEventAction"},
    )

    search_criteria_exact_device_management_event_level: Optional[
        SearchCriteriaExactDeviceManagementEventLevel
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaExactDeviceManagementEventLevel"},
    )

    search_criteria_exact_device_management_event_type: Optional[
        SearchCriteriaExactDeviceManagementEventType
    ] = field(
        default=None, metadata={"alias": "searchCriteriaExactDeviceManagementEventType"}
    )

    search_criteria_device_management_event_additional_info: Optional[
        List[SearchCriteriaDeviceManagementEventAdditionalInfo]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaDeviceManagementEventAdditionalInfo"},
    )

    search_criteria_device_management_event_login_id: Optional[
        List[SearchCriteriaDeviceManagementEventLoginId]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceManagementEventLoginId"}
    )

    search_criteria_device_management_event_request: Optional[
        List[SearchCriteriaDeviceManagementEventRequest]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceManagementEventRequest"}
    )

    search_criteria_device_management_event_request_tracking_id: Optional[
        List[SearchCriteriaDeviceManagementEventRequestTrackingId]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaDeviceManagementEventRequestTrackingId"},
    )


@dataclass(kw_only=True)
class ServiceProviderDeviceManagementGetAccessDeviceCountForDeviceTypeServiceProviderRequest(
    OCIRequest
):
    """Request the number of access device of a particular device type and service provider.
        If countOnlyResetSupportedDevice is true, count only access devices if the device type supports reset.
        By default unmanaged device types are not allowed and devices are counted only if their device type supports Device Management.
        An error is returned if deviceType is specified but does not support device management.
        When allowUnmanagedDeviceType is true, unmanaged device type will be counted and a successful response is returned.
        The response is either ServiceProviderDeviceManagementGetAccessDeviceCountForDeviceTypeServiceProviderResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_type (str):

        count_only_reset_supported_device (Optional[bool]):

        allow_unmanaged_device_type (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_type: str = field(metadata={"alias": "deviceType"})

    count_only_reset_supported_device: Optional[bool] = field(
        default=None, metadata={"alias": "countOnlyResetSupportedDevice"}
    )

    allow_unmanaged_device_type: Optional[bool] = field(
        default=None, metadata={"alias": "allowUnmanagedDeviceType"}
    )


@dataclass(kw_only=True)
class ServiceProviderDeviceManagementInProgressAndPendingEventCancelRequest(OCIRequest):
    """Cancel pending and in progress events.  A list of individual events can
        be canceled.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        event_id (List[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    event_id: List[int] = field(metadata={"alias": "eventId"})


@dataclass(kw_only=True)
class ServiceProviderDeviceProfileAuthenticationPasswordRulesGetRequestRI(OCIRequest):
    """Request to get the service provider level device profile authentication password rule settings.
        The response is either a ServiceProviderDeviceProfileAuthenticationPasswordRulesGetResponseRI or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderDeviceProfileAuthenticationPasswordRulesModifyRequest(OCIRequest):
    """Request to modify the service provider level device profile authentication password rule settings. The useServiceProviderSettings element can only be modified by a system administrator or a provisioning administrator.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        use_service_provider_settings (Optional[bool]):

        disallow_authentication_name (Optional[bool]):

        disallow_old_password (Optional[bool]):

        disallow_reversed_old_password (Optional[bool]):

        restrict_min_digits (Optional[bool]):

        min_digits (Optional[int]):

        restrict_min_upper_case_letters (Optional[bool]):

        min_upper_case_letters (Optional[int]):

        restrict_min_lower_case_letters (Optional[bool]):

        min_lower_case_letters (Optional[int]):

        restrict_min_non_alphanumeric_characters (Optional[bool]):

        min_non_alphanumeric_characters (Optional[int]):

        min_length (Optional[int]):

        send_permanent_lockout_notification (Optional[bool]):

        permanent_lockout_notify_email_address (Optional[Nillable[str]]):

        device_profile_authentication_lockout_type (Optional[str]):

        device_profile_temporary_lockout_threshold (Optional[int]):

        device_profile_wait_algorithm (Optional[str]):

        device_profile_lockout_fixed_minutes (Optional[str]):

        device_profile_permanent_lockout_threshold (Optional[int]):

        use_password_validation_service (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    use_service_provider_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useServiceProviderSettings"}
    )

    disallow_authentication_name: Optional[bool] = field(
        default=None, metadata={"alias": "disallowAuthenticationName"}
    )

    disallow_old_password: Optional[bool] = field(
        default=None, metadata={"alias": "disallowOldPassword"}
    )

    disallow_reversed_old_password: Optional[bool] = field(
        default=None, metadata={"alias": "disallowReversedOldPassword"}
    )

    restrict_min_digits: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinDigits"}
    )

    min_digits: Optional[int] = field(default=None, metadata={"alias": "minDigits"})

    restrict_min_upper_case_letters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinUpperCaseLetters"}
    )

    min_upper_case_letters: Optional[int] = field(
        default=None, metadata={"alias": "minUpperCaseLetters"}
    )

    restrict_min_lower_case_letters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinLowerCaseLetters"}
    )

    min_lower_case_letters: Optional[int] = field(
        default=None, metadata={"alias": "minLowerCaseLetters"}
    )

    restrict_min_non_alphanumeric_characters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinNonAlphanumericCharacters"}
    )

    min_non_alphanumeric_characters: Optional[int] = field(
        default=None, metadata={"alias": "minNonAlphanumericCharacters"}
    )

    min_length: Optional[int] = field(default=None, metadata={"alias": "minLength"})

    send_permanent_lockout_notification: Optional[bool] = field(
        default=None, metadata={"alias": "sendPermanentLockoutNotification"}
    )

    permanent_lockout_notify_email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "permanentLockoutNotifyEmailAddress"}
    )

    device_profile_authentication_lockout_type: Optional[str] = field(
        default=None, metadata={"alias": "deviceProfileAuthenticationLockoutType"}
    )

    device_profile_temporary_lockout_threshold: Optional[int] = field(
        default=None, metadata={"alias": "deviceProfileTemporaryLockoutThreshold"}
    )

    device_profile_wait_algorithm: Optional[str] = field(
        default=None, metadata={"alias": "deviceProfileWaitAlgorithm"}
    )

    device_profile_lockout_fixed_minutes: Optional[str] = field(
        default=None, metadata={"alias": "deviceProfileLockoutFixedMinutes"}
    )

    device_profile_permanent_lockout_threshold: Optional[int] = field(
        default=None, metadata={"alias": "deviceProfilePermanentLockoutThreshold"}
    )

    use_password_validation_service: Optional[bool] = field(
        default=None, metadata={"alias": "usePasswordValidationService"}
    )

    def __post_init__(self):
        nillable_fields = ["permanent_lockout_notify_email_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderDeviceTypeCustomTagAddRequest(OCIRequest):
    """Request to add a static configuration tag for an access device type used in a service provider.

        The following elements are only used in XS data mode:
          isTagValueEncrypted, use value \"false\" in AS data mode

        The following elements are only used in XS data mode and ignored in AS data mode:
          tagValueToEncrypt

        The tagValueToEncrypt element can only be used by a system administrator.

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_type (str):

        tag_name (str):

        is_tag_value_encrypted (Optional[bool]):

        tag_value (Optional[str]):

        tag_value_to_encrypt (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_type: str = field(metadata={"alias": "deviceType"})

    tag_name: str = field(metadata={"alias": "tagName"})

    is_tag_value_encrypted: Optional[bool] = field(
        default=None, metadata={"alias": "isTagValueEncrypted"}
    )

    tag_value: Optional[str] = field(default=None, metadata={"alias": "tagValue"})

    tag_value_to_encrypt: Optional[str] = field(
        default=None, metadata={"alias": "tagValueToEncrypt"}
    )


@dataclass(kw_only=True)
class ServiceProviderDeviceTypeCustomTagDeleteListRequest(OCIRequest):
    """Request to delete static configuration tags for an access device type used in a service provider.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_type (str):

        tag_name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_type: str = field(metadata={"alias": "deviceType"})

    tag_name: List[str] = field(metadata={"alias": "tagName"})


@dataclass(kw_only=True)
class ServiceProviderDeviceTypeCustomTagGetListRequest(OCIRequest):
    """Request to get the list of custom configuration tags managed by the Device Management System, on a per-device type basis for a service provider.
        The response is either ServiceProviderDeviceTypeCustomTagGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_type (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class ServiceProviderDeviceTypeCustomTagModifyRequest(OCIRequest):
    """Request to modify a static configuration tag for an access device type used in a service provider.

        The tagValueToEncrypt element can only be used by a system administrator.

        The following elements are only used in XS data mode and ignored in AS data mode:
          tagValueToEncrypt

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_type (str):

        tag_name (str):

        tag_value (Optional[Nillable[str]]):

        tag_value_to_encrypt (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_type: str = field(metadata={"alias": "deviceType"})

    tag_name: str = field(metadata={"alias": "tagName"})

    tag_value: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "tagValue"}
    )

    tag_value_to_encrypt: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "tagValueToEncrypt"}
    )

    def __post_init__(self):
        nillable_fields = ["tag_value", "tag_value_to_encrypt"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderDeviceTypeFileGetListRequest(OCIRequest):
    """Request to get the list of device type files managed by the Device Management System, on a per-service provider basis.
        The response is either ServiceProviderDeviceTypeFileGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_type (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class ServiceProviderDeviceTypeFileGetRequest(OCIRequest):
    """Request to get a service provider device type file.
        The response is either ServiceProviderDeviceTypeFileGetResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_type (str):

        file_format (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_type: str = field(metadata={"alias": "deviceType"})

    file_format: str = field(metadata={"alias": "fileFormat"})


@dataclass(kw_only=True)
class ServiceProviderDeviceTypeFileModifyRequest(OCIRequest):
    """Request to modify a specified device type file for a service provider.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_type (str):

        file_format (str):

        file_source (Optional[str]):

        upload_file (Optional[FileResource]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_type: str = field(metadata={"alias": "deviceType"})

    file_format: str = field(metadata={"alias": "fileFormat"})

    file_source: Optional[str] = field(default=None, metadata={"alias": "fileSource"})

    upload_file: Optional[FileResource] = field(
        default=None, metadata={"alias": "uploadFile"}
    )


@dataclass(kw_only=True)
class ServiceProviderDeviceTypeTagSetGetRequest(OCIRequest):
    """Request to get the custom configuration tag set defined for the service provider and device type.
        The response is either ServiceProviderDeviceTypeTagSetGetResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_type (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class ServiceProviderDeviceTypeTagSetModifyRequest(OCIRequest):
    """Request to modify a static configuration tag set.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_type (str):

        tag_set_name (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_type: str = field(metadata={"alias": "deviceType"})

    tag_set_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "tagSetName"}
    )

    def __post_init__(self):
        nillable_fields = ["tag_set_name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderDialPlanPolicyAddAccessCodeRequest(OCIRequest):
    """Request to add a Service Provider level Dial Plan Access Code and its all attribues.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        access_code (str):

        include_code_for_network_translations_and_routing (bool):

        include_code_for_screening_services (bool):

        enable_secondary_dial_tone (bool):

        description (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    access_code: str = field(metadata={"alias": "accessCode"})

    include_code_for_network_translations_and_routing: bool = field(
        metadata={"alias": "includeCodeForNetworkTranslationsAndRouting"}
    )

    include_code_for_screening_services: bool = field(
        metadata={"alias": "includeCodeForScreeningServices"}
    )

    enable_secondary_dial_tone: bool = field(
        metadata={"alias": "enableSecondaryDialTone"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class ServiceProviderDialPlanPolicyDeleteAccessCodeRequest(OCIRequest):
    """Request to delete a Service Provider level Dial Plan Access Code and its all attribues.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        access_code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    access_code: str = field(metadata={"alias": "accessCode"})


@dataclass(kw_only=True)
class ServiceProviderDialPlanPolicyGetAccessCodeListRequest(OCIRequest):
    """Request the Service Provider level data associated with Dial Plan Policy.
        The response is either a ServiceProviderDialPlanPolicyGetAccessCodeListResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderDialPlanPolicyGetAccessCodeRequest(OCIRequest):
    """Request access code data associated with Service Provider level Dial Plan Policy access codes.
        The response is either a ServiceProviderDialPlanPolicyGetAccessCodeResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        access_code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    access_code: str = field(metadata={"alias": "accessCode"})


@dataclass(kw_only=True)
class ServiceProviderDialPlanPolicyGetRequest22(OCIRequest):
    """Request the Service Provider level data associated with Dial Plan Policy.
        The response is either a ServiceProviderDialPlanPolicyGetResponse22
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderDialPlanPolicyModifyAccessCodeRequest(OCIRequest):
    """Request to modify a Service Provider level Dial Plan Access Code and its attribues.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        access_code (str):

        include_code_for_network_translations_and_routing (Optional[bool]):

        include_code_for_screening_services (Optional[bool]):

        enable_secondary_dial_tone (Optional[bool]):

        description (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    access_code: str = field(metadata={"alias": "accessCode"})

    include_code_for_network_translations_and_routing: Optional[bool] = field(
        default=None, metadata={"alias": "includeCodeForNetworkTranslationsAndRouting"}
    )

    include_code_for_screening_services: Optional[bool] = field(
        default=None, metadata={"alias": "includeCodeForScreeningServices"}
    )

    enable_secondary_dial_tone: Optional[bool] = field(
        default=None, metadata={"alias": "enableSecondaryDialTone"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderDialPlanPolicyModifyRequest(OCIRequest):
    """Modify the Service Provider level data associated with Dial Plan Policy.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
          overrideResolvedDeviceDigitMap
          deviceDigitMap

    Attributes:

        service_provider_id (str):

        requires_access_code_for_public_calls (Optional[bool]):

        allow_e164_public_calls (Optional[bool]):

        prefer_e164_number_format_for_callback_services (Optional[bool]):

        public_digit_map (Optional[Nillable[str]]):

        private_digit_map (Optional[Nillable[str]]):

        override_resolved_device_digit_map (Optional[bool]):

        device_digit_map (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    requires_access_code_for_public_calls: Optional[bool] = field(
        default=None, metadata={"alias": "requiresAccessCodeForPublicCalls"}
    )

    allow_e164_public_calls: Optional[bool] = field(
        default=None, metadata={"alias": "allowE164PublicCalls"}
    )

    prefer_e164_number_format_for_callback_services: Optional[bool] = field(
        default=None, metadata={"alias": "preferE164NumberFormatForCallbackServices"}
    )

    public_digit_map: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "publicDigitMap"}
    )

    private_digit_map: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "privateDigitMap"}
    )

    override_resolved_device_digit_map: Optional[bool] = field(
        default=None, metadata={"alias": "overrideResolvedDeviceDigitMap"}
    )

    device_digit_map: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceDigitMap"}
    )

    def __post_init__(self):
        nillable_fields = ["public_digit_map", "private_digit_map", "device_digit_map"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderDialableCallerIDCriteriaAddRequest(OCIRequest):
    """Add a new Dialable Caller ID Criteria. Criteria are added at the bottom of the list with the lowest priority. The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

        description (Optional[str]):

        prefix_digits (Optional[str]):

        match_call_type (Optional[List[str]]):

        match_alternate_call_indicator (Optional[List[str]]):

        match_local_category (bool):

        match_national_category (bool):

        match_interlata_category (bool):

        match_intralata_category (bool):

        match_international_category (bool):

        match_private_category (bool):

        match_emergency_category (bool):

        match_other_category (bool):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    prefix_digits: Optional[str] = field(
        default=None, metadata={"alias": "prefixDigits"}
    )

    match_call_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchCallType"}
    )

    match_alternate_call_indicator: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchAlternateCallIndicator"}
    )

    match_local_category: bool = field(metadata={"alias": "matchLocalCategory"})

    match_national_category: bool = field(metadata={"alias": "matchNationalCategory"})

    match_interlata_category: bool = field(metadata={"alias": "matchInterlataCategory"})

    match_intralata_category: bool = field(metadata={"alias": "matchIntralataCategory"})

    match_international_category: bool = field(
        metadata={"alias": "matchInternationalCategory"}
    )

    match_private_category: bool = field(metadata={"alias": "matchPrivateCategory"})

    match_emergency_category: bool = field(metadata={"alias": "matchEmergencyCategory"})

    match_other_category: bool = field(metadata={"alias": "matchOtherCategory"})


@dataclass(kw_only=True)
class ServiceProviderDialableCallerIDCriteriaDeleteRequest(OCIRequest):
    """Delete a Dialable Caller ID Criteria.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class ServiceProviderDialableCallerIDCriteriaGetRequest(OCIRequest):
    """Get an existing Dialable Caller ID Criteria.
        The response is either a
        ServiceProviderDialableCallerIDCriteriaGetRequest or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class ServiceProviderDialableCallerIDCriteriaModifyRequest(OCIRequest):
    """Modify a Dialable Caller ID Criteria.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (str):

        new_name (Optional[str]):

        description (Optional[Nillable[str]]):

        prefix_digits (Optional[Nillable[str]]):

        match_call_type (Optional[Nillable[ReplacementCommunicationBarringCallTypeList]]):

        match_alternate_call_indicator (Optional[Nillable[ReplacementCommunicationBarringAlternateCallIndicatorList]]):

        match_local_category (Optional[bool]):

        match_national_category (Optional[bool]):

        match_interlata_category (Optional[bool]):

        match_intralata_category (Optional[bool]):

        match_international_category (Optional[bool]):

        match_private_category (Optional[bool]):

        match_emergency_category (Optional[bool]):

        match_other_category (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    prefix_digits: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "prefixDigits"}
    )

    match_call_type: Optional[Nillable[ReplacementCommunicationBarringCallTypeList]] = (
        field(default=None, metadata={"alias": "matchCallType"})
    )

    match_alternate_call_indicator: Optional[
        Nillable[ReplacementCommunicationBarringAlternateCallIndicatorList]
    ] = field(default=None, metadata={"alias": "matchAlternateCallIndicator"})

    match_local_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchLocalCategory"}
    )

    match_national_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchNationalCategory"}
    )

    match_interlata_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchInterlataCategory"}
    )

    match_intralata_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchIntralataCategory"}
    )

    match_international_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchInternationalCategory"}
    )

    match_private_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchPrivateCategory"}
    )

    match_emergency_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchEmergencyCategory"}
    )

    match_other_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchOtherCategory"}
    )

    def __post_init__(self):
        nillable_fields = [
            "description",
            "prefix_digits",
            "match_call_type",
            "match_alternate_call_indicator",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderDialableCallerIDGetRequest(OCIRequest):
    """Get the service provider?s Dialable Caller ID settings and criteria list.
        The response is either a
        ServiceProviderDialableCallerIDGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderDialableCallerIDModifyRequest(OCIRequest):
    """Modify the service provider?s Dialable Caller ID settings and criteria list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        use_service_provider_criteria (Optional[bool]):

        ns_screening_failure_policy (Optional[str]):

        criteria_priority_order (Optional[List[DialableCallerIDCriteriaPriorityOrder]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    use_service_provider_criteria: Optional[bool] = field(
        default=None, metadata={"alias": "useServiceProviderCriteria"}
    )

    ns_screening_failure_policy: Optional[str] = field(
        default=None, metadata={"alias": "nsScreeningFailurePolicy"}
    )

    criteria_priority_order: Optional[List[DialableCallerIDCriteriaPriorityOrder]] = (
        field(default=None, metadata={"alias": "criteriaPriorityOrder"})
    )


@dataclass(kw_only=True)
class ServiceProviderDigitCollectionGetRequest13mp4(OCIRequest):
    """Request the service provider's digit collection attributes.
        The response is either a ServiceProviderDigitCollectionGetResponse13mp4 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderDigitCollectionModifyRequest(OCIRequest):
    """Modifies the service provider's digit collection attributes.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        access_code (Optional[Nillable[str]]):

        public_digit_map (Optional[Nillable[str]]):

        private_digit_map (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    access_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "accessCode"}
    )

    public_digit_map: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "publicDigitMap"}
    )

    private_digit_map: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "privateDigitMap"}
    )

    def __post_init__(self):
        nillable_fields = ["access_code", "public_digit_map", "private_digit_map"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderDnAddListRequest(OCIRequest):
    """Adds DNs to a service provider. It is possible to add either: a single DN,
        or a list of DNs, or a range of DNs, or any combination thereof.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        phone_number (Optional[List[str]]):

        dn_range (Optional[List[DNRange]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    dn_range: Optional[List[DNRange]] = field(
        default=None, metadata={"alias": "dnRange"}
    )


@dataclass(kw_only=True)
class ServiceProviderDnDeleteListRequest(OCIRequest):
    """Deletes DNs from a service provider. It is possible to delete either: a single DN,
        or a list of DNs, or a range of DNs, or any combination thereof.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        phone_number (Optional[List[str]]):

        dn_range (Optional[List[DNRange]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    dn_range: Optional[List[DNRange]] = field(
        default=None, metadata={"alias": "dnRange"}
    )


@dataclass(kw_only=True)
class ServiceProviderDnGetAvailableListRequest(OCIRequest):
    """Request a list of available DNs not yet assigned to any group.
        Dns assigned to the IMRN pool are not listed in the response.
        The response is either ServiceProviderDnGetAvailableListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderDnGetStatusListRequest(OCIRequest):
    """Validates DNs given in the request
        The response is ServiceProviderDnGetStatusListResponse.

    Attributes:

        service_provider_id (str):

        dn (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    dn: List[str] = field(metadata={"alias": "dn"})


@dataclass(kw_only=True)
class ServiceProviderDnGetSummaryListRequest(OCIRequest):
    """Request a summary table of all DNs in a service provider.
        Dns assigned to the IMRN pool are not listed in the response.
        The search can be done using multiple criteria. Only results matching all the search criteria are included in the results.
        The response is either ServiceProviderDnGetSummaryListResponse or ErrorResponse.

        The following elements are only used in XS data mode and ignored in AS data mode:
          searchCriteriaDn, searchCriteriaGroupId

    Attributes:

        service_provider_id (str):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )


@dataclass(kw_only=True)
class ServiceProviderDomainAssignListRequest(OCIRequest):
    """Assign a list of domains to a service provider.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        domain (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    domain: List[str] = field(metadata={"alias": "domain"})


@dataclass(kw_only=True)
class ServiceProviderDomainGetAssignedGroupListRequest(OCIRequest):
    """Requests a list of groups within a service provider that have a given domain assigned.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        The response is either a ServiceProviderDomainGetAssignedGroupListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        domain (str):

        response_size_limit (Optional[int]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_group_name (Optional[List[SearchCriteriaGroupName]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    domain: str = field(metadata={"alias": "domain"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_group_name: Optional[List[SearchCriteriaGroupName]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupName"}
    )


@dataclass(kw_only=True)
class ServiceProviderDomainGetAssignedListRequest22(OCIRequest):
    """Requests the list of all matching domains assigned to a service provider .
        The response is either ServiceProviderDomainGetAssignedListResponse22 or ErrorResponse.

        The following elements are only used in AS data mode and will be ignored in XS data mode:
          responseSizeLimit
          searchCriteriaDomainName
          searchCriteriaExactDomainLevel

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_domain_name (Optional[List[SearchCriteriaDomainName]]):

        search_criteria_exact_domain_level (Optional[SearchCriteriaExactDomainLevel]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_domain_name: Optional[List[SearchCriteriaDomainName]] = field(
        default=None, metadata={"alias": "searchCriteriaDomainName"}
    )

    search_criteria_exact_domain_level: Optional[SearchCriteriaExactDomainLevel] = (
        field(default=None, metadata={"alias": "searchCriteriaExactDomainLevel"})
    )


@dataclass(kw_only=True)
class ServiceProviderDomainUnassignListRequest(OCIRequest):
    """Unassign a list of domains from a service provider.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        domain (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    domain: List[str] = field(metadata={"alias": "domain"})


@dataclass(kw_only=True)
class ServiceProviderEmergencyCallNotificationGetRequest(OCIRequest):
    """Request the service provider level data associated with Emergency Call Notification.
        The response is either a ServiceProviderEmergencyCallNotificationGetResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderEmergencyCallNotificationModifyRequest(OCIRequest):
    """Modify the service provider or enterprise level data associated with Emergency
        Call Notification.  The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        send_emergency_call_notification_email (Optional[bool]):

        emergency_call_notify_email_address (Optional[Nillable[str]]):

        allow_group_override (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    send_emergency_call_notification_email: Optional[bool] = field(
        default=None, metadata={"alias": "sendEmergencyCallNotificationEmail"}
    )

    emergency_call_notify_email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "emergencyCallNotifyEmailAddress"}
    )

    allow_group_override: Optional[bool] = field(
        default=None, metadata={"alias": "allowGroupOverride"}
    )

    def __post_init__(self):
        nillable_fields = ["emergency_call_notify_email_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderEndpointGetListRequest(OCIRequest):
    """Request to search endpoints in the service provider/enterprise.
        The response is either ServiceProviderEndpointGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_line_port_user_part (Optional[List[SearchCriteriaLinePortUserPart]]):

        search_criteria_line_port_domain (Optional[List[SearchCriteriaLinePortDomain]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_device_type (Optional[List[SearchCriteriaDeviceType]]):

        search_criteria_device_name (Optional[List[SearchCriteriaDeviceName]]):

        search_criteria_device_mac_address (Optional[List[SearchCriteriaDeviceMACAddress]]):

        search_criteria_device_net_address (Optional[List[SearchCriteriaDeviceNetAddress]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_line_port_user_part: Optional[
        List[SearchCriteriaLinePortUserPart]
    ] = field(default=None, metadata={"alias": "searchCriteriaLinePortUserPart"})

    search_criteria_line_port_domain: Optional[List[SearchCriteriaLinePortDomain]] = (
        field(default=None, metadata={"alias": "searchCriteriaLinePortDomain"})
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_device_type: Optional[List[SearchCriteriaDeviceType]] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceType"}
    )

    search_criteria_device_name: Optional[List[SearchCriteriaDeviceName]] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceName"}
    )

    search_criteria_device_mac_address: Optional[
        List[SearchCriteriaDeviceMACAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceMACAddress"})

    search_criteria_device_net_address: Optional[
        List[SearchCriteriaDeviceNetAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceNetAddress"})

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})


@dataclass(kw_only=True)
class ServiceProviderEnhancedCallLogsGetRequest17sp4(OCIRequest):
    """Get the service provider's enhanced call log settings.
        The response is either a ServiceProviderEnhancedCallLogsGetResponse17sp4 or an ErrorResponse.
        This command will return an ErrorResponse if DBS is used as the call log server.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderEnhancedCallLogsModifyRequest(OCIRequest):
    """Modify the Service Provider level data associated with Enhanced Call Logs.
        Configures the maximum number of logged calls and maximum age of your user's call logs.
        Log entries are deleted when either of the two limits is reached.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        max_logged_calls (Optional[int]):

        call_expiration_days (Optional[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    max_logged_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxLoggedCalls"}
    )

    call_expiration_days: Optional[int] = field(
        default=None, metadata={"alias": "callExpirationDays"}
    )


@dataclass(kw_only=True)
class ServiceProviderEnhancedCallLogsSchemaInstanceGetRequest(OCIRequest):
    """Get the enhanced call log database schema instance associated with this
      service provider.
      The response is either a ServiceProviderEnhancedCallLogsSchemaInstanceGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderEnhancedCallLogsSchemaInstanceModifyRequest(OCIRequest):
    """Modify the Enhanced Call Logs schema instance associated with this Service Provider.
      The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        name (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    name: Optional[Nillable[str]] = field(default=None, metadata={"alias": "name"})

    def __post_init__(self):
        nillable_fields = ["name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderExtensionLengthGetRequest(OCIRequest):
    """Request the service provider's extension length.
        The response is either a ServiceProviderExtensionLengthGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderExtensionLengthModifyRequest(OCIRequest):
    """Modify the service provider's extension length range.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        default_extension_length (Optional[Nillable[int]]):

        location_routing_prefix_digit (Optional[Nillable[int]]):

        location_code_length (Optional[Nillable[int]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    default_extension_length: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "defaultExtensionLength"}
    )

    location_routing_prefix_digit: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "locationRoutingPrefixDigit"}
    )

    location_code_length: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "locationCodeLength"}
    )

    def __post_init__(self):
        nillable_fields = [
            "default_extension_length",
            "location_routing_prefix_digit",
            "location_code_length",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderExternalCustomRingbackGetRequest(OCIRequest):
    """Request the service provider level data associated with External Custom Ringback.
        The response is either a ServiceProviderExternalCustomRingbackGetResponse or an
        ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderExternalCustomRingbackModifyRequest(OCIRequest):
    """Modify the service provider level data associated with External Custom Ringback.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        prefix_digits (Optional[Nillable[str]]):

        server_net_address (Optional[Nillable[str]]):

        server_port (Optional[Nillable[int]]):

        timeout_seconds (Optional[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    prefix_digits: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "prefixDigits"}
    )

    server_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "serverNetAddress"}
    )

    server_port: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "serverPort"}
    )

    timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "timeoutSeconds"}
    )

    def __post_init__(self):
        nillable_fields = ["prefix_digits", "server_net_address", "server_port"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderFeatureAccessCodeGetListRequest21(OCIRequest):
    """Get the list of feature access codes for a service provider or enterprise.
        The response is either a ServiceProviderFeatureAccessCodeGetListResponse21
        or an ErrorResponse.

        In release 20 the \"Call Recording\" FAC name is changed to
        \"Call Recording - Start\".

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderFeatureAccessCodeModifyListRequest21(OCIRequest):
    """Modify a list of feature access codes for a service provider or enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

        In release 20 the \"Call Recording\" FAC name is changed to
        \"Call Recording - Start\".

    Attributes:

        service_provider_id (str):

        feature_access_code (Optional[List[FeatureAccessCodeModifyEntry]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    feature_access_code: Optional[List[FeatureAccessCodeModifyEntry]] = field(
        default=None, metadata={"alias": "featureAccessCode"}
    )


@dataclass(kw_only=True)
class ServiceProviderFileRepositoryDeviceUserAddRequest(OCIRequest):
    """Add a new service provider file repository user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        file_repository_name (str):

        user_name (str):

        password (str):

        allow_put (bool):

        allow_delete (bool):

        allow_get (bool):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    file_repository_name: str = field(metadata={"alias": "fileRepositoryName"})

    user_name: str = field(metadata={"alias": "userName"})

    password: str = field(metadata={"alias": "password"})

    allow_put: bool = field(metadata={"alias": "allowPut"})

    allow_delete: bool = field(metadata={"alias": "allowDelete"})

    allow_get: bool = field(metadata={"alias": "allowGet"})


@dataclass(kw_only=True)
class ServiceProviderFileRepositoryDeviceUserDeleteRequest(OCIRequest):
    """Delete a service provider file repository user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        file_repository_name (str):

        user_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    file_repository_name: str = field(metadata={"alias": "fileRepositoryName"})

    user_name: str = field(metadata={"alias": "userName"})


@dataclass(kw_only=True)
class ServiceProviderFileRepositoryDeviceUserGetListRequest(OCIRequest):
    """Request the list of service provider users for a file repository in the system.
        The response is either a ServiceProviderFileRepositoryDeviceUserGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        file_repository_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    file_repository_name: str = field(metadata={"alias": "fileRepositoryName"})


@dataclass(kw_only=True)
class ServiceProviderFileRepositoryDeviceUserModifyRequest(OCIRequest):
    """Modify a service provider file repository user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        file_repository_name (str):

        user_name (str):

        password (Optional[str]):

        allow_put (Optional[bool]):

        allow_delete (Optional[bool]):

        allow_get (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    file_repository_name: str = field(metadata={"alias": "fileRepositoryName"})

    user_name: str = field(metadata={"alias": "userName"})

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    allow_put: Optional[bool] = field(default=None, metadata={"alias": "allowPut"})

    allow_delete: Optional[bool] = field(
        default=None, metadata={"alias": "allowDelete"}
    )

    allow_get: Optional[bool] = field(default=None, metadata={"alias": "allowGet"})


@dataclass(kw_only=True)
class ServiceProviderGetAvailableLeafDeviceListRequest22(OCIRequest):
    """Requests the list of available leaf devices that can be linked to a tree device within a specific service provider.
        A leaf device is a device associated with a device type that has the option
        supportLinks set to \"Support Link to Device\" or \"Support Link to Device and User\".  It can
        be linked to only one tree device.
        The list returned includes devices created at the system, service provider, and group levels.
        If the leafDeviceCategory is not set in the request, then linked leaf devices of all categories are requested, otherwise only the linked leaf devices of the specified category are requested.
        The category values are: \"Handset\", \"Base Station\", \"All\".
        The response is either ServiceProviderGetAvailableLeafDeviceListResponse22 or
        ErrorResponse.

    Attributes:

        service_provider_id (str):

        leaf_device_category (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    leaf_device_category: Optional[str] = field(
        default=None, metadata={"alias": "leafDeviceCategory"}
    )


@dataclass(kw_only=True)
class ServiceProviderGetAvailableTreeDeviceListRequest(OCIRequest):
    """Requests the list of available tree devices to which a leaf device can be linked to within a specific service provider.
        A tree device is a device associated with a device type that has the option
        supportLinks set to \"Support Links from Devices\". Many leaf devices can be linked to it.
        The list returned includes devices created at the system, service provider, and group levels.
        The response is either ServiceProviderGetAvailableTreeDeviceListResponse or
        ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderGetDefaultRequest(OCIRequest):
    """Request the default profile for a service provider or enterprise.
        The response is either a ServiceProviderGetDefaultResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class ServiceProviderGetListRequest(OCIRequest):
    """Request a list of service providers and/or enterprises in the system.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        If reseller administrator sends the request, searchCriteriaResellerId is ignored. Service providers/enterprise
        within the administrator's reseller meeting the search criteria are returned.
        The response is either a ServiceProviderGetListResponse or an ErrorResponse.

        The following data elements are only used in AS data mode:
          searchCriteriaResellerId

    Attributes:

        is_enterprise (Optional[bool]):

        response_size_limit (Optional[int]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_service_provider_name (Optional[List[SearchCriteriaServiceProviderName]]):

        search_criteria_reseller_id (Optional[List[SearchCriteriaResellerId]]):

    """

    is_enterprise: Optional[bool] = field(
        default=None, metadata={"alias": "isEnterprise"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_service_provider_name: Optional[
        List[SearchCriteriaServiceProviderName]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderName"})

    search_criteria_reseller_id: Optional[List[SearchCriteriaResellerId]] = field(
        default=None, metadata={"alias": "searchCriteriaResellerId"}
    )


@dataclass(kw_only=True)
class ServiceProviderGetPagedSortedListRequest(OCIRequest):
    """Request a list of service providers and/or enterprises in the system.
        The response is either a ServiceProviderGetPagedSortedListResponse or an ErrorResponse.
        If reseller administrator sends the request, searchCriteriaResellerId is ignored. Service providers/enterprise
        within the administrator's reseller meeting the search criteria are returned.
        If the responsePagingControl element is not provided, the paging startIndex will be set to 1 by
        default, and the responsePageSize will be set to the maximum responsePageSize by default.
        If no sortOrder is included, the response is sorted by Service Provider Id ascending by default.
        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is
        included. Then the search criteria are logically ORed together.

    Attributes:

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderServiceProviderGetPagedSortedList]]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_service_provider_name (Optional[List[SearchCriteriaServiceProviderName]]):

        search_criteria_exact_organization_type (Optional[SearchCriteriaExactOrganizationType]):

        search_criteria_reseller_id (Optional[List[SearchCriteriaResellerId]]):

        search_criteria_mode_or (Optional[bool]):

    """

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[List[SortOrderServiceProviderGetPagedSortedList]] = field(
        default=None, metadata={"alias": "sortOrder"}
    )

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_service_provider_name: Optional[
        List[SearchCriteriaServiceProviderName]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderName"})

    search_criteria_exact_organization_type: Optional[
        SearchCriteriaExactOrganizationType
    ] = field(default=None, metadata={"alias": "searchCriteriaExactOrganizationType"})

    search_criteria_reseller_id: Optional[List[SearchCriteriaResellerId]] = field(
        default=None, metadata={"alias": "searchCriteriaResellerId"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class ServiceProviderGetRequest22V4(OCIRequest):
    """Get the profile for a service provider or enterprise.
        The response is either a ServiceProviderGetResponse22V4 or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          serviceProviderExtenalId

    Attributes:

        service_provider_id (Optional[str]):

        service_provider_external_id (Optional[str]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    service_provider_external_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderExternalId"}
    )


@dataclass(kw_only=True)
class ServiceProviderGroupPagingTargetsCapacityGetRequest22(OCIRequest):
    """Request the maximum number of target users per paging group configured for a service provider.
        The response is either a ServiceProviderGroupPagingTargetsCapacityGetResponse22
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderGroupPagingTargetsCapacityModifyRequest22(OCIRequest):
    """Modify the maximum number of target users per paging group configured for a service provider.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        maximum_target_users (Optional[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    maximum_target_users: Optional[int] = field(
        default=None, metadata={"alias": "maximumTargetUsers"}
    )


@dataclass(kw_only=True)
class ServiceProviderHPBXAlternateCarrierSelectionGetRequest(OCIRequest):
    """Request to get the Alternate Carrier Selection parameters.
        The response is either a ServiceProviderHPBXAlternateCarrierSelectionGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderHPBXAlternateCarrierSelectionModifyRequest(OCIRequest):
    """Request to modify the Alternate Carrier Selection parameters.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        process_cbc_carrier_selection (Optional[bool]):

        preselected_local_carrier (Optional[Nillable[str]]):

        preselected_distant_carrier (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    process_cbc_carrier_selection: Optional[bool] = field(
        default=None, metadata={"alias": "processCbcCarrierSelection"}
    )

    preselected_local_carrier: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "preselectedLocalCarrier"}
    )

    preselected_distant_carrier: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "preselectedDistantCarrier"}
    )

    def __post_init__(self):
        nillable_fields = ["preselected_local_carrier", "preselected_distant_carrier"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderIMRNAssignListRequest(OCIRequest):
    """Assign a list of service provider DNs to the IMRN pool. It is possible to assign either: a single DN,
        or a list of DNs, or a range of DNs, or any combination thereof.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        imrn (Optional[List[str]]):

        imrn_range (Optional[List[DNRange]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    imrn: Optional[List[str]] = field(default=None, metadata={"alias": "imrn"})

    imrn_range: Optional[List[DNRange]] = field(
        default=None, metadata={"alias": "imrnRange"}
    )


@dataclass(kw_only=True)
class ServiceProviderIMRNGetListRequest(OCIRequest):
    """Returns a list of dns or dn ranges in a service provider IMRN pool.
        The response is either ServiceProviderIMRNGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderIMRNUnassignListRequest(OCIRequest):
    """Unassign a list of service provider DNs from the service provider IMRN pool. The DNs then become available for
        assignment to groups. It is possible to delete either: a single DN,
        or a list of DNs, or a range of DNs, or any combination thereof.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        imrn (Optional[List[str]]):

        imrn_range (Optional[List[DNRange]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    imrn: Optional[List[str]] = field(default=None, metadata={"alias": "imrn"})

    imrn_range: Optional[List[DNRange]] = field(
        default=None, metadata={"alias": "imrnRange"}
    )


@dataclass(kw_only=True)
class ServiceProviderInCallServiceActivationGetRequest17(OCIRequest):
    """Request the service provider's DTMF based in-call service activation trigger attributes.The response is either a ServiceProviderInCallServiceActivationGetResponse17 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderInCallServiceActivationModifyRequest17(OCIRequest):
    """Modifies the service provider's DTMF based in-call service activation trigger attributes.The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        flash_activation_digits (Optional[str]):

        call_transfer_activation_digits (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    flash_activation_digits: Optional[str] = field(
        default=None, metadata={"alias": "flashActivationDigits"}
    )

    call_transfer_activation_digits: Optional[str] = field(
        default=None, metadata={"alias": "callTransferActivationDigits"}
    )


@dataclass(kw_only=True)
class ServiceProviderIntegratedIMPGetRequest22(OCIRequest):
    """Get the Integrated IMP service attributes for the service provider.
        The response is either ServiceProviderIntegratedIMPGetResponse22 or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderIntegratedIMPModifyRequest(OCIRequest):
    """Modify the Integrated IMP service attributes for the service provider.
        The response is either a SuccessResponse or an ErrorResponse.
        If the service provider is within a reseller, useSystemServiceDomain means using reseller level service
        domain setting. And useSystemMessagingServer means using the reseller level messaging server setting.

        The following elements are only used in AS data mode:
          servicePort
          useSystemMessagingServer
          provisioningUrl
          provisioningUserId
          provisioningPassword
          boshURL
          defaultImpIdType
          useResellerIMPIdSetting

        The element useResellerIMPIdSetting is only applicable for a service provider within a reseller.

    Attributes:

        service_provider_id (str):

        use_system_service_domain (Optional[bool]):

        service_domain (Optional[Nillable[str]]):

        service_port (Optional[Nillable[int]]):

        use_system_messaging_server (Optional[bool]):

        provisioning_url (Optional[Nillable[str]]):

        provisioning_user_id (Optional[Nillable[str]]):

        provisioning_password (Optional[Nillable[str]]):

        bosh_url (Optional[Nillable[str]]):

        default_imp_id_type (Optional[str]):

        use_reseller_imp_id_setting (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    use_system_service_domain: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemServiceDomain"}
    )

    service_domain: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "serviceDomain"}
    )

    service_port: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "servicePort"}
    )

    use_system_messaging_server: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemMessagingServer"}
    )

    provisioning_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "provisioningUrl"}
    )

    provisioning_user_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "provisioningUserId"}
    )

    provisioning_password: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "provisioningPassword"}
    )

    bosh_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "boshURL"}
    )

    default_imp_id_type: Optional[str] = field(
        default=None, metadata={"alias": "defaultImpIdType"}
    )

    use_reseller_imp_id_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useResellerIMPIdSetting"}
    )

    def __post_init__(self):
        nillable_fields = [
            "service_domain",
            "service_port",
            "provisioning_url",
            "provisioning_user_id",
            "provisioning_password",
            "bosh_url",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderLanguageAddRequest(OCIRequest):
    """Request to add a language for a service provder.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        language (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    language: str = field(metadata={"alias": "language"})


@dataclass(kw_only=True)
class ServiceProviderLanguageDeleteRequest(OCIRequest):
    """Request to delete a language from a service provider supported languages.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        language (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    language: str = field(metadata={"alias": "language"})


@dataclass(kw_only=True)
class ServiceProviderLanguageGetAvailableListRequest(OCIRequest):
    """Request the list of languages that a user or admin in a service provider is allowed to use.
        The list will either be the system or service provider languages list, depending on the useServiceProviderLanguages flag.
        The response is either a ServiceProviderLanguageGetAvailableListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderLanguageGetListRequest(OCIRequest):
    """Request the defined languages for a service provider.
        The response is either a ServiceProviderLanguageGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderLanguageModifyRequest(OCIRequest):
    """Request to modify a language properties for a service provider/enterprise.
        If the becomeDefaultLanguage element is present, the language in this request
        Becomes the default language for the service provider/enterprise.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        language (str):

        become_default_language (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    language: str = field(metadata={"alias": "language"})

    become_default_language: Optional[bool] = field(
        default=None, metadata={"alias": "becomeDefaultLanguage"}
    )


@dataclass(kw_only=True)
class ServiceProviderMWIDeliveryToMobileEndpointCustomTemplateAddRequest23(OCIRequest):
    """Create a MWI Delivery to Mobile Endpoint Custom Template.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        language (str):

        type (str):

        is_enabled (bool):

        month_abbreviations (Optional[str]):

        template_body (MWIDeliveryToMobileEndpointTemplateBody23):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    language: str = field(metadata={"alias": "language"})

    type: str = field(metadata={"alias": "type"})

    is_enabled: bool = field(metadata={"alias": "isEnabled"})

    month_abbreviations: Optional[str] = field(
        default=None, metadata={"alias": "monthAbbreviations"}
    )

    template_body: MWIDeliveryToMobileEndpointTemplateBody23 = field(
        metadata={"alias": "templateBody"}
    )


@dataclass(kw_only=True)
class ServiceProviderMWIDeliveryToMobileEndpointCustomTemplateDeleteRequest23(
    OCIRequest
):
    """Delete a MWI Delivery to Mobile Endpoint Custom Template.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        language (str):

        type (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    language: str = field(metadata={"alias": "language"})

    type: str = field(metadata={"alias": "type"})


@dataclass(kw_only=True)
class ServiceProviderMWIDeliveryToMobileEndpointCustomTemplateGetRequest23(OCIRequest):
    """Request a MWI Delivery to Mobile Endpoint Custom Template.
        The response is either a ServiceProviderMWIDeliveryToMobileEndpointCustomTemplateGetResponse23 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        language (str):

        type (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    language: str = field(metadata={"alias": "language"})

    type: str = field(metadata={"alias": "type"})


@dataclass(kw_only=True)
class ServiceProviderMWIDeliveryToMobileEndpointCustomTemplateModifyRequest23(
    OCIRequest
):
    """Modify a MWI Delivery to Mobile Endpoint Custom Template.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        language (str):

        type (str):

        is_enabled (Optional[bool]):

        month_abbreviations (Optional[Nillable[str]]):

        template_body (Optional[MWIDeliveryToMobileEndpointTemplateBody23]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    language: str = field(metadata={"alias": "language"})

    type: str = field(metadata={"alias": "type"})

    is_enabled: Optional[bool] = field(default=None, metadata={"alias": "isEnabled"})

    month_abbreviations: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "monthAbbreviations"}
    )

    template_body: Optional[MWIDeliveryToMobileEndpointTemplateBody23] = field(
        default=None, metadata={"alias": "templateBody"}
    )

    def __post_init__(self):
        nillable_fields = ["month_abbreviations"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderMWIDeliveryToMobileEndpointGetRequest(OCIRequest):
    """Request the service provider level data associated with MWI Delivery to Mobile Endpoint service.
        The response is either a ServiceProviderMWIDeliveryToMobileEndpointGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderMWIDeliveryToMobileEndpointModifyRequest23(OCIRequest):
    """Modify the service provider level MWI custom notifications settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        template_activation (Optional[List[MWIDeliveryToMobileEndpointTemplateActivation23]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    template_activation: Optional[
        List[MWIDeliveryToMobileEndpointTemplateActivation23]
    ] = field(default=None, metadata={"alias": "templateActivation"})


@dataclass(kw_only=True)
class ServiceProviderMaliciousCallTraceGetRequest(OCIRequest):
    """Get the service provider's Malicious Call Trace settings.
        The response is either a ServiceProviderMaliciousCallTraceGetResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderMaliciousCallTraceModifyRequest(OCIRequest):
    """Modify the service provider's Malicious Call Trace settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        use_system_play_mct_warning_announcement (Optional[bool]):

        play_mct_warning_announcement (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    use_system_play_mct_warning_announcement: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemPlayMCTWarningAnnouncement"}
    )

    play_mct_warning_announcement: Optional[bool] = field(
        default=None, metadata={"alias": "playMCTWarningAnnouncement"}
    )


@dataclass(kw_only=True)
class ServiceProviderMeetMeConferencingGetRequest(OCIRequest):
    """Request the service provider/enterprise level data associated with Meet-Me Conferencing functions.
        The response is either a ServiceProviderMeetMeConferencingGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderMeetMeConferencingModifyRequest(OCIRequest):
    """Modify the service provider/enterprise level data associated with Meet-Me Conferencing functions.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        allocated_ports (Optional[MeetMeConferencingConferencePorts]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    allocated_ports: Optional[MeetMeConferencingConferencePorts] = field(
        default=None, metadata={"alias": "allocatedPorts"}
    )


@dataclass(kw_only=True)
class ServiceProviderModifyRequest(OCIRequest):
    """Modify the profile for a service provider or enterprise.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are ignored in AS and XS data mode:
        servicePolicy,
        callProcessingSliceId,
        subscriberPartition.


        The following element is only used in AS data mode and ignored
        in XS data mode:
        resellerId
        resellerName
        provisioningSliceId

        The following element is only used by Reseller Administrator or Above:
        resellerId
            resellerName

        Only Provisioning admin and above can change the preferredDataCenter and provisioningSliceId.

        The following elements are only used in AS data mode and ignored in XS data mode:
                    defaultExtensionLength
                    locationRoutingPrefixDigit
                    locationCodeLength

    Attributes:

        service_provider_id (str):

        default_domain (Optional[str]):

        service_provider_name (Optional[Nillable[str]]):

        support_email (Optional[Nillable[str]]):

        contact (Optional[Contact]):

        address (Optional[StreetAddress]):

        use_service_provider_languages (Optional[bool]):

        service_policy (Optional[Nillable[str]]):

        call_processing_slice_id (Optional[Nillable[str]]):

        provisioning_slice_id (Optional[Nillable[str]]):

        subscriber_partition (Optional[Nillable[str]]):

        preferred_data_center (Optional[Nillable[str]]):

        default_extension_length (Optional[Nillable[int]]):

        location_routing_prefix_digit (Optional[Nillable[int]]):

        location_code_length (Optional[Nillable[int]]):

        reseller_id (Optional[str]):

        reseller_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    default_domain: Optional[str] = field(
        default=None, metadata={"alias": "defaultDomain"}
    )

    service_provider_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "serviceProviderName"}
    )

    support_email: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "supportEmail"}
    )

    contact: Optional[Contact] = field(default=None, metadata={"alias": "contact"})

    address: Optional[StreetAddress] = field(
        default=None, metadata={"alias": "address"}
    )

    use_service_provider_languages: Optional[bool] = field(
        default=None, metadata={"alias": "useServiceProviderLanguages"}
    )

    service_policy: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "servicePolicy"}
    )

    call_processing_slice_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callProcessingSliceId"}
    )

    provisioning_slice_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "provisioningSliceId"}
    )

    subscriber_partition: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "subscriberPartition"}
    )

    preferred_data_center: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "preferredDataCenter"}
    )

    default_extension_length: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "defaultExtensionLength"}
    )

    location_routing_prefix_digit: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "locationRoutingPrefixDigit"}
    )

    location_code_length: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "locationCodeLength"}
    )

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    reseller_name: Optional[str] = field(
        default=None, metadata={"alias": "resellerName"}
    )

    def __post_init__(self):
        nillable_fields = [
            "service_provider_name",
            "support_email",
            "service_policy",
            "call_processing_slice_id",
            "provisioning_slice_id",
            "subscriber_partition",
            "preferred_data_center",
            "default_extension_length",
            "location_routing_prefix_digit",
            "location_code_length",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderNetworkClassOfServiceAssignListRequest21(OCIRequest):
    """Assign a list of Network Classes of Service to a service provider.
        A default Network Class of Service must be specified unless
        there is already one assigned to the service provider.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        network_class_of_service (Optional[List[str]]):

        default_network_class_of_service (DefaultNetworkClassOfService):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    network_class_of_service: Optional[List[str]] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    default_network_class_of_service: DefaultNetworkClassOfService = field(
        metadata={"alias": "defaultNetworkClassOfService"}
    )


@dataclass(kw_only=True)
class ServiceProviderNetworkClassOfServiceAssignListToAllGroupsRequest(OCIRequest):
    """Assign a list of Network Classes of Service to all groups with in a
        service provider. If it is the first assigned Network Class of Service in
        the group, it will be set as the default one.
        The Network Classes of Service must be currently
        assigned to the service provider. The response is either a
        SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        network_class_of_service (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    network_class_of_service: List[str] = field(
        metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class ServiceProviderNetworkClassOfServiceAssignToAllUsersRequest(OCIRequest):
    """Assign a Network Classes of Service to all users with in a
        service provider. This will also assign the Network Class of Service
        to all the groups in the service provider if it is not assigned yet.
        If it is the first assigned Network Class of Service in the group,
        it will be set as the default one.
        However, the Network Classes of Service must be currently assigned to
        the service provider. The response is either a SuccessResponse or
       an ErrorResponse.

    Attributes:

        service_provider_id (str):

        network_class_of_service (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    network_class_of_service: str = field(metadata={"alias": "networkClassOfService"})


@dataclass(kw_only=True)
class ServiceProviderNetworkClassOfServiceGetAssignedGroupListRequest(OCIRequest):
    """Get a list of groups within a service provider that have a given
        Network Class of Service assigned.
        The response is either a ServiceProviderNetworkClassOfServiceGetAssignedGroupListResponse
        or an ErorResponse.

    Attributes:

        service_provider_id (str):

        network_class_of_service (str):

        response_size_limit (Optional[int]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_group_name (Optional[List[SearchCriteriaGroupName]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    network_class_of_service: str = field(metadata={"alias": "networkClassOfService"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_group_name: Optional[List[SearchCriteriaGroupName]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupName"}
    )


@dataclass(kw_only=True)
class ServiceProviderNetworkClassOfServiceGetAssignedListRequest(OCIRequest):
    """Get a list of Network Classes of Service assigned to a service provider.
        The response is either a ServiceProviderNetworkClassOfServiceGetAssignedListResponse
        or an ErorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderNetworkClassOfServiceModifyDefaultRequest(OCIRequest):
    """Modifies the default Network Classes of Service of a Service Provider.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        network_class_of_service (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    network_class_of_service: str = field(metadata={"alias": "networkClassOfService"})


@dataclass(kw_only=True)
class ServiceProviderNetworkClassOfServiceUnassignListRequest21(OCIRequest):
    """Unassign a list of Network Classes of Service from a service provider.
        If the default Network Class of Service is being unassigned, a new one must be specified unless there are no more
        Network Classes of Service assigned to the service provider.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        network_class_of_service (Optional[List[str]]):

        default_network_class_of_service (DefaultNetworkClassOfService):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    network_class_of_service: Optional[List[str]] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    default_network_class_of_service: DefaultNetworkClassOfService = field(
        metadata={"alias": "defaultNetworkClassOfService"}
    )


@dataclass(kw_only=True)
class ServiceProviderNumberPortabilityQueryAddListRequest(OCIRequest):
    """Add a list of the Service Provider Number Portability Query Digit Patterns.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        digit_pattern (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    digit_pattern: List[str] = field(metadata={"alias": "digitPattern"})


@dataclass(kw_only=True)
class ServiceProviderNumberPortabilityQueryGetRequest(OCIRequest):
    """Request to get the Service Provider Number Portability Query Digit Pattern Trigger List information.
        The response is either a ServiceProviderNumberPortabilityQueryGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        include_digit_patterns (bool):

        search_criteria_service_provider_number_portability_query_digit_pattern (Optional[List[SearchCriteriaServiceProviderNumberPortabilityQueryDigitPattern]]):

        response_size_limit (Optional[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    include_digit_patterns: bool = field(metadata={"alias": "includeDigitPatterns"})

    search_criteria_service_provider_number_portability_query_digit_pattern: Optional[
        List[SearchCriteriaServiceProviderNumberPortabilityQueryDigitPattern]
    ] = field(
        default=None,
        metadata={
            "alias": "searchCriteriaServiceProviderNumberPortabilityQueryDigitPattern"
        },
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )


@dataclass(kw_only=True)
class ServiceProviderNumberPortabilityQueryModifyRequest(OCIRequest):
    """Modify the Service Provider Number Portability Query information.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        enable_number_portability_query_for_outgoing_calls (Optional[bool]):

        enable_number_portability_query_for_incoming_calls (Optional[bool]):

        enable_number_portability_query_for_network_calls_only (Optional[bool]):

        delete_digit_pattern (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    enable_number_portability_query_for_outgoing_calls: Optional[bool] = field(
        default=None, metadata={"alias": "enableNumberPortabilityQueryForOutgoingCalls"}
    )

    enable_number_portability_query_for_incoming_calls: Optional[bool] = field(
        default=None, metadata={"alias": "enableNumberPortabilityQueryForIncomingCalls"}
    )

    enable_number_portability_query_for_network_calls_only: Optional[bool] = field(
        default=None,
        metadata={"alias": "enableNumberPortabilityQueryForNetworkCallsOnly"},
    )

    delete_digit_pattern: Optional[List[str]] = field(
        default=None, metadata={"alias": "deleteDigitPattern"}
    )


@dataclass(kw_only=True)
class ServiceProviderOfficeZoneAssignListRequest(OCIRequest):
    """Assign a list of Office Zones to a service provider.
        The Element defaultOfficeZone is required only for the first assignment, for subsequent assignments it is optional.
        Office Zones can only be assigned if the Location-Based Calling Restrictions has been authorized to the service provider otherwise the request will fail.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        office_zone_name (Optional[List[str]]):

        default_office_zone_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    office_zone_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "officeZoneName"}
    )

    default_office_zone_name: Optional[str] = field(
        default=None, metadata={"alias": "defaultOfficeZoneName"}
    )


@dataclass(kw_only=True)
class ServiceProviderOfficeZoneGetAssignedGroupListRequest(OCIRequest):
    """Get a list of groups within a service provider that have a given Office Zone assigned.
        The response is either a ServiceProviderOfficeZoneGetAssignedGroupListResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        office_zone_name (str):

        response_size_limit (Optional[int]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_group_name (Optional[List[SearchCriteriaGroupName]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    office_zone_name: str = field(metadata={"alias": "officeZoneName"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_group_name: Optional[List[SearchCriteriaGroupName]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupName"}
    )


@dataclass(kw_only=True)
class ServiceProviderOfficeZoneGetAssignedListRequest(OCIRequest):
    """Get a list of Office Zones assigned to a service provider.
        The response is either a ServiceProviderOfficeZoneGetAssignedListResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderOfficeZoneUnassignListRequest(OCIRequest):
    """Unassign a list of OfficeZones from a service provider.  Note: a new default must be provided if unassigning the current default.
        Office Zones can only be unassigned if the Location-Based Calling Restrictions has been authorized to the service provider otherwise the request will fail.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        office_zone_name (Optional[List[str]]):

        default_office_zone_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    office_zone_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "officeZoneName"}
    )

    default_office_zone_name: Optional[str] = field(
        default=None, metadata={"alias": "defaultOfficeZoneName"}
    )


@dataclass(kw_only=True)
class ServiceProviderPasswordRulesGetRequestRI(OCIRequest):
    """Requests the service provider's password rules setting applicable to
        Administrators (Group and Department) and Users.
        The response is either ServiceProviderPasswordRulesGetResponseRI or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderPasswordRulesModifyRequest14sp3(OCIRequest):
    """Request to modify the service provider's password rules settings
        setting applicable to Administrators (Group and Department) and Users.

        The following elements are only used in AS data mode and ignored in XS data mode:
        forcePasswordChangeAfterReset
        reenableLogin
        lockOutInMinutes

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        rules_apply_to (Optional[str]):

        allow_web_add_external_authentication_users (Optional[bool]):

        disallow_user_id (Optional[bool]):

        disallow_old_password (Optional[bool]):

        disallow_reversed_old_password (Optional[bool]):

        restrict_min_digits (Optional[bool]):

        min_digits (Optional[int]):

        restrict_min_upper_case_letters (Optional[bool]):

        min_upper_case_letters (Optional[int]):

        restrict_min_lower_case_letters (Optional[bool]):

        min_lower_case_letters (Optional[int]):

        restrict_min_non_alphanumeric_characters (Optional[bool]):

        min_non_alphanumeric_characters (Optional[int]):

        min_length (Optional[int]):

        max_failed_login_attempts (Optional[int]):

        password_expires_days (Optional[int]):

        send_login_disabled_notify_email (Optional[bool]):

        login_disabled_notify_email_address (Optional[Nillable[str]]):

        disallow_previous_passwords (Optional[bool]):

        number_of_previous_passwords (Optional[int]):

        force_password_change_after_reset (Optional[bool]):

        use_password_validation_service (Optional[bool]):

        reenable_login (Optional[bool]):

        lock_out_in_minutes (Optional[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    rules_apply_to: Optional[str] = field(
        default=None, metadata={"alias": "rulesApplyTo"}
    )

    allow_web_add_external_authentication_users: Optional[bool] = field(
        default=None, metadata={"alias": "allowWebAddExternalAuthenticationUsers"}
    )

    disallow_user_id: Optional[bool] = field(
        default=None, metadata={"alias": "disallowUserId"}
    )

    disallow_old_password: Optional[bool] = field(
        default=None, metadata={"alias": "disallowOldPassword"}
    )

    disallow_reversed_old_password: Optional[bool] = field(
        default=None, metadata={"alias": "disallowReversedOldPassword"}
    )

    restrict_min_digits: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinDigits"}
    )

    min_digits: Optional[int] = field(default=None, metadata={"alias": "minDigits"})

    restrict_min_upper_case_letters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinUpperCaseLetters"}
    )

    min_upper_case_letters: Optional[int] = field(
        default=None, metadata={"alias": "minUpperCaseLetters"}
    )

    restrict_min_lower_case_letters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinLowerCaseLetters"}
    )

    min_lower_case_letters: Optional[int] = field(
        default=None, metadata={"alias": "minLowerCaseLetters"}
    )

    restrict_min_non_alphanumeric_characters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinNonAlphanumericCharacters"}
    )

    min_non_alphanumeric_characters: Optional[int] = field(
        default=None, metadata={"alias": "minNonAlphanumericCharacters"}
    )

    min_length: Optional[int] = field(default=None, metadata={"alias": "minLength"})

    max_failed_login_attempts: Optional[int] = field(
        default=None, metadata={"alias": "maxFailedLoginAttempts"}
    )

    password_expires_days: Optional[int] = field(
        default=None, metadata={"alias": "passwordExpiresDays"}
    )

    send_login_disabled_notify_email: Optional[bool] = field(
        default=None, metadata={"alias": "sendLoginDisabledNotifyEmail"}
    )

    login_disabled_notify_email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "loginDisabledNotifyEmailAddress"}
    )

    disallow_previous_passwords: Optional[bool] = field(
        default=None, metadata={"alias": "disallowPreviousPasswords"}
    )

    number_of_previous_passwords: Optional[int] = field(
        default=None, metadata={"alias": "numberOfPreviousPasswords"}
    )

    force_password_change_after_reset: Optional[bool] = field(
        default=None, metadata={"alias": "forcePasswordChangeAfterReset"}
    )

    use_password_validation_service: Optional[bool] = field(
        default=None, metadata={"alias": "usePasswordValidationService"}
    )

    reenable_login: Optional[bool] = field(
        default=None, metadata={"alias": "reenableLogin"}
    )

    lock_out_in_minutes: Optional[int] = field(
        default=None, metadata={"alias": "lockOutInMinutes"}
    )

    def __post_init__(self):
        nillable_fields = ["login_disabled_notify_email_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderPortalPasscodeRulesGetRequestRI(OCIRequest):
    """Requests the service provider's passcode rules setting.
        The response is either ServiceProviderPortalPasscodeRulesGetResponseRI or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderPortalPasscodeRulesModifyRequest(OCIRequest):
    """Request to modify the service provider's passcode rules setting.
        The response is either SuccessResponse or ErrorResponse.

        The following elements are only used in AS data mode:
          numberOfRepeatedDigits
          disallowRepeatedPatterns
          disallowContiguousSequences
          numberOfAscendingDigits
          numberOfDescendingDigits
          numberOfPreviousPasscodes
          reenableLogin
          lockOutInMinutes

          The following elements are only used in AS data mode and ignored in XS data mode:
          enableDefaultPasscode
          defaultPasscode

    Attributes:

        service_provider_id (str):

        disallow_repeated_digits (Optional[bool]):

        number_of_repeated_digits (Optional[int]):

        disallow_repeated_patterns (Optional[bool]):

        disallow_contiguous_sequences (Optional[bool]):

        number_of_ascending_digits (Optional[int]):

        number_of_descending_digits (Optional[int]):

        disallow_user_number (Optional[bool]):

        disallow_reversed_user_number (Optional[bool]):

        disallow_old_passcode (Optional[bool]):

        number_of_previous_passcodes (Optional[int]):

        disallow_reversed_old_passcode (Optional[bool]):

        min_code_length (Optional[int]):

        max_code_length (Optional[int]):

        disable_login_after_max_failed_login_attempts (Optional[bool]):

        max_failed_login_attempts (Optional[int]):

        expire_password (Optional[bool]):

        passcode_expires_days (Optional[int]):

        send_login_disabled_notify_email (Optional[bool]):

        login_disabled_notify_email_address (Optional[Nillable[str]]):

        enable_default_passcode (Optional[bool]):

        default_passcode (Optional[Nillable[str]]):

        reenable_login (Optional[bool]):

        lock_out_in_minutes (Optional[int]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    disallow_repeated_digits: Optional[bool] = field(
        default=None, metadata={"alias": "disallowRepeatedDigits"}
    )

    number_of_repeated_digits: Optional[int] = field(
        default=None, metadata={"alias": "numberOfRepeatedDigits"}
    )

    disallow_repeated_patterns: Optional[bool] = field(
        default=None, metadata={"alias": "disallowRepeatedPatterns"}
    )

    disallow_contiguous_sequences: Optional[bool] = field(
        default=None, metadata={"alias": "disallowContiguousSequences"}
    )

    number_of_ascending_digits: Optional[int] = field(
        default=None, metadata={"alias": "numberOfAscendingDigits"}
    )

    number_of_descending_digits: Optional[int] = field(
        default=None, metadata={"alias": "numberOfDescendingDigits"}
    )

    disallow_user_number: Optional[bool] = field(
        default=None, metadata={"alias": "disallowUserNumber"}
    )

    disallow_reversed_user_number: Optional[bool] = field(
        default=None, metadata={"alias": "disallowReversedUserNumber"}
    )

    disallow_old_passcode: Optional[bool] = field(
        default=None, metadata={"alias": "disallowOldPasscode"}
    )

    number_of_previous_passcodes: Optional[int] = field(
        default=None, metadata={"alias": "numberOfPreviousPasscodes"}
    )

    disallow_reversed_old_passcode: Optional[bool] = field(
        default=None, metadata={"alias": "disallowReversedOldPasscode"}
    )

    min_code_length: Optional[int] = field(
        default=None, metadata={"alias": "minCodeLength"}
    )

    max_code_length: Optional[int] = field(
        default=None, metadata={"alias": "maxCodeLength"}
    )

    disable_login_after_max_failed_login_attempts: Optional[bool] = field(
        default=None, metadata={"alias": "disableLoginAfterMaxFailedLoginAttempts"}
    )

    max_failed_login_attempts: Optional[int] = field(
        default=None, metadata={"alias": "maxFailedLoginAttempts"}
    )

    expire_password: Optional[bool] = field(
        default=None, metadata={"alias": "expirePassword"}
    )

    passcode_expires_days: Optional[int] = field(
        default=None, metadata={"alias": "passcodeExpiresDays"}
    )

    send_login_disabled_notify_email: Optional[bool] = field(
        default=None, metadata={"alias": "sendLoginDisabledNotifyEmail"}
    )

    login_disabled_notify_email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "loginDisabledNotifyEmailAddress"}
    )

    enable_default_passcode: Optional[bool] = field(
        default=None, metadata={"alias": "enableDefaultPasscode"}
    )

    default_passcode: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultPasscode"}
    )

    reenable_login: Optional[bool] = field(
        default=None, metadata={"alias": "reenableLogin"}
    )

    lock_out_in_minutes: Optional[int] = field(
        default=None, metadata={"alias": "lockOutInMinutes"}
    )

    def __post_init__(self):
        nillable_fields = ["login_disabled_notify_email_address", "default_passcode"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderPreferredCarrierAddRequest(OCIRequest):
    """Add the country code preferred carriers for a service provider or enterprise. For each
        combination of service provider and country code, you can assign an intra-lata, inter-lata,
        and international carrier. Each of the three types of carriers is optional.
        The response is either a SuccessResponse or an ErrorResponse.
        Note: At the system level, more than one carrier may be assigned to each country code.
        At the service provider level, you must choose from the carriers assigned at the system level.

    Attributes:

        service_provider_id (str):

        country_code (str):

        intra_lata_carrier (Optional[str]):

        inter_lata_carrier (Optional[str]):

        international_carrier (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    country_code: str = field(metadata={"alias": "countryCode"})

    intra_lata_carrier: Optional[str] = field(
        default=None, metadata={"alias": "intraLataCarrier"}
    )

    inter_lata_carrier: Optional[str] = field(
        default=None, metadata={"alias": "interLataCarrier"}
    )

    international_carrier: Optional[str] = field(
        default=None, metadata={"alias": "internationalCarrier"}
    )


@dataclass(kw_only=True)
class ServiceProviderPreferredCarrierDeleteRequest(OCIRequest):
    """Delete the country code preferred carriers for a service provider or enterprise.
        Note that this is different from unassigning all 3 types of carriers with
        the ServiceProviderPreferredCarrierModifyRequest.
        The response is either a SuccessResponse or an ErrorResponse.
        An ErrorResponse will be returned if the country code preferred carriers were never added or
        were already deleted.

    Attributes:

        service_provider_id (str):

        country_code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    country_code: str = field(metadata={"alias": "countryCode"})


@dataclass(kw_only=True)
class ServiceProviderPreferredCarrierGetAvailableCountryCodeListRequest(OCIRequest):
    """Requests the default country code and the list of unused country codes for a service provider / enterprise.
        The response is either a ServiceProviderPreferredCarrierGetAvailableCountryCodeListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderPreferredCarrierGetCarrierListRequest(OCIRequest):
    """Requests the lists of carriers for a specified country code for a service provider / enterprise.
        The response is either a ServiceProviderPreferredCarrierGetCarrierListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        country_code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    country_code: str = field(metadata={"alias": "countryCode"})


@dataclass(kw_only=True)
class ServiceProviderPreferredCarrierGetListRequest(OCIRequest):
    """Requests a table of all the carriers defined in a specified service provider or enterprise.
        The response is either a ServiceProviderPreferredCarrierGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderPreferredCarrierGetRequest(OCIRequest):
    """Requests the currently configured carriers for a specified country code for a service provider / enterprise.
        The response is either a ServiceProviderPreferredCarrierGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        country_code (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    country_code: str = field(metadata={"alias": "countryCode"})


@dataclass(kw_only=True)
class ServiceProviderPreferredCarrierModifyRequest(OCIRequest):
    """Modify the country code preferred carriers for a service provider or enterprise. For each
        combination of service provider and country code, you can assign an intra-lata, inter-lata,
        and international carrier. Each of the 3 types of carriers is optional.
        If an optional carrier is not specified, the assignment will not change.
        To clear a preferred carrier, set the value to an empty string.
        The response is either a SuccessResponse or an ErrorResponse.
        Note: At the system level, more than one carrier may be assigned to each country code.
        At the service provider level, you must choose from the carriers assigned at the system level.

    Attributes:

        service_provider_id (str):

        country_code (str):

        intra_lata_carrier (Optional[Nillable[str]]):

        inter_lata_carrier (Optional[Nillable[str]]):

        international_carrier (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    country_code: str = field(metadata={"alias": "countryCode"})

    intra_lata_carrier: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "intraLataCarrier"}
    )

    inter_lata_carrier: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "interLataCarrier"}
    )

    international_carrier: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "internationalCarrier"}
    )

    def __post_init__(self):
        nillable_fields = [
            "intra_lata_carrier",
            "inter_lata_carrier",
            "international_carrier",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderRouteListEnterpriseTrunkNumberPrefixActivateListRequest(
    OCIRequest
):
    """Activate number prefixes in a service provider.
        It is not an error to activate an already activated number prefix.
        The command fails if executed when system level enterprise trunk number prefix activation is disabled.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        number_prefix (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    number_prefix: List[str] = field(metadata={"alias": "numberPrefix"})


@dataclass(kw_only=True)
class ServiceProviderRouteListEnterpriseTrunkNumberPrefixAddListRequest22(OCIRequest):
    """Add number prefixes to a service provider.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        prefix (List[EnterpriseTrunkNumberPrefix22]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    prefix: List[EnterpriseTrunkNumberPrefix22] = field(metadata={"alias": "prefix"})


@dataclass(kw_only=True)
class ServiceProviderRouteListEnterpriseTrunkNumberPrefixDeactivateListRequest(
    OCIRequest
):
    """Deactivate number prefixes in a service provider.
        It is not an error to deactivate an already deactivated number prefix.
        The command fails if executed when system level enterprise trunk number prefix activation is disabled.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        number_prefix (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    number_prefix: List[str] = field(metadata={"alias": "numberPrefix"})


@dataclass(kw_only=True)
class ServiceProviderRouteListEnterpriseTrunkNumberPrefixDeleteListRequest(OCIRequest):
    """Delete number prefixes from a service provider.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        number_prefix (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    number_prefix: List[str] = field(metadata={"alias": "numberPrefix"})


@dataclass(kw_only=True)
class ServiceProviderRouteListEnterpriseTrunkNumberPrefixGetAvailableListRequest(
    OCIRequest
):
    """Request a list of available number prefixes not yet assigned to any group.
        The response is either ServiceProviderRouteListEnterpriseTrunkNumberPrefixGetAvailableListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderRouteListEnterpriseTrunkNumberPrefixGetSummaryListRequest(
    OCIRequest
):
    """Request a summary table of all enterprise trunk number prefixes in the service provider.
        The response is either ServiceProviderRouteListEnterpriseTrunkPrefixGetSummaryListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderRouteListEnterpriseTrunkNumberPrefixModifyListRequest(OCIRequest):
    """Modify a list of number prefixes in a service provider.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        number_prefix (Optional[List[EnterpriseTrunkNumberPrefixModify]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    number_prefix: Optional[List[EnterpriseTrunkNumberPrefixModify]] = field(
        default=None, metadata={"alias": "numberPrefix"}
    )


@dataclass(kw_only=True)
class ServiceProviderRouteListEnterpriseTrunkNumberRangeActivateListRequest(OCIRequest):
    """Activate number ranges in a service provider.
        It is not an error to activate an already activated number range.
        The command fails if executed when system level enterprise trunk number range activation is disabled.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        number_range_start (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    number_range_start: Optional[List[str]] = field(
        default=None, metadata={"alias": "numberRangeStart"}
    )


@dataclass(kw_only=True)
class ServiceProviderRouteListEnterpriseTrunkNumberRangeAddListRequest22(OCIRequest):
    """Add number ranges to a service provider.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        number_range (List[EnterpriseTrunkNumberRange]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    number_range: List[EnterpriseTrunkNumberRange] = field(
        metadata={"alias": "numberRange"}
    )


@dataclass(kw_only=True)
class ServiceProviderRouteListEnterpriseTrunkNumberRangeDeactivateListRequest(
    OCIRequest
):
    """Deactivate number ranges in a service provider.
        It is not an error to deactivate an already deactivated number range.
        The command fails if executed when system level enterprise trunk number range activation is disabled.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        number_range_start (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    number_range_start: Optional[List[str]] = field(
        default=None, metadata={"alias": "numberRangeStart"}
    )


@dataclass(kw_only=True)
class ServiceProviderRouteListEnterpriseTrunkNumberRangeDeleteListRequest(OCIRequest):
    """Delete number ranges from a service provider.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        number_range_start (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    number_range_start: Optional[List[str]] = field(
        default=None, metadata={"alias": "numberRangeStart"}
    )


@dataclass(kw_only=True)
class ServiceProviderRouteListEnterpriseTrunkNumberRangeGetAvailableListRequest(
    OCIRequest
):
    """Request a list of available number ranges not yet assigned to any group.
        The response is either ServiceProviderRouteListEnterpriseTrunkNumberRangeGetAvailableListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderRouteListEnterpriseTrunkNumberRangeGetSummaryListRequest(
    OCIRequest
):
    """Request a summary table of all enterprise trunk number ranges in the service provider.
        The response is either ServiceProviderRouteListEnterpriseTrunkNumberRangeGetSummaryListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderRouteListEnterpriseTrunkNumberRangeModifyListRequest(OCIRequest):
    """Modify a list of number ranges in a service provider
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        number_range (Optional[List[EnterpriseTrunkNumberRangeModify]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    number_range: Optional[List[EnterpriseTrunkNumberRangeModify]] = field(
        default=None, metadata={"alias": "numberRange"}
    )


@dataclass(kw_only=True)
class ServiceProviderRoutePointExternalSystemAssignListRequest(OCIRequest):
    """Assign a list of route point external systems to a service provider.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        route_point_external_system (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    route_point_external_system: Optional[List[str]] = field(
        default=None, metadata={"alias": "routePointExternalSystem"}
    )


@dataclass(kw_only=True)
class ServiceProviderRoutePointExternalSystemGetAssignedGroupListRequest(OCIRequest):
    """Requests a list of groups within a service provider that have a given external system assigned.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        The response is either a ServiceProviderRoutePointExternalSystemGetAssignedGroupListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        external_system (str):

        response_size_limit (Optional[int]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_group_name (Optional[List[SearchCriteriaGroupName]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    external_system: str = field(metadata={"alias": "externalSystem"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_group_name: Optional[List[SearchCriteriaGroupName]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupName"}
    )


@dataclass(kw_only=True)
class ServiceProviderRoutePointExternalSystemGetAssignedListRequest(OCIRequest):
    """Requests the list of all Route Point External Systems assigned to a service provider.
        The response is either ServiceProviderRoutePointExternalSystemGetAssignedListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderRoutePointExternalSystemUnassignListRequest(OCIRequest):
    """Unassign a list of route point external systems from a service provider.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        route_point_external_system (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    route_point_external_system: Optional[List[str]] = field(
        default=None, metadata={"alias": "routePointExternalSystem"}
    )


@dataclass(kw_only=True)
class ServiceProviderRoutingProfileGetRequest(OCIRequest):
    """Request the routing profile for the service provider/enterprise.
        The response is either a ServiceProviderRoutingProfileGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderRoutingProfileModifyRequest(OCIRequest):
    """Requests to modify the routing profile for a service provider.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        routing_profile (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    routing_profile: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "routingProfile"}
    )

    def __post_init__(self):
        nillable_fields = ["routing_profile"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderSIPAuthenticationPasswordRulesGetRequestRI(OCIRequest):
    """Request to get the service provider level SIP authentication password rule settings.
        The response is either a ServiceProviderSIPAuthenticationPasswordRulesGetResponseRI or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderSIPAuthenticationPasswordRulesModifyRequest(OCIRequest):
    """Request to modify the service provider level SIP authentication password rule settings. The useServiceProviderSettings element can only be modified by a system administrator or a provisioning administrator.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        use_service_provider_settings (Optional[bool]):

        disallow_authentication_name (Optional[bool]):

        disallow_old_password (Optional[bool]):

        disallow_reversed_old_password (Optional[bool]):

        restrict_min_digits (Optional[bool]):

        min_digits (Optional[int]):

        restrict_min_upper_case_letters (Optional[bool]):

        min_upper_case_letters (Optional[int]):

        restrict_min_lower_case_letters (Optional[bool]):

        min_lower_case_letters (Optional[int]):

        restrict_min_non_alphanumeric_characters (Optional[bool]):

        min_non_alphanumeric_characters (Optional[int]):

        min_length (Optional[int]):

        send_permanent_lockout_notification (Optional[bool]):

        permanent_lockout_notify_email_address (Optional[Nillable[str]]):

        endpoint_authentication_lockout_type (Optional[str]):

        endpoint_temporary_lockout_threshold (Optional[int]):

        endpoint_wait_algorithm (Optional[str]):

        endpoint_lockout_fixed_minutes (Optional[str]):

        endpoint_permanent_lockout_threshold (Optional[int]):

        trunk_group_authentication_lockout_type (Optional[str]):

        trunk_group_temporary_lockout_threshold (Optional[int]):

        trunk_group_wait_algorithm (Optional[str]):

        trunk_group_lockout_fixed_minutes (Optional[str]):

        trunk_group_permanent_lockout_threshold (Optional[int]):

        use_password_validation_service (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    use_service_provider_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useServiceProviderSettings"}
    )

    disallow_authentication_name: Optional[bool] = field(
        default=None, metadata={"alias": "disallowAuthenticationName"}
    )

    disallow_old_password: Optional[bool] = field(
        default=None, metadata={"alias": "disallowOldPassword"}
    )

    disallow_reversed_old_password: Optional[bool] = field(
        default=None, metadata={"alias": "disallowReversedOldPassword"}
    )

    restrict_min_digits: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinDigits"}
    )

    min_digits: Optional[int] = field(default=None, metadata={"alias": "minDigits"})

    restrict_min_upper_case_letters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinUpperCaseLetters"}
    )

    min_upper_case_letters: Optional[int] = field(
        default=None, metadata={"alias": "minUpperCaseLetters"}
    )

    restrict_min_lower_case_letters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinLowerCaseLetters"}
    )

    min_lower_case_letters: Optional[int] = field(
        default=None, metadata={"alias": "minLowerCaseLetters"}
    )

    restrict_min_non_alphanumeric_characters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinNonAlphanumericCharacters"}
    )

    min_non_alphanumeric_characters: Optional[int] = field(
        default=None, metadata={"alias": "minNonAlphanumericCharacters"}
    )

    min_length: Optional[int] = field(default=None, metadata={"alias": "minLength"})

    send_permanent_lockout_notification: Optional[bool] = field(
        default=None, metadata={"alias": "sendPermanentLockoutNotification"}
    )

    permanent_lockout_notify_email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "permanentLockoutNotifyEmailAddress"}
    )

    endpoint_authentication_lockout_type: Optional[str] = field(
        default=None, metadata={"alias": "endpointAuthenticationLockoutType"}
    )

    endpoint_temporary_lockout_threshold: Optional[int] = field(
        default=None, metadata={"alias": "endpointTemporaryLockoutThreshold"}
    )

    endpoint_wait_algorithm: Optional[str] = field(
        default=None, metadata={"alias": "endpointWaitAlgorithm"}
    )

    endpoint_lockout_fixed_minutes: Optional[str] = field(
        default=None, metadata={"alias": "endpointLockoutFixedMinutes"}
    )

    endpoint_permanent_lockout_threshold: Optional[int] = field(
        default=None, metadata={"alias": "endpointPermanentLockoutThreshold"}
    )

    trunk_group_authentication_lockout_type: Optional[str] = field(
        default=None, metadata={"alias": "trunkGroupAuthenticationLockoutType"}
    )

    trunk_group_temporary_lockout_threshold: Optional[int] = field(
        default=None, metadata={"alias": "trunkGroupTemporaryLockoutThreshold"}
    )

    trunk_group_wait_algorithm: Optional[str] = field(
        default=None, metadata={"alias": "trunkGroupWaitAlgorithm"}
    )

    trunk_group_lockout_fixed_minutes: Optional[str] = field(
        default=None, metadata={"alias": "trunkGroupLockoutFixedMinutes"}
    )

    trunk_group_permanent_lockout_threshold: Optional[int] = field(
        default=None, metadata={"alias": "trunkGroupPermanentLockoutThreshold"}
    )

    use_password_validation_service: Optional[bool] = field(
        default=None, metadata={"alias": "usePasswordValidationService"}
    )

    def __post_init__(self):
        nillable_fields = ["permanent_lockout_notify_email_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderScheduleAddEventRequest(OCIRequest):
    """Add an event to service provider schedule.
        The response is either a SuccessResponse or an ErrorResponse.
        The startDate element is adjusted to the first occurrence of the recurrent schedule that comes at or after the startDate.
        The endDate element is set to the sum of the adjusted starDate element value and the event duration.

    Attributes:

        service_provider_id (str):

        schedule_key (ScheduleKey):

        event_name (str):

        start_date (int):

        all_day_event (Optional[bool]):

        start_time (Optional[HourMinute]):

        end_time (Optional[HourMinute]):

        end_date (int):

        recurrence (Optional[Recurrence]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    event_name: str = field(metadata={"alias": "eventName"})

    start_date: int = field(metadata={"alias": "startDate"})

    all_day_event: Optional[bool] = field(
        default=None, metadata={"alias": "allDayEvent"}
    )

    start_time: Optional[HourMinute] = field(
        default=None, metadata={"alias": "startTime"}
    )

    end_time: Optional[HourMinute] = field(default=None, metadata={"alias": "endTime"})

    end_date: int = field(metadata={"alias": "endDate"})

    recurrence: Optional[Recurrence] = field(
        default=None, metadata={"alias": "recurrence"}
    )


@dataclass(kw_only=True)
class ServiceProviderScheduleAddRequest(OCIRequest):
    """Add a service provider schedule.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        schedule_name (str):

        schedule_type (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    schedule_name: str = field(metadata={"alias": "scheduleName"})

    schedule_type: str = field(metadata={"alias": "scheduleType"})


@dataclass(kw_only=True)
class ServiceProviderScheduleDeleteEventListRequest(OCIRequest):
    """Delete a list of events from a service provider schedule.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        schedule_key (ScheduleKey):

        event_name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    event_name: List[str] = field(metadata={"alias": "eventName"})


@dataclass(kw_only=True)
class ServiceProviderScheduleDeleteListRequest(OCIRequest):
    """Delete a list of service provider schedule.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        schedule_key (List[ScheduleKey]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    schedule_key: List[ScheduleKey] = field(metadata={"alias": "scheduleKey"})


@dataclass(kw_only=True)
class ServiceProviderScheduleGetEventDetailListRequest(OCIRequest):
    """Get the list of events of a service provider schedule.
        The response is either a ServiceProviderScheduleGetEventDetailListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        schedule_key (ScheduleKey):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})


@dataclass(kw_only=True)
class ServiceProviderScheduleGetEventListRequest(OCIRequest):
    """Get the list of events of a service provider schedule.
        The response is either a ServiceProviderScheduleGetEventListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        schedule_key (ScheduleKey):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})


@dataclass(kw_only=True)
class ServiceProviderScheduleGetEventRequest(OCIRequest):
    """Get an event from a service provider schedule.
        The response is either a ServiceProviderScheduleGetEventResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        schedule_key (ScheduleKey):

        event_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    event_name: str = field(metadata={"alias": "eventName"})


@dataclass(kw_only=True)
class ServiceProviderScheduleGetListRequest(OCIRequest):
    """Get the list of a service provider schedules. The list can be filtered by schedule type.
        The response is either a ServiceProviderScheduleGetListResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        schedule_type (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    schedule_type: Optional[str] = field(
        default=None, metadata={"alias": "scheduleType"}
    )


@dataclass(kw_only=True)
class ServiceProviderScheduleModifyEventRequest(OCIRequest):
    """Modify an event of a service provider schedule.
        The response is either a SuccessResponse or an ErrorResponse.
        The startDate element is adjusted to the first occurrence of the recurrent schedule that comes at or after the startDate.
        The endDate element is set to the sum of the adjusted starDate element value and the event duration.

    Attributes:

        service_provider_id (str):

        schedule_key (ScheduleKey):

        event_name (str):

        new_event_name (Optional[str]):

        start_date (Optional[int]):

        all_day_event (Optional[bool]):

        start_time (Optional[HourMinute]):

        end_time (Optional[HourMinute]):

        end_date (Optional[int]):

        recurrence (Optional[Nillable[Recurrence]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    event_name: str = field(metadata={"alias": "eventName"})

    new_event_name: Optional[str] = field(
        default=None, metadata={"alias": "newEventName"}
    )

    start_date: Optional[int] = field(default=None, metadata={"alias": "startDate"})

    all_day_event: Optional[bool] = field(
        default=None, metadata={"alias": "allDayEvent"}
    )

    start_time: Optional[HourMinute] = field(
        default=None, metadata={"alias": "startTime"}
    )

    end_time: Optional[HourMinute] = field(default=None, metadata={"alias": "endTime"})

    end_date: Optional[int] = field(default=None, metadata={"alias": "endDate"})

    recurrence: Optional[Nillable[Recurrence]] = field(
        default=None, metadata={"alias": "recurrence"}
    )

    def __post_init__(self):
        nillable_fields = ["recurrence"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderScheduleModifyRequest(OCIRequest):
    """Modify a service provider schedule.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        schedule_key (ScheduleKey):

        new_schedule_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    new_schedule_name: Optional[str] = field(
        default=None, metadata={"alias": "newScheduleName"}
    )


@dataclass(kw_only=True)
class ServiceProviderServiceGetAuthorizationListRequest(OCIRequest):
    """Requests the service provider's service authorization status.
        The response is either ServiceProviderServiceGetAuthorizationListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderServiceGetAuthorizationRequest(OCIRequest):
    """Requests the service provider's service authorization information for a specific service or service pack.
        The response is either ServiceProviderServiceGetAuthorizationResponse or ErrorResponse.

        The following element is used in AS mode and triggers an ErrorResponse in XS data mode:
          servicePackName

    Attributes:

        service_provider_id (str):

        user_service_name (Optional[str]):

        group_service_name (Optional[str]):

        service_pack_name (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    user_service_name: Optional[str] = field(
        default=None, metadata={"alias": "userServiceName"}
    )

    group_service_name: Optional[str] = field(
        default=None, metadata={"alias": "groupServiceName"}
    )

    service_pack_name: Optional[str] = field(
        default=None, metadata={"alias": "servicePackName"}
    )


@dataclass(kw_only=True)
class ServiceProviderServiceGetUserAssignableListRequest(OCIRequest):
    """Requests the list of all user services assignable to users in the specified service provider.
        The response is either ServiceProviderServiceGetUserAssignableListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderServiceModifyAuthorizationListRequest(OCIRequest):
    """Requests to change the service provider's service authorization status.
        The boolean flags are used to authorize or unauthorize services.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_service_authorization (Optional[List[GroupServiceAuthorization]]):

        user_service_authorization (Optional[List[UserServiceAuthorization]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_service_authorization: Optional[List[GroupServiceAuthorization]] = field(
        default=None, metadata={"alias": "groupServiceAuthorization"}
    )

    user_service_authorization: Optional[List[UserServiceAuthorization]] = field(
        default=None, metadata={"alias": "userServiceAuthorization"}
    )


@dataclass(kw_only=True)
class ServiceProviderServicePackAddRequest(OCIRequest):
    """Request to add a service pack to a service provider.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        service_pack_name (str):

        service_pack_description (Optional[str]):

        is_available_for_use (bool):

        service_pack_quantity (UnboundedPositiveInt):

        service_name (Optional[List[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    service_pack_name: str = field(metadata={"alias": "servicePackName"})

    service_pack_description: Optional[str] = field(
        default=None, metadata={"alias": "servicePackDescription"}
    )

    is_available_for_use: bool = field(metadata={"alias": "isAvailableForUse"})

    service_pack_quantity: UnboundedPositiveInt = field(
        metadata={"alias": "servicePackQuantity"}
    )

    service_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "serviceName"}
    )


@dataclass(kw_only=True)
class ServiceProviderServicePackAddServiceListRequest(OCIRequest):
    """Request to add services to a service pack if the pack has not been authorized to a group.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        service_pack_name (str):

        service_name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    service_pack_name: str = field(metadata={"alias": "servicePackName"})

    service_name: List[str] = field(metadata={"alias": "serviceName"})


@dataclass(kw_only=True)
class ServiceProviderServicePackDeleteRequest(OCIRequest):
    """Request to delete a service pack from a service provider.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        service_pack_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    service_pack_name: str = field(metadata={"alias": "servicePackName"})


@dataclass(kw_only=True)
class ServiceProviderServicePackGetDetailListRequest(OCIRequest):
    """Request to get a service pack details.
        The response is either ServiceProviderServicePackGetDetailListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        service_pack_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    service_pack_name: str = field(metadata={"alias": "servicePackName"})


@dataclass(kw_only=True)
class ServiceProviderServicePackGetListRequest(OCIRequest):
    """Request to get a list of defined service packs for a service provider.
        The response is either ServiceProviderServicePackGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderServicePackGetServiceUsageListRequest(OCIRequest):
    """Request to get the list of service packs containing a specified service.
        The response is either ServiceProviderServicePackGetServiceUsageListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        service_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    service_name: str = field(metadata={"alias": "serviceName"})


@dataclass(kw_only=True)
class ServiceProviderServicePackGetUtilizationListRequest(OCIRequest):
    """Request to get the service pack utilization for a service provider.
        For each service pack, a table of groups utilizing the pack is returned.
        The response is either ServiceProviderServicePackGetUtilizationListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderServicePackMigrationTaskAddRequest21(OCIRequest):
    """Create a service pack migration task.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        task_name (str):

        start_timestamp (str):

        expire_after_num_hours (int):

        max_duration_hours (int):

        send_report_email (bool):

        report_delivery_email_address (Optional[str]):

        abort_on_error (bool):

        abort_error_threshold (Optional[int]):

        report_all_users (bool):

        automatically_increment_service_quantity (bool):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    task_name: str = field(metadata={"alias": "taskName"})

    start_timestamp: str = field(metadata={"alias": "startTimestamp"})

    expire_after_num_hours: int = field(metadata={"alias": "expireAfterNumHours"})

    max_duration_hours: int = field(metadata={"alias": "maxDurationHours"})

    send_report_email: bool = field(metadata={"alias": "sendReportEmail"})

    report_delivery_email_address: Optional[str] = field(
        default=None, metadata={"alias": "reportDeliveryEmailAddress"}
    )

    abort_on_error: bool = field(metadata={"alias": "abortOnError"})

    abort_error_threshold: Optional[int] = field(
        default=None, metadata={"alias": "abortErrorThreshold"}
    )

    report_all_users: bool = field(metadata={"alias": "reportAllUsers"})

    automatically_increment_service_quantity: bool = field(
        metadata={"alias": "automaticallyIncrementServiceQuantity"}
    )


@dataclass(kw_only=True)
class ServiceProviderServicePackMigrationTaskCopyRequest(OCIRequest):
    """Makes a copy of one or more existing service pack migration tasks. A copied task
        can be edited with other commands and scheduled for future execution. The
        name of the new task is chosen automatically. The name will
        be \"Copy (number) of taskName\".
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        task_name (List[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    task_name: List[str] = field(metadata={"alias": "taskName"})


@dataclass(kw_only=True)
class ServiceProviderServicePackMigrationTaskDeleteRequest(OCIRequest):
    """Deletes a service pack migration task. It is not possible to delete a task while it is
        currently executing.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        task_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    task_name: str = field(metadata={"alias": "taskName"})


@dataclass(kw_only=True)
class ServiceProviderServicePackMigrationTaskGetAvailableGroupListRequest(OCIRequest):
    """Requests a list of groups to migrate.
        The response is either ServiceProviderServicePackMigrationTaskGetAvailabeGroupListResponse
        or ErrorResponse.

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_group_name (Optional[List[SearchCriteriaGroupName]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_group_name: Optional[List[SearchCriteriaGroupName]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupName"}
    )


@dataclass(kw_only=True)
class ServiceProviderServicePackMigrationTaskGetListRequest21(OCIRequest):
    """Requests a list of all service pack migration tasks for a service provider.
        The response is either ServiceProviderServicePackMigrationTaskGetListResponse21
        or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderServicePackMigrationTaskGetRequest21(OCIRequest):
    """Requests the details of a specified service pack migration task.
        The response is either ServiceProviderServicePackMigrationTaskGetResponse21
        or ErrorResponse.

    Attributes:

        service_provider_id (str):

        task_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    task_name: str = field(metadata={"alias": "taskName"})


@dataclass(kw_only=True)
class ServiceProviderServicePackMigrationTaskModifyAssignmentListRequest(OCIRequest):
    """Replace the list of services and packs to be assigned to users during the service pack migration.
        Modification is only allowed prior to task execution.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        task_name (str):

        user_service_name_list (Optional[Nillable[ReplacementUserServiceList]]):

        service_pack_name_list (Optional[Nillable[ReplacementServicePackNameList]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    task_name: str = field(metadata={"alias": "taskName"})

    user_service_name_list: Optional[Nillable[ReplacementUserServiceList]] = field(
        default=None, metadata={"alias": "userServiceNameList"}
    )

    service_pack_name_list: Optional[Nillable[ReplacementServicePackNameList]] = field(
        default=None, metadata={"alias": "servicePackNameList"}
    )

    def __post_init__(self):
        nillable_fields = ["user_service_name_list", "service_pack_name_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderServicePackMigrationTaskModifyGroupListRequest(OCIRequest):
    """Replace the list of groups to be migrated for a specified service pack migration task.
        Modification is only allowed prior to task execution.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        task_name (str):

        migrate_all_groups (Optional[bool]):

        group_id_list (Optional[Nillable[object]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    task_name: str = field(metadata={"alias": "taskName"})

    migrate_all_groups: Optional[bool] = field(
        default=None, metadata={"alias": "migrateAllGroups"}
    )

    group_id_list: Optional[Nillable[object]] = field(
        default=None, metadata={"alias": "groupIdList"}
    )

    def __post_init__(self):
        nillable_fields = ["group_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderServicePackMigrationTaskModifyRemovalListRequest(OCIRequest):
    """Replace the list of services and packs to be removed from users during the service pack migration.
        Modification is only allowed prior to task execution.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        task_name (str):

        user_service_name_list (Optional[Nillable[ReplacementUserServiceList]]):

        service_pack_name_list (Optional[Nillable[ReplacementServicePackNameList]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    task_name: str = field(metadata={"alias": "taskName"})

    user_service_name_list: Optional[Nillable[ReplacementUserServiceList]] = field(
        default=None, metadata={"alias": "userServiceNameList"}
    )

    service_pack_name_list: Optional[Nillable[ReplacementServicePackNameList]] = field(
        default=None, metadata={"alias": "servicePackNameList"}
    )

    def __post_init__(self):
        nillable_fields = ["user_service_name_list", "service_pack_name_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderServicePackMigrationTaskModifyRequest(OCIRequest):
    """Modify the properties of a specified service pack migration task.
        Modification is only allowed prior to task execution.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        task_name (str):

        new_task_name (Optional[str]):

        start_timestamp (Optional[str]):

        expire_after_num_hours (Optional[int]):

        max_duration_hours (Optional[int]):

        send_report_email (Optional[bool]):

        report_delivery_email_address (Optional[Nillable[str]]):

        abort_on_error (Optional[bool]):

        abort_error_threshold (Optional[Nillable[int]]):

        report_all_users (Optional[bool]):

        automatically_increment_service_quantity (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    task_name: str = field(metadata={"alias": "taskName"})

    new_task_name: Optional[str] = field(
        default=None, metadata={"alias": "newTaskName"}
    )

    start_timestamp: Optional[str] = field(
        default=None, metadata={"alias": "startTimestamp"}
    )

    expire_after_num_hours: Optional[int] = field(
        default=None, metadata={"alias": "expireAfterNumHours"}
    )

    max_duration_hours: Optional[int] = field(
        default=None, metadata={"alias": "maxDurationHours"}
    )

    send_report_email: Optional[bool] = field(
        default=None, metadata={"alias": "sendReportEmail"}
    )

    report_delivery_email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "reportDeliveryEmailAddress"}
    )

    abort_on_error: Optional[bool] = field(
        default=None, metadata={"alias": "abortOnError"}
    )

    abort_error_threshold: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "abortErrorThreshold"}
    )

    report_all_users: Optional[bool] = field(
        default=None, metadata={"alias": "reportAllUsers"}
    )

    automatically_increment_service_quantity: Optional[bool] = field(
        default=None, metadata={"alias": "automaticallyIncrementServiceQuantity"}
    )

    def __post_init__(self):
        nillable_fields = ["report_delivery_email_address", "abort_error_threshold"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderServicePackMigrationTaskModifyUserSelectionRequest(OCIRequest):
    """Replace the list of services and packs used to select which users will be migrated.
        Modification is only allowed prior to task execution.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        task_name (str):

        user_selection_type (Optional[str]):

        user_service_name_list (Optional[Nillable[ReplacementUserServiceList]]):

        service_pack_name_list (Optional[Nillable[ReplacementServicePackNameList]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    task_name: str = field(metadata={"alias": "taskName"})

    user_selection_type: Optional[str] = field(
        default=None, metadata={"alias": "userSelectionType"}
    )

    user_service_name_list: Optional[Nillable[ReplacementUserServiceList]] = field(
        default=None, metadata={"alias": "userServiceNameList"}
    )

    service_pack_name_list: Optional[Nillable[ReplacementServicePackNameList]] = field(
        default=None, metadata={"alias": "servicePackNameList"}
    )

    def __post_init__(self):
        nillable_fields = ["user_service_name_list", "service_pack_name_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderServicePackMigrationTaskTerminateRequest(OCIRequest):
    """Terminates a service pack migration task that is currently executing.
        Modification is only allowed prior to task execution.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        task_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    task_name: str = field(metadata={"alias": "taskName"})


@dataclass(kw_only=True)
class ServiceProviderServicePackModifyRequest(OCIRequest):
    """Requests to modify a service pack for a service provider.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        service_pack_name (str):

        new_service_pack_name (Optional[str]):

        service_pack_description (Optional[Nillable[str]]):

        is_available_for_use (Optional[bool]):

        service_pack_quantity (Optional[UnboundedPositiveInt]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    service_pack_name: str = field(metadata={"alias": "servicePackName"})

    new_service_pack_name: Optional[str] = field(
        default=None, metadata={"alias": "newServicePackName"}
    )

    service_pack_description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "servicePackDescription"}
    )

    is_available_for_use: Optional[bool] = field(
        default=None, metadata={"alias": "isAvailableForUse"}
    )

    service_pack_quantity: Optional[UnboundedPositiveInt] = field(
        default=None, metadata={"alias": "servicePackQuantity"}
    )

    def __post_init__(self):
        nillable_fields = ["service_pack_description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderServicePhoneNumberLookupRequest(OCIRequest):
    """Lookup if the given number is defined in the specified service in the service provider.
        The response is ServiceProviderServicePhoneNumberLookupResponse.

    Attributes:

        service_provider_id (str):

        service_type (str):

        phone_number (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    service_type: str = field(metadata={"alias": "serviceType"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class ServiceProviderSessionAdmissionControlGetRequest(OCIRequest):
    """Get the session admission control capacity for the service provider.
        The response is either a ServiceProviderSessionAdmissionControlGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderSessionAdmissionControlModifyRequest(OCIRequest):
    """Request to modify session admission control capacity for the service provider.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        restrict_aggregate_sessions (Optional[bool]):

        max_sessions (Optional[Nillable[int]]):

        max_user_originating_sessions (Optional[Nillable[int]]):

        max_user_terminating_sessions (Optional[Nillable[int]]):

        count_intra_service_provider_sessions (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    restrict_aggregate_sessions: Optional[bool] = field(
        default=None, metadata={"alias": "restrictAggregateSessions"}
    )

    max_sessions: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxSessions"}
    )

    max_user_originating_sessions: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxUserOriginatingSessions"}
    )

    max_user_terminating_sessions: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "maxUserTerminatingSessions"}
    )

    count_intra_service_provider_sessions: Optional[bool] = field(
        default=None, metadata={"alias": "countIntraServiceProviderSessions"}
    )

    def __post_init__(self):
        nillable_fields = [
            "max_sessions",
            "max_user_originating_sessions",
            "max_user_terminating_sessions",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderSessionAdmissionControlWhiteListGetRequest(OCIRequest):
    """Request to get the Service Provider Session Admission White List information.
        The response is either a ServiceProviderSessionAdmissionControlWhiteListGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderSessionAdmissionControlWhiteListModifyRequest(OCIRequest):
    """Modify the Service Provider Session Admission Control White List information.
        The number of digit pattern entries is limited to 100.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        add_match_digit_pattern (Optional[List[str]]):

        delete_match_digit_pattern (Optional[List[str]]):

        enable_white_list (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    add_match_digit_pattern: Optional[List[str]] = field(
        default=None, metadata={"alias": "addMatchDigitPattern"}
    )

    delete_match_digit_pattern: Optional[List[str]] = field(
        default=None, metadata={"alias": "deleteMatchDigitPattern"}
    )

    enable_white_list: Optional[bool] = field(
        default=None, metadata={"alias": "enableWhiteList"}
    )


@dataclass(kw_only=True)
class ServiceProviderStirShakenGetRequest23V2(OCIRequest):
    """Get service provider Stir Shaken service settings.
        The response is either ServiceProviderStirShakenGetResponse23V2 or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderStirShakenModifyRequest(OCIRequest):
    """Modify service provider Stir Shaken service settings.

    Attributes:

        service_provider_id (str):

        use_parent_level_settings (Optional[bool]):

        signing_policy (Optional[str]):

        tagging_policy (Optional[str]):

        signing_service_url (Optional[Nillable[str]]):

        tag_from_or_pai (Optional[str]):

        verstat_tag (Optional[str]):

        use_os_value_for_orig_id (Optional[bool]):

        orig_uuid (Optional[Nillable[str]]):

        attestation_level (Optional[str]):

        enable_verification (Optional[bool]):

        verification_service_url (Optional[Nillable[str]]):

        verification_error_handling (Optional[str]):

        proxy_verstat_to_cnam_subscribe (Optional[bool]):

        use_unknown_headers_from_cnam_notify (Optional[bool]):

        enable_signing_for_unscreened_trunk_group_originations (Optional[bool]):

        enable_tagging_for_unscreened_trunk_group_originations (Optional[bool]):

        unscreened_trunk_group_origination_attestation_level (Optional[str]):

        include_tagged_headers_to_access_side (Optional[bool]):

        proxy_identity_header_to_access_side (Optional[bool]):

        check_directory_numbers_for_attestation (Optional[bool]):

        match_unassigned_numbers_only (Optional[bool]):

        enable_tagging_for_redirected_calls (Optional[bool]):

        prefer_ingress_tagging (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    use_parent_level_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useParentLevelSettings"}
    )

    signing_policy: Optional[str] = field(
        default=None, metadata={"alias": "signingPolicy"}
    )

    tagging_policy: Optional[str] = field(
        default=None, metadata={"alias": "taggingPolicy"}
    )

    signing_service_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "signingServiceURL"}
    )

    tag_from_or_pai: Optional[str] = field(
        default=None, metadata={"alias": "tagFromOrPAI"}
    )

    verstat_tag: Optional[str] = field(default=None, metadata={"alias": "verstatTag"})

    use_os_value_for_orig_id: Optional[bool] = field(
        default=None, metadata={"alias": "useOSValueForOrigId"}
    )

    orig_uuid: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "origUUID"}
    )

    attestation_level: Optional[str] = field(
        default=None, metadata={"alias": "attestationLevel"}
    )

    enable_verification: Optional[bool] = field(
        default=None, metadata={"alias": "enableVerification"}
    )

    verification_service_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "verificationServiceURL"}
    )

    verification_error_handling: Optional[str] = field(
        default=None, metadata={"alias": "verificationErrorHandling"}
    )

    proxy_verstat_to_cnam_subscribe: Optional[bool] = field(
        default=None, metadata={"alias": "proxyVerstatToCNAMSubscribe"}
    )

    use_unknown_headers_from_cnam_notify: Optional[bool] = field(
        default=None, metadata={"alias": "useUnknownHeadersFromCNAMNotify"}
    )

    enable_signing_for_unscreened_trunk_group_originations: Optional[bool] = field(
        default=None,
        metadata={"alias": "enableSigningForUnscreenedTrunkGroupOriginations"},
    )

    enable_tagging_for_unscreened_trunk_group_originations: Optional[bool] = field(
        default=None,
        metadata={"alias": "enableTaggingForUnscreenedTrunkGroupOriginations"},
    )

    unscreened_trunk_group_origination_attestation_level: Optional[str] = field(
        default=None,
        metadata={"alias": "unscreenedTrunkGroupOriginationAttestationLevel"},
    )

    include_tagged_headers_to_access_side: Optional[bool] = field(
        default=None, metadata={"alias": "includeTaggedHeadersToAccessSide"}
    )

    proxy_identity_header_to_access_side: Optional[bool] = field(
        default=None, metadata={"alias": "proxyIdentityHeaderToAccessSide"}
    )

    check_directory_numbers_for_attestation: Optional[bool] = field(
        default=None, metadata={"alias": "checkDirectoryNumbersForAttestation"}
    )

    match_unassigned_numbers_only: Optional[bool] = field(
        default=None, metadata={"alias": "matchUnassignedNumbersOnly"}
    )

    enable_tagging_for_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "enableTaggingForRedirectedCalls"}
    )

    prefer_ingress_tagging: Optional[bool] = field(
        default=None, metadata={"alias": "preferIngressTagging"}
    )

    def __post_init__(self):
        nillable_fields = [
            "signing_service_url",
            "orig_uuid",
            "verification_service_url",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderTemplateOnlyDeviceFileGetListRequest(OCIRequest):
    """Request to get the list of template files used to support a VDM device defined at service provider level.
        The response is either ServiceProviderTemplateOnlyDeviceFileGetListResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class ServiceProviderThirdPartyEmergencyCallingGetRequest22(OCIRequest):
    """Get the third-party emergency call service settings for the service provider.
        The response is either a ServiceProviderThirdPartyEmergencyCallingGetResponse22 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderThirdPartyEmergencyCallingModifyRequest(OCIRequest):
    """Modify the third-party emergency call service settings for the service provider.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        allow_activation (Optional[bool]):

        customer_id (Optional[Nillable[str]]):

        secret_key (Optional[Nillable[str]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    allow_activation: Optional[bool] = field(
        default=None, metadata={"alias": "allowActivation"}
    )

    customer_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "customerId"}
    )

    secret_key: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "secretKey"}
    )

    def __post_init__(self):
        nillable_fields = ["customer_id", "secret_key"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderTrunkGroupGetRequest23(OCIRequest):
    """Get the maximum and bursting maximum permissible active Trunk Group calls for the service provider.
        The response is either a ServiceProviderTrunkGroupGetResponse23 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderTrunkGroupModifyRequest(OCIRequest):
    """Modify the maximum and bursting maximum permissible active Trunk Group calls for the service provider.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        max_active_calls (Optional[UnboundedNonNegativeInt]):

        bursting_max_active_calls (Optional[UnboundedNonNegativeInt]):

        number_of_bursting_btl_us (Optional[UnboundedNonNegativeInt]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    max_active_calls: Optional[UnboundedNonNegativeInt] = field(
        default=None, metadata={"alias": "maxActiveCalls"}
    )

    bursting_max_active_calls: Optional[UnboundedNonNegativeInt] = field(
        default=None, metadata={"alias": "burstingMaxActiveCalls"}
    )

    number_of_bursting_btl_us: Optional[UnboundedNonNegativeInt] = field(
        default=None, metadata={"alias": "numberOfBurstingBTLUs"}
    )


@dataclass(kw_only=True)
class ServiceProviderVisualDeviceManagementGetDeviceInfoRequest(OCIRequest):
    """Get the information for a specified device supporting visual device management.
        The response is either a ServiceProviderVisualDeviceManagementGetDeviceInfoResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        device_name (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class ServiceProviderVoiceMessagingGroupGetRequest(OCIRequest):
    """Requests the service provider's or enterprise's voice messaging settings.
        The response is either ServiceProviderVoiceMessagingGroupGetResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderVoiceMessagingGroupGetVoicePortalBrandingRequest16(OCIRequest):
    """Get the service provider's voice portal branding settings.
        The response is either a ServiceProviderVoiceMessagingGroupGetVoicePortalBrandingResponse16 or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderVoiceMessagingGroupGetVoicePortalRequest(OCIRequest):
    """Requests the service provider's or enterprise's voice portal settings.
        The response is either ServiceProviderVoiceMessagingGroupGetVoicePortalResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderVoiceMessagingGroupModifyRequest(OCIRequest):
    """Request to modify a service provider's or enterprise's voice messaging settings.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        delivery_from_address (Optional[Nillable[str]]):

        notification_from_address (Optional[Nillable[str]]):

        voice_portal_lockout_from_address (Optional[Nillable[str]]):

        use_system_default_delivery_from_address (Optional[bool]):

        use_system_default_notification_from_address (Optional[bool]):

        use_system_default_voice_portal_lockout_from_address (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    delivery_from_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deliveryFromAddress"}
    )

    notification_from_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "notificationFromAddress"}
    )

    voice_portal_lockout_from_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "voicePortalLockoutFromAddress"}
    )

    use_system_default_delivery_from_address: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemDefaultDeliveryFromAddress"}
    )

    use_system_default_notification_from_address: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemDefaultNotificationFromAddress"}
    )

    use_system_default_voice_portal_lockout_from_address: Optional[bool] = field(
        default=None,
        metadata={"alias": "useSystemDefaultVoicePortalLockoutFromAddress"},
    )

    def __post_init__(self):
        nillable_fields = [
            "delivery_from_address",
            "notification_from_address",
            "voice_portal_lockout_from_address",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class ServiceProviderVoiceMessagingGroupModifyVoicePortalBrandingRequest16(OCIRequest):
    """Modify the service provider's voice portal branding settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        voice_portal_greeting_selection (Optional[str]):

        voice_portal_greeting_file (Optional[LabeledMediaFileResource]):

        voice_messaging_greeting_selection (Optional[str]):

        voice_messaging_greeting_file (Optional[LabeledMediaFileResource]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    voice_portal_greeting_selection: Optional[str] = field(
        default=None, metadata={"alias": "voicePortalGreetingSelection"}
    )

    voice_portal_greeting_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "voicePortalGreetingFile"}
    )

    voice_messaging_greeting_selection: Optional[str] = field(
        default=None, metadata={"alias": "voiceMessagingGreetingSelection"}
    )

    voice_messaging_greeting_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "voiceMessagingGreetingFile"}
    )


@dataclass(kw_only=True)
class ServiceProviderVoiceMessagingGroupModifyVoicePortalRequest(OCIRequest):
    """Request to change the service provider's or enterprise's voice portal settings.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        voice_portal_scope (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    voice_portal_scope: Optional[str] = field(
        default=None, metadata={"alias": "voicePortalScope"}
    )


@dataclass(kw_only=True)
class ServiceProviderXsiPolicyProfileAssignListRequest(OCIRequest):
    """Assign a list of group and user Xsi policy profile to a service provider.
        At service provider level, only one service provider Xsi policy profile can be assigned to service provider.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        sp_xsi_policy_profile (Optional[str]):

        group_xsi_policy_profile (Optional[XsiPolicyProfileAssignEntry]):

        user_xsi_policy_profile (Optional[XsiPolicyProfileAssignEntry]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    sp_xsi_policy_profile: Optional[str] = field(
        default=None, metadata={"alias": "spXsiPolicyProfile"}
    )

    group_xsi_policy_profile: Optional[XsiPolicyProfileAssignEntry] = field(
        default=None, metadata={"alias": "groupXsiPolicyProfile"}
    )

    user_xsi_policy_profile: Optional[XsiPolicyProfileAssignEntry] = field(
        default=None, metadata={"alias": "userXsiPolicyProfile"}
    )


@dataclass(kw_only=True)
class ServiceProviderXsiPolicyProfileGetAssignedGroupListRequest(OCIRequest):
    """Get a list of group within a service provider that have a given
        group Xsi policy profile assigned.
        The response is either a ServiceProviderXsiPolicyProfileGetAssignedGroupListResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        xsi_policy_profile (XsiPolicyProfileKey):

        response_size_limit (Optional[int]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_group_name (Optional[List[SearchCriteriaGroupName]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    xsi_policy_profile: XsiPolicyProfileKey = field(
        metadata={"alias": "xsiPolicyProfile"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_group_name: Optional[List[SearchCriteriaGroupName]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupName"}
    )


@dataclass(kw_only=True)
class ServiceProviderXsiPolicyProfileGetAssignedListRequest(OCIRequest):
    """Get a list of Xsi policy profile assigned.
        The response is either a ServiceProviderXsiPolicyProfileGetAssignedListResponse
        or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        level (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    level: Optional[str] = field(default=None, metadata={"alias": "level"})


@dataclass(kw_only=True)
class ServiceProviderXsiPolicyProfileModifyDefaultRequest(OCIRequest):
    """Modifies the default Xsi policy profile for a service provider.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_default_xsi_policy_profile (Optional[str]):

        user_default_xsi_policy_profile (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_default_xsi_policy_profile: Optional[str] = field(
        default=None, metadata={"alias": "groupDefaultXsiPolicyProfile"}
    )

    user_default_xsi_policy_profile: Optional[str] = field(
        default=None, metadata={"alias": "userDefaultXsiPolicyProfile"}
    )


@dataclass(kw_only=True)
class ServiceProviderXsiPolicyProfileUnassignListRequest(OCIRequest):
    """Unassign a list of Xsi policy profile.
        Unassign a list of Xsi policy profile.
        Only group and user level Xsi policy profile can be unassigned.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_xsi_policy_profile (Optional[XsiPolicyProfileUnassignEntry]):

        user_xsi_policy_profile (Optional[XsiPolicyProfileUnassignEntry]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_xsi_policy_profile: Optional[XsiPolicyProfileUnassignEntry] = field(
        default=None, metadata={"alias": "groupXsiPolicyProfile"}
    )

    user_xsi_policy_profile: Optional[XsiPolicyProfileUnassignEntry] = field(
        default=None, metadata={"alias": "userXsiPolicyProfile"}
    )


@dataclass(kw_only=True)
class ServiceProviderZoneCallingRestrictionsGetRequest(OCIRequest):
    """Gets the Service Provider/Enterprise level Zone Calling Restrictions Policies.
        The response is ServiceProviderZoneCallingRestrictionsGetResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})


@dataclass(kw_only=True)
class ServiceProviderZoneCallingRestrictionsModifyRequest(OCIRequest):
    """Modifies the Service Provider/Enterprise level Zone Calling Restrictions Policies.
        The response is SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        enable_zone_calling_restrictions (Optional[bool]):

        enable_origination_roaming_restrictions (Optional[bool]):

        enable_emergency_origination_roaming_restrictions (Optional[bool]):

        enable_termination_roaming_restrictions (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    enable_zone_calling_restrictions: Optional[bool] = field(
        default=None, metadata={"alias": "enableZoneCallingRestrictions"}
    )

    enable_origination_roaming_restrictions: Optional[bool] = field(
        default=None, metadata={"alias": "enableOriginationRoamingRestrictions"}
    )

    enable_emergency_origination_roaming_restrictions: Optional[bool] = field(
        default=None,
        metadata={"alias": "enableEmergencyOriginationRoamingRestrictions"},
    )

    enable_termination_roaming_restrictions: Optional[bool] = field(
        default=None, metadata={"alias": "enableTerminationRoamingRestrictions"}
    )


@dataclass(kw_only=True)
class SystemASRParametersGetRequest23(OCIRequest):
    """Request to get the list of Application Server Registration system parameters.
        The response is either SystemASRParametersGetResponse23 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemASRParametersModifyRequest14sp7(OCIRequest):
    """Request to modify Application Server Registration system parameters.
        The response is either SuccessResponse or ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          enableCustomMessageControl
          customNumberOfUsersPerMessage
          customMessageIntervalMilliseconds

    Attributes:

        max_transmissions (Optional[int]):

        retransmission_delay_milli_seconds (Optional[int]):

        listening_port (Optional[int]):

        enable_custom_message_control (Optional[bool]):

        custom_number_of_users_per_message (Optional[int]):

        custom_message_interval_milliseconds (Optional[int]):

    """

    max_transmissions: Optional[int] = field(
        default=None, metadata={"alias": "maxTransmissions"}
    )

    retransmission_delay_milli_seconds: Optional[int] = field(
        default=None, metadata={"alias": "retransmissionDelayMilliSeconds"}
    )

    listening_port: Optional[int] = field(
        default=None, metadata={"alias": "listeningPort"}
    )

    enable_custom_message_control: Optional[bool] = field(
        default=None, metadata={"alias": "enableCustomMessageControl"}
    )

    custom_number_of_users_per_message: Optional[int] = field(
        default=None, metadata={"alias": "customNumberOfUsersPerMessage"}
    )

    custom_message_interval_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "customMessageIntervalMilliseconds"}
    )


@dataclass(kw_only=True)
class SystemAccessDeviceAddRequest22V3(OCIRequest):
    """Request to add a system-level access device.
        The response is either SuccessResponse or ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          isWebexTeamsDevice
          defaultPathHeader
          deviceExternalId
          deviceIPEI

    Attributes:

        device_name (Optional[str]):

        device_external_id (Optional[str]):

        device_type (str):

        protocol (Optional[str]):

        net_address (Optional[str]):

        port (Optional[int]):

        outbound_proxy_server_net_address (Optional[str]):

        stun_server_net_address (Optional[str]):

        mac_address (Optional[str]):

        serial_number (Optional[str]):

        description (Optional[str]):

        physical_location (Optional[str]):

        transport_protocol (Optional[str]):

        use_custom_user_name_password (Optional[bool]):

        access_device_credentials (Optional[DeviceManagementUserNamePassword16]):

        is_webex_teams_device (Optional[bool]):

        default_path_header (Optional[str]):

        device_ipei (Optional[str]):

    """

    device_name: Optional[str] = field(default=None, metadata={"alias": "deviceName"})

    device_external_id: Optional[str] = field(
        default=None, metadata={"alias": "deviceExternalId"}
    )

    device_type: str = field(metadata={"alias": "deviceType"})

    protocol: Optional[str] = field(default=None, metadata={"alias": "protocol"})

    net_address: Optional[str] = field(default=None, metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    outbound_proxy_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "outboundProxyServerNetAddress"}
    )

    stun_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "stunServerNetAddress"}
    )

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})

    serial_number: Optional[str] = field(
        default=None, metadata={"alias": "serialNumber"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    use_custom_user_name_password: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomUserNamePassword"}
    )

    access_device_credentials: Optional[DeviceManagementUserNamePassword16] = field(
        default=None, metadata={"alias": "accessDeviceCredentials"}
    )

    is_webex_teams_device: Optional[bool] = field(
        default=None, metadata={"alias": "isWebexTeamsDevice"}
    )

    default_path_header: Optional[str] = field(
        default=None, metadata={"alias": "defaultPathHeader"}
    )

    device_ipei: Optional[str] = field(default=None, metadata={"alias": "deviceIPEI"})


@dataclass(kw_only=True)
class SystemAccessDeviceCustomTagAddOrModifyListRequest(OCIRequest):
    """Request to add or modify a list of static configuration tag for a system access
        device.  If the tag does not exist, it is added.  If the tag exists, its
        value is updated.

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_name (str):

        tag (List[DeviceManagementTag]):

    """

    device_name: str = field(metadata={"alias": "deviceName"})

    tag: List[DeviceManagementTag] = field(metadata={"alias": "tag"})


@dataclass(kw_only=True)
class SystemAccessDeviceCustomTagAddRequest(OCIRequest):
    """Request to add a static configuration tag for a system access device.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_name (str):

        tag_name (str):

        tag_value (Optional[str]):

    """

    device_name: str = field(metadata={"alias": "deviceName"})

    tag_name: str = field(metadata={"alias": "tagName"})

    tag_value: Optional[str] = field(default=None, metadata={"alias": "tagValue"})


@dataclass(kw_only=True)
class SystemAccessDeviceCustomTagDeleteListRequest(OCIRequest):
    """Request to delete static configuration tags for a system access device.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_name (str):

        tag_name (List[str]):

    """

    device_name: str = field(metadata={"alias": "deviceName"})

    tag_name: List[str] = field(metadata={"alias": "tagName"})


@dataclass(kw_only=True)
class SystemAccessDeviceCustomTagGetListRequest(OCIRequest):
    """Request to get the list of custom configuration tags managed by the Device Management System, on a per-device profile basis.
        The response is either SystemAccessDeviceCustomTagGetListResponse or ErrorResponse.

    Attributes:

        device_name (str):

    """

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class SystemAccessDeviceCustomTagModifyRequest(OCIRequest):
    """Request to modify a static configuration tag for a system access device.

        The following elements are only used in XS data mode and ignored in AS data mode:
          tagValueToEncrypt

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_name (str):

        tag_name (str):

        tag_value (Optional[Nillable[str]]):

        tag_value_to_encrypt (Optional[Nillable[str]]):

    """

    device_name: str = field(metadata={"alias": "deviceName"})

    tag_name: str = field(metadata={"alias": "tagName"})

    tag_value: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "tagValue"}
    )

    tag_value_to_encrypt: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "tagValueToEncrypt"}
    )

    def __post_init__(self):
        nillable_fields = ["tag_value", "tag_value_to_encrypt"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemAccessDeviceDeleteRequest(OCIRequest):
    """Request to delete a specified system access device.

        The following elements are only used in AS data mode and ignored in XS data mode:
          deviceExternalId

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        device_name (Optional[str]):

        device_external_id (Optional[str]):

    """

    device_name: Optional[str] = field(default=None, metadata={"alias": "deviceName"})

    device_external_id: Optional[str] = field(
        default=None, metadata={"alias": "deviceExternalId"}
    )


@dataclass(kw_only=True)
class SystemAccessDeviceDeviceActivationGetRequest(OCIRequest):
    """Requests the activation information for a device configured at System level.
        Returns a SystemAccessDeviceDeviceActivationGetResponse or ErrorResponse.

    Attributes:

        device_name (str):

    """

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class SystemAccessDeviceDeviceActivationModifyRequest(OCIRequest):
    """Activates or deactivates a device configured at the System level. It is only possible for this request to
        activate a device which is deactivated. Trying to activate a device in the activating state will result in an error response
        since only the DAS is allowed to execute this operation.
        Returns a SuccessResponse or ErrorResponse.

    Attributes:

        device_name (str):

        activate_device (bool):

    """

    device_name: str = field(metadata={"alias": "deviceName"})

    activate_device: bool = field(metadata={"alias": "activateDevice"})


@dataclass(kw_only=True)
class SystemAccessDeviceFileGetListRequest14sp8(OCIRequest):
    """Request to get the list of device files managed by the Device Management System, on a per-device profile basis.
        The response is either SystemAccessDeviceFileGetListResponse14sp8 or ErrorResponse.

    Attributes:

        device_name (str):

    """

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class SystemAccessDeviceFileGetRequest20(OCIRequest):
    """Request to get a device profile file.
        The response is either SystemAccessDeviceFileGetResponse20 or ErrorResponse.

    Attributes:

        device_name (str):

        file_format (str):

    """

    device_name: str = field(metadata={"alias": "deviceName"})

    file_format: str = field(metadata={"alias": "fileFormat"})


@dataclass(kw_only=True)
class SystemAccessDeviceFileModifyRequest14sp8(OCIRequest):
    """Request to modify a specified system access device file.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_name (str):

        file_format (str):

        file_source (Optional[str]):

        upload_file (Optional[FileResource]):

        extended_capture_enabled (Optional[bool]):

    """

    device_name: str = field(metadata={"alias": "deviceName"})

    file_format: str = field(metadata={"alias": "fileFormat"})

    file_source: Optional[str] = field(default=None, metadata={"alias": "fileSource"})

    upload_file: Optional[FileResource] = field(
        default=None, metadata={"alias": "uploadFile"}
    )

    extended_capture_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "extendedCaptureEnabled"}
    )


@dataclass(kw_only=True)
class SystemAccessDeviceGenerateActivationCodeRequest(OCIRequest):
    """Requests a new activation code for a device configured at the System level.
        Returns a SuccessResponse or ErrorResponse.

    Attributes:

        device_name (str):

    """

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class SystemAccessDeviceGetAllRequest(OCIRequest):
    """Requests the list of all access devices in the entire system.
        Prior to release 14, this functionality was provided with the SystemAccessDeviceGetListRequest14.
        If reseller administrator sends the request, searchCriteriaResellerId is ignored. All the device
        profiles in the administrator's reseller meeting the search criteria are returned.

        The response is either SystemAccessDeviceGetAllResponse or ErrorResponse.

        The following data elements are only used in AS data mode:
          searchCriteriaResellerId

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_device_name (Optional[List[SearchCriteriaDeviceName]]):

        search_criteria_device_mac_address (Optional[List[SearchCriteriaDeviceMACAddress]]):

        search_criteria_device_net_address (Optional[List[SearchCriteriaDeviceNetAddress]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_exact_device_type (Optional[SearchCriteriaExactDeviceType]):

        search_criteria_exact_device_service_provider (Optional[SearchCriteriaExactDeviceServiceProvider]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_reseller_id (Optional[List[SearchCriteriaResellerId]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_device_name: Optional[List[SearchCriteriaDeviceName]] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceName"}
    )

    search_criteria_device_mac_address: Optional[
        List[SearchCriteriaDeviceMACAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceMACAddress"})

    search_criteria_device_net_address: Optional[
        List[SearchCriteriaDeviceNetAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceNetAddress"})

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_exact_device_type: Optional[SearchCriteriaExactDeviceType] = field(
        default=None, metadata={"alias": "searchCriteriaExactDeviceType"}
    )

    search_criteria_exact_device_service_provider: Optional[
        SearchCriteriaExactDeviceServiceProvider
    ] = field(
        default=None, metadata={"alias": "searchCriteriaExactDeviceServiceProvider"}
    )

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_reseller_id: Optional[List[SearchCriteriaResellerId]] = field(
        default=None, metadata={"alias": "searchCriteriaResellerId"}
    )


@dataclass(kw_only=True)
class SystemAccessDeviceGetAvailableCustomTagListRequest(OCIRequest):
    """Get the list of all available custom tags managed by the Device Management System, on a per-device profile basis.
        The response is either SystemAccessDeviceGetAvailableCustomTagListResponse or ErrorResponse.
        The following elements are used in AS mode and ignored in XS data mode:
          tagSetName

    Attributes:

        device_name (str):

        tag_set_name (Optional[str]):

    """

    device_name: str = field(metadata={"alias": "deviceName"})

    tag_set_name: Optional[str] = field(default=None, metadata={"alias": "tagSetName"})


@dataclass(kw_only=True)
class SystemAccessDeviceGetLinkedLeafDeviceListRequest22(OCIRequest):
    """Requests the list of linked leaf devices for the system level tree device passed in the request.
        A tree device is a device associated with a device type that has the option
        supportLinks set to \"Support Links from Devices\". Many leaf devices can be linked to it.
        A leaf device is a device associated with a device type that has the option
        supportLinks set to \"Support Link to Device\" or \"Support Link to Device and User\".  It can
        be linked to only one tree device.
        The list includes devices created at the system, service provider, and group levels.
        If the leafDeviceCategory is not set in the request, then linked leaf devices of all categories are requested, otherwise only the linked leaf devices of the specified category are requested.
        The category values are: \"Handset\", \"Base Station\", \"All\".

        The response is either SystemAccessDeviceGetLinkedLeafDeviceListResponse22 or
        ErrorResponse.

    Attributes:

        device_name (str):

        leaf_device_category (Optional[str]):

    """

    device_name: str = field(metadata={"alias": "deviceName"})

    leaf_device_category: Optional[str] = field(
        default=None, metadata={"alias": "leafDeviceCategory"}
    )


@dataclass(kw_only=True)
class SystemAccessDeviceGetLinkedTreeDeviceRequest(OCIRequest):
    """Requests the tree device linked with the system level leaf device passed in the request.
        A tree device is a device associated with a device type that has the option
        supportLinks set to \"Support Links from Devices\". Many leaf devices can be linked to it.
        A leaf device is a device associated with a device type that has the option
        supportLinks set to \"Support Link to Device\" or \"Support Link to Device and User\".  It can
        be linked to only one tree device.

        The response is either SystemAccessDeviceGetLinkedTreeDeviceResponse or
        ErrorResponse.

    Attributes:

        device_name (str):

    """

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class SystemAccessDeviceGetListRequest14(OCIRequest):
    """Requests the list of access devices defined at the System-level.
        Prior to release 14, this command requested a list of all devices in the entire system. That
        functionality is now moved to the SystemAccessDeviceGetAllRequest.
        The response is either SystemAccessDeviceGetListResponse14 or ErrorResponse.

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_device_name (Optional[List[SearchCriteriaDeviceName]]):

        search_criteria_device_mac_address (Optional[List[SearchCriteriaDeviceMACAddress]]):

        search_criteria_device_net_address (Optional[List[SearchCriteriaDeviceNetAddress]]):

        search_criteria_exact_device_type (Optional[SearchCriteriaExactDeviceType]):

        search_criteria_access_device_version (Optional[List[SearchCriteriaAccessDeviceVersion]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_device_name: Optional[List[SearchCriteriaDeviceName]] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceName"}
    )

    search_criteria_device_mac_address: Optional[
        List[SearchCriteriaDeviceMACAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceMACAddress"})

    search_criteria_device_net_address: Optional[
        List[SearchCriteriaDeviceNetAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceNetAddress"})

    search_criteria_exact_device_type: Optional[SearchCriteriaExactDeviceType] = field(
        default=None, metadata={"alias": "searchCriteriaExactDeviceType"}
    )

    search_criteria_access_device_version: Optional[
        List[SearchCriteriaAccessDeviceVersion]
    ] = field(default=None, metadata={"alias": "searchCriteriaAccessDeviceVersion"})


@dataclass(kw_only=True)
class SystemAccessDeviceGetNativeTagsWithLogicListRequest(OCIRequest):
    """Get the list of all native tags with logic managed by the Device Management System, on a per-device profile basis.
        The response is either SystemAccessDeviceGetNativeTagsWithLogicListResponse or ErrorResponse.

    Attributes:

        device_name (str):

    """

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class SystemAccessDeviceGetPagedSortedListRequest(OCIRequest):
    """Requests the list of system-level access devices.
        The response is either SystemAccessDeviceGetPagedSortedListResponse or ErrorResponse.
        If no sortOrder is included, the response is sorted by Device Name ascending
        by default.  If the responsePagingControl element is not provided, the paging startIndex
        will be set to 1 by default, and the responsePageSize will be set to the maximum
        responsePageSize by default.
        Multiple search criteria are logically ANDed together unless the
        searchCriteriaModeOr option is included. Then the search criteria are logically
        ORed together.
        The getVisualDeviceManagementAPIDevicesOnly element can only be set when CloudPBX is licenced.
        If the getVisualDeviceManagementAPIDevicesOnly element is not set, all devices are returned with Visual Device Management API flag set to empty.
        If the getVisualDeviceManagementAPIDevicesOnly element is set to true, only SIP devices supporting Visual Device Management API are returned.
        If the getVisualDeviceManagementAPIDevicesOnly element is set to false, all SIP devices are returned with their current Visual Device Management API flag value.

    Attributes:

        response_paging_control (Optional[ResponsePagingControl]):

        sort_by_device_name (Optional[SortByDeviceName]):

        sort_by_device_type (Optional[SortByDeviceType]):

        sort_by_device_net_address (Optional[SortByDeviceNetAddress]):

        sort_by_device_mac_address (Optional[SortByDeviceMACAddress]):

        search_criteria_device_name (Optional[List[SearchCriteriaDeviceName]]):

        search_criteria_device_mac_address (Optional[List[SearchCriteriaDeviceMACAddress]]):

        search_criteria_device_net_address (Optional[List[SearchCriteriaDeviceNetAddress]]):

        search_criteria_exact_device_type (Optional[List[SearchCriteriaExactDeviceType]]):

        search_criteria_access_device_version (Optional[List[SearchCriteriaAccessDeviceVersion]]):

        search_criteria_mode_or (Optional[bool]):

        get_visual_device_management_api_devices_only (Optional[bool]):

    """

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_by_device_name: Optional[SortByDeviceName] = field(
        default=None, metadata={"alias": "sortByDeviceName"}
    )

    sort_by_device_type: Optional[SortByDeviceType] = field(
        default=None, metadata={"alias": "sortByDeviceType"}
    )

    sort_by_device_net_address: Optional[SortByDeviceNetAddress] = field(
        default=None, metadata={"alias": "sortByDeviceNetAddress"}
    )

    sort_by_device_mac_address: Optional[SortByDeviceMACAddress] = field(
        default=None, metadata={"alias": "sortByDeviceMACAddress"}
    )

    search_criteria_device_name: Optional[List[SearchCriteriaDeviceName]] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceName"}
    )

    search_criteria_device_mac_address: Optional[
        List[SearchCriteriaDeviceMACAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceMACAddress"})

    search_criteria_device_net_address: Optional[
        List[SearchCriteriaDeviceNetAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceNetAddress"})

    search_criteria_exact_device_type: Optional[List[SearchCriteriaExactDeviceType]] = (
        field(default=None, metadata={"alias": "searchCriteriaExactDeviceType"})
    )

    search_criteria_access_device_version: Optional[
        List[SearchCriteriaAccessDeviceVersion]
    ] = field(default=None, metadata={"alias": "searchCriteriaAccessDeviceVersion"})

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )

    get_visual_device_management_api_devices_only: Optional[bool] = field(
        default=None, metadata={"alias": "getVisualDeviceManagementAPIDevicesOnly"}
    )


@dataclass(kw_only=True)
class SystemAccessDeviceGetRequest24V3(OCIRequest):
    """Requests the configuration of a specified system access device.

        The following elements are only used in AS data mode and ignored in XS data mode:
          deviceExternalId

        The response is either SystemAccessDeviceGetResponse24V3 or ErrorResponse.

    Attributes:

        device_name (Optional[str]):

        device_external_id (Optional[str]):

    """

    device_name: Optional[str] = field(default=None, metadata={"alias": "deviceName"})

    device_external_id: Optional[str] = field(
        default=None, metadata={"alias": "deviceExternalId"}
    )


@dataclass(kw_only=True)
class SystemAccessDeviceGetUserListRequest21sp1(OCIRequest):
    """Requests the users associated with a specified system access device.
        The response is either SystemAccessDeviceGetUserListResponse21sp1 or ErrorResponse.
        The following elements are only used in XS data mode and ignored in AS data mode:
          searchCriteriaAccessDeviceEndpointPrivateIdentity

    Attributes:

        device_name (str):

        response_size_limit (Optional[int]):

        search_criteria_line_port_user_part (Optional[List[SearchCriteriaLinePortUserPart]]):

        search_criteria_line_port_domain (Optional[List[SearchCriteriaLinePortDomain]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_exact_service_provider (Optional[SearchCriteriaExactServiceProvider]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_exact_endpoint_type (Optional[SearchCriteriaExactEndpointType21sp1]):

        search_criteria_exact_user_type (Optional[SearchCriteriaExactUserType]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_port_number (Optional[SearchCriteriaExactPortNumber]):

        search_criteria_access_device_endpoint_private_identity (Optional[List[SearchCriteriaAccessDeviceEndpointPrivateIdentity]]):

        search_criteria_user_hotline_contact (Optional[List[SearchCriteriaUserHotlineContact]]):

    """

    device_name: str = field(metadata={"alias": "deviceName"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_line_port_user_part: Optional[
        List[SearchCriteriaLinePortUserPart]
    ] = field(default=None, metadata={"alias": "searchCriteriaLinePortUserPart"})

    search_criteria_line_port_domain: Optional[List[SearchCriteriaLinePortDomain]] = (
        field(default=None, metadata={"alias": "searchCriteriaLinePortDomain"})
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_exact_service_provider: Optional[
        SearchCriteriaExactServiceProvider
    ] = field(default=None, metadata={"alias": "searchCriteriaExactServiceProvider"})

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_exact_endpoint_type: Optional[
        SearchCriteriaExactEndpointType21sp1
    ] = field(default=None, metadata={"alias": "searchCriteriaExactEndpointType"})

    search_criteria_exact_user_type: Optional[SearchCriteriaExactUserType] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserType"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_port_number: Optional[SearchCriteriaExactPortNumber] = field(
        default=None, metadata={"alias": "searchCriteriaExactPortNumber"}
    )

    search_criteria_access_device_endpoint_private_identity: Optional[
        List[SearchCriteriaAccessDeviceEndpointPrivateIdentity]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaAccessDeviceEndpointPrivateIdentity"},
    )

    search_criteria_user_hotline_contact: Optional[
        List[SearchCriteriaUserHotlineContact]
    ] = field(default=None, metadata={"alias": "searchCriteriaUserHotlineContact"})


@dataclass(kw_only=True)
class SystemAccessDeviceLinkDeviceListRequest(OCIRequest):
    """Request to link one or more leaf devices to a system level tree device.
        A tree device is a device associated with a device type that has the option
        supportLinks set to \"Support Links from Devices\". Many leaf devices can be linked to it.
        A leaf device is a device associated with a device type that has the option
        supportLinks set to \"Support Link to Device\" or \"Support Link to Device and User\".  It can
        be linked to only one tree device.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_name (str):

        leaf_device_key (List[AccessDeviceKey]):

    """

    device_name: str = field(metadata={"alias": "deviceName"})

    leaf_device_key: List[AccessDeviceKey] = field(metadata={"alias": "leafDeviceKey"})


@dataclass(kw_only=True)
class SystemAccessDeviceModifyRequest22(OCIRequest):
    """Request to modify a specified system access device.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          isWebexTeamsDevice
          defaultPathHeader
          deviceExternalId
          deviceIPEI
          useDeviceCode
          deviceCode

    Attributes:

        device_name (Optional[str]):

        device_external_id (Optional[str]):

        protocol (Optional[str]):

        net_address (Optional[Nillable[str]]):

        port (Optional[Nillable[int]]):

        outbound_proxy_server_net_address (Optional[Nillable[str]]):

        stun_server_net_address (Optional[Nillable[str]]):

        mac_address (Optional[Nillable[str]]):

        serial_number (Optional[Nillable[str]]):

        description (Optional[Nillable[str]]):

        physical_location (Optional[Nillable[str]]):

        transport_protocol (Optional[str]):

        use_custom_user_name_password (Optional[bool]):

        access_device_credentials (Optional[Nillable[DeviceManagementUserNamePassword16]]):

        is_webex_teams_device (Optional[bool]):

        default_path_header (Optional[Nillable[str]]):

        device_ipei (Optional[Nillable[str]]):

        use_device_code (Optional[bool]):

        device_code (Optional[Nillable[str]]):

    """

    device_name: Optional[str] = field(default=None, metadata={"alias": "deviceName"})

    device_external_id: Optional[str] = field(
        default=None, metadata={"alias": "deviceExternalId"}
    )

    protocol: Optional[str] = field(default=None, metadata={"alias": "protocol"})

    net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "netAddress"}
    )

    port: Optional[Nillable[int]] = field(default=None, metadata={"alias": "port"})

    outbound_proxy_server_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "outboundProxyServerNetAddress"}
    )

    stun_server_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "stunServerNetAddress"}
    )

    mac_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "macAddress"}
    )

    serial_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "serialNumber"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    physical_location: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    use_custom_user_name_password: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomUserNamePassword"}
    )

    access_device_credentials: Optional[
        Nillable[DeviceManagementUserNamePassword16]
    ] = field(default=None, metadata={"alias": "accessDeviceCredentials"})

    is_webex_teams_device: Optional[bool] = field(
        default=None, metadata={"alias": "isWebexTeamsDevice"}
    )

    default_path_header: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultPathHeader"}
    )

    device_ipei: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceIPEI"}
    )

    use_device_code: Optional[bool] = field(
        default=None, metadata={"alias": "useDeviceCode"}
    )

    device_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceCode"}
    )

    def __post_init__(self):
        nillable_fields = [
            "net_address",
            "port",
            "outbound_proxy_server_net_address",
            "stun_server_net_address",
            "mac_address",
            "serial_number",
            "description",
            "physical_location",
            "access_device_credentials",
            "default_path_header",
            "device_ipei",
            "device_code",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemAccessDeviceModifyUserRequest(OCIRequest):
    """Request to modify attributes for line/ports assigned on the system device profile.
        The response is either SuccessResponse or ErrorResponse.
        The following elements are only used in XS data mode and ignored in AS data mode:
          privateIdentity

    Attributes:

        device_name (str):

        line_port (str):

        private_identity (Optional[str]):

        is_primary_line_port (Optional[bool]):

    """

    device_name: str = field(metadata={"alias": "deviceName"})

    line_port: str = field(metadata={"alias": "linePort"})

    private_identity: Optional[str] = field(
        default=None, metadata={"alias": "privateIdentity"}
    )

    is_primary_line_port: Optional[bool] = field(
        default=None, metadata={"alias": "isPrimaryLinePort"}
    )


@dataclass(kw_only=True)
class SystemAccessDeviceMonitorAddDeviceTypeRequest(OCIRequest):
    """Add a device type to be monitored.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        add_all_device_types (Optional[bool]):

        device_type (Optional[str]):

    """

    add_all_device_types: Optional[bool] = field(
        default=None, metadata={"alias": "addAllDeviceTypes"}
    )

    device_type: Optional[str] = field(default=None, metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class SystemAccessDeviceMonitorDeleteDeviceTypeRequest(OCIRequest):
    """Remove a device type to be monitored.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        delete_all_device_types (Optional[bool]):

        device_type (Optional[str]):

    """

    delete_all_device_types: Optional[bool] = field(
        default=None, metadata={"alias": "deleteAllDeviceTypes"}
    )

    device_type: Optional[str] = field(default=None, metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class SystemAccessDeviceMonitorGetDeviceTypeListRequest(OCIRequest):
    """Get a list of monitored device types.
        The response is either a SystemAccessDeviceMonitorGetDeviceTypeListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemAccessDeviceMonitorParametersGetRequest(OCIRequest):
    """Request to get the list of Access Device Monitor system parameters.
        The response is either SystemAccessDeviceMonitorParametersGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemAccessDeviceMonitorParametersModifyRequest(OCIRequest):
    """Request to modify Access Device Monitor system parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        polling_interval_minutes (Optional[int]):

    """

    polling_interval_minutes: Optional[int] = field(
        default=None, metadata={"alias": "pollingIntervalMinutes"}
    )


@dataclass(kw_only=True)
class SystemAccessDeviceResetRequest(OCIRequest):
    """Reset a specific system SIP device that supports the reset operation.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_name (str):

    """

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class SystemAccessDeviceTagSetGetRequest(OCIRequest):
    """Request to get the custom configuration tag set defined at the access device.
        The response is either SystemAccessDeviceTagSetGetResponse or ErrorResponse.

    Attributes:

        device_name (str):

    """

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class SystemAccessDeviceTagSetModifyRequest(OCIRequest):
    """Request to modify a static configuration tag set.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_name (str):

        tag_set_name (Optional[Nillable[str]]):

    """

    device_name: str = field(metadata={"alias": "deviceName"})

    tag_set_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "tagSetName"}
    )

    def __post_init__(self):
        nillable_fields = ["tag_set_name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemAccessDeviceTypeGetEnhancedConfigurableListRequest(OCIRequest):
    """Requests the list of device types supporting enhanced configuration.
        The response is either SystemAccessDeviceTypeGetEnhancedConfigurableListResponse
        or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemAccessDeviceTypeGetListRequest(OCIRequest):
    """Requests the list of access device types.
        The response is either SystemAccessDeviceTypeGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemAccessDeviceUnlinkDeviceListRequest(OCIRequest):
    """Request to unlink one or more leaf access devices from a tree device.
        A leaf device is a device associated with a device type that has the option
        supportLinks set to \"Support Link to Device\" or \"Support Link to Device and User\".  It can
        be linked to only one tree device.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        leaf_device_key (List[AccessDeviceKey]):

    """

    leaf_device_key: List[AccessDeviceKey] = field(metadata={"alias": "leafDeviceKey"})


@dataclass(kw_only=True)
class SystemAccountingAddChargingFunctionElementServerRequest(OCIRequest):
    """Request to add a ChargingFunctionElement Server to the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        address (str):

        is_net_address_extended (bool):

        type (str):

        description (Optional[str]):

    """

    address: str = field(metadata={"alias": "address"})

    is_net_address_extended: bool = field(metadata={"alias": "isNetAddressExtended"})

    type: str = field(metadata={"alias": "type"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemAccountingAddRadiusServerRequest(OCIRequest):
    """Request to add a Radius Server to the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        net_address (str):

        port (int):

        description (Optional[str]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    port: int = field(metadata={"alias": "port"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemAccountingDeleteChargingFunctionElementServerRequest(OCIRequest):
    """Request to delete a ChargingFunctionElementServer from the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        address (str):

    """

    address: str = field(metadata={"alias": "address"})


@dataclass(kw_only=True)
class SystemAccountingDeleteRadiusServerRequest(OCIRequest):
    """Request to delete a Radius Server from the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        net_address (str):

        port (int):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    port: int = field(metadata={"alias": "port"})


@dataclass(kw_only=True)
class SystemAccountingGetChargingFunctionElementServerListRequest(OCIRequest):
    """Request to get a list of ChargingFunctionElementServers defined in the system.
        The response is either a SystemAccountingGetChargingFunctionElementServerListResponse
        or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemAccountingGetRadiusServerListRequest(OCIRequest):
    """Request to get a list of Radius Servers defined in the system.
        The response is either a SystemAccountingGetRadiusServerListResponse
        or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemAccountingInhibitedAttributeValuePairCodeAddRequest(OCIRequest):
    """Add an Attribute Value Pair (AVP) combination to disable. The AVP
        combination includes a diameter AVP and a vendor ID. The response is either
        a SuccessResponse or an ErrorResponse.

    Attributes:

        attribute_value_pair_code (int):

        vendor_id (int):

    """

    attribute_value_pair_code: int = field(metadata={"alias": "attributeValuePairCode"})

    vendor_id: int = field(metadata={"alias": "vendorId"})


@dataclass(kw_only=True)
class SystemAccountingInhibitedAttributeValuePairCodeDeleteRequest(OCIRequest):
    """Remove an Attribute Value Pair (AVP) combination from the list of disabled AVP
        codes. The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        attribute_value_pair_code (int):

        vendor_id (int):

    """

    attribute_value_pair_code: int = field(metadata={"alias": "attributeValuePairCode"})

    vendor_id: int = field(metadata={"alias": "vendorId"})


@dataclass(kw_only=True)
class SystemAccountingInhibitedAttributeValuePairCodeGetListRequest(OCIRequest):
    """Get a list of Attribute Value Pair (AVP) combinations that are
        disabled. The response is either a
        SystemAccountingInhibitedAttributeValuePairCodeGetListResponse or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemAccountingModifyChargingFunctionElementServerRequest(OCIRequest):
    """Request to modify a ChargingFunctionElementServer in the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        address (str):

        type (Optional[str]):

        description (Optional[Nillable[str]]):

    """

    address: str = field(metadata={"alias": "address"})

    type: Optional[str] = field(default=None, metadata={"alias": "type"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemAccountingModifyRadiusServerRequest(OCIRequest):
    """Request to modify a Radius Server in the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        net_address (str):

        port (int):

        description (Optional[Nillable[str]]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    port: int = field(metadata={"alias": "port"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemAccountingReorderChargingFunctionElementServerRequest(OCIRequest):
    """Reorder the charging function element servers. You can not add or delete addresses,
        only re-ordering the list is allowed. The ordered list of addresses can be obtained
        with the SystemAccountingGetChargingFunctionElementServerListRequest command.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        ordered_address_list (List[str]):

    """

    ordered_address_list: List[str] = field(metadata={"alias": "orderedAddressList"})


@dataclass(kw_only=True)
class SystemAdminAddRequest(OCIRequest):
    """Add a system or provisioning administrator.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        first_name (Optional[str]):

        last_name (Optional[str]):

        password (str):

        language (Optional[str]):

        admin_type (str):

        read_only (bool):

    """

    user_id: str = field(metadata={"alias": "userId"})

    first_name: Optional[str] = field(default=None, metadata={"alias": "firstName"})

    last_name: Optional[str] = field(default=None, metadata={"alias": "lastName"})

    password: str = field(metadata={"alias": "password"})

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    admin_type: str = field(metadata={"alias": "adminType"})

    read_only: bool = field(metadata={"alias": "readOnly"})


@dataclass(kw_only=True)
class SystemAdminDeleteRequest(OCIRequest):
    """Delete a system or provisioning administrator.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class SystemAdminGetListRequest(OCIRequest):
    """Get a list of system administrators.
        The response is either a SystemAdminGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemAdminGetRequest22(OCIRequest):
    """Get a system or provisioning administrators profile.
        The response is either a SystemAdminGetResponse22 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class SystemAdminModifyRequest(OCIRequest):
    """Modify a system or provisioning administrator.
        Since old password is not specified here, any password rule related to old password
        does not apply.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode.
        accountDisabled

    Attributes:

        user_id (str):

        first_name (Optional[Nillable[str]]):

        last_name (Optional[Nillable[str]]):

        password (Optional[str]):

        language (Optional[str]):

        account_disabled (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    first_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "firstName"}
    )

    last_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "lastName"}
    )

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    account_disabled: Optional[bool] = field(
        default=None, metadata={"alias": "accountDisabled"}
    )

    def __post_init__(self):
        nillable_fields = ["first_name", "last_name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemAdviceOfChargeCostInformationSourceAddRequest(OCIRequest):
    """Add a cost information source. The response is either SuccessResponse or ErrorResponse.

    Attributes:

        peer_identity (str):

        priority (int):

    """

    peer_identity: str = field(metadata={"alias": "peerIdentity"})

    priority: int = field(metadata={"alias": "priority"})


@dataclass(kw_only=True)
class SystemAdviceOfChargeCostInformationSourceDeleteRequest(OCIRequest):
    """Delete a cost information source.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        peer_identity (str):

    """

    peer_identity: str = field(metadata={"alias": "peerIdentity"})


@dataclass(kw_only=True)
class SystemAdviceOfChargeCostInformationSourceGetListRequest(OCIRequest):
    """Get a list of cost information sources.
        The response is either SystemAdviceOfChargeCostInformationSourceGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemAdviceOfChargeCostInformationSourceModifyRequest(OCIRequest):
    """Modify a cost information source.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        peer_identity (str):

        priority (int):

    """

    peer_identity: str = field(metadata={"alias": "peerIdentity"})

    priority: int = field(metadata={"alias": "priority"})


@dataclass(kw_only=True)
class SystemAdviceOfChargeGetRequest25(OCIRequest):
    """Request to get the list of Advice of Charge system parameters.
        The response is either SystemAdviceOfChargeGetResponse25 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemAdviceOfChargeModifyRequest19sp1(OCIRequest):
    """Request to modify Advice of Charge system parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        delay_between_notification_seconds (Optional[int]):

        incoming_aoc_handling (Optional[str]):

        use_ocs_enquiry (Optional[bool]):

        ocs_enquiry_type (Optional[str]):

        proxy_ao_c_body (Optional[bool]):

    """

    delay_between_notification_seconds: Optional[int] = field(
        default=None, metadata={"alias": "delayBetweenNotificationSeconds"}
    )

    incoming_aoc_handling: Optional[str] = field(
        default=None, metadata={"alias": "incomingAocHandling"}
    )

    use_ocs_enquiry: Optional[bool] = field(
        default=None, metadata={"alias": "useOCSEnquiry"}
    )

    ocs_enquiry_type: Optional[str] = field(
        default=None, metadata={"alias": "OCSEnquiryType"}
    )

    proxy_ao_c_body: Optional[bool] = field(
        default=None, metadata={"alias": "proxyAoCBody"}
    )


@dataclass(kw_only=True)
class SystemAliasAddRequest(OCIRequest):
    """Add a system-level Application Server alias to the system.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        alias_net_address (str):

    """

    alias_net_address: str = field(metadata={"alias": "aliasNetAddress"})


@dataclass(kw_only=True)
class SystemAliasDeleteRequest(OCIRequest):
    """Delete a system-level Application Server alias from the system.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        alias_net_address (str):

    """

    alias_net_address: str = field(metadata={"alias": "aliasNetAddress"})


@dataclass(kw_only=True)
class SystemAliasGetListRequest(OCIRequest):
    """Requests the list of all system-level Application Server aliases.
        The response is either SystemAliasGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemAlternateUserIdGetListRequest(OCIRequest):
    """Request to get the list of alternate user ids.
        If reseller administrator sends the request, searchCriteriaResellerId is ignored. All the alternate
        user ids in the administrator's reseller meeting the search criteria are returned.

        The response is either SystemAlternateUserIdGetListResponse or ErrorResponse.

        The following data elements are only used in AS data mode:
          searchCriteriaResellerId

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_alternate_user_id (Optional[List[SearchCriteriaAlternateUserId]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_reseller_id (Optional[List[SearchCriteriaResellerId]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_alternate_user_id: Optional[List[SearchCriteriaAlternateUserId]] = (
        field(default=None, metadata={"alias": "searchCriteriaAlternateUserId"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_reseller_id: Optional[List[SearchCriteriaResellerId]] = field(
        default=None, metadata={"alias": "searchCriteriaResellerId"}
    )


@dataclass(kw_only=True)
class SystemAnonymousCallRejectionGetRequest(OCIRequest):
    """Get Anonymous Call Rejection system parameters.
        The response is either a SystemAnonymousCallRejectionGetResponse or
        an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemAnonymousCallRejectionModifyRequest(OCIRequest):
    """Modify a system Anonymous Call Rejection parameter.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        pai_required (Optional[bool]):

        screen_only_local_calls (Optional[bool]):

    """

    pai_required: Optional[bool] = field(
        default=None, metadata={"alias": "paiRequired"}
    )

    screen_only_local_calls: Optional[bool] = field(
        default=None, metadata={"alias": "screenOnlyLocalCalls"}
    )


@dataclass(kw_only=True)
class SystemApplicationControllerAddRequest(OCIRequest):
    """Add an application controller, which is a server where remote
      application resides and controls the Route Point.
      The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        subscriber_id (str):

        channel_set_id (str):

    """

    name: str = field(metadata={"alias": "name"})

    subscriber_id: str = field(metadata={"alias": "subscriberId"})

    channel_set_id: str = field(metadata={"alias": "channelSetId"})


@dataclass(kw_only=True)
class SystemApplicationControllerDeleteRequest(OCIRequest):
    """Delete an application controller.
      The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemApplicationControllerGetListRequest(OCIRequest):
    """Get a list of application controllers that are configured for the system.
      The response is either SystemApplicationControllerGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemAuthenticationLockoutExportDataGetRequest(OCIRequest):
    """Request to export system wide authentication lockout data to a file. All locked out device profiles, sip endpoints, and sip trunk groups are returned.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        file_name (str):

    """

    file_name: str = field(metadata={"alias": "fileName"})


@dataclass(kw_only=True)
class SystemAuthenticationLockoutSettingsGetRequest(OCIRequest):
    """Request to get the authentication lockout settings in the system.
        The response is either a SystemAuthenticationLockoutSettingsResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemAuthenticationLockoutSettingsModifyRequest(OCIRequest):
    """Request to modify the system level device password lockout settings
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        counter_reset_interval_days (Optional[int]):

        counter_reset_hour (Optional[int]):

        counter_reset_minute (Optional[int]):

        emergency_sip_bypass_allowed (Optional[bool]):

    """

    counter_reset_interval_days: Optional[int] = field(
        default=None, metadata={"alias": "counterResetIntervalDays"}
    )

    counter_reset_hour: Optional[int] = field(
        default=None, metadata={"alias": "counterResetHour"}
    )

    counter_reset_minute: Optional[int] = field(
        default=None, metadata={"alias": "counterResetMinute"}
    )

    emergency_sip_bypass_allowed: Optional[bool] = field(
        default=None, metadata={"alias": "emergencySIPBypassAllowed"}
    )


@dataclass(kw_only=True)
class SystemAutoDisableAccountsGetRequest(OCIRequest):
    """Request to get Auto Disable Accounts system parameters.
       The response is either SystemAutoDisableAccountsGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemAutoDisableAccountsModifyRequest(OCIRequest):
    """Modify the Auto Disable Accounts system parameters.

    Attributes:

        account_inactivity_timeout_days (Optional[int]):

        enable_auto_disable_accounts (Optional[bool]):

        enable_auto_disable_accounts_system_admin_level (Optional[bool]):

        enable_auto_disable_accounts_provisioning_admin_level (Optional[bool]):

        enable_auto_disable_accounts_reseller_admin_level (Optional[bool]):

        enable_auto_disable_accounts_svc_provider_admin_level (Optional[bool]):

        enable_auto_disable_accounts_group_admin_level (Optional[bool]):

        enable_auto_disable_accounts_department_admin_level (Optional[bool]):

    """

    account_inactivity_timeout_days: Optional[int] = field(
        default=None, metadata={"alias": "accountInactivityTimeoutDays"}
    )

    enable_auto_disable_accounts: Optional[bool] = field(
        default=None, metadata={"alias": "enableAutoDisableAccounts"}
    )

    enable_auto_disable_accounts_system_admin_level: Optional[bool] = field(
        default=None, metadata={"alias": "enableAutoDisableAccountsSystemAdminLevel"}
    )

    enable_auto_disable_accounts_provisioning_admin_level: Optional[bool] = field(
        default=None,
        metadata={"alias": "enableAutoDisableAccountsProvisioningAdminLevel"},
    )

    enable_auto_disable_accounts_reseller_admin_level: Optional[bool] = field(
        default=None, metadata={"alias": "enableAutoDisableAccountsResellerAdminLevel"}
    )

    enable_auto_disable_accounts_svc_provider_admin_level: Optional[bool] = field(
        default=None,
        metadata={"alias": "enableAutoDisableAccountsSvcProviderAdminLevel"},
    )

    enable_auto_disable_accounts_group_admin_level: Optional[bool] = field(
        default=None, metadata={"alias": "enableAutoDisableAccountsGroupAdminLevel"}
    )

    enable_auto_disable_accounts_department_admin_level: Optional[bool] = field(
        default=None,
        metadata={"alias": "enableAutoDisableAccountsDepartmentAdminLevel"},
    )


@dataclass(kw_only=True)
class SystemAutomaticCallbackAddReleaseCauseListRequest(OCIRequest):
    """Adds automatic callback release cause to the releaseCause attribute.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        release_cause (Optional[List[str]]):

    """

    release_cause: Optional[List[str]] = field(
        default=None, metadata={"alias": "releaseCause"}
    )


@dataclass(kw_only=True)
class SystemAutomaticCallbackDeleteReleaseCauseListRequest(OCIRequest):
    """Deletes automatic callback release causes from the release cause attribute.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        release_cause (Optional[List[str]]):

    """

    release_cause: Optional[List[str]] = field(
        default=None, metadata={"alias": "releaseCause"}
    )


@dataclass(kw_only=True)
class SystemAutomaticCallbackGetReleaseCauseListRequest(OCIRequest):
    """Request the system's automatic callback attributes.
        The response is either a SystemAutomaticCallbackGetReleaseCauseListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemAutomaticCallbackGetRequest17(OCIRequest):
    """Request the system's automatic callback attributes.
        The response is either a SystemAutomaticCallbackGetResponse17 or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemAutomaticCallbackModifyRequest15(OCIRequest):
    """Modifies the system's automatic callback attributes.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        monitor_minutes (Optional[int]):

        max_monitors_per_originator (Optional[int]):

        max_callback_rings (Optional[int]):

        max_monitors_per_terminator (Optional[int]):

        terminator_idle_guard_seconds (Optional[int]):

        callback_method (Optional[str]):

        polling_interval_seconds (Optional[int]):

        activation_digit (Optional[int]):

    """

    monitor_minutes: Optional[int] = field(
        default=None, metadata={"alias": "monitorMinutes"}
    )

    max_monitors_per_originator: Optional[int] = field(
        default=None, metadata={"alias": "maxMonitorsPerOriginator"}
    )

    max_callback_rings: Optional[int] = field(
        default=None, metadata={"alias": "maxCallbackRings"}
    )

    max_monitors_per_terminator: Optional[int] = field(
        default=None, metadata={"alias": "maxMonitorsPerTerminator"}
    )

    terminator_idle_guard_seconds: Optional[int] = field(
        default=None, metadata={"alias": "terminatorIdleGuardSeconds"}
    )

    callback_method: Optional[str] = field(
        default=None, metadata={"alias": "callbackMethod"}
    )

    polling_interval_seconds: Optional[int] = field(
        default=None, metadata={"alias": "pollingIntervalSeconds"}
    )

    activation_digit: Optional[int] = field(
        default=None, metadata={"alias": "activationDigit"}
    )


@dataclass(kw_only=True)
class SystemAutomaticCollectCallGetRequest22(OCIRequest):
    """Get system Automatic Collect Call service settings.
        The response is either SystemAutomaticCollectCallGetResponse22 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemAutomaticCollectCallModifyRequest(OCIRequest):
    """Modify system Automatic Collect Call service settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        enable_automatic_collect_call (Optional[bool]):

        enable_connect_tone (Optional[bool]):

        include_country_code_in_cic (Optional[bool]):

    """

    enable_automatic_collect_call: Optional[bool] = field(
        default=None, metadata={"alias": "enableAutomaticCollectCall"}
    )

    enable_connect_tone: Optional[bool] = field(
        default=None, metadata={"alias": "enableConnectTone"}
    )

    include_country_code_in_cic: Optional[bool] = field(
        default=None, metadata={"alias": "includeCountryCodeInCic"}
    )


@dataclass(kw_only=True)
class SystemAutomaticCollectCallPrefixDigitsAddListRequest(OCIRequest):
    """Add a system automatic collect call prefix digits entry.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        prefix_digits_entry (List[AutomaticCollectCallPrefixDigitsEntry]):

    """

    prefix_digits_entry: List[AutomaticCollectCallPrefixDigitsEntry] = field(
        metadata={"alias": "prefixDigitsEntry"}
    )


@dataclass(kw_only=True)
class SystemAutomaticCollectCallPrefixDigitsDeleteListRequest(OCIRequest):
    """Delete an entry in system automatic collect call prefix table.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        prefix_digits_entry (List[AutomaticCollectCallPrefixDigitsEntry]):

    """

    prefix_digits_entry: List[AutomaticCollectCallPrefixDigitsEntry] = field(
        metadata={"alias": "prefixDigitsEntry"}
    )


@dataclass(kw_only=True)
class SystemAutomaticCollectCallPrefixDigitsGetListRequest(OCIRequest):
    """Get the system automatic collect call prefix digits lists.
        The response is either SystemAutomaticCollectCallPrefixDigitsGetListResponse or ErrorResponse.

    Attributes:

        country_code (Optional[str]):

    """

    country_code: Optional[str] = field(default=None, metadata={"alias": "countryCode"})


@dataclass(kw_only=True)
class SystemBroadCloudGetRequest22(OCIRequest):
    """Get the system interface attributes for Messaging Server/BroadCloud.
        The response is either SystemBroadCloudGetResponse22 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemBroadCloudModifyRequest(OCIRequest):
    """Modify the system interface attributes for Messaging Server/BroadCloud.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        provisioning_url (Optional[Nillable[str]]):

        provisioning_user_id (Optional[Nillable[str]]):

        provisioning_password (Optional[Nillable[str]]):

        enable_synchronization (Optional[bool]):

        proxy_host (Optional[Nillable[str]]):

        proxy_port (Optional[int]):

    """

    provisioning_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "provisioningUrl"}
    )

    provisioning_user_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "provisioningUserId"}
    )

    provisioning_password: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "provisioningPassword"}
    )

    enable_synchronization: Optional[bool] = field(
        default=None, metadata={"alias": "enableSynchronization"}
    )

    proxy_host: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "proxyHost"}
    )

    proxy_port: Optional[int] = field(default=None, metadata={"alias": "proxyPort"})

    def __post_init__(self):
        nillable_fields = [
            "provisioning_url",
            "provisioning_user_id",
            "provisioning_password",
            "proxy_host",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemBroadWorksAnywhereGetRequest(OCIRequest):
    """Get the Broadworks Anywhere system parameters.
        The response is either a SystemBroadWorksAnywhereGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemBroadWorksAnywhereModifyRequest(OCIRequest):
    """Modify the BroadWorks Anywhere system parameters.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode:
          enableTransferNotification

        The following elements are only used in XS data mode:
          blockProvisioningOfDNAsBALocationEnabled

    Attributes:

        enable_transfer_notification (Optional[bool]):

        block_provisioning_of_dn_as_ba_location (Optional[bool]):

    """

    enable_transfer_notification: Optional[bool] = field(
        default=None, metadata={"alias": "enableTransferNotification"}
    )

    block_provisioning_of_dn_as_ba_location: Optional[bool] = field(
        default=None, metadata={"alias": "blockProvisioningOfDNAsBALocation"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityAddIMRNListRequest(OCIRequest):
    """Adds BroadWorks Mobility IMRN numbers to the system. It is possible to add either:
        a single number, a list of numbers, or a range of numbers, or any combination thereof.
        The response is either a SuccessResponse or ErrorResponse.

    Attributes:

        imrn_number (Optional[List[str]]):

        number_range (Optional[List[DNRange]]):

    """

    imrn_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "imrnNumber"}
    )

    number_range: Optional[List[DNRange]] = field(
        default=None, metadata={"alias": "numberRange"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityAddMobileNetworkIMRNListRequest(OCIRequest):
    """Adds BroadWorks Mobility IMRN numbers to a Mobile Network. It is possible to add either:
        a single number, a list of numbers, or a range of numbers, or any combination thereof.
        The response is either a SuccessResponse or ErrorResponse.

    Attributes:

        mobile_network_name (str):

        imrn_number (Optional[List[str]]):

        number_range (Optional[List[DNRange]]):

    """

    mobile_network_name: str = field(metadata={"alias": "mobileNetworkName"})

    imrn_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "imrnNumber"}
    )

    number_range: Optional[List[DNRange]] = field(
        default=None, metadata={"alias": "numberRange"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityDeleteIMRNListRequest(OCIRequest):
    """Removes a BroadWorks Mobility IMRN number from the system.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        imrn_number (List[str]):

    """

    imrn_number: List[str] = field(metadata={"alias": "imrnNumber"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityDeleteMobileNetworkIMRNListRequest(OCIRequest):
    """Remove BroadWorks Mobility IMRN numbers from a Mobile Network.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        mobile_network_name (str):

        imrn_number (List[str]):

    """

    mobile_network_name: str = field(metadata={"alias": "mobileNetworkName"})

    imrn_number: List[str] = field(metadata={"alias": "imrnNumber"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGeographicalPoolAddRequest(OCIRequest):
    """Add a geographical pool to the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        country_code (str):

        is_default (bool):

        description (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    country_code: str = field(metadata={"alias": "countryCode"})

    is_default: bool = field(metadata={"alias": "isDefault"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGeographicalPoolDeleteRequest(OCIRequest):
    """Delete a geographical pool from the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGeographicalPoolGetListRequest(OCIRequest):
    """Get a list of geographical pools defined in the system. If countryCode is set, return the IMRN pools associated with the country code.
        The response is either SystemBroadWorksMobilityGeographicalPoolGetListResponse or ErrorResponse.

    Attributes:

        country_code (Optional[str]):

    """

    country_code: Optional[str] = field(default=None, metadata={"alias": "countryCode"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGeographicalPoolIMRNAddListRequest(OCIRequest):
    """Adds BroadWorks Mobility IMRN numbers to a geographical pool. It is possible to add either:
        a single number, a list of numbers, or a range of numbers, or any combination thereof.
        The response is either a SuccessResponse or ErrorResponse.

    Attributes:

        geographical_pool_name (str):

        imrn_number (Optional[List[str]]):

        number_range (Optional[List[DNRange]]):

    """

    geographical_pool_name: str = field(metadata={"alias": "geographicalPoolName"})

    imrn_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "imrnNumber"}
    )

    number_range: Optional[List[DNRange]] = field(
        default=None, metadata={"alias": "numberRange"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGeographicalPoolIMRNDeleteListRequest(OCIRequest):
    """Remove BroadWorks Mobility IMRN numbers from a geographical pool.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        geographical_pool_name (str):

        imrn_number (List[str]):

    """

    geographical_pool_name: str = field(metadata={"alias": "geographicalPoolName"})

    imrn_number: List[str] = field(metadata={"alias": "imrnNumber"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGeographicalPoolIMRNGetListRequest(OCIRequest):
    """Get a list of BroadWorks Mobility IMRN numbers from a geographical pool.
        The response is either a SystemBroadWorksMobilityGeographicalPoolIMRNGetListResponse
        or an ErrorResponse.

    Attributes:

        geographical_pool_name (str):

        search_criteria_imrn (Optional[List[SearchCriteriaIMRN]]):

    """

    geographical_pool_name: str = field(metadata={"alias": "geographicalPoolName"})

    search_criteria_imrn: Optional[List[SearchCriteriaIMRN]] = field(
        default=None, metadata={"alias": "searchCriteriaIMRN"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGeographicalPoolModifyRequest(OCIRequest):
    """Modify the settings of a geographical pool.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        name (str):

        new_name (Optional[str]):

        is_default (Optional[bool]):

        description (Optional[Nillable[str]]):

    """

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    is_default: Optional[bool] = field(default=None, metadata={"alias": "isDefault"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGeographicalPoolPrefixAddListRequest(OCIRequest):
    """Add a list of geographical prefixes.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        geographical_pool_name (str):

        prefix (List[str]):

    """

    geographical_pool_name: str = field(metadata={"alias": "geographicalPoolName"})

    prefix: List[str] = field(metadata={"alias": "prefix"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGeographicalPoolPrefixDeleteListRequest(OCIRequest):
    """Delete a list of geographical prefixes from a pool.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        geographical_pool_name (str):

        prefix (List[str]):

    """

    geographical_pool_name: str = field(metadata={"alias": "geographicalPoolName"})

    prefix: List[str] = field(metadata={"alias": "prefix"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGeographicalPoolPrefixGetListRequest(OCIRequest):
    """Gets a list of geographical prefixes belonging to a geographical pool.
        The response is either SystemBroadWorksMobilityGeographicalPoolPrefixGetListResponse or ErrorResponse.

    Attributes:

        geographical_pool_name (str):

    """

    geographical_pool_name: str = field(metadata={"alias": "geographicalPoolName"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGetIMRNListRequest(OCIRequest):
    """Request to get the list of BroadWorks Mobility IMRN numbers defined in the system.
        The response is either a SystemBroadWorksMobilityGetIMRNListResponse
        or an ErrorResponse.

    Attributes:

        search_criteria_imrn (Optional[List[SearchCriteriaIMRN]]):

    """

    search_criteria_imrn: Optional[List[SearchCriteriaIMRN]] = field(
        default=None, metadata={"alias": "searchCriteriaIMRN"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGetMobileNetworkIMRNListRequest(OCIRequest):
    """Get a list of BroadWorks Mobility IMRN numbers from a Mobile Network.
        The response is either a SystemBroadWorksMobilityGetMobileNetworkIMRNListResponse
        or an ErrorResponse.

    Attributes:

        mobile_network_name (str):

        search_criteria_imrn (Optional[List[SearchCriteriaIMRN]]):

    """

    mobile_network_name: str = field(metadata={"alias": "mobileNetworkName"})

    search_criteria_imrn: Optional[List[SearchCriteriaIMRN]] = field(
        default=None, metadata={"alias": "searchCriteriaIMRN"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGetRequest22V3(OCIRequest):
    """Get the broadworks mobility system parameters.
        The response is either a SystemBroadWorksMobilityGetResponse22V3 or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemBroadWorksMobilityMobileNetworkAddRequest(OCIRequest):
    """Add a Mobile Network.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        name (str):

        scf_signaling_net_address (Optional[str]):

        scf_signaling_port (Optional[int]):

        refresh_period_seconds (int):

        max_consecutive_failures (int):

        max_response_wait_time_milliseconds (int):

        enable_announcement_suppression (bool):

        service_access_code_list_name (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    scf_signaling_net_address: Optional[str] = field(
        default=None, metadata={"alias": "scfSignalingNetAddress"}
    )

    scf_signaling_port: Optional[int] = field(
        default=None, metadata={"alias": "scfSignalingPort"}
    )

    refresh_period_seconds: int = field(metadata={"alias": "refreshPeriodSeconds"})

    max_consecutive_failures: int = field(metadata={"alias": "maxConsecutiveFailures"})

    max_response_wait_time_milliseconds: int = field(
        metadata={"alias": "maxResponseWaitTimeMilliseconds"}
    )

    enable_announcement_suppression: bool = field(
        metadata={"alias": "enableAnnouncementSuppression"}
    )

    service_access_code_list_name: Optional[str] = field(
        default=None, metadata={"alias": "serviceAccessCodeListName"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityMobileNetworkDeleteRequest(OCIRequest):
    """Delete a Mobile Network.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityMobileNetworkGetListRequest(OCIRequest):
    """Get the list of Mobile Networks.
        The response is either SystemBroadWorksMobilityMobileNetworkGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemBroadWorksMobilityMobileNetworkGetRequest(OCIRequest):
    """Get a Mobile Network.
        The response is either SystemBroadWorksMobilityMobileNetworkGetResponse or ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityMobileNetworkModifyRequest(OCIRequest):
    """Modify a Mobile Network.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        name (str):

        new_name (Optional[str]):

        scf_signaling_net_address (Optional[Nillable[str]]):

        scf_signaling_port (Optional[Nillable[int]]):

        refresh_period_seconds (Optional[int]):

        max_consecutive_failures (Optional[int]):

        max_response_wait_time_milliseconds (Optional[int]):

        enable_announcement_suppression (Optional[bool]):

        service_access_code_list_name (Optional[Nillable[str]]):

    """

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    scf_signaling_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "scfSignalingNetAddress"}
    )

    scf_signaling_port: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "scfSignalingPort"}
    )

    refresh_period_seconds: Optional[int] = field(
        default=None, metadata={"alias": "refreshPeriodSeconds"}
    )

    max_consecutive_failures: Optional[int] = field(
        default=None, metadata={"alias": "maxConsecutiveFailures"}
    )

    max_response_wait_time_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "maxResponseWaitTimeMilliseconds"}
    )

    enable_announcement_suppression: Optional[bool] = field(
        default=None, metadata={"alias": "enableAnnouncementSuppression"}
    )

    service_access_code_list_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "serviceAccessCodeListName"}
    )

    def __post_init__(self):
        nillable_fields = [
            "scf_signaling_net_address",
            "scf_signaling_port",
            "service_access_code_list_name",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemBroadWorksMobilityMobileSubscriberDirectoryNumberGetSummaryListRequest(
    OCIRequest
):
    """Request a summary table of all Mobile Subscriber Directory Numbers in a system.
        If reseller administrator sends the request, searchCriteriaResellerId is ignored. All the mobile subscriber
        directory numbers in the administrator's reseller meeting the search criteria are returned.
        The response is either SystemBroadWorksMobilityMobileSubscriberDirectoryNumberGetSummaryListResponse or ErrorResponse.

        The following data elements are only used in AS data mode:
          searchCriteriaResellerId

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_mobile_subscriber_directory_number (Optional[List[SearchCriteriaMobileSubscriberDirectoryNumber]]):

        search_criteria_exact_mobile_network (Optional[SearchCriteriaExactMobileNetwork]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_exact_organization_type (Optional[SearchCriteriaExactOrganizationType]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_reseller_id (Optional[List[SearchCriteriaResellerId]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_mobile_subscriber_directory_number: Optional[
        List[SearchCriteriaMobileSubscriberDirectoryNumber]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaMobileSubscriberDirectoryNumber"},
    )

    search_criteria_exact_mobile_network: Optional[SearchCriteriaExactMobileNetwork] = (
        field(default=None, metadata={"alias": "searchCriteriaExactMobileNetwork"})
    )

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_exact_organization_type: Optional[
        SearchCriteriaExactOrganizationType
    ] = field(default=None, metadata={"alias": "searchCriteriaExactOrganizationType"})

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_reseller_id: Optional[List[SearchCriteriaResellerId]] = field(
        default=None, metadata={"alias": "searchCriteriaResellerId"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityModifyRequest21(OCIRequest):
    """Modify the BroadWorks Mobility system parameters.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        enable_location_services (Optional[bool]):

        enable_msrn_lookup (Optional[bool]):

        enable_mobile_state_checking (Optional[bool]):

        deny_call_originations (Optional[bool]):

        deny_call_terminations (Optional[bool]):

        imrn_timeout_milliseconds (Optional[int]):

        enable_internal_clid_delivery (Optional[bool]):

        include_redirect_for_mobility_termination (Optional[bool]):

        enable_internal_clid_delivery_access_locations (Optional[bool]):

        enable_enhanced_unreachable_state_checking (Optional[bool]):

        enable_network_call_barring_status_check (Optional[bool]):

        network_translation_index (Optional[Nillable[str]]):

    """

    enable_location_services: Optional[bool] = field(
        default=None, metadata={"alias": "enableLocationServices"}
    )

    enable_msrn_lookup: Optional[bool] = field(
        default=None, metadata={"alias": "enableMSRNLookup"}
    )

    enable_mobile_state_checking: Optional[bool] = field(
        default=None, metadata={"alias": "enableMobileStateChecking"}
    )

    deny_call_originations: Optional[bool] = field(
        default=None, metadata={"alias": "denyCallOriginations"}
    )

    deny_call_terminations: Optional[bool] = field(
        default=None, metadata={"alias": "denyCallTerminations"}
    )

    imrn_timeout_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "imrnTimeoutMilliseconds"}
    )

    enable_internal_clid_delivery: Optional[bool] = field(
        default=None, metadata={"alias": "enableInternalCLIDDelivery"}
    )

    include_redirect_for_mobility_termination: Optional[bool] = field(
        default=None, metadata={"alias": "includeRedirectForMobilityTermination"}
    )

    enable_internal_clid_delivery_access_locations: Optional[bool] = field(
        default=None, metadata={"alias": "enableInternalCLIDDeliveryAccessLocations"}
    )

    enable_enhanced_unreachable_state_checking: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnhancedUnreachableStateChecking"}
    )

    enable_network_call_barring_status_check: Optional[bool] = field(
        default=None, metadata={"alias": "enableNetworkCallBarringStatusCheck"}
    )

    network_translation_index: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "networkTranslationIndex"}
    )

    def __post_init__(self):
        nillable_fields = ["network_translation_index"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemBroadWorksMobilityServiceAccessCodeAddRequest21(OCIRequest):
    """Add a service access code to a list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_access_code_list_name (str):

        country_code (str):

        service_access_code (str):

        description (Optional[str]):

    """

    service_access_code_list_name: str = field(
        metadata={"alias": "serviceAccessCodeListName"}
    )

    country_code: str = field(metadata={"alias": "countryCode"})

    service_access_code: str = field(metadata={"alias": "serviceAccessCode"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityServiceAccessCodeDeleteRequest21(OCIRequest):
    """Delete a service access code from a list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_access_code_list_name (str):

        country_code (str):

        service_access_code (str):

    """

    service_access_code_list_name: str = field(
        metadata={"alias": "serviceAccessCodeListName"}
    )

    country_code: str = field(metadata={"alias": "countryCode"})

    service_access_code: str = field(metadata={"alias": "serviceAccessCode"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityServiceAccessCodeGetListRequest21(OCIRequest):
    """Get a list of system service access codes.
        The response is either SystemBroadWorksMobilityServiceAccessCodeGetListResponse21 or ErrorResponse.

    Attributes:

        service_access_code_list_name (str):

    """

    service_access_code_list_name: str = field(
        metadata={"alias": "serviceAccessCodeListName"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityServiceAccessCodeListAddRequest(OCIRequest):
    """Add a Service Access Code list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityServiceAccessCodeListDeleteRequest(OCIRequest):
    """Delete a Service Access Code list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityServiceAccessCodeListGetListRequest(OCIRequest):
    """Get the list of Service Access Code lists.
        The response is either SystemBroadWorksMobilityServiceAccessCodeListGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemBroadWorksMobilityServiceAccessCodeListModifyRequest(OCIRequest):
    """Modify a Service Access Code list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        name (str):

        new_name (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityServiceAccessCodeListUsageGetRequest(OCIRequest):
    """Get all the Mobile Networks using a given Service Access Code list.
        The response is either SystemBroadWorksMobilityServiceAccessCodeListUsageGetResponse or ErrorResponse.

    Attributes:

        service_access_code_list_name (str):

    """

    service_access_code_list_name: str = field(
        metadata={"alias": "serviceAccessCodeListName"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityServiceAccessCodeModifyRequest21(OCIRequest):
    """Modify a service access code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_access_code_list_name (str):

        country_code (str):

        service_access_code (str):

        description (Optional[Nillable[str]]):

    """

    service_access_code_list_name: str = field(
        metadata={"alias": "serviceAccessCodeListName"}
    )

    country_code: str = field(metadata={"alias": "countryCode"})

    service_access_code: str = field(metadata={"alias": "serviceAccessCode"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemBroadWorksReceptionistEnterpriseGetRequest(OCIRequest):
    """Request to get the list of BroadWorks Receptionist - Enterprise parameters.
        The response is either SystemBroadWorksReceptionistEnterpriseGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemBroadWorksReceptionistEnterpriseModifyRequest(OCIRequest):
    """Request to modify BroadWorks Receptionist - Enterprise settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        max_monitored_users (Optional[int]):

    """

    max_monitored_users: Optional[int] = field(
        default=None, metadata={"alias": "maxMonitoredUsers"}
    )


@dataclass(kw_only=True)
class SystemBusyLampFieldGetRequest23V2(OCIRequest):
    """Request the system level data associated with the Busy Lamp
        Field service. The response is either a
        SystemBusyLampFieldGetResponse23V2 or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemBusyLampFieldModifyRequest(OCIRequest):
    """Modify the system level data associated with the Busy Lamp Field
        Service. The response is either a SuccessResponse or an
        ErrorResponse.

        The following elements are only used in AS data mode:
         forceUseOfTCP

        The following elements are only used in AS data mode and ignored in XS data mode:
         enableRedundancy
         redundancyTaskDelayMilliseconds
         redundancyTaskIntervalMilliseconds
         maxNumberOfSubscriptionsPerRedundancyTaskInterval

        The following elements are only used in AS data mode and ignored in XS data mode:
         ignoreUnansweredTerminatingCalls

    Attributes:

        display_local_user_identity_last_name_first (Optional[bool]):

        force_use_of_tcp (Optional[bool]):

        enable_redundancy (Optional[bool]):

        redundancy_task_delay_milliseconds (Optional[int]):

        redundancy_task_interval_milliseconds (Optional[int]):

        max_number_of_subscriptions_per_redundancy_task_interval (Optional[int]):

        ignore_unanswered_terminating_calls (Optional[bool]):

    """

    display_local_user_identity_last_name_first: Optional[bool] = field(
        default=None, metadata={"alias": "displayLocalUserIdentityLastNameFirst"}
    )

    force_use_of_tcp: Optional[bool] = field(
        default=None, metadata={"alias": "forceUseOfTCP"}
    )

    enable_redundancy: Optional[bool] = field(
        default=None, metadata={"alias": "enableRedundancy"}
    )

    redundancy_task_delay_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "redundancyTaskDelayMilliseconds"}
    )

    redundancy_task_interval_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "redundancyTaskIntervalMilliseconds"}
    )

    max_number_of_subscriptions_per_redundancy_task_interval: Optional[int] = field(
        default=None,
        metadata={"alias": "maxNumberOfSubscriptionsPerRedundancyTaskInterval"},
    )

    ignore_unanswered_terminating_calls: Optional[bool] = field(
        default=None, metadata={"alias": "ignoreUnansweredTerminatingCalls"}
    )


@dataclass(kw_only=True)
class SystemBwDiameterBaseDataGetRequest22(OCIRequest):
    """Requests the list of System Diameter base parameters.
        The response is either SystemBwDiameterBaseDataGetResponse22 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemBwDiameterBaseDataModifyRequest(OCIRequest):
    """Modifies the System Diameter base parameters.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        xs_realm (Optional[Nillable[str]]):

        xs_listening_port (Optional[int]):

        xs_listening_port_enabled (Optional[bool]):

        xs_listening_secure_port (Optional[int]):

        xs_listening_secure_port_enabled (Optional[bool]):

        ps_realm (Optional[Nillable[str]]):

        ps_listening_port (Optional[int]):

        ps_listening_port_enabled (Optional[bool]):

        ps_listening_secure_port (Optional[int]):

        ps_listening_secure_port_enabled (Optional[bool]):

        ps_relay_through_xs (Optional[bool]):

        xs_relay_listening_port (Optional[int]):

        tc_timer_seconds (Optional[int]):

        tw_timer_seconds (Optional[int]):

        request_timer_seconds (Optional[int]):

        busy_peer_detection_outstanding_txn_count (Optional[int]):

        busy_peer_restore_outstanding_txn_count (Optional[int]):

        dynamic_entry_inactivity_timer_hours (Optional[int]):

        advertised_offline_billing_application (Optional[str]):

        advertised_online_billing_application (Optional[str]):

        default_port (Optional[int]):

        default_secure_port (Optional[int]):

        peer_discovery_mode (Optional[str]):

    """

    xs_realm: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "xsRealm"}
    )

    xs_listening_port: Optional[int] = field(
        default=None, metadata={"alias": "xsListeningPort"}
    )

    xs_listening_port_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "xsListeningPortEnabled"}
    )

    xs_listening_secure_port: Optional[int] = field(
        default=None, metadata={"alias": "xsListeningSecurePort"}
    )

    xs_listening_secure_port_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "xsListeningSecurePortEnabled"}
    )

    ps_realm: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "psRealm"}
    )

    ps_listening_port: Optional[int] = field(
        default=None, metadata={"alias": "psListeningPort"}
    )

    ps_listening_port_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "psListeningPortEnabled"}
    )

    ps_listening_secure_port: Optional[int] = field(
        default=None, metadata={"alias": "psListeningSecurePort"}
    )

    ps_listening_secure_port_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "psListeningSecurePortEnabled"}
    )

    ps_relay_through_xs: Optional[bool] = field(
        default=None, metadata={"alias": "psRelayThroughXs"}
    )

    xs_relay_listening_port: Optional[int] = field(
        default=None, metadata={"alias": "xsRelayListeningPort"}
    )

    tc_timer_seconds: Optional[int] = field(
        default=None, metadata={"alias": "tcTimerSeconds"}
    )

    tw_timer_seconds: Optional[int] = field(
        default=None, metadata={"alias": "twTimerSeconds"}
    )

    request_timer_seconds: Optional[int] = field(
        default=None, metadata={"alias": "requestTimerSeconds"}
    )

    busy_peer_detection_outstanding_txn_count: Optional[int] = field(
        default=None, metadata={"alias": "busyPeerDetectionOutstandingTxnCount"}
    )

    busy_peer_restore_outstanding_txn_count: Optional[int] = field(
        default=None, metadata={"alias": "busyPeerRestoreOutstandingTxnCount"}
    )

    dynamic_entry_inactivity_timer_hours: Optional[int] = field(
        default=None, metadata={"alias": "dynamicEntryInactivityTimerHours"}
    )

    advertised_offline_billing_application: Optional[str] = field(
        default=None, metadata={"alias": "advertisedOfflineBillingApplication"}
    )

    advertised_online_billing_application: Optional[str] = field(
        default=None, metadata={"alias": "advertisedOnlineBillingApplication"}
    )

    default_port: Optional[int] = field(default=None, metadata={"alias": "defaultPort"})

    default_secure_port: Optional[int] = field(
        default=None, metadata={"alias": "defaultSecurePort"}
    )

    peer_discovery_mode: Optional[str] = field(
        default=None, metadata={"alias": "peerDiscoveryMode"}
    )

    def __post_init__(self):
        nillable_fields = ["xs_realm", "ps_realm"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemBwDiameterPeerAddRequest22(OCIRequest):
    """Add a static entry in the Diameter Peer Table.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        instance (str):

        identity (str):

        ip_address (Optional[str]):

        port (int):

        enabled (bool):

        secure (bool):

    """

    instance: str = field(metadata={"alias": "instance"})

    identity: str = field(metadata={"alias": "identity"})

    ip_address: Optional[str] = field(default=None, metadata={"alias": "ipAddress"})

    port: int = field(metadata={"alias": "port"})

    enabled: bool = field(metadata={"alias": "enabled"})

    secure: bool = field(metadata={"alias": "secure"})


@dataclass(kw_only=True)
class SystemBwDiameterPeerDeleteRequest(OCIRequest):
    """Remove a Diameter peer.  A peer cannot be removed if is referenced by a Realm Routing Table entry.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        instance (str):

        identity (str):

    """

    instance: str = field(metadata={"alias": "instance"})

    identity: str = field(metadata={"alias": "identity"})


@dataclass(kw_only=True)
class SystemBwDiameterPeerGetListRequest(OCIRequest):
    """Requests the list of Diameter peers.
        The response is either SystemBwDiameterPeerGetListResponse22 or ErrorResponse

    Attributes:

    """


@dataclass(kw_only=True)
class SystemBwDiameterPeerModifyRequest(OCIRequest):
    """Modifies the attributes of an entry in the Diameter Peer Table.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        instance (str):

        identity (str):

        ip_address (Optional[Nillable[str]]):

        port (Optional[int]):

        enabled (Optional[bool]):

        secure (Optional[bool]):

    """

    instance: str = field(metadata={"alias": "instance"})

    identity: str = field(metadata={"alias": "identity"})

    ip_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "ipAddress"}
    )

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    enabled: Optional[bool] = field(default=None, metadata={"alias": "enabled"})

    secure: Optional[bool] = field(default=None, metadata={"alias": "secure"})

    def __post_init__(self):
        nillable_fields = ["ip_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemBwDiameterRoutingPeerAddRequest(OCIRequest):
    """Add a Diameter routing peer.  The realm must refer to a Diameter routing realm whose action is relay.  The destinationPeerIdentity must refer to an existing Diameter peer whose mode is active.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        instance (str):

        realm (str):

        application_id (str):

        identity (str):

        priority (int):

        weight (int):

    """

    instance: str = field(metadata={"alias": "instance"})

    realm: str = field(metadata={"alias": "realm"})

    application_id: str = field(metadata={"alias": "applicationId"})

    identity: str = field(metadata={"alias": "identity"})

    priority: int = field(metadata={"alias": "priority"})

    weight: int = field(metadata={"alias": "weight"})


@dataclass(kw_only=True)
class SystemBwDiameterRoutingPeerDeleteRequest(OCIRequest):
    """Remove a Diameter routing peer.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        instance (str):

        realm (str):

        application_id (str):

        identity (str):

    """

    instance: str = field(metadata={"alias": "instance"})

    realm: str = field(metadata={"alias": "realm"})

    application_id: str = field(metadata={"alias": "applicationId"})

    identity: str = field(metadata={"alias": "identity"})


@dataclass(kw_only=True)
class SystemBwDiameterRoutingPeerGetListRequest(OCIRequest):
    """Requests the list of Diameter routing peers associated with the specified realm. The response is either SystemBwDiameterRoutingPeerGetListResponse or  ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemBwDiameterRoutingPeerModifyRequest(OCIRequest):
    """Modify a Diameter routing peer.  The realm must refer to a Diameter routing realm whose action is relay.  The destinationPeerIdentity must refer to an existing Diameter peer whose mode is active.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        instance (str):

        realm (str):

        application_id (str):

        identity (str):

        priority (Optional[int]):

        weight (Optional[int]):

    """

    instance: str = field(metadata={"alias": "instance"})

    realm: str = field(metadata={"alias": "realm"})

    application_id: str = field(metadata={"alias": "applicationId"})

    identity: str = field(metadata={"alias": "identity"})

    priority: Optional[int] = field(default=None, metadata={"alias": "priority"})

    weight: Optional[int] = field(default=None, metadata={"alias": "weight"})


@dataclass(kw_only=True)
class SystemBwDiameterRoutingRealmAddRequest(OCIRequest):
    """Add a static entry in the Realm Routing Table.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        instance (str):

        realm (str):

        application_id (str):

        default (bool):

    """

    instance: str = field(metadata={"alias": "instance"})

    realm: str = field(metadata={"alias": "realm"})

    application_id: str = field(metadata={"alias": "applicationId"})

    default: bool = field(metadata={"alias": "default"})


@dataclass(kw_only=True)
class SystemBwDiameterRoutingRealmDeleteRequest(OCIRequest):
    """Delete a static entry in the Realm Routing Table.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        instance (str):

        realm (str):

        application_id (str):

    """

    instance: str = field(metadata={"alias": "instance"})

    realm: str = field(metadata={"alias": "realm"})

    application_id: str = field(metadata={"alias": "applicationId"})


@dataclass(kw_only=True)
class SystemBwDiameterRoutingRealmGetListRequest(OCIRequest):
    """Requests the list of Diameter routing realms.
        The response is either SystemBwDiameterRoutingRealmGetListResponse or  ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemBwDiameterRoutingRealmModifyRequest(OCIRequest):
    """Modify a static entry in the Realm Routing Table.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        instance (str):

        realm (str):

        application_id (str):

        default (Optional[bool]):

    """

    instance: str = field(metadata={"alias": "instance"})

    realm: str = field(metadata={"alias": "realm"})

    application_id: str = field(metadata={"alias": "applicationId"})

    default: Optional[bool] = field(default=None, metadata={"alias": "default"})


@dataclass(kw_only=True)
class SystemCLIDDeliveryPrefixAddListRequest(OCIRequest):
    """Request to add one or more prefixes to the list of prefixes to be matched.
        Matched prefixes will result in CLID delivery for Korea.
        Prefix 00X must be sent using uppercase X.

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        prefix (List[str]):

    """

    prefix: List[str] = field(metadata={"alias": "prefix"})


@dataclass(kw_only=True)
class SystemCLIDDeliveryPrefixDeleteListRequest(OCIRequest):
    """Request to delete one or more prefixes from the system.
        Prefix 00X must be sent using uppercase X.

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        prefix (List[str]):

    """

    prefix: List[str] = field(metadata={"alias": "prefix"})


@dataclass(kw_only=True)
class SystemCLIDDeliveryPrefixGetListRequest(OCIRequest):
    """Request to get the list of provisioned prefixes in the system.
        The response is either a SystemCLIDDeliveryPrefixGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCPEConfigAddFileServerRequest14sp6(OCIRequest):
    """Add a device CPE config file server.
        The following elements are only used in AS data mode:
          extendedCaptureFileRepositoryName

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        device_type (str):

        file_repository_name (str):

        cpe_file_directory (Optional[str]):

        extended_capture_file_repository_name (Optional[str]):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    file_repository_name: str = field(metadata={"alias": "fileRepositoryName"})

    cpe_file_directory: Optional[str] = field(
        default=None, metadata={"alias": "cpeFileDirectory"}
    )

    extended_capture_file_repository_name: Optional[str] = field(
        default=None, metadata={"alias": "extendedCaptureFileRepositoryName"}
    )


@dataclass(kw_only=True)
class SystemCPEConfigDeleteFileServerRequest(OCIRequest):
    """Delete a device CPE config file server.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        device_type (str):

    """

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class SystemCPEConfigGetFileServerListRequest14sp6(OCIRequest):
    """Requests the list of device CPE config file servers.
        The response is either SystemCPEConfigGetFileServerListResponse14sp6 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCPEConfigModifyFileServerRequest14sp6(OCIRequest):
    """Modify a device CPE config file server.

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        device_type (str):

        file_repository_name (Optional[str]):

        cpe_file_directory (Optional[Nillable[str]]):

        extended_capture_file_repository_name (Optional[Nillable[str]]):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    file_repository_name: Optional[str] = field(
        default=None, metadata={"alias": "fileRepositoryName"}
    )

    cpe_file_directory: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "cpeFileDirectory"}
    )

    extended_capture_file_repository_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "extendedCaptureFileRepositoryName"}
    )

    def __post_init__(self):
        nillable_fields = [
            "cpe_file_directory",
            "extended_capture_file_repository_name",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCPEConfigParametersGetRequest21(OCIRequest):
    """Request to get the list of CPE Config system parameters.
        The response is either SystemCPEConfigParametersGetResponse21 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCPEConfigParametersModifyRequest21(OCIRequest):
    """Request to modify CPE Config system parameters.
        The response is either SuccessResponse or ErrorResponse.

        The following elements are only used in the AS data mode and ignored in the XS data mode:
          allowDeviceCredentialsRetrieval

    Attributes:

        enable_ip_device_management (Optional[bool]):

        ftp_connect_timeout_seconds (Optional[int]):

        ftp_file_transfer_timeout_seconds (Optional[int]):

        pause_between_file_rebuild_milliseconds (Optional[int]):

        device_access_app_server_cluster_name (Optional[Nillable[str]]):

        min_time_between_reset_milliseconds (Optional[int]):

        always_push_files_on_rebuild (Optional[bool]):

        max_file_operation_retry_attempts (Optional[int]):

        enable_auto_rebuild_config (Optional[bool]):

        event_queue_size (Optional[int]):

        allow_device_credentials_retrieval (Optional[bool]):

    """

    enable_ip_device_management: Optional[bool] = field(
        default=None, metadata={"alias": "enableIPDeviceManagement"}
    )

    ftp_connect_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "ftpConnectTimeoutSeconds"}
    )

    ftp_file_transfer_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "ftpFileTransferTimeoutSeconds"}
    )

    pause_between_file_rebuild_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "pauseBetweenFileRebuildMilliseconds"}
    )

    device_access_app_server_cluster_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceAccessAppServerClusterName"}
    )

    min_time_between_reset_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "minTimeBetweenResetMilliseconds"}
    )

    always_push_files_on_rebuild: Optional[bool] = field(
        default=None, metadata={"alias": "alwaysPushFilesOnRebuild"}
    )

    max_file_operation_retry_attempts: Optional[int] = field(
        default=None, metadata={"alias": "maxFileOperationRetryAttempts"}
    )

    enable_auto_rebuild_config: Optional[bool] = field(
        default=None, metadata={"alias": "enableAutoRebuildConfig"}
    )

    event_queue_size: Optional[int] = field(
        default=None, metadata={"alias": "eventQueueSize"}
    )

    allow_device_credentials_retrieval: Optional[bool] = field(
        default=None, metadata={"alias": "allowDeviceCredentialsRetrieval"}
    )

    def __post_init__(self):
        nillable_fields = ["device_access_app_server_cluster_name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCPEConfigRebuildConfigFileRequest(OCIRequest):
    """Rebuild the system default config file for the specified device type.
        If the device type is not specified, all files for all device types in the system are rebuilt.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_type (Optional[str]):

        rebuild_type (Optional[str]):

        force (Optional[bool]):

    """

    device_type: Optional[str] = field(default=None, metadata={"alias": "deviceType"})

    rebuild_type: Optional[str] = field(default=None, metadata={"alias": "rebuildType"})

    force: Optional[bool] = field(default=None, metadata={"alias": "force"})


@dataclass(kw_only=True)
class SystemCPEConfigRebuildDeviceConfigFileRequest(OCIRequest):
    """Rebuild the config file for a specified device.
        The following elements are only used in AS data mode:
          force

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_name (str):

        force (Optional[bool]):

    """

    device_name: str = field(metadata={"alias": "deviceName"})

    force: Optional[bool] = field(default=None, metadata={"alias": "force"})


@dataclass(kw_only=True)
class SystemCPEConfigReorderDeviceLinePortsRequest(OCIRequest):
    """Reorder the lines of a System device. You can not add or delete line ports, only
        re-ordering the list is allowed. The ordered list of line ports can be obtained
        with the SystemAccessDeviceGetRequest16 command.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_name (str):

        ordered_line_port_list (List[str]):

    """

    device_name: str = field(metadata={"alias": "deviceName"})

    ordered_line_port_list: List[str] = field(metadata={"alias": "orderedLinePortList"})


@dataclass(kw_only=True)
class SystemCPEConfigResetDeviceRequest(OCIRequest):
    """Reset a specific system device.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_name (str):

    """

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class SystemCPEConfigResetDeviceTypeRequest(OCIRequest):
    """Reset all the devices of the specified device type in the system.
        If the device type is not specified, all device in the system are reset.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_type (Optional[str]):

    """

    device_type: Optional[str] = field(default=None, metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class SystemCPEConfigSetConfigFileRequest(OCIRequest):
    """Request to set a new system default configuration file for a device type.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_type (str):

        config_file (str):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    config_file: str = field(metadata={"alias": "configFile"})


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingBrandingGetRequest(OCIRequest):
    """Request to get the system branding information.
        The response is either SystemCallCenterEnhancedReportingBrandingGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingBrandingModifyRequest(OCIRequest):
    """Request to modify the system branding configuration.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        branding_choice (Optional[str]):

        custom_branding_file (Optional[LabeledFileResource]):

    """

    branding_choice: Optional[str] = field(
        default=None, metadata={"alias": "brandingChoice"}
    )

    custom_branding_file: Optional[LabeledFileResource] = field(
        default=None, metadata={"alias": "customBrandingFile"}
    )


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingDataTemplateGetListRequest(OCIRequest):
    """Request to get the list of data template and the corresponding information in the system.
        The response is either a SystemCallCenterEnhancedReportingDataTemplateGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingGetRequest(OCIRequest):
    """Request to get the call center enhanced reporting system settings.
        The response is either a SystemCallCenterEnhancedReportingGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingModifyRequest(OCIRequest):
    """Modify the system settings for call center enhanced reporting.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        archive_reports (Optional[bool]):

        report_application_url (Optional[Nillable[str]]):

        repository_application_url (Optional[Nillable[str]]):

    """

    archive_reports: Optional[bool] = field(
        default=None, metadata={"alias": "archiveReports"}
    )

    report_application_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "reportApplicationURL"}
    )

    repository_application_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "repositoryApplicationURL"}
    )

    def __post_init__(self):
        nillable_fields = ["report_application_url", "repository_application_url"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingReportTemplateAddRequest(OCIRequest):
    """Request to add a system level call center report template.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        description (Optional[str]):

        data_template (str):

        filter_number (Optional[int]):

        xslt_template (LabeledFileResource):

        scope (str):

        is_enabled (bool):

        is_realtime_report (Optional[bool]):

        call_completion_threshold_param (Optional[str]):

        short_duration_threshold_param (Optional[str]):

        service_level_threshold_param (Optional[str]):

        service_level_inclusions_param (Optional[str]):

        service_level_objective_threshold_param (Optional[str]):

        abandoned_call_threshold_param (Optional[str]):

        service_level_threshold_param_number (Optional[int]):

        abandoned_call_threshold_param_number (Optional[int]):

        filter_value (Optional[List[str]]):

    """

    name: str = field(metadata={"alias": "name"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    data_template: str = field(metadata={"alias": "dataTemplate"})

    filter_number: Optional[int] = field(
        default=None, metadata={"alias": "filterNumber"}
    )

    xslt_template: LabeledFileResource = field(metadata={"alias": "xsltTemplate"})

    scope: str = field(metadata={"alias": "scope"})

    is_enabled: bool = field(metadata={"alias": "isEnabled"})

    is_realtime_report: Optional[bool] = field(
        default=None, metadata={"alias": "isRealtimeReport"}
    )

    call_completion_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "callCompletionThresholdParam"}
    )

    short_duration_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "shortDurationThresholdParam"}
    )

    service_level_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelThresholdParam"}
    )

    service_level_inclusions_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelInclusionsParam"}
    )

    service_level_objective_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelObjectiveThresholdParam"}
    )

    abandoned_call_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "abandonedCallThresholdParam"}
    )

    service_level_threshold_param_number: Optional[int] = field(
        default=None, metadata={"alias": "serviceLevelThresholdParamNumber"}
    )

    abandoned_call_threshold_param_number: Optional[int] = field(
        default=None, metadata={"alias": "abandonedCallThresholdParamNumber"}
    )

    filter_value: Optional[List[str]] = field(
        default=None, metadata={"alias": "filterValue"}
    )


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingReportTemplateDeleteRequest(OCIRequest):
    """Request to delete a system level call center report template.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingReportTemplateGetListRequest(OCIRequest):
    """Request to get system level call center report template list.
        The response is either a SystemCallCenterEnhancedReportingReportTemplateGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingReportTemplateGetRequest(OCIRequest):
    """Request to get a system level call center report template.
        The response is either a SystemCallCenterEnhancedReportingReportTemplateGetResponse or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingReportTemplateModifyRequest(OCIRequest):
    """Request to modify a system level call center report template.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        new_name (Optional[str]):

        description (Optional[Nillable[str]]):

        xslt_template (Optional[LabeledFileResource]):

        scope (Optional[str]):

        is_enabled (Optional[bool]):

        is_realtime_report (Optional[bool]):

        filter_number (Optional[Nillable[int]]):

        filter_value (Optional[Nillable[CallCenterReportDataTemplateQueryFilterValueReplacementList]]):

    """

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    xslt_template: Optional[LabeledFileResource] = field(
        default=None, metadata={"alias": "xsltTemplate"}
    )

    scope: Optional[str] = field(default=None, metadata={"alias": "scope"})

    is_enabled: Optional[bool] = field(default=None, metadata={"alias": "isEnabled"})

    is_realtime_report: Optional[bool] = field(
        default=None, metadata={"alias": "isRealtimeReport"}
    )

    filter_number: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "filterNumber"}
    )

    filter_value: Optional[
        Nillable[CallCenterReportDataTemplateQueryFilterValueReplacementList]
    ] = field(default=None, metadata={"alias": "filterValue"})

    def __post_init__(self):
        nillable_fields = ["description", "filter_number", "filter_value"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingScheduledReportGetActiveListRequest(OCIRequest):
    """Request to get the list of all active call center reporting scheduled reports in the system.
        The response is either a SystemCallCenterEnhancedReportingScheduledReportGetActiveListResponse or an ErrorResponse.

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_call_center_scheduled_report_name (Optional[List[SearchCriteriaCallCenterScheduledReportName]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_exact_call_center_scheduled_report_service_provider (Optional[SearchCriteriaExactCallCenterScheduledReportServiceProvider]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_exact_call_center_scheduled_report_created_by_supervisor (Optional[SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor]):

        search_criteria_call_center_report_template_name (Optional[List[SearchCriteriaCallCenterReportTemplateName]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_call_center_scheduled_report_name: Optional[
        List[SearchCriteriaCallCenterScheduledReportName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaCallCenterScheduledReportName"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_exact_call_center_scheduled_report_service_provider: Optional[
        SearchCriteriaExactCallCenterScheduledReportServiceProvider
    ] = field(
        default=None,
        metadata={
            "alias": "searchCriteriaExactCallCenterScheduledReportServiceProvider"
        },
    )

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_exact_call_center_scheduled_report_created_by_supervisor: Optional[
        SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor
    ] = field(
        default=None,
        metadata={
            "alias": "searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor"
        },
    )

    search_criteria_call_center_report_template_name: Optional[
        List[SearchCriteriaCallCenterReportTemplateName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaCallCenterReportTemplateName"}
    )


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingScheduledReportGetCompletedListRequest(
    OCIRequest
):
    """Request to get the list of all completed call center reporting scheduled reports in the system.
        The response is either a SystemCallCenterEnhancedReportingScheduledReportGetCompletedListResponse or an ErrorResponse.

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_call_center_scheduled_report_name (Optional[List[SearchCriteriaCallCenterScheduledReportName]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_exact_call_center_scheduled_report_service_provider (Optional[SearchCriteriaExactCallCenterScheduledReportServiceProvider]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_exact_call_center_scheduled_report_created_by_supervisor (Optional[SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor]):

        search_criteria_call_center_report_template_name (Optional[List[SearchCriteriaCallCenterReportTemplateName]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_call_center_scheduled_report_name: Optional[
        List[SearchCriteriaCallCenterScheduledReportName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaCallCenterScheduledReportName"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_exact_call_center_scheduled_report_service_provider: Optional[
        SearchCriteriaExactCallCenterScheduledReportServiceProvider
    ] = field(
        default=None,
        metadata={
            "alias": "searchCriteriaExactCallCenterScheduledReportServiceProvider"
        },
    )

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_exact_call_center_scheduled_report_created_by_supervisor: Optional[
        SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor
    ] = field(
        default=None,
        metadata={
            "alias": "searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor"
        },
    )

    search_criteria_call_center_report_template_name: Optional[
        List[SearchCriteriaCallCenterReportTemplateName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaCallCenterReportTemplateName"}
    )


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingScheduledReportGetListRequest(OCIRequest):
    """Request to get the list of all call center reporting scheduled reports in the system.
        The response is either an SystemCallCenterEnhancedReportingScheduledReportGetListResponse or an ErrorResponse.

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_call_center_scheduled_report_name (Optional[List[SearchCriteriaCallCenterScheduledReportName]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_exact_call_center_scheduled_report_service_provider (Optional[SearchCriteriaExactCallCenterScheduledReportServiceProvider]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_exact_call_center_scheduled_report_created_by_supervisor (Optional[SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor]):

        search_criteria_call_center_report_template_name (Optional[List[SearchCriteriaCallCenterReportTemplateName]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_call_center_scheduled_report_name: Optional[
        List[SearchCriteriaCallCenterScheduledReportName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaCallCenterScheduledReportName"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_exact_call_center_scheduled_report_service_provider: Optional[
        SearchCriteriaExactCallCenterScheduledReportServiceProvider
    ] = field(
        default=None,
        metadata={
            "alias": "searchCriteriaExactCallCenterScheduledReportServiceProvider"
        },
    )

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_exact_call_center_scheduled_report_created_by_supervisor: Optional[
        SearchCriteriaExactCallCenterScheduledReportCreatedBySupervisor
    ] = field(
        default=None,
        metadata={
            "alias": "searchCriteriaExactCallCenterScheduledReportCreatedBySupervisor"
        },
    )

    search_criteria_call_center_report_template_name: Optional[
        List[SearchCriteriaCallCenterReportTemplateName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaCallCenterReportTemplateName"}
    )


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingScheduledReportGetReportTemplateUsageListRequest(
    OCIRequest
):
    """Request to get all the call center reporting scheduled report in the system that uses a
        given system level report template.
        The response is either a SystemCallCenterEnhancedReportingScheduledReportGetReportTemplateUsageListResponse
        or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingScheduledTaskParametersGetRequest25(OCIRequest):
    """Request to get the system settings for the call center enhanced reporting scheduling tasks.
        The response is either a SystemCallCenterEnhancedReportingScheduledTaskParametersGetResponse25 or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingScheduledTaskParametersModifyRequest(OCIRequest):
    """Modify the system settings for the call center enhanced reporting scheduling tasks.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        scheduled_report_search_interval_minutes (Optional[int]):

        maximum_scheduled_reports_per_interval (Optional[int]):

        delete_scheduled_report_days_after_completion (Optional[int]):

        call_center_event_mode (Optional[str]):

        use_dialed_address_for_remote_number (Optional[bool]):

    """

    scheduled_report_search_interval_minutes: Optional[int] = field(
        default=None, metadata={"alias": "scheduledReportSearchIntervalMinutes"}
    )

    maximum_scheduled_reports_per_interval: Optional[int] = field(
        default=None, metadata={"alias": "maximumScheduledReportsPerInterval"}
    )

    delete_scheduled_report_days_after_completion: Optional[int] = field(
        default=None, metadata={"alias": "deleteScheduledReportDaysAfterCompletion"}
    )

    call_center_event_mode: Optional[str] = field(
        default=None, metadata={"alias": "callCenterEventMode"}
    )

    use_dialed_address_for_remote_number: Optional[bool] = field(
        default=None, metadata={"alias": "useDialedAddressForRemoteNumber"}
    )


@dataclass(kw_only=True)
class SystemCallCenterEventRecordingFileParametersGetRequest(OCIRequest):
    """Request to get the list of Call Center Event Recording File system parameters.
        The response is either SystemCallCenterEventRecordingFileParametersGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCallCenterEventRecordingFileParametersModifyRequest(OCIRequest):
    """Request to modify Call Center Event Recording File system parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        file_retention_time_days (Optional[int]):

        file_rotation_period_minutes (Optional[str]):

        file_rotation_offset_minutes (Optional[int]):

        remote_url (Optional[Nillable[str]]):

        remote_user_id (Optional[Nillable[str]]):

        remote_password (Optional[Nillable[str]]):

    """

    file_retention_time_days: Optional[int] = field(
        default=None, metadata={"alias": "fileRetentionTimeDays"}
    )

    file_rotation_period_minutes: Optional[str] = field(
        default=None, metadata={"alias": "fileRotationPeriodMinutes"}
    )

    file_rotation_offset_minutes: Optional[int] = field(
        default=None, metadata={"alias": "fileRotationOffsetMinutes"}
    )

    remote_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "remoteUrl"}
    )

    remote_user_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "remoteUserId"}
    )

    remote_password: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "remotePassword"}
    )

    def __post_init__(self):
        nillable_fields = ["remote_url", "remote_user_id", "remote_password"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCallCenterGetRequest21(OCIRequest):
    """Request the system level data associated with Call Center.
        The response is either a SystemCallCenterGetResponse21 or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCallCenterModifyRequest(OCIRequest):
    """Modify the system level data associated with Call Center.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        default_from_address (Optional[str]):

        statistics_sampling_period_minutes (Optional[int]):

        default_enable_guard_timer (Optional[bool]):

        default_guard_timer_seconds (Optional[int]):

        force_agent_unavailable_on_dnd_activation (Optional[bool]):

        force_agent_unavailable_on_personal_calls (Optional[bool]):

        force_agent_unavailable_on_bounced_call_limit (Optional[bool]):

        number_consecutive_bounced_calls_to_force_agent_unavailable (Optional[int]):

        force_agent_unavailable_on_not_reachable (Optional[bool]):

        default_play_ring_when_offer_call (Optional[bool]):

        uniform_call_distribution_policy_scope (Optional[str]):

        call_handling_sampling_period_minutes (Optional[int]):

        call_handling_minimum_sampling_size (Optional[int]):

        play_tone_to_agent_for_emergency_call (Optional[bool]):

        emergency_call_clid_prefix (Optional[str]):

        threshold_crossing_notification_email_guard_timer_seconds (Optional[int]):

        allow_agent_device_initiated_forward (Optional[bool]):

    """

    default_from_address: Optional[str] = field(
        default=None, metadata={"alias": "defaultFromAddress"}
    )

    statistics_sampling_period_minutes: Optional[int] = field(
        default=None, metadata={"alias": "statisticsSamplingPeriodMinutes"}
    )

    default_enable_guard_timer: Optional[bool] = field(
        default=None, metadata={"alias": "defaultEnableGuardTimer"}
    )

    default_guard_timer_seconds: Optional[int] = field(
        default=None, metadata={"alias": "defaultGuardTimerSeconds"}
    )

    force_agent_unavailable_on_dnd_activation: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnDNDActivation"}
    )

    force_agent_unavailable_on_personal_calls: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnPersonalCalls"}
    )

    force_agent_unavailable_on_bounced_call_limit: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnBouncedCallLimit"}
    )

    number_consecutive_bounced_calls_to_force_agent_unavailable: Optional[int] = field(
        default=None,
        metadata={"alias": "numberConsecutiveBouncedCallsToForceAgentUnavailable"},
    )

    force_agent_unavailable_on_not_reachable: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnNotReachable"}
    )

    default_play_ring_when_offer_call: Optional[bool] = field(
        default=None, metadata={"alias": "defaultPlayRingWhenOfferCall"}
    )

    uniform_call_distribution_policy_scope: Optional[str] = field(
        default=None, metadata={"alias": "uniformCallDistributionPolicyScope"}
    )

    call_handling_sampling_period_minutes: Optional[int] = field(
        default=None, metadata={"alias": "callHandlingSamplingPeriodMinutes"}
    )

    call_handling_minimum_sampling_size: Optional[int] = field(
        default=None, metadata={"alias": "callHandlingMinimumSamplingSize"}
    )

    play_tone_to_agent_for_emergency_call: Optional[bool] = field(
        default=None, metadata={"alias": "playToneToAgentForEmergencyCall"}
    )

    emergency_call_clid_prefix: Optional[str] = field(
        default=None, metadata={"alias": "emergencyCallCLIDPrefix"}
    )

    threshold_crossing_notification_email_guard_timer_seconds: Optional[int] = field(
        default=None,
        metadata={"alias": "thresholdCrossingNotificationEmailGuardTimerSeconds"},
    )

    allow_agent_device_initiated_forward: Optional[bool] = field(
        default=None, metadata={"alias": "allowAgentDeviceInitiatedForward"}
    )


@dataclass(kw_only=True)
class SystemCallMeNowGetRequest(OCIRequest):
    """Request the system level data associated with Call Me Now service.
        The response is either a SystemCallMeNowGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCallMeNowModifyRequest(OCIRequest):
    """Modify the system level data associated with Call me now service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        passcode_length (Optional[int]):

        passcode_timeout_seconds (Optional[int]):

    """

    passcode_length: Optional[int] = field(
        default=None, metadata={"alias": "passcodeLength"}
    )

    passcode_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "passcodeTimeoutSeconds"}
    )


@dataclass(kw_only=True)
class SystemCallNotifyGetRequest(OCIRequest):
    """Request the system level data associated with Call Notify.
        The response is either a SystemCallNotifyGetResponse or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCallNotifyModifyRequest(OCIRequest):
    """Modify the system level data associated with Call Notify.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        default_from_address (Optional[str]):

        use_short_subject_line (Optional[bool]):

        use_dn_in_mail_body (Optional[bool]):

    """

    default_from_address: Optional[str] = field(
        default=None, metadata={"alias": "defaultFromAddress"}
    )

    use_short_subject_line: Optional[bool] = field(
        default=None, metadata={"alias": "useShortSubjectLine"}
    )

    use_dn_in_mail_body: Optional[bool] = field(
        default=None, metadata={"alias": "useDnInMailBody"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingGetPolicyRequest24V2(OCIRequest):
    """The response is either a SystemCallProcessingGetPolicyResponse24V2 or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCallProcessingModifyPolicyRequest15(OCIRequest):
    """Modify the system level data associated with Call Processing Policy.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode:
           enableDialableCallerID
           allowConfigurableCLIDForRedirectingIdentity
        The following elements are only used in AS data mode and ignored in XS data mode:
           maxConferenceParties
           enablePhoneListLookup
           useMaxConcurrentTerminatingAlertingRequests
           maxConcurrentTerminatingAlertingRequests
           delayTimerToRemoveCancelledCallsInSeconds
           includeRedirectionsInMaximumNumberOfConcurrentCalls
           useUserPhoneNumberForGroupCallsWhenInternalClidUnavailable
           useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable
           allowMobileDNForRedirectingIdentity
           conferenceDisableClampTones
           useMaxCallsPerSecond
           maxCallsPerSecond
           forceTreatmentOnMaxRedirectionDepth
           enableUserSelectionOfExternalCLIDPolicy
           enableUserConfigurableCLIDModification
        The following elements are only used in XS data mode and ignored in AS data mode:
           routeOverrideDomain
           routeOverridePrefix

    Attributes:

        use_max_simultaneous_calls (Optional[bool]):

        max_simultaneous_calls (Optional[int]):

        use_max_simultaneous_video_calls (Optional[bool]):

        max_simultaneous_video_calls (Optional[int]):

        use_max_call_time_for_answered_calls (Optional[bool]):

        max_call_time_for_answered_calls_minutes (Optional[int]):

        use_max_call_time_for_unanswered_calls (Optional[bool]):

        max_call_time_for_unanswered_calls_minutes (Optional[int]):

        media_policy_selection (Optional[str]):

        supported_media_set_name (Optional[Nillable[str]]):

        network_usage_selection (Optional[str]):

        enforce_group_calling_line_identity_restriction (Optional[bool]):

        enforce_enterprise_calling_line_identity_restriction (Optional[bool]):

        allow_enterprise_group_call_typing_for_private_dialing_plan (Optional[bool]):

        allow_enterprise_group_call_typing_for_public_dialing_plan (Optional[bool]):

        override_clid_restriction_for_private_call_category (Optional[bool]):

        use_enterprise_clid_for_private_call_category (Optional[bool]):

        enable_enterprise_extension_dialing (Optional[bool]):

        conference_uri (Optional[Nillable[str]]):

        max_conference_parties (Optional[int]):

        use_max_concurrent_redirected_calls (Optional[bool]):

        max_concurrent_redirected_calls (Optional[int]):

        use_max_find_me_follow_me_depth (Optional[bool]):

        max_find_me_follow_me_depth (Optional[int]):

        max_redirection_depth (Optional[int]):

        use_max_concurrent_find_me_follow_me_invocations (Optional[bool]):

        max_concurrent_find_me_follow_me_invocations (Optional[int]):

        clid_policy (Optional[str]):

        emergency_clid_policy (Optional[str]):

        allow_alternate_numbers_for_redirecting_identity (Optional[bool]):

        enable_dialable_caller_id (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        enterprise_calls_clid_policy (Optional[str]):

        enterprise_group_calls_clid_policy (Optional[str]):

        service_provider_group_calls_clid_policy (Optional[str]):

        enable_phone_list_lookup (Optional[bool]):

        use_max_concurrent_terminating_alerting_requests (Optional[bool]):

        max_concurrent_terminating_alerting_requests (Optional[int]):

        delay_timer_to_remove_cancelled_calls_in_seconds (Optional[int]):

        include_redirections_in_maximum_number_of_concurrent_calls (Optional[bool]):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (Optional[bool]):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (Optional[bool]):

        route_override_domain (Optional[Nillable[str]]):

        route_override_prefix (Optional[Nillable[str]]):

        allow_mobile_dn_for_redirecting_identity (Optional[bool]):

        conference_disable_clamp_tones (Optional[bool]):

        use_max_calls_per_second (Optional[bool]):

        max_calls_per_second (Optional[int]):

        force_treatment_on_max_redirection_depth (Optional[bool]):

        enable_user_selection_of_external_clid_policy (Optional[bool]):

        enable_user_configurable_clid_modification (Optional[bool]):

    """

    use_max_simultaneous_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousCalls"}
    )

    use_max_simultaneous_video_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    media_policy_selection: Optional[str] = field(
        default=None, metadata={"alias": "mediaPolicySelection"}
    )

    supported_media_set_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "supportedMediaSetName"}
    )

    network_usage_selection: Optional[str] = field(
        default=None, metadata={"alias": "networkUsageSelection"}
    )

    enforce_group_calling_line_identity_restriction: Optional[bool] = field(
        default=None, metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: Optional[bool] = field(
        default=None,
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"},
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"},
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"},
    )

    override_clid_restriction_for_private_call_category: Optional[bool] = field(
        default=None,
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"},
    )

    use_enterprise_clid_for_private_call_category: Optional[bool] = field(
        default=None, metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    enable_enterprise_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    conference_uri: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "conferenceURI"}
    )

    max_conference_parties: Optional[int] = field(
        default=None, metadata={"alias": "maxConferenceParties"}
    )

    use_max_concurrent_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_find_me_follow_me_depth: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxRedirectionDepth"}
    )

    use_max_concurrent_find_me_follow_me_invocations: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    emergency_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "emergencyClidPolicy"}
    )

    allow_alternate_numbers_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    enable_dialable_caller_id: Optional[bool] = field(
        default=None, metadata={"alias": "enableDialableCallerID"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    enterprise_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    enable_phone_list_lookup: Optional[bool] = field(
        default=None, metadata={"alias": "enablePhoneListLookup"}
    )

    use_max_concurrent_terminating_alerting_requests: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentTerminatingAlertingRequests"}
    )

    max_concurrent_terminating_alerting_requests: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentTerminatingAlertingRequests"}
    )

    delay_timer_to_remove_cancelled_calls_in_seconds: Optional[int] = field(
        default=None, metadata={"alias": "delayTimerToRemoveCancelledCallsInSeconds"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"},
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"
        },
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        },
    )

    route_override_domain: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "routeOverrideDomain"}
    )

    route_override_prefix: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "routeOverridePrefix"}
    )

    allow_mobile_dn_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowMobileDNForRedirectingIdentity"}
    )

    conference_disable_clamp_tones: Optional[bool] = field(
        default=None, metadata={"alias": "conferenceDisableClampTones"}
    )

    use_max_calls_per_second: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallsPerSecond"}
    )

    max_calls_per_second: Optional[int] = field(
        default=None, metadata={"alias": "maxCallsPerSecond"}
    )

    force_treatment_on_max_redirection_depth: Optional[bool] = field(
        default=None, metadata={"alias": "forceTreatmentOnMaxRedirectionDepth"}
    )

    enable_user_selection_of_external_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "enableUserSelectionOfExternalCLIDPolicy"}
    )

    enable_user_configurable_clid_modification: Optional[bool] = field(
        default=None, metadata={"alias": "enableUserConfigurableCLIDModification"}
    )

    def __post_init__(self):
        nillable_fields = [
            "supported_media_set_name",
            "conference_uri",
            "route_override_domain",
            "route_override_prefix",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileAddRequest21(OCIRequest):
    """Add a call processing policy profile to system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        description (Optional[str]):

        assigned_subscriber_type (Optional[List[str]]):

    """

    name: str = field(metadata={"alias": "name"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    assigned_subscriber_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "assignedSubscriberType"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileAutoAttendantProfileGetRequest22V2(OCIRequest):
    """Request to get the configuration for a call processing policy profile Auto Attendant subscriber type profile.
        The response is either a SystemCallProcessingPolicyProfileAutoAttendantProfileGetRequestResponse22V2 or an
        ErrorResponse.
        The response contains the call processing policy profile setting for Auto Attendant.

    Attributes:

        call_processing_policy_profile_name (str):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileAutoAttendantProfileModifyRequest(OCIRequest):
    """Modify a call processing policy profile auto attendant subscriber type profile in system.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
           useMaxCallsPerSecond
           maxCallsPerSecond

    Attributes:

        call_processing_policy_profile_name (str):

        use_clid_policy (Optional[bool]):

        clid_policy (Optional[str]):

        allow_alternate_numbers_for_redirecting_identity (Optional[bool]):

        use_group_name (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        allow_department_clid_name_override (Optional[bool]):

        enterprise_calls_clid_policy (Optional[str]):

        enterprise_group_calls_clid_policy (Optional[str]):

        service_provider_group_calls_clid_policy (Optional[str]):

        use_call_limits_policy (Optional[bool]):

        use_max_simultaneous_calls (Optional[bool]):

        max_simultaneous_calls (Optional[int]):

        use_max_simultaneous_video_calls (Optional[bool]):

        max_simultaneous_video_calls (Optional[int]):

        use_max_call_time_for_answered_calls (Optional[bool]):

        max_call_time_for_answered_calls_minutes (Optional[int]):

        use_max_concurrent_redirected_calls (Optional[bool]):

        max_concurrent_redirected_calls (Optional[int]):

        max_redirection_depth (Optional[int]):

        use_translation_routing_policy (Optional[bool]):

        network_usage_selection (Optional[str]):

        enable_enterprise_extension_dialing (Optional[bool]):

        enforce_group_calling_line_identity_restriction (Optional[bool]):

        enforce_enterprise_calling_line_identity_restriction (Optional[bool]):

        allow_enterprise_group_call_typing_for_private_dialing_plan (Optional[bool]):

        allow_enterprise_group_call_typing_for_public_dialing_plan (Optional[bool]):

        override_clid_restriction_for_private_call_category (Optional[bool]):

        use_enterprise_clid_for_private_call_category (Optional[bool]):

        use_incoming_clid_policy (Optional[bool]):

        enable_dialable_caller_id (Optional[bool]):

        include_redirections_in_maximum_number_of_concurrent_calls (Optional[bool]):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (Optional[bool]):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (Optional[bool]):

        use_max_calls_per_second (Optional[bool]):

        max_calls_per_second (Optional[int]):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )

    use_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCLIDPolicy"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupName"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: Optional[bool] = field(
        default=None, metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCallLimitsPolicy"}
    )

    use_max_simultaneous_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousCalls"}
    )

    use_max_simultaneous_video_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    max_redirection_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxRedirectionDepth"}
    )

    use_translation_routing_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: Optional[str] = field(
        default=None, metadata={"alias": "networkUsageSelection"}
    )

    enable_enterprise_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: Optional[bool] = field(
        default=None, metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: Optional[bool] = field(
        default=None,
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"},
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"},
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"},
    )

    override_clid_restriction_for_private_call_category: Optional[bool] = field(
        default=None,
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"},
    )

    use_enterprise_clid_for_private_call_category: Optional[bool] = field(
        default=None, metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    use_incoming_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useIncomingCLIDPolicy"}
    )

    enable_dialable_caller_id: Optional[bool] = field(
        default=None, metadata={"alias": "enableDialableCallerID"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"},
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"
        },
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        },
    )

    use_max_calls_per_second: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallsPerSecond"}
    )

    max_calls_per_second: Optional[int] = field(
        default=None, metadata={"alias": "maxCallsPerSecond"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileBroadWorksAnywhereProfileGetRequest22V2(
    OCIRequest
):
    """Request to get the configuration for a call processing policy profile BroadWorks Anywhere subscriber type profile.
        The response is either a SystemCallProcessingPolicyProfileBroadWorksAnywhereProfileGetRequestResponse22V2 or an
        ErrorResponse.

    Attributes:

        call_processing_policy_profile_name (str):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileBroadWorksAnywhereProfileModifyRequest(
    OCIRequest
):
    """Modify a call processing policy profile broadworks anywhare subscriber type profile in system.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
           useMaxCallsPerSecond
           maxCallsPerSecond

    Attributes:

        call_processing_policy_profile_name (str):

        use_clid_policy (Optional[bool]):

        clid_policy (Optional[str]):

        allow_alternate_numbers_for_redirecting_identity (Optional[bool]):

        use_group_name (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        allow_department_clid_name_override (Optional[bool]):

        enterprise_calls_clid_policy (Optional[str]):

        enterprise_group_calls_clid_policy (Optional[str]):

        service_provider_group_calls_clid_policy (Optional[str]):

        use_call_limits_policy (Optional[bool]):

        use_max_simultaneous_calls (Optional[bool]):

        max_simultaneous_calls (Optional[int]):

        use_max_simultaneous_video_calls (Optional[bool]):

        max_simultaneous_video_calls (Optional[int]):

        use_max_concurrent_redirected_calls (Optional[bool]):

        max_concurrent_redirected_calls (Optional[int]):

        max_redirection_depth (Optional[int]):

        use_translation_routing_policy (Optional[bool]):

        network_usage_selection (Optional[str]):

        enable_enterprise_extension_dialing (Optional[bool]):

        enforce_group_calling_line_identity_restriction (Optional[bool]):

        enforce_enterprise_calling_line_identity_restriction (Optional[bool]):

        allow_enterprise_group_call_typing_for_private_dialing_plan (Optional[bool]):

        allow_enterprise_group_call_typing_for_public_dialing_plan (Optional[bool]):

        override_clid_restriction_for_private_call_category (Optional[bool]):

        use_enterprise_clid_for_private_call_category (Optional[bool]):

        use_incoming_clid_policy (Optional[bool]):

        enable_dialable_caller_id (Optional[bool]):

        include_redirections_in_maximum_number_of_concurrent_calls (Optional[bool]):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (Optional[bool]):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (Optional[bool]):

        use_max_calls_per_second (Optional[bool]):

        max_calls_per_second (Optional[int]):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )

    use_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCLIDPolicy"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupName"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: Optional[bool] = field(
        default=None, metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCallLimitsPolicy"}
    )

    use_max_simultaneous_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousCalls"}
    )

    use_max_simultaneous_video_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_concurrent_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    max_redirection_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxRedirectionDepth"}
    )

    use_translation_routing_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: Optional[str] = field(
        default=None, metadata={"alias": "networkUsageSelection"}
    )

    enable_enterprise_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: Optional[bool] = field(
        default=None, metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: Optional[bool] = field(
        default=None,
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"},
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"},
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"},
    )

    override_clid_restriction_for_private_call_category: Optional[bool] = field(
        default=None,
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"},
    )

    use_enterprise_clid_for_private_call_category: Optional[bool] = field(
        default=None, metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    use_incoming_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useIncomingCLIDPolicy"}
    )

    enable_dialable_caller_id: Optional[bool] = field(
        default=None, metadata={"alias": "enableDialableCallerID"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"},
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"
        },
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        },
    )

    use_max_calls_per_second: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallsPerSecond"}
    )

    max_calls_per_second: Optional[int] = field(
        default=None, metadata={"alias": "maxCallsPerSecond"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileCallCenterProfileGetRequest22V2(OCIRequest):
    """Request to get the configuration for a call processing policy profile Call Center subscriber type profile.
        The response is either a SystemCallProcessingPolicyProfileCallCenterProfileGetRequestResponse22V2 or an
        ErrorResponse.

    Attributes:

        call_processing_policy_profile_name (str):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileCallCenterProfileModifyRequest(OCIRequest):
    """Modify a call processing policy profile call center subscriber type profile in system.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
           useMaxCallsPerSecond
           maxCallsPerSecond

    Attributes:

        call_processing_policy_profile_name (str):

        use_clid_policy (Optional[bool]):

        clid_policy (Optional[str]):

        allow_alternate_numbers_for_redirecting_identity (Optional[bool]):

        use_group_name (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        allow_department_clid_name_override (Optional[bool]):

        enterprise_calls_clid_policy (Optional[str]):

        enterprise_group_calls_clid_policy (Optional[str]):

        service_provider_group_calls_clid_policy (Optional[str]):

        use_call_limits_policy (Optional[bool]):

        use_max_simultaneous_calls (Optional[bool]):

        max_simultaneous_calls (Optional[int]):

        use_max_simultaneous_video_calls (Optional[bool]):

        max_simultaneous_video_calls (Optional[int]):

        use_max_concurrent_redirected_calls (Optional[bool]):

        max_concurrent_redirected_calls (Optional[int]):

        use_max_find_me_follow_me_depth (Optional[bool]):

        use_max_concurrent_find_me_follow_me_invocations (Optional[bool]):

        max_concurrent_find_me_follow_me_invocations (Optional[int]):

        max_find_me_follow_me_depth (Optional[int]):

        max_redirection_depth (Optional[int]):

        use_translation_routing_policy (Optional[bool]):

        network_usage_selection (Optional[str]):

        enable_enterprise_extension_dialing (Optional[bool]):

        enforce_group_calling_line_identity_restriction (Optional[bool]):

        enforce_enterprise_calling_line_identity_restriction (Optional[bool]):

        allow_enterprise_group_call_typing_for_private_dialing_plan (Optional[bool]):

        allow_enterprise_group_call_typing_for_public_dialing_plan (Optional[bool]):

        override_clid_restriction_for_private_call_category (Optional[bool]):

        use_incoming_clid_policy (Optional[bool]):

        enable_dialable_caller_id (Optional[bool]):

        include_redirections_in_maximum_number_of_concurrent_calls (Optional[bool]):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (Optional[bool]):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (Optional[bool]):

        use_max_calls_per_second (Optional[bool]):

        max_calls_per_second (Optional[int]):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )

    use_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCLIDPolicy"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupName"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: Optional[bool] = field(
        default=None, metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCallLimitsPolicy"}
    )

    use_max_simultaneous_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousCalls"}
    )

    use_max_simultaneous_video_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_concurrent_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_find_me_follow_me_depth: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    use_max_concurrent_find_me_follow_me_invocations: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    max_find_me_follow_me_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxRedirectionDepth"}
    )

    use_translation_routing_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: Optional[str] = field(
        default=None, metadata={"alias": "networkUsageSelection"}
    )

    enable_enterprise_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: Optional[bool] = field(
        default=None, metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: Optional[bool] = field(
        default=None,
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"},
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"},
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"},
    )

    override_clid_restriction_for_private_call_category: Optional[bool] = field(
        default=None,
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"},
    )

    use_incoming_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useIncomingCLIDPolicy"}
    )

    enable_dialable_caller_id: Optional[bool] = field(
        default=None, metadata={"alias": "enableDialableCallerID"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"},
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"
        },
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        },
    )

    use_max_calls_per_second: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallsPerSecond"}
    )

    max_calls_per_second: Optional[int] = field(
        default=None, metadata={"alias": "maxCallsPerSecond"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileCollaborateProfileGetRequest22V2(OCIRequest):
    """Request to get the configuration for a call processing policy profile Collaborate subscriber type profile.
        The response is either a SystemCallProcessingPolicyProfileCollaborateProfileGetResponse22V2 or an
        ErrorResponse.

    Attributes:

        call_processing_policy_profile_name (str):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileCollaborateProfileModifyRequest(OCIRequest):
    """Request to get to modify the call processing policy profile collaborate subscriber type profile.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
           useMaxCallsPerSecond
           maxCallsPerSecond

    Attributes:

        call_processing_policy_profile_name (str):

        use_clid_policy (Optional[bool]):

        clid_policy (Optional[str]):

        emergency_clid_policy (Optional[str]):

        allow_alternate_numbers_for_redirecting_identity (Optional[bool]):

        use_group_name (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        allow_department_clid_name_override (Optional[bool]):

        enterprise_calls_clid_policy (Optional[str]):

        enterprise_group_calls_clid_policy (Optional[str]):

        service_provider_group_calls_clid_policy (Optional[str]):

        use_call_limits_policy (Optional[bool]):

        use_max_simultaneous_calls (Optional[bool]):

        max_simultaneous_calls (Optional[int]):

        use_max_simultaneous_video_calls (Optional[bool]):

        max_simultaneous_video_calls (Optional[int]):

        use_max_call_time_for_answered_calls (Optional[bool]):

        max_call_time_for_answered_calls_minutes (Optional[int]):

        use_max_call_time_for_unanswered_calls (Optional[bool]):

        max_call_time_for_unanswered_calls_minutes (Optional[int]):

        use_max_concurrent_redirected_calls (Optional[bool]):

        max_concurrent_redirected_calls (Optional[int]):

        max_redirection_depth (Optional[int]):

        use_translation_routing_policy (Optional[bool]):

        network_usage_selection (Optional[str]):

        enable_enterprise_extension_dialing (Optional[bool]):

        enforce_group_calling_line_identity_restriction (Optional[bool]):

        enforce_enterprise_calling_line_identity_restriction (Optional[bool]):

        allow_enterprise_group_call_typing_for_private_dialing_plan (Optional[bool]):

        allow_enterprise_group_call_typing_for_public_dialing_plan (Optional[bool]):

        override_clid_restriction_for_private_call_category (Optional[bool]):

        use_enterprise_clid_for_private_call_category (Optional[bool]):

        use_incoming_clid_policy (Optional[bool]):

        enable_dialable_caller_id (Optional[bool]):

        include_redirections_in_maximum_number_of_concurrent_calls (Optional[bool]):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (Optional[bool]):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (Optional[bool]):

        use_max_calls_per_second (Optional[bool]):

        max_calls_per_second (Optional[int]):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )

    use_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCLIDPolicy"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    emergency_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "emergencyClidPolicy"}
    )

    allow_alternate_numbers_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupName"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: Optional[bool] = field(
        default=None, metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCallLimitsPolicy"}
    )

    use_max_simultaneous_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousCalls"}
    )

    use_max_simultaneous_video_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    max_redirection_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxRedirectionDepth"}
    )

    use_translation_routing_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: Optional[str] = field(
        default=None, metadata={"alias": "networkUsageSelection"}
    )

    enable_enterprise_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: Optional[bool] = field(
        default=None, metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: Optional[bool] = field(
        default=None,
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"},
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"},
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"},
    )

    override_clid_restriction_for_private_call_category: Optional[bool] = field(
        default=None,
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"},
    )

    use_enterprise_clid_for_private_call_category: Optional[bool] = field(
        default=None, metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    use_incoming_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useIncomingCLIDPolicy"}
    )

    enable_dialable_caller_id: Optional[bool] = field(
        default=None, metadata={"alias": "enableDialableCallerID"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"},
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"
        },
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        },
    )

    use_max_calls_per_second: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallsPerSecond"}
    )

    max_calls_per_second: Optional[int] = field(
        default=None, metadata={"alias": "maxCallsPerSecond"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileDeleteRequest(OCIRequest):
    """Delete a call processing policy profile from system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileFindMeFollowMeProfileGetRequest22V2(OCIRequest):
    """Request to get the configuration for a call processing policy profile Find-me/Follow-me subscriber type profile.
        The response is either a SystemCallProcessingPolicyProfileFindMeFollowMeProfileGetResponse22V2 or an
        ErrorResponse.

    Attributes:

        call_processing_policy_profile_name (str):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileFindMeFollowMeProfileModifyRequest(OCIRequest):
    """Modify a call processing policy profile find-me/follow-me subscriber type profile in system.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
           useMaxCallsPerSecond
           maxCallsPerSecond

    Attributes:

        call_processing_policy_profile_name (str):

        use_clid_policy (Optional[bool]):

        clid_policy (Optional[str]):

        allow_alternate_numbers_for_redirecting_identity (Optional[bool]):

        use_group_name (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        allow_department_clid_name_override (Optional[bool]):

        enterprise_calls_clid_policy (Optional[str]):

        enterprise_group_calls_clid_policy (Optional[str]):

        service_provider_group_calls_clid_policy (Optional[str]):

        use_call_limits_policy (Optional[bool]):

        use_max_simultaneous_calls (Optional[bool]):

        max_simultaneous_calls (Optional[int]):

        use_max_simultaneous_video_calls (Optional[bool]):

        max_simultaneous_video_calls (Optional[int]):

        use_max_call_time_for_unanswered_calls (Optional[bool]):

        max_call_time_for_unanswered_calls_minutes (Optional[int]):

        use_max_concurrent_redirected_calls (Optional[bool]):

        max_concurrent_redirected_calls (Optional[int]):

        use_max_concurrent_find_me_follow_me_invocations (Optional[bool]):

        max_concurrent_find_me_follow_me_invocations (Optional[int]):

        use_max_find_me_follow_me_depth (Optional[bool]):

        max_find_me_follow_me_depth (Optional[int]):

        max_redirection_depth (Optional[int]):

        use_translation_routing_policy (Optional[bool]):

        network_usage_selection (Optional[str]):

        enable_enterprise_extension_dialing (Optional[bool]):

        enforce_group_calling_line_identity_restriction (Optional[bool]):

        enforce_enterprise_calling_line_identity_restriction (Optional[bool]):

        allow_enterprise_group_call_typing_for_private_dialing_plan (Optional[bool]):

        allow_enterprise_group_call_typing_for_public_dialing_plan (Optional[bool]):

        override_clid_restriction_for_private_call_category (Optional[bool]):

        use_incoming_clid_policy (Optional[bool]):

        enable_dialable_caller_id (Optional[bool]):

        include_redirections_in_maximum_number_of_concurrent_calls (Optional[bool]):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (Optional[bool]):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (Optional[bool]):

        use_max_calls_per_second (Optional[bool]):

        max_calls_per_second (Optional[int]):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )

    use_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCLIDPolicy"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupName"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: Optional[bool] = field(
        default=None, metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCallLimitsPolicy"}
    )

    use_max_simultaneous_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousCalls"}
    )

    use_max_simultaneous_video_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_unanswered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_concurrent_find_me_follow_me_invocations: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    use_max_find_me_follow_me_depth: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxRedirectionDepth"}
    )

    use_translation_routing_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: Optional[str] = field(
        default=None, metadata={"alias": "networkUsageSelection"}
    )

    enable_enterprise_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: Optional[bool] = field(
        default=None, metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: Optional[bool] = field(
        default=None,
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"},
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"},
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"},
    )

    override_clid_restriction_for_private_call_category: Optional[bool] = field(
        default=None,
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"},
    )

    use_incoming_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useIncomingCLIDPolicy"}
    )

    enable_dialable_caller_id: Optional[bool] = field(
        default=None, metadata={"alias": "enableDialableCallerID"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"},
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"
        },
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        },
    )

    use_max_calls_per_second: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallsPerSecond"}
    )

    max_calls_per_second: Optional[int] = field(
        default=None, metadata={"alias": "maxCallsPerSecond"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileFlexibleSeatingHostProfileGetRequest22V2(
    OCIRequest
):
    """Request to get the configuration for a call processing policy profile Flexible Seating Host subscriber type profile.
        The response is either a SystemCallProcessingPolicyProfileFlexibleSeatingHostProfileGetResponse22V2 or an
        ErrorResponse.

    Attributes:

        call_processing_policy_profile_name (str):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileFlexibleSeatingHostProfileModifyRequest(
    OCIRequest
):
    """Modify a call processing policy profile flexible seating host subscriber type profile in system.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
           useMaxCallsPerSecond
           maxCallsPerSecond

    Attributes:

        call_processing_policy_profile_name (str):

        use_clid_policy (Optional[bool]):

        clid_policy (Optional[str]):

        emergency_clid_policy (Optional[str]):

        use_group_name (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        allow_department_clid_name_override (Optional[bool]):

        enterprise_calls_clid_policy (Optional[str]):

        enterprise_group_calls_clid_policy (Optional[str]):

        service_provider_group_calls_clid_policy (Optional[str]):

        use_call_limits_policy (Optional[bool]):

        use_max_simultaneous_calls (Optional[bool]):

        max_simultaneous_calls (Optional[int]):

        use_max_simultaneous_video_calls (Optional[bool]):

        max_simultaneous_video_calls (Optional[int]):

        use_max_call_time_for_answered_calls (Optional[bool]):

        max_call_time_for_answered_calls_minutes (Optional[int]):

        use_max_call_time_for_unanswered_calls (Optional[bool]):

        max_call_time_for_unanswered_calls_minutes (Optional[int]):

        use_translation_routing_policy (Optional[bool]):

        network_usage_selection (Optional[str]):

        enable_enterprise_extension_dialing (Optional[bool]):

        enforce_group_calling_line_identity_restriction (Optional[bool]):

        enforce_enterprise_calling_line_identity_restriction (Optional[bool]):

        allow_enterprise_group_call_typing_for_private_dialing_plan (Optional[bool]):

        allow_enterprise_group_call_typing_for_public_dialing_plan (Optional[bool]):

        override_clid_restriction_for_private_call_category (Optional[bool]):

        use_enterprise_clid_for_private_call_category (Optional[bool]):

        include_redirections_in_maximum_number_of_concurrent_calls (Optional[bool]):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (Optional[bool]):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (Optional[bool]):

        use_max_calls_per_second (Optional[bool]):

        max_calls_per_second (Optional[int]):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )

    use_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCLIDPolicy"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    emergency_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "emergencyClidPolicy"}
    )

    use_group_name: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupName"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: Optional[bool] = field(
        default=None, metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCallLimitsPolicy"}
    )

    use_max_simultaneous_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousCalls"}
    )

    use_max_simultaneous_video_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_translation_routing_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: Optional[str] = field(
        default=None, metadata={"alias": "networkUsageSelection"}
    )

    enable_enterprise_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: Optional[bool] = field(
        default=None, metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: Optional[bool] = field(
        default=None,
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"},
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"},
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"},
    )

    override_clid_restriction_for_private_call_category: Optional[bool] = field(
        default=None,
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"},
    )

    use_enterprise_clid_for_private_call_category: Optional[bool] = field(
        default=None, metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"},
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"
        },
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        },
    )

    use_max_calls_per_second: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallsPerSecond"}
    )

    max_calls_per_second: Optional[int] = field(
        default=None, metadata={"alias": "maxCallsPerSecond"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileGetAssignedNCOSListRequest(OCIRequest):
    """Request a list of NCOSs that have a given CallP Policy Profile assigned.
        The response is either a
        SystemCallProcessingPolicyProfileGetAssignedNCOSListResponse or
        ErrorResponse.

    Attributes:

        profile_name (str):

    """

    profile_name: str = field(metadata={"alias": "profileName"})


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileGetListRequest(OCIRequest):
    """Get the list of all Call Processing Policy Profiles.
        The response is either a SystemCallProcessingPolicyProfileGetListResponse
        or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileGetRequest21(OCIRequest):
    """Request to get a call processing policy profile in system.
        The response is either a SystemCallProcessingPolicyProfileGetResponse21 or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileGroupPagingProfileGetRequest22(OCIRequest):
    """Request to get the configuration for a call processing policy profile Group Paging subscriber type profile.
        The response is either a SystemCallProcessingPolicyProfileGroupPagingProfileGetResponse22 or an
        ErrorResponse.

    Attributes:

        call_processing_policy_profile_name (str):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileGroupPagingProfileModifyRequest(OCIRequest):
    """

    Attributes:

        call_processing_policy_profile_name (str):

        use_clid_policy (Optional[bool]):

        clid_policy (Optional[str]):

        use_group_name (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        allow_department_clid_name_override (Optional[bool]):

        enterprise_calls_clid_policy (Optional[str]):

        enterprise_group_calls_clid_policy (Optional[str]):

        service_provider_group_calls_clid_policy (Optional[str]):

        use_call_limits_policy (Optional[bool]):

        use_max_call_time_for_answered_calls (Optional[bool]):

        max_call_time_for_answered_calls_minutes (Optional[int]):

        use_max_call_time_for_unanswered_calls (Optional[bool]):

        max_call_time_for_unanswered_calls_minutes (Optional[int]):

        use_max_concurrent_redirected_calls (Optional[bool]):

        max_concurrent_redirected_calls (Optional[int]):

        use_max_find_me_follow_me_depth (Optional[bool]):

        max_find_me_follow_me_depth (Optional[int]):

        max_redirection_depth (Optional[int]):

        use_translation_routing_policy (Optional[bool]):

        network_usage_selection (Optional[str]):

        enable_enterprise_extension_dialing (Optional[bool]):

        enforce_group_calling_line_identity_restriction (Optional[bool]):

        enforce_enterprise_calling_line_identity_restriction (Optional[bool]):

        allow_enterprise_group_call_typing_for_private_dialing_plan (Optional[bool]):

        allow_enterprise_group_call_typing_for_public_dialing_plan (Optional[bool]):

        override_clid_restriction_for_private_call_category (Optional[bool]):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (Optional[bool]):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (Optional[bool]):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )

    use_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCLIDPolicy"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    use_group_name: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupName"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: Optional[bool] = field(
        default=None, metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCallLimitsPolicy"}
    )

    use_max_call_time_for_answered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_find_me_follow_me_depth: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxRedirectionDepth"}
    )

    use_translation_routing_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: Optional[str] = field(
        default=None, metadata={"alias": "networkUsageSelection"}
    )

    enable_enterprise_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: Optional[bool] = field(
        default=None, metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: Optional[bool] = field(
        default=None,
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"},
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"},
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"},
    )

    override_clid_restriction_for_private_call_category: Optional[bool] = field(
        default=None,
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"},
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"
        },
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        },
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileHuntGroupProfileGetRequest22V2(OCIRequest):
    """Request to get the configuration for a call processing policy profile Hunt Group subscriber type profile.
        The response is either a SystemCallProcessingPolicyProfileHuntGroupProfileGetResponse22V2 or an
        ErrorResponse.

    Attributes:

        call_processing_policy_profile_name (str):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileHuntGroupProfileModifyRequest(OCIRequest):
    """Modify a call processing policy profile hunt group subscriber type profile in system.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
           useMaxCallsPerSecond
           maxCallsPerSecond

    Attributes:

        call_processing_policy_profile_name (str):

        use_clid_policy (Optional[bool]):

        clid_policy (Optional[str]):

        allow_alternate_numbers_for_redirecting_identity (Optional[bool]):

        use_group_name (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        allow_department_clid_name_override (Optional[bool]):

        enterprise_calls_clid_policy (Optional[str]):

        enterprise_group_calls_clid_policy (Optional[str]):

        service_provider_group_calls_clid_policy (Optional[str]):

        use_call_limits_policy (Optional[bool]):

        use_max_simultaneous_calls (Optional[bool]):

        max_simultaneous_calls (Optional[int]):

        use_max_simultaneous_video_calls (Optional[bool]):

        max_simultaneous_video_calls (Optional[int]):

        use_max_call_time_for_unanswered_calls (Optional[bool]):

        max_call_time_for_unanswered_calls_minutes (Optional[int]):

        use_max_concurrent_redirected_calls (Optional[bool]):

        max_concurrent_redirected_calls (Optional[int]):

        use_max_concurrent_find_me_follow_me_invocations (Optional[bool]):

        max_concurrent_find_me_follow_me_invocations (Optional[int]):

        use_max_find_me_follow_me_depth (Optional[bool]):

        max_find_me_follow_me_depth (Optional[int]):

        max_redirection_depth (Optional[int]):

        use_translation_routing_policy (Optional[bool]):

        network_usage_selection (Optional[str]):

        enable_enterprise_extension_dialing (Optional[bool]):

        enforce_group_calling_line_identity_restriction (Optional[bool]):

        enforce_enterprise_calling_line_identity_restriction (Optional[bool]):

        allow_enterprise_group_call_typing_for_private_dialing_plan (Optional[bool]):

        allow_enterprise_group_call_typing_for_public_dialing_plan (Optional[bool]):

        override_clid_restriction_for_private_call_category (Optional[bool]):

        use_incoming_clid_policy (Optional[bool]):

        enable_dialable_caller_id (Optional[bool]):

        include_redirections_in_maximum_number_of_concurrent_calls (Optional[bool]):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (Optional[bool]):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (Optional[bool]):

        use_max_calls_per_second (Optional[bool]):

        max_calls_per_second (Optional[int]):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )

    use_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCLIDPolicy"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupName"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: Optional[bool] = field(
        default=None, metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCallLimitsPolicy"}
    )

    use_max_simultaneous_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousCalls"}
    )

    use_max_simultaneous_video_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_unanswered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_concurrent_find_me_follow_me_invocations: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    use_max_find_me_follow_me_depth: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxRedirectionDepth"}
    )

    use_translation_routing_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: Optional[str] = field(
        default=None, metadata={"alias": "networkUsageSelection"}
    )

    enable_enterprise_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: Optional[bool] = field(
        default=None, metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: Optional[bool] = field(
        default=None,
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"},
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"},
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"},
    )

    override_clid_restriction_for_private_call_category: Optional[bool] = field(
        default=None,
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"},
    )

    use_incoming_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useIncomingCLIDPolicy"}
    )

    enable_dialable_caller_id: Optional[bool] = field(
        default=None, metadata={"alias": "enableDialableCallerID"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"},
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"
        },
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        },
    )

    use_max_calls_per_second: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallsPerSecond"}
    )

    max_calls_per_second: Optional[int] = field(
        default=None, metadata={"alias": "maxCallsPerSecond"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileInstantGroupCallProfileGetRequest22(OCIRequest):
    """Request to get the configuration for a call processing policy profile Instant Group Call subscriber type profile.
        The response is either a SystemCallProcessingPolicyProfileInstantGroupCallProfileGetResponse22 or an
        ErrorResponse.

    Attributes:

        call_processing_policy_profile_name (str):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileInstantGroupCallProfileModifyRequest(OCIRequest):
    """

    Attributes:

        call_processing_policy_profile_name (str):

        use_clid_policy (Optional[bool]):

        clid_policy (Optional[str]):

        allow_alternate_numbers_for_redirecting_identity (Optional[bool]):

        use_group_name (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        allow_department_clid_name_override (Optional[bool]):

        enterprise_calls_clid_policy (Optional[str]):

        enterprise_group_calls_clid_policy (Optional[str]):

        service_provider_group_calls_clid_policy (Optional[str]):

        use_call_limits_policy (Optional[bool]):

        use_max_call_time_for_answered_calls (Optional[bool]):

        max_call_time_for_answered_calls_minutes (Optional[int]):

        use_max_call_time_for_unanswered_calls (Optional[bool]):

        max_call_time_for_unanswered_calls_minutes (Optional[int]):

        use_max_concurrent_redirected_calls (Optional[bool]):

        max_concurrent_redirected_calls (Optional[int]):

        use_max_find_me_follow_me_depth (Optional[bool]):

        max_find_me_follow_me_depth (Optional[int]):

        max_redirection_depth (Optional[int]):

        use_translation_routing_policy (Optional[bool]):

        network_usage_selection (Optional[str]):

        enable_enterprise_extension_dialing (Optional[bool]):

        enforce_group_calling_line_identity_restriction (Optional[bool]):

        enforce_enterprise_calling_line_identity_restriction (Optional[bool]):

        allow_enterprise_group_call_typing_for_private_dialing_plan (Optional[bool]):

        allow_enterprise_group_call_typing_for_public_dialing_plan (Optional[bool]):

        override_clid_restriction_for_private_call_category (Optional[bool]):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (Optional[bool]):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (Optional[bool]):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )

    use_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCLIDPolicy"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupName"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: Optional[bool] = field(
        default=None, metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCallLimitsPolicy"}
    )

    use_max_call_time_for_answered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_find_me_follow_me_depth: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxRedirectionDepth"}
    )

    use_translation_routing_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: Optional[str] = field(
        default=None, metadata={"alias": "networkUsageSelection"}
    )

    enable_enterprise_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: Optional[bool] = field(
        default=None, metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: Optional[bool] = field(
        default=None,
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"},
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"},
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"},
    )

    override_clid_restriction_for_private_call_category: Optional[bool] = field(
        default=None,
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"},
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"
        },
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        },
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileMeetMeConferencingProfileGetRequest22V2(
    OCIRequest
):
    """Request to get the configuration for a call processing policy profile Meet-Me Conferencing subscriber type profile.
        The response is either a SystemCallProcessingPolicyProfileMeetMeConferencingProfileGetResponse22V2 or an
        ErrorResponse.

    Attributes:

        call_processing_policy_profile_name (str):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileMeetMeConferencingProfileModifyRequest(
    OCIRequest
):
    """Modify a call processing policy profile meet-me conferencing subscriber type profile in system.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
           useMaxCallsPerSecond
           maxCallsPerSecond

    Attributes:

        call_processing_policy_profile_name (str):

        use_clid_policy (Optional[bool]):

        clid_policy (Optional[str]):

        emergency_clid_policy (Optional[str]):

        allow_alternate_numbers_for_redirecting_identity (Optional[bool]):

        use_group_name (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        allow_department_clid_name_override (Optional[bool]):

        enterprise_calls_clid_policy (Optional[str]):

        enterprise_group_calls_clid_policy (Optional[str]):

        service_provider_group_calls_clid_policy (Optional[str]):

        use_call_limits_policy (Optional[bool]):

        use_max_simultaneous_calls (Optional[bool]):

        max_simultaneous_calls (Optional[int]):

        use_max_simultaneous_video_calls (Optional[bool]):

        max_simultaneous_video_calls (Optional[int]):

        use_max_call_time_for_answered_calls (Optional[bool]):

        max_call_time_for_answered_calls_minutes (Optional[int]):

        use_max_call_time_for_unanswered_calls (Optional[bool]):

        max_call_time_for_unanswered_calls_minutes (Optional[int]):

        use_max_concurrent_redirected_calls (Optional[bool]):

        max_concurrent_redirected_calls (Optional[int]):

        max_redirection_depth (Optional[int]):

        use_translation_routing_policy (Optional[bool]):

        network_usage_selection (Optional[str]):

        enable_enterprise_extension_dialing (Optional[bool]):

        enforce_group_calling_line_identity_restriction (Optional[bool]):

        enforce_enterprise_calling_line_identity_restriction (Optional[bool]):

        allow_enterprise_group_call_typing_for_private_dialing_plan (Optional[bool]):

        allow_enterprise_group_call_typing_for_public_dialing_plan (Optional[bool]):

        override_clid_restriction_for_private_call_category (Optional[bool]):

        use_enterprise_clid_for_private_call_category (Optional[bool]):

        use_incoming_clid_policy (Optional[bool]):

        enable_dialable_caller_id (Optional[bool]):

        include_redirections_in_maximum_number_of_concurrent_calls (Optional[bool]):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (Optional[bool]):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (Optional[bool]):

        use_max_calls_per_second (Optional[bool]):

        max_calls_per_second (Optional[int]):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )

    use_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCLIDPolicy"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    emergency_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "emergencyClidPolicy"}
    )

    allow_alternate_numbers_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupName"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: Optional[bool] = field(
        default=None, metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCallLimitsPolicy"}
    )

    use_max_simultaneous_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousCalls"}
    )

    use_max_simultaneous_video_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    max_redirection_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxRedirectionDepth"}
    )

    use_translation_routing_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: Optional[str] = field(
        default=None, metadata={"alias": "networkUsageSelection"}
    )

    enable_enterprise_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: Optional[bool] = field(
        default=None, metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: Optional[bool] = field(
        default=None,
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"},
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"},
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"},
    )

    override_clid_restriction_for_private_call_category: Optional[bool] = field(
        default=None,
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"},
    )

    use_enterprise_clid_for_private_call_category: Optional[bool] = field(
        default=None, metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    use_incoming_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useIncomingCLIDPolicy"}
    )

    enable_dialable_caller_id: Optional[bool] = field(
        default=None, metadata={"alias": "enableDialableCallerID"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"},
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"
        },
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        },
    )

    use_max_calls_per_second: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallsPerSecond"}
    )

    max_calls_per_second: Optional[int] = field(
        default=None, metadata={"alias": "maxCallsPerSecond"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileModifyRequest21(OCIRequest):
    """Modify a call processing policy profile in system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        new_name (Optional[str]):

        description (Optional[Nillable[str]]):

        assigned_subscriber_type_list (Optional[Nillable[ReplacementCallProcessingPolicyProfileSubscriberTypeList21]]):

    """

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    assigned_subscriber_type_list: Optional[
        Nillable[ReplacementCallProcessingPolicyProfileSubscriberTypeList21]
    ] = field(default=None, metadata={"alias": "assignedSubscriberTypeList"})

    def __post_init__(self):
        nillable_fields = ["description", "assigned_subscriber_type_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileRoutePointProfileGetRequest22V2(OCIRequest):
    """Request to get the configuration for a call processing policy profile Route Point subscriber type profile.
        The response is either a SystemCallProcessingPolicyProfileRoutePointProfileGetResponse22V2 or an
        ErrorResponse.

    Attributes:

        call_processing_policy_profile_name (str):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileRoutePointProfileModifyRequest(OCIRequest):
    """Modify a call processing policy profile route point subscriber type profile in system.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
           useMaxCallsPerSecond
           maxCallsPerSecond

    Attributes:

        call_processing_policy_profile_name (str):

        use_clid_policy (Optional[bool]):

        clid_policy (Optional[str]):

        emergency_clid_policy (Optional[str]):

        allow_alternate_numbers_for_redirecting_identity (Optional[bool]):

        use_group_name (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        allow_department_clid_name_override (Optional[bool]):

        enterprise_calls_clid_policy (Optional[str]):

        enterprise_group_calls_clid_policy (Optional[str]):

        service_provider_group_calls_clid_policy (Optional[str]):

        use_call_limits_policy (Optional[bool]):

        use_max_simultaneous_calls (Optional[bool]):

        max_simultaneous_calls (Optional[int]):

        use_max_simultaneous_video_calls (Optional[bool]):

        max_simultaneous_video_calls (Optional[int]):

        use_max_concurrent_redirected_calls (Optional[bool]):

        max_concurrent_redirected_calls (Optional[int]):

        use_max_concurrent_find_me_follow_me_invocations (Optional[bool]):

        max_concurrent_find_me_follow_me_invocations (Optional[int]):

        use_max_find_me_follow_me_depth (Optional[bool]):

        max_find_me_follow_me_depth (Optional[int]):

        max_redirection_depth (Optional[int]):

        use_translation_routing_policy (Optional[bool]):

        network_usage_selection (Optional[str]):

        enable_enterprise_extension_dialing (Optional[bool]):

        enforce_group_calling_line_identity_restriction (Optional[bool]):

        enforce_enterprise_calling_line_identity_restriction (Optional[bool]):

        allow_enterprise_group_call_typing_for_private_dialing_plan (Optional[bool]):

        allow_enterprise_group_call_typing_for_public_dialing_plan (Optional[bool]):

        override_clid_restriction_for_private_call_category (Optional[bool]):

        use_enterprise_clid_for_private_call_category (Optional[bool]):

        use_incoming_clid_policy (Optional[bool]):

        enable_dialable_caller_id (Optional[bool]):

        include_redirections_in_maximum_number_of_concurrent_calls (Optional[bool]):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (Optional[bool]):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (Optional[bool]):

        use_max_calls_per_second (Optional[bool]):

        max_calls_per_second (Optional[int]):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )

    use_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCLIDPolicy"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    emergency_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "emergencyClidPolicy"}
    )

    allow_alternate_numbers_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupName"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: Optional[bool] = field(
        default=None, metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCallLimitsPolicy"}
    )

    use_max_simultaneous_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousCalls"}
    )

    use_max_simultaneous_video_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_concurrent_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_concurrent_find_me_follow_me_invocations: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    use_max_find_me_follow_me_depth: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxRedirectionDepth"}
    )

    use_translation_routing_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: Optional[str] = field(
        default=None, metadata={"alias": "networkUsageSelection"}
    )

    enable_enterprise_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: Optional[bool] = field(
        default=None, metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: Optional[bool] = field(
        default=None,
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"},
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"},
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"},
    )

    override_clid_restriction_for_private_call_category: Optional[bool] = field(
        default=None,
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"},
    )

    use_enterprise_clid_for_private_call_category: Optional[bool] = field(
        default=None, metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    use_incoming_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useIncomingCLIDPolicy"}
    )

    enable_dialable_caller_id: Optional[bool] = field(
        default=None, metadata={"alias": "enableDialableCallerID"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"},
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"
        },
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        },
    )

    use_max_calls_per_second: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallsPerSecond"}
    )

    max_calls_per_second: Optional[int] = field(
        default=None, metadata={"alias": "maxCallsPerSecond"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileTrunkGroupPilotProfileGetRequest22V3(OCIRequest):
    """Request to get the configuration for a call processing policy profile Trunk Group Pilot user subscriber type profile.
        The response is either a SystemCallProcessingPolicyProfileTrunkGroupPilotProfileGetResponse22V3 or an
        ErrorResponse.

    Attributes:

        call_processing_policy_profile_name (str):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileTrunkGroupPilotProfileModifyRequest(OCIRequest):
    """Modify a call processing policy profile trunk group pilot subscriber type profile in system.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
           useMaxCallsPerSecond
           maxCallsPerSecond

    Attributes:

        call_processing_policy_profile_name (str):

        use_clid_policy (Optional[bool]):

        clid_policy (Optional[str]):

        emergency_clid_policy (Optional[str]):

        allow_alternate_numbers_for_redirecting_identity (Optional[bool]):

        use_group_name (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        allow_department_clid_name_override (Optional[bool]):

        enterprise_calls_clid_policy (Optional[str]):

        enterprise_group_calls_clid_policy (Optional[str]):

        service_provider_group_calls_clid_policy (Optional[str]):

        use_media_policy (Optional[bool]):

        media_policy_selection (Optional[str]):

        supported_media_set_name (Optional[Nillable[str]]):

        use_call_limits_policy (Optional[bool]):

        use_max_simultaneous_calls (Optional[bool]):

        max_simultaneous_calls (Optional[int]):

        use_max_simultaneous_video_calls (Optional[bool]):

        max_simultaneous_video_calls (Optional[int]):

        use_max_call_time_for_answered_calls (Optional[bool]):

        max_call_time_for_answered_calls_minutes (Optional[int]):

        use_max_call_time_for_unanswered_calls (Optional[bool]):

        max_call_time_for_unanswered_calls_minutes (Optional[int]):

        use_max_concurrent_redirected_calls (Optional[bool]):

        max_concurrent_redirected_calls (Optional[int]):

        use_max_find_me_follow_me_depth (Optional[bool]):

        use_max_concurrent_find_me_follow_me_invocations (Optional[bool]):

        max_concurrent_find_me_follow_me_invocations (Optional[int]):

        max_find_me_follow_me_depth (Optional[int]):

        max_redirection_depth (Optional[int]):

        use_translation_routing_policy (Optional[bool]):

        network_usage_selection (Optional[str]):

        enable_enterprise_extension_dialing (Optional[bool]):

        enforce_group_calling_line_identity_restriction (Optional[bool]):

        enforce_enterprise_calling_line_identity_restriction (Optional[bool]):

        allow_enterprise_group_call_typing_for_private_dialing_plan (Optional[bool]):

        allow_enterprise_group_call_typing_for_public_dialing_plan (Optional[bool]):

        override_clid_restriction_for_private_call_category (Optional[bool]):

        use_enterprise_clid_for_private_call_category (Optional[bool]):

        use_incoming_clid_policy (Optional[bool]):

        enable_dialable_caller_id (Optional[bool]):

        use_max_concurrent_terminating_alerting_requests (Optional[bool]):

        max_concurrent_terminating_alerting_requests (Optional[int]):

        include_redirections_in_maximum_number_of_concurrent_calls (Optional[bool]):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (Optional[bool]):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (Optional[bool]):

        allow_mobile_dn_for_redirecting_identity (Optional[bool]):

        use_max_calls_per_second (Optional[bool]):

        max_calls_per_second (Optional[int]):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )

    use_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCLIDPolicy"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    emergency_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "emergencyClidPolicy"}
    )

    allow_alternate_numbers_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupName"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: Optional[bool] = field(
        default=None, metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_media_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useMediaPolicy"}
    )

    media_policy_selection: Optional[str] = field(
        default=None, metadata={"alias": "mediaPolicySelection"}
    )

    supported_media_set_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "supportedMediaSetName"}
    )

    use_call_limits_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCallLimitsPolicy"}
    )

    use_max_simultaneous_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousCalls"}
    )

    use_max_simultaneous_video_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_find_me_follow_me_depth: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    use_max_concurrent_find_me_follow_me_invocations: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    max_find_me_follow_me_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxRedirectionDepth"}
    )

    use_translation_routing_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: Optional[str] = field(
        default=None, metadata={"alias": "networkUsageSelection"}
    )

    enable_enterprise_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: Optional[bool] = field(
        default=None, metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: Optional[bool] = field(
        default=None,
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"},
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"},
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"},
    )

    override_clid_restriction_for_private_call_category: Optional[bool] = field(
        default=None,
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"},
    )

    use_enterprise_clid_for_private_call_category: Optional[bool] = field(
        default=None, metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    use_incoming_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useIncomingCLIDPolicy"}
    )

    enable_dialable_caller_id: Optional[bool] = field(
        default=None, metadata={"alias": "enableDialableCallerID"}
    )

    use_max_concurrent_terminating_alerting_requests: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentTerminatingAlertingRequests"}
    )

    max_concurrent_terminating_alerting_requests: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentTerminatingAlertingRequests"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"},
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"
        },
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        },
    )

    allow_mobile_dn_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowMobileDNForRedirectingIdentity"}
    )

    use_max_calls_per_second: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallsPerSecond"}
    )

    max_calls_per_second: Optional[int] = field(
        default=None, metadata={"alias": "maxCallsPerSecond"}
    )

    def __post_init__(self):
        nillable_fields = ["supported_media_set_name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileUserProfileGetRequest22V3(OCIRequest):
    """Request to get the configuration for a call processing policy profile user subscriber type profile.
        The response is either a SystemCallProcessingPolicyProfileUserProfileGetResponse22V3 or an ErrorResponse.

    Attributes:

        call_processing_policy_profile_name (str):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileUserProfileModifyRequest(OCIRequest):
    """Modify a call processing policy profile user subscriber type profile in system.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
           useMaxCallsPerSecond
           maxCallsPerSecond

    Attributes:

        call_processing_policy_profile_name (str):

        use_clid_policy (Optional[bool]):

        clid_policy (Optional[str]):

        emergency_clid_policy (Optional[str]):

        allow_alternate_numbers_for_redirecting_identity (Optional[bool]):

        use_group_name (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        allow_department_clid_name_override (Optional[bool]):

        enterprise_calls_clid_policy (Optional[str]):

        enterprise_group_calls_clid_policy (Optional[str]):

        service_provider_group_calls_clid_policy (Optional[str]):

        use_media_policy (Optional[bool]):

        media_policy_selection (Optional[str]):

        supported_media_set_name (Optional[Nillable[str]]):

        use_call_limits_policy (Optional[bool]):

        use_max_simultaneous_calls (Optional[bool]):

        max_simultaneous_calls (Optional[int]):

        use_max_simultaneous_video_calls (Optional[bool]):

        max_simultaneous_video_calls (Optional[int]):

        use_max_call_time_for_answered_calls (Optional[bool]):

        max_call_time_for_answered_calls_minutes (Optional[int]):

        use_max_call_time_for_unanswered_calls (Optional[bool]):

        max_call_time_for_unanswered_calls_minutes (Optional[int]):

        use_max_concurrent_redirected_calls (Optional[bool]):

        max_concurrent_redirected_calls (Optional[int]):

        use_max_concurrent_find_me_follow_me_invocations (Optional[bool]):

        max_concurrent_find_me_follow_me_invocations (Optional[int]):

        use_max_find_me_follow_me_depth (Optional[bool]):

        max_find_me_follow_me_depth (Optional[int]):

        max_redirection_depth (Optional[int]):

        use_translation_routing_policy (Optional[bool]):

        network_usage_selection (Optional[str]):

        enable_enterprise_extension_dialing (Optional[bool]):

        enforce_group_calling_line_identity_restriction (Optional[bool]):

        enforce_enterprise_calling_line_identity_restriction (Optional[bool]):

        allow_enterprise_group_call_typing_for_private_dialing_plan (Optional[bool]):

        allow_enterprise_group_call_typing_for_public_dialing_plan (Optional[bool]):

        override_clid_restriction_for_private_call_category (Optional[bool]):

        use_enterprise_clid_for_private_call_category (Optional[bool]):

        use_incoming_clid_policy (Optional[bool]):

        enable_dialable_caller_id (Optional[bool]):

        use_phone_list_lookup_policy (Optional[bool]):

        enable_phone_list_lookup (Optional[bool]):

        use_max_concurrent_terminating_alerting_requests (Optional[bool]):

        max_concurrent_terminating_alerting_requests (Optional[int]):

        include_redirections_in_maximum_number_of_concurrent_calls (Optional[bool]):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (Optional[bool]):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (Optional[bool]):

        allow_mobile_dn_for_redirecting_identity (Optional[bool]):

        use_max_calls_per_second (Optional[bool]):

        max_calls_per_second (Optional[int]):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )

    use_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCLIDPolicy"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    emergency_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "emergencyClidPolicy"}
    )

    allow_alternate_numbers_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupName"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: Optional[bool] = field(
        default=None, metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_media_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useMediaPolicy"}
    )

    media_policy_selection: Optional[str] = field(
        default=None, metadata={"alias": "mediaPolicySelection"}
    )

    supported_media_set_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "supportedMediaSetName"}
    )

    use_call_limits_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCallLimitsPolicy"}
    )

    use_max_simultaneous_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousCalls"}
    )

    use_max_simultaneous_video_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_concurrent_find_me_follow_me_invocations: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    use_max_find_me_follow_me_depth: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxRedirectionDepth"}
    )

    use_translation_routing_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: Optional[str] = field(
        default=None, metadata={"alias": "networkUsageSelection"}
    )

    enable_enterprise_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: Optional[bool] = field(
        default=None, metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: Optional[bool] = field(
        default=None,
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"},
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"},
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"},
    )

    override_clid_restriction_for_private_call_category: Optional[bool] = field(
        default=None,
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"},
    )

    use_enterprise_clid_for_private_call_category: Optional[bool] = field(
        default=None, metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    use_incoming_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useIncomingCLIDPolicy"}
    )

    enable_dialable_caller_id: Optional[bool] = field(
        default=None, metadata={"alias": "enableDialableCallerID"}
    )

    use_phone_list_lookup_policy: Optional[bool] = field(
        default=None, metadata={"alias": "usePhoneListLookupPolicy"}
    )

    enable_phone_list_lookup: Optional[bool] = field(
        default=None, metadata={"alias": "enablePhoneListLookup"}
    )

    use_max_concurrent_terminating_alerting_requests: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentTerminatingAlertingRequests"}
    )

    max_concurrent_terminating_alerting_requests: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentTerminatingAlertingRequests"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"},
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"
        },
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        },
    )

    allow_mobile_dn_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowMobileDNForRedirectingIdentity"}
    )

    use_max_calls_per_second: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallsPerSecond"}
    )

    max_calls_per_second: Optional[int] = field(
        default=None, metadata={"alias": "maxCallsPerSecond"}
    )

    def __post_init__(self):
        nillable_fields = ["supported_media_set_name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileVoicePortalProfileGetRequest22V2(OCIRequest):
    """Request to get the configuration for a call processing policy profile Voice Portal subscriber type profile.
        The response is either a SystemCallProcessingPolicyProfileVoicePortalProfileGetResponse22V2 or an
        ErrorResponse.

    Attributes:

        call_processing_policy_profile_name (str):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileVoicePortalProfileModifyRequest(OCIRequest):
    """Modify a call processing policy profile voice portal type profile in system.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
           useMaxCallsPerSecond
           maxCallsPerSecond

    Attributes:

        call_processing_policy_profile_name (str):

        use_clid_policy (Optional[bool]):

        clid_policy (Optional[str]):

        use_group_name (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        allow_department_clid_name_override (Optional[bool]):

        enterprise_calls_clid_policy (Optional[str]):

        enterprise_group_calls_clid_policy (Optional[str]):

        service_provider_group_calls_clid_policy (Optional[str]):

        use_call_limits_policy (Optional[bool]):

        use_max_simultaneous_calls (Optional[bool]):

        max_simultaneous_calls (Optional[int]):

        use_max_simultaneous_video_calls (Optional[bool]):

        max_simultaneous_video_calls (Optional[int]):

        use_max_call_time_for_answered_calls (Optional[bool]):

        max_call_time_for_answered_calls_minutes (Optional[int]):

        max_redirection_depth (Optional[int]):

        use_translation_routing_policy (Optional[bool]):

        network_usage_selection (Optional[str]):

        enable_enterprise_extension_dialing (Optional[bool]):

        allow_enterprise_group_call_typing_for_private_dialing_plan (Optional[bool]):

        allow_enterprise_group_call_typing_for_public_dialing_plan (Optional[bool]):

        include_redirections_in_maximum_number_of_concurrent_calls (Optional[bool]):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (Optional[bool]):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (Optional[bool]):

        use_max_calls_per_second (Optional[bool]):

        max_calls_per_second (Optional[int]):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )

    use_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCLIDPolicy"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    use_group_name: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupName"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: Optional[bool] = field(
        default=None, metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCallLimitsPolicy"}
    )

    use_max_simultaneous_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousCalls"}
    )

    use_max_simultaneous_video_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    max_redirection_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxRedirectionDepth"}
    )

    use_translation_routing_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: Optional[str] = field(
        default=None, metadata={"alias": "networkUsageSelection"}
    )

    enable_enterprise_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"},
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"},
    )

    include_redirections_in_maximum_number_of_concurrent_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"},
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"
        },
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        },
    )

    use_max_calls_per_second: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallsPerSecond"}
    )

    max_calls_per_second: Optional[int] = field(
        default=None, metadata={"alias": "maxCallsPerSecond"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileVoiceXMLProfileGetRequest22V2(OCIRequest):
    """Request to get the configuration for a call processing policy profile VoiceXML subscriber type profile.
        The response is either a SystemCallProcessingPolicyProfileVoiceXMLProfileGetResponse22V2 or an
        ErrorResponse.

    Attributes:

        call_processing_policy_profile_name (str):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileVoiceXMLProfileModifyRequest(OCIRequest):
    """Modify a call processing policy profile voice XML type profile in system.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
           useMaxCallsPerSecond
           maxCallsPerSecond

    Attributes:

        call_processing_policy_profile_name (str):

        use_clid_policy (Optional[bool]):

        clid_policy (Optional[str]):

        emergency_clid_policy (Optional[str]):

        allow_alternate_numbers_for_redirecting_identity (Optional[bool]):

        use_group_name (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        allow_department_clid_name_override (Optional[bool]):

        enterprise_calls_clid_policy (Optional[str]):

        enterprise_group_calls_clid_policy (Optional[str]):

        service_provider_group_calls_clid_policy (Optional[str]):

        use_call_limits_policy (Optional[bool]):

        use_max_simultaneous_calls (Optional[bool]):

        max_simultaneous_calls (Optional[int]):

        use_max_simultaneous_video_calls (Optional[bool]):

        max_simultaneous_video_calls (Optional[int]):

        use_max_call_time_for_answered_calls (Optional[bool]):

        max_call_time_for_answered_calls_minutes (Optional[int]):

        use_max_call_time_for_unanswered_calls (Optional[bool]):

        max_call_time_for_unanswered_calls_minutes (Optional[int]):

        use_max_concurrent_redirected_calls (Optional[bool]):

        max_concurrent_redirected_calls (Optional[int]):

        max_redirection_depth (Optional[int]):

        use_translation_routing_policy (Optional[bool]):

        network_usage_selection (Optional[str]):

        enable_enterprise_extension_dialing (Optional[bool]):

        enforce_group_calling_line_identity_restriction (Optional[bool]):

        enforce_enterprise_calling_line_identity_restriction (Optional[bool]):

        allow_enterprise_group_call_typing_for_private_dialing_plan (Optional[bool]):

        allow_enterprise_group_call_typing_for_public_dialing_plan (Optional[bool]):

        override_clid_restriction_for_private_call_category (Optional[bool]):

        use_enterprise_clid_for_private_call_category (Optional[bool]):

        use_incoming_clid_policy (Optional[bool]):

        enable_dialable_caller_id (Optional[bool]):

        include_redirections_in_maximum_number_of_concurrent_calls (Optional[bool]):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (Optional[bool]):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (Optional[bool]):

        use_max_calls_per_second (Optional[bool]):

        max_calls_per_second (Optional[int]):

    """

    call_processing_policy_profile_name: str = field(
        metadata={"alias": "callProcessingPolicyProfileName"}
    )

    use_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCLIDPolicy"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    emergency_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "emergencyClidPolicy"}
    )

    allow_alternate_numbers_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupName"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: Optional[bool] = field(
        default=None, metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useCallLimitsPolicy"}
    )

    use_max_simultaneous_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousCalls"}
    )

    use_max_simultaneous_video_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    max_redirection_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxRedirectionDepth"}
    )

    use_translation_routing_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: Optional[str] = field(
        default=None, metadata={"alias": "networkUsageSelection"}
    )

    enable_enterprise_extension_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: Optional[bool] = field(
        default=None, metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: Optional[bool] = field(
        default=None,
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"},
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"},
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"},
    )

    override_clid_restriction_for_private_call_category: Optional[bool] = field(
        default=None,
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"},
    )

    use_enterprise_clid_for_private_call_category: Optional[bool] = field(
        default=None, metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    use_incoming_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "useIncomingCLIDPolicy"}
    )

    enable_dialable_caller_id: Optional[bool] = field(
        default=None, metadata={"alias": "enableDialableCallerID"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"},
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"
        },
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        },
    )

    use_max_calls_per_second: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallsPerSecond"}
    )

    max_calls_per_second: Optional[int] = field(
        default=None, metadata={"alias": "maxCallsPerSecond"}
    )


@dataclass(kw_only=True)
class SystemCallRecordingAddPlatformRequest22(OCIRequest):
    """Add a Call Recording platform.
        The first system level call recording platform added is made the system default
        call recording platform.  In AS data mode, The first reseller level call recording platform added
        for a reseller is made the reseller default call recording platform.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        net_address (str):

        port (Optional[int]):

        media_stream (str):

        transport_type (str):

        description (Optional[str]):

        schema_version (str):

        support_video_recording (bool):

        reseller_id (Optional[str]):

        route (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    net_address: str = field(metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    media_stream: str = field(metadata={"alias": "mediaStream"})

    transport_type: str = field(metadata={"alias": "transportType"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    schema_version: str = field(metadata={"alias": "schemaVersion"})

    support_video_recording: bool = field(metadata={"alias": "supportVideoRecording"})

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    route: Optional[str] = field(default=None, metadata={"alias": "route"})


@dataclass(kw_only=True)
class SystemCallRecordingDeletePlatformRequest(OCIRequest):
    """Delete a Call Recording platform.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCallRecordingGetPlatformListRequest22V2(OCIRequest):
    """Requests the list of all system-level call recording platforms and all reseller level call recording platforms.
        If an excludeReseller is specified, returns all the system-level call recording platforms only.
        If a resellerId is specified, returns all the system-level call recording platforms and the given reseller's call recording platforms.
        If a reseller administrator sends the request and resellerId is not specified, the administrator's resellerId is used.
        The response is either SystemCallRecordingGetPlatformListResponse22V2 or ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          excludeReseller
          resellerId

    Attributes:

        exclude_reseller (Optional[bool]):

        reseller_id (Optional[str]):

    """

    exclude_reseller: Optional[bool] = field(
        default=None, metadata={"alias": "excludeReseller"}
    )

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class SystemCallRecordingGetPlatformUsageRequest22(OCIRequest):
    """Get the list of groups currently associated to the specified Call Recording platform.
        The response is either SystemCallRecordingGetPlatformUsageResponse22 or ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCallRecordingGetRequest23(OCIRequest):
    """Request the system level data associated with Call Recording.
        The response is either a SystemCallRecordingGetResponse23 or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCallRecordingModifyPlatformRequest22(OCIRequest):
    """Modify the specified Call Recording platform.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          becomeResellerDefault
          route

    Attributes:

        name (str):

        net_address (Optional[str]):

        port (Optional[Nillable[int]]):

        media_stream (Optional[str]):

        become_system_default (Optional[bool]):

        become_reseller_default (Optional[str]):

        transport_type (Optional[str]):

        description (Optional[Nillable[str]]):

        schema_version (Optional[str]):

        support_video_recording (Optional[bool]):

        route (Optional[Nillable[str]]):

    """

    name: str = field(metadata={"alias": "name"})

    net_address: Optional[str] = field(default=None, metadata={"alias": "netAddress"})

    port: Optional[Nillable[int]] = field(default=None, metadata={"alias": "port"})

    media_stream: Optional[str] = field(default=None, metadata={"alias": "mediaStream"})

    become_system_default: Optional[bool] = field(
        default=None, metadata={"alias": "becomeSystemDefault"}
    )

    become_reseller_default: Optional[str] = field(
        default=None, metadata={"alias": "becomeResellerDefault"}
    )

    transport_type: Optional[str] = field(
        default=None, metadata={"alias": "transportType"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    schema_version: Optional[str] = field(
        default=None, metadata={"alias": "schemaVersion"}
    )

    support_video_recording: Optional[bool] = field(
        default=None, metadata={"alias": "supportVideoRecording"}
    )

    route: Optional[Nillable[str]] = field(default=None, metadata={"alias": "route"})

    def __post_init__(self):
        nillable_fields = ["port", "description", "route"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCallRecordingModifyRequest22(OCIRequest):
    """Modify the system level data associated with Call Recording.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          continueCallAfterRecordingFailure
          maxResponseWaitTimeMilliseconds
          continueCallAfterVideoRecordingFailure
          useContinueCallAfterRecordingFailureForOnDemandMode
          useContinueCallAfterRecordingFailureForOnDemandUserInitiatedStartMode

    Attributes:

        continue_call_after_recording_failure (Optional[bool]):

        max_response_wait_time_milliseconds (Optional[int]):

        continue_call_after_video_recording_failure (Optional[bool]):

        use_continue_call_after_recording_failure_for_on_demand_mode (Optional[bool]):

        use_continue_call_after_recording_failure_for_on_demand_user_initiated_start_mode (Optional[bool]):

        restrict_call_recording_provisioning_access (Optional[bool]):

    """

    continue_call_after_recording_failure: Optional[bool] = field(
        default=None, metadata={"alias": "continueCallAfterRecordingFailure"}
    )

    max_response_wait_time_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "maxResponseWaitTimeMilliseconds"}
    )

    continue_call_after_video_recording_failure: Optional[bool] = field(
        default=None, metadata={"alias": "continueCallAfterVideoRecordingFailure"}
    )

    use_continue_call_after_recording_failure_for_on_demand_mode: Optional[bool] = (
        field(
            default=None,
            metadata={"alias": "useContinueCallAfterRecordingFailureForOnDemandMode"},
        )
    )

    use_continue_call_after_recording_failure_for_on_demand_user_initiated_start_mode: Optional[
        bool
    ] = field(
        default=None,
        metadata={
            "alias": "useContinueCallAfterRecordingFailureForOnDemandUserInitiatedStartMode"
        },
    )

    restrict_call_recording_provisioning_access: Optional[bool] = field(
        default=None, metadata={"alias": "restrictCallRecordingProvisioningAccess"}
    )


@dataclass(kw_only=True)
class SystemCallReturnGetRequest(OCIRequest):
    """Request the system level data associated with Call Return.
        The response is either a SystemCallReturnGetResponse or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCallReturnModifyRequest(OCIRequest):
    """Modify the system level data associated with Call Return.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        two_level_activation (Optional[bool]):

        provide_date (Optional[bool]):

        last_unanswered_call_only (Optional[bool]):

        confirmation_key (Optional[Nillable[str]]):

        allow_restricted_number (Optional[bool]):

        delete_number_after_answered_call_return (Optional[bool]):

    """

    two_level_activation: Optional[bool] = field(
        default=None, metadata={"alias": "twoLevelActivation"}
    )

    provide_date: Optional[bool] = field(
        default=None, metadata={"alias": "provideDate"}
    )

    last_unanswered_call_only: Optional[bool] = field(
        default=None, metadata={"alias": "lastUnansweredCallOnly"}
    )

    confirmation_key: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "confirmationKey"}
    )

    allow_restricted_number: Optional[bool] = field(
        default=None, metadata={"alias": "allowRestrictedNumber"}
    )

    delete_number_after_answered_call_return: Optional[bool] = field(
        default=None, metadata={"alias": "deleteNumberAfterAnsweredCallReturn"}
    )

    def __post_init__(self):
        nillable_fields = ["confirmation_key"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCallTypeAddMappingRequest(OCIRequest):
    """Add a system call type mapping.
        The response is either SuccessResponse or ErrorResponse.
        The following element is used only in AS mode:
        ignoreASEmergencyRoute

    Attributes:

        country_code (str):

        digit_map (str):

        call_type (str):

        ignore_as_emergency_route (Optional[bool]):

    """

    country_code: str = field(metadata={"alias": "countryCode"})

    digit_map: str = field(metadata={"alias": "digitMap"})

    call_type: str = field(metadata={"alias": "callType"})

    ignore_as_emergency_route: Optional[bool] = field(
        default=None, metadata={"alias": "ignoreASEmergencyRoute"}
    )


@dataclass(kw_only=True)
class SystemCallTypeDeleteMappingRequest(OCIRequest):
    """Delete a system call type mapping.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        country_code (str):

        digit_map (str):

    """

    country_code: str = field(metadata={"alias": "countryCode"})

    digit_map: str = field(metadata={"alias": "digitMap"})


@dataclass(kw_only=True)
class SystemCallTypeGetListRequest(OCIRequest):
    """Get a list of system call types.
        The response is either SystemCallTypeGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCallTypeGetMappingListRequest(OCIRequest):
    """Get a list of system call type mappings.
        The response is either SystemCallTypeGetMappingListResponse or ErrorResponse.

    Attributes:

        country_code (Optional[str]):

    """

    country_code: Optional[str] = field(default=None, metadata={"alias": "countryCode"})


@dataclass(kw_only=True)
class SystemCallTypeModifyMappingRequest(OCIRequest):
    """Modify the ignoreASEmergencyRoute entry of the specified country code, digitMap.
        The response is either SuccessResponse or an ErrorResponse.

    Attributes:

        country_code (str):

        digit_map (str):

        ignore_as_emergency_route (Optional[bool]):

    """

    country_code: str = field(metadata={"alias": "countryCode"})

    digit_map: str = field(metadata={"alias": "digitMap"})

    ignore_as_emergency_route: Optional[bool] = field(
        default=None, metadata={"alias": "ignoreASEmergencyRoute"}
    )


@dataclass(kw_only=True)
class SystemCallWaitingGetRequest(OCIRequest):
    """Request the system level data associated with Call Waiting.
        The response is either a SystemCallWaitingGetResponse or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCallWaitingModifyRequest(OCIRequest):
    """Modify the system level data associated with Call Waiting.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        play_distinctive_ringback (Optional[bool]):

    """

    play_distinctive_ringback: Optional[bool] = field(
        default=None, metadata={"alias": "playDistinctiveRingback"}
    )


@dataclass(kw_only=True)
class SystemCallingNameRetrievalGetRequest24(OCIRequest):
    """Request the system's calling name retrieval attributes.
        The response is either a SystemCallingNameRetrievalGetResponse24 or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCallingNameRetrievalModifyRequest20(OCIRequest):
    """Modifies the system's calling name retrieval attributes.
        The response is either a SuccessResponse or an ErrorResponse.

        The following attributes are only used in AS data mode and ignored in XS data mode:
          - triggerCNAMQueriesForAllNetworkCalls
          - triggerCNAMQueriesForGroupAndEnterpriseCalls
          - queryProtocol
          - queryTimeoutMilliseconds
          - sipExternalDatabaseNetAddress
          - sipExternalDatabasePort
          - sipExternalDatabaseTransport
          - soapExternalDatabaseNetAddress
          - callingNameSource
          - routeAdvanceTimer
          - retryFailedCNAMServerInterval
          - ignoreRestrictedPresentationIndicator
          - supportsDNSSRV

        The following attributes are only used in XS data mode and ignored in AS data mode:
          - callFilteringProvisioningEnabled

    Attributes:

        trigger_cnam_queries_for_all_network_calls (Optional[bool]):

        trigger_cnam_queries_for_group_and_enterprise_calls (Optional[bool]):

        query_protocol (Optional[str]):

        query_timeout_milliseconds (Optional[int]):

        sip_external_database_net_address (Optional[Nillable[str]]):

        sip_external_database_port (Optional[Nillable[int]]):

        sip_external_database_transport (Optional[str]):

        soap_external_database_net_address (Optional[Nillable[str]]):

        calling_name_source (Optional[str]):

        route_advance_timer (Optional[int]):

        retry_failed_cnam_server_interval (Optional[int]):

        ignore_restricted_presentation_indicator (Optional[bool]):

        supports_dnssrv (Optional[bool]):

        call_filtering_provisioning_enabled (Optional[bool]):

    """

    trigger_cnam_queries_for_all_network_calls: Optional[bool] = field(
        default=None, metadata={"alias": "triggerCNAMQueriesForAllNetworkCalls"}
    )

    trigger_cnam_queries_for_group_and_enterprise_calls: Optional[bool] = field(
        default=None, metadata={"alias": "triggerCNAMQueriesForGroupAndEnterpriseCalls"}
    )

    query_protocol: Optional[str] = field(
        default=None, metadata={"alias": "queryProtocol"}
    )

    query_timeout_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "queryTimeoutMilliseconds"}
    )

    sip_external_database_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "sipExternalDatabaseNetAddress"}
    )

    sip_external_database_port: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "sipExternalDatabasePort"}
    )

    sip_external_database_transport: Optional[str] = field(
        default=None, metadata={"alias": "sipExternalDatabaseTransport"}
    )

    soap_external_database_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "soapExternalDatabaseNetAddress"}
    )

    calling_name_source: Optional[str] = field(
        default=None, metadata={"alias": "callingNameSource"}
    )

    route_advance_timer: Optional[int] = field(
        default=None, metadata={"alias": "routeAdvanceTimer"}
    )

    retry_failed_cnam_server_interval: Optional[int] = field(
        default=None, metadata={"alias": "retryFailedCNAMServerInterval"}
    )

    ignore_restricted_presentation_indicator: Optional[bool] = field(
        default=None, metadata={"alias": "ignoreRestrictedPresentationIndicator"}
    )

    supports_dnssrv: Optional[bool] = field(
        default=None, metadata={"alias": "supportsDNSSRV"}
    )

    call_filtering_provisioning_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "callFilteringProvisioningEnabled"}
    )

    def __post_init__(self):
        nillable_fields = [
            "sip_external_database_net_address",
            "sip_external_database_port",
            "soap_external_database_net_address",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCallingPartyCategoryAddRequest(OCIRequest):
    """Add a Calling Party Category to system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        category (str):

        cpc_value (Optional[str]):

        isup_oli_value (Optional[int]):

        gtd_oli_value (Optional[str]):

        user_category (bool):

        pay_phone (bool):

        operator (bool):

        default (bool):

        collect_call (bool):

        web_display_key (Optional[str]):

    """

    category: str = field(metadata={"alias": "category"})

    cpc_value: Optional[str] = field(default=None, metadata={"alias": "cpcValue"})

    isup_oli_value: Optional[int] = field(
        default=None, metadata={"alias": "isupOliValue"}
    )

    gtd_oli_value: Optional[str] = field(
        default=None, metadata={"alias": "gtdOliValue"}
    )

    user_category: bool = field(metadata={"alias": "userCategory"})

    pay_phone: bool = field(metadata={"alias": "payPhone"})

    operator: bool = field(metadata={"alias": "operator"})

    default: bool = field(metadata={"alias": "default"})

    collect_call: bool = field(metadata={"alias": "collectCall"})

    web_display_key: Optional[str] = field(
        default=None, metadata={"alias": "webDisplayKey"}
    )


@dataclass(kw_only=True)
class SystemCallingPartyCategoryDeleteRequest(OCIRequest):
    """Delete a Calling Party Category from system. The category cannot be deleted if it is the default or is in use by any users.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        category (str):

    """

    category: str = field(metadata={"alias": "category"})


@dataclass(kw_only=True)
class SystemCallingPartyCategoryGetListRequest(OCIRequest):
    """Get the list of all Calling Party Category in system.
        The response is either a SystemCallingPartyCategoryGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCallingPartyCategoryGetRequest(OCIRequest):
    """Get an existing Calling Party Category in system.
        The response is either a SystemCallingPartyCategoryGetResponse or an ErrorResponse.

    Attributes:

        category (str):

    """

    category: str = field(metadata={"alias": "category"})


@dataclass(kw_only=True)
class SystemCallingPartyCategoryModifyRequest(OCIRequest):
    """Modify a Calling Party Category in system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        category (str):

        cpc_value (Optional[Nillable[str]]):

        isup_oli_value (Optional[Nillable[int]]):

        gtd_oli_value (Optional[Nillable[str]]):

        user_category (Optional[bool]):

        pay_phone (Optional[bool]):

        operator (Optional[bool]):

        become_default (Optional[bool]):

        collect_call (Optional[bool]):

        web_display_key (Optional[Nillable[str]]):

    """

    category: str = field(metadata={"alias": "category"})

    cpc_value: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "cpcValue"}
    )

    isup_oli_value: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "isupOliValue"}
    )

    gtd_oli_value: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "gtdOliValue"}
    )

    user_category: Optional[bool] = field(
        default=None, metadata={"alias": "userCategory"}
    )

    pay_phone: Optional[bool] = field(default=None, metadata={"alias": "payPhone"})

    operator: Optional[bool] = field(default=None, metadata={"alias": "operator"})

    become_default: Optional[bool] = field(
        default=None, metadata={"alias": "becomeDefault"}
    )

    collect_call: Optional[bool] = field(
        default=None, metadata={"alias": "collectCall"}
    )

    web_display_key: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "webDisplayKey"}
    )

    def __post_init__(self):
        nillable_fields = [
            "cpc_value",
            "isup_oli_value",
            "gtd_oli_value",
            "web_display_key",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemClassmarkAddRequest(OCIRequest):
    """Add a Class Mark to system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        classmark (str):

        value (str):

        web_display_key (Optional[str]):

    """

    classmark: str = field(metadata={"alias": "classmark"})

    value: str = field(metadata={"alias": "value"})

    web_display_key: Optional[str] = field(
        default=None, metadata={"alias": "webDisplayKey"}
    )


@dataclass(kw_only=True)
class SystemClassmarkDeleteRequest(OCIRequest):
    """Delete a Class Mark from system. It cannot be deleted if it is in use by any users.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        classmark (str):

    """

    classmark: str = field(metadata={"alias": "classmark"})


@dataclass(kw_only=True)
class SystemClassmarkGetListRequest(OCIRequest):
    """Get the list of all Class Mark in system.
        The response is either a SystemClassmarkGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemClassmarkGetUtilizationListRequest(OCIRequest):
    """Get the list of all users associated with a Class Mark in system. It is possible to search by various criteria.
        Multiple search criteria are logically ANDed together.
        The response is either a SystemClassmarkGetUtilizationListResponse or an ErrorResponse.

    Attributes:

        classmark (str):

        response_size_limit (Optional[int]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_exact_service_provider_id (Optional[SearchCriteriaExactServiceProvider]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    classmark: str = field(metadata={"alias": "classmark"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_exact_service_provider_id: Optional[
        SearchCriteriaExactServiceProvider
    ] = field(default=None, metadata={"alias": "searchCriteriaExactServiceProviderId"})

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class SystemClassmarkModifyRequest(OCIRequest):
    """Modify a Class Mark in system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        classmark (str):

        value (Optional[str]):

        web_display_key (Optional[Nillable[str]]):

    """

    classmark: str = field(metadata={"alias": "classmark"})

    value: Optional[str] = field(default=None, metadata={"alias": "value"})

    web_display_key: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "webDisplayKey"}
    )

    def __post_init__(self):
        nillable_fields = ["web_display_key"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemClientIdentityAddRequest(OCIRequest):
    """Request to add a client identity entry to the list of client identities in the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        client_identity (str):

    """

    client_identity: str = field(metadata={"alias": "clientIdentity"})


@dataclass(kw_only=True)
class SystemClientIdentityDeleteRequest(OCIRequest):
    """Request to delete a client identity.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        client_identity (str):

    """

    client_identity: str = field(metadata={"alias": "clientIdentity"})


@dataclass(kw_only=True)
class SystemClientIdentityGetListRequest(OCIRequest):
    """Request to get a list of client identities.
        The response is either a SystemClientIdentityGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemClientSessionParametersGetRequest(OCIRequest):
    """Request to get the list of Client Session (web and CLI) system parameters.
        The response is either SystemClientSessionParametersGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemClientSessionParametersModifyRequest(OCIRequest):
    """Request to modify Client Session (web and CLI) system parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        enable_inactivity_timeout (Optional[bool]):

        inactivity_timeout_minutes (Optional[int]):

    """

    enable_inactivity_timeout: Optional[bool] = field(
        default=None, metadata={"alias": "enableInactivityTimeout"}
    )

    inactivity_timeout_minutes: Optional[int] = field(
        default=None, metadata={"alias": "inactivityTimeoutMinutes"}
    )


@dataclass(kw_only=True)
class SystemCodecAddRequest(OCIRequest):
    """Request to add a codec to the ordered list of codecs supported by the system.
        The ordered list of codecs is sent to MGCP devices when creating connections.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        codec (str):

    """

    codec: str = field(metadata={"alias": "codec"})


@dataclass(kw_only=True)
class SystemCodecDeleteRequest(OCIRequest):
    """Request to delete a supported codec from the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        codec (str):

    """

    codec: str = field(metadata={"alias": "codec"})


@dataclass(kw_only=True)
class SystemCodecGetListRequest(OCIRequest):
    """Request to get the ordered list of supported codecs in the system.
        The ordered list of codecs is sent to MGCP devices when creating connections.
        The response is either a SystemCodecGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCollaborateGetRequest20sp1V2(OCIRequest):
    """Request the system level data associated with collaborate services.
        The response is either a SystemCollaborateGetResponse20sp1V2 or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCollaborateModifyRequest20sp1V2(OCIRequest):
    """Modify the system level data associated with collaborate services.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        collaborate_room_id_length (Optional[int]):

        instant_room_idle_timeout_seconds (Optional[int]):

        collaborate_room_maximum_duration_minutes (Optional[int]):

        support_outdial (Optional[bool]):

        max_collaborate_room_participants (Optional[int]):

        collaborate_active_talker_refresh_interval_seconds (Optional[int]):

        terminate_collaborate_after_grace_period (Optional[bool]):

        collaborate_grace_period (Optional[CollaborateGracePeriodDuration]):

        enable_active_collaborate_notification (Optional[bool]):

        collaborate_from_address (Optional[Nillable[str]]):

    """

    collaborate_room_id_length: Optional[int] = field(
        default=None, metadata={"alias": "collaborateRoomIdLength"}
    )

    instant_room_idle_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "instantRoomIdleTimeoutSeconds"}
    )

    collaborate_room_maximum_duration_minutes: Optional[int] = field(
        default=None, metadata={"alias": "collaborateRoomMaximumDurationMinutes"}
    )

    support_outdial: Optional[bool] = field(
        default=None, metadata={"alias": "supportOutdial"}
    )

    max_collaborate_room_participants: Optional[int] = field(
        default=None, metadata={"alias": "maxCollaborateRoomParticipants"}
    )

    collaborate_active_talker_refresh_interval_seconds: Optional[int] = field(
        default=None,
        metadata={"alias": "collaborateActiveTalkerRefreshIntervalSeconds"},
    )

    terminate_collaborate_after_grace_period: Optional[bool] = field(
        default=None, metadata={"alias": "terminateCollaborateAfterGracePeriod"}
    )

    collaborate_grace_period: Optional[CollaborateGracePeriodDuration] = field(
        default=None, metadata={"alias": "collaborateGracePeriod"}
    )

    enable_active_collaborate_notification: Optional[bool] = field(
        default=None, metadata={"alias": "enableActiveCollaborateNotification"}
    )

    collaborate_from_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "collaborateFromAddress"}
    )

    def __post_init__(self):
        nillable_fields = ["collaborate_from_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCommunicationBarringAlternateCallIndicatorAddRequest(OCIRequest):
    """Add a Communication Barring Alternate Call Indicator.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        alternate_call_indicator (str):

        network_server_alternate_call_indicator (str):

    """

    alternate_call_indicator: str = field(metadata={"alias": "alternateCallIndicator"})

    network_server_alternate_call_indicator: str = field(
        metadata={"alias": "networkServerAlternateCallIndicator"}
    )


@dataclass(kw_only=True)
class SystemCommunicationBarringAlternateCallIndicatorDeleteRequest(OCIRequest):
    """Delete a Communication Barring Alternate Call Indicator.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        alternate_call_indicator (str):

    """

    alternate_call_indicator: str = field(metadata={"alias": "alternateCallIndicator"})


@dataclass(kw_only=True)
class SystemCommunicationBarringAlternateCallIndicatorGetListRequest(OCIRequest):
    """Get all the Communication Barring Alternate Call Indicator defined
        in the system. The response is either a SystemCommunicationBarringAlternateCallIndicatorGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCommunicationBarringAlternateCallIndicatorModifyRequest(OCIRequest):
    """Modify a Communication Barring Alternate Call Indicator.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        alternate_call_indicator (str):

        network_server_alternate_call_indicator (Optional[str]):

    """

    alternate_call_indicator: str = field(metadata={"alias": "alternateCallIndicator"})

    network_server_alternate_call_indicator: Optional[str] = field(
        default=None, metadata={"alias": "networkServerAlternateCallIndicator"}
    )


@dataclass(kw_only=True)
class SystemCommunicationBarringCallTypeAddRequest(OCIRequest):
    """Add a Communication Barring Call Type.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        call_type (str):

        network_server_call_type (str):

    """

    call_type: str = field(metadata={"alias": "callType"})

    network_server_call_type: str = field(metadata={"alias": "networkServerCallType"})


@dataclass(kw_only=True)
class SystemCommunicationBarringCallTypeDeleteRequest(OCIRequest):
    """Delete a Communication Barring Call Type.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        call_type (str):

    """

    call_type: str = field(metadata={"alias": "callType"})


@dataclass(kw_only=True)
class SystemCommunicationBarringCallTypeGetListRequest(OCIRequest):
    """Get all the Communication Barring Call Types defined in the system.
        The response is either a SystemCommunicationBarringCallTypeGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCommunicationBarringCallTypeModifyRequest(OCIRequest):
    """Modify a Communication Barring Call Type.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        call_type (str):

        network_server_call_type (Optional[str]):

    """

    call_type: str = field(metadata={"alias": "callType"})

    network_server_call_type: Optional[str] = field(
        default=None, metadata={"alias": "networkServerCallType"}
    )


@dataclass(kw_only=True)
class SystemCommunicationBarringCriteriaAddRequest17(OCIRequest):
    """Add a new Communication Barring Criteria.
        The following elements are only used in AS data mode:
          matchNumberPortabilityStatus

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        description (Optional[str]):

        match_call_type (Optional[List[str]]):

        match_alternate_call_indicator (Optional[List[str]]):

        match_virtual_on_net_call_type (Optional[List[str]]):

        match_public_network (bool):

        match_private_network (bool):

        match_local_category (bool):

        match_national_category (bool):

        match_interlata_category (bool):

        match_intralata_category (bool):

        match_international_category (bool):

        match_private_category (bool):

        match_emergency_category (bool):

        match_other_category (bool):

        match_inter_network (bool):

        match_inter_hosting_ne (bool):

        match_inter_as (bool):

        match_intra_as (bool):

        match_charge_calls (bool):

        match_no_charge_calls (bool):

        match_group_calls (bool):

        match_enterprise_calls (bool):

        match_network_calls (bool):

        match_network_url_calls (bool):

        match_repair_calls (bool):

        match_emergency_calls (bool):

        match_internal_calls (bool):

        match_location (str):

        match_roaming (str):

        time_schedule (Optional[str]):

        holiday_schedule (Optional[str]):

        match_number_portability_status (Optional[List[str]]):

    """

    name: str = field(metadata={"alias": "name"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    match_call_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchCallType"}
    )

    match_alternate_call_indicator: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchAlternateCallIndicator"}
    )

    match_virtual_on_net_call_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchVirtualOnNetCallType"}
    )

    match_public_network: bool = field(metadata={"alias": "matchPublicNetwork"})

    match_private_network: bool = field(metadata={"alias": "matchPrivateNetwork"})

    match_local_category: bool = field(metadata={"alias": "matchLocalCategory"})

    match_national_category: bool = field(metadata={"alias": "matchNationalCategory"})

    match_interlata_category: bool = field(metadata={"alias": "matchInterlataCategory"})

    match_intralata_category: bool = field(metadata={"alias": "matchIntralataCategory"})

    match_international_category: bool = field(
        metadata={"alias": "matchInternationalCategory"}
    )

    match_private_category: bool = field(metadata={"alias": "matchPrivateCategory"})

    match_emergency_category: bool = field(metadata={"alias": "matchEmergencyCategory"})

    match_other_category: bool = field(metadata={"alias": "matchOtherCategory"})

    match_inter_network: bool = field(metadata={"alias": "matchInterNetwork"})

    match_inter_hosting_ne: bool = field(metadata={"alias": "matchInterHostingNE"})

    match_inter_as: bool = field(metadata={"alias": "matchInterAS"})

    match_intra_as: bool = field(metadata={"alias": "matchIntraAS"})

    match_charge_calls: bool = field(metadata={"alias": "matchChargeCalls"})

    match_no_charge_calls: bool = field(metadata={"alias": "matchNoChargeCalls"})

    match_group_calls: bool = field(metadata={"alias": "matchGroupCalls"})

    match_enterprise_calls: bool = field(metadata={"alias": "matchEnterpriseCalls"})

    match_network_calls: bool = field(metadata={"alias": "matchNetworkCalls"})

    match_network_url_calls: bool = field(metadata={"alias": "matchNetworkURLCalls"})

    match_repair_calls: bool = field(metadata={"alias": "matchRepairCalls"})

    match_emergency_calls: bool = field(metadata={"alias": "matchEmergencyCalls"})

    match_internal_calls: bool = field(metadata={"alias": "matchInternalCalls"})

    match_location: str = field(metadata={"alias": "matchLocation"})

    match_roaming: str = field(metadata={"alias": "matchRoaming"})

    time_schedule: Optional[str] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[str] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    match_number_portability_status: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchNumberPortabilityStatus"}
    )


@dataclass(kw_only=True)
class SystemCommunicationBarringCriteriaDeleteRequest(OCIRequest):
    """Delete an existing Communication Barring Criteria.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCommunicationBarringCriteriaGetListRequest(OCIRequest):
    """Get the list of all Communication Barring Criteria.
        The response is either a
        SystemCommunicationBarringCriteriaGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCommunicationBarringCriteriaGetRequest19sp1(OCIRequest):
    """Get an existing Communication Barring Criteria.
        The response is either a
        SystemCommunicationBarringCriteriaGetResponse19sp1 or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCommunicationBarringCriteriaModifyRequest(OCIRequest):
    """Modify an existing Communication Barring Criteria.
        The following elements are only used in AS data mode:
          matchNumberPortabilityStatus
            The following elements are only used in XS data mode and ignored in AS data mode:
              matchOtherGETS
          matchNotGETS
          matchGETSAN
          matchGETSNT
          matchGETSFC
          matchGETSFCAN
          matchGETSFCNT

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        new_name (Optional[str]):

        description (Optional[Nillable[str]]):

        match_call_type (Optional[Nillable[ReplacementCommunicationBarringCallTypeList]]):

        match_alternate_call_indicator (Optional[Nillable[ReplacementCommunicationBarringAlternateCallIndicatorList]]):

        match_virtual_on_net_call_type (Optional[Nillable[ReplacementVirtualOnNetCallTypeNameList]]):

        match_public_network (Optional[bool]):

        match_private_network (Optional[bool]):

        match_local_category (Optional[bool]):

        match_national_category (Optional[bool]):

        match_interlata_category (Optional[bool]):

        match_intralata_category (Optional[bool]):

        match_international_category (Optional[bool]):

        match_private_category (Optional[bool]):

        match_emergency_category (Optional[bool]):

        match_other_category (Optional[bool]):

        match_inter_network (Optional[bool]):

        match_inter_hosting_ne (Optional[bool]):

        match_inter_as (Optional[bool]):

        match_intra_as (Optional[bool]):

        match_charge_calls (Optional[bool]):

        match_no_charge_calls (Optional[bool]):

        match_group_calls (Optional[bool]):

        match_enterprise_calls (Optional[bool]):

        match_network_calls (Optional[bool]):

        match_network_url_calls (Optional[bool]):

        match_repair_calls (Optional[bool]):

        match_emergency_calls (Optional[bool]):

        match_internal_calls (Optional[bool]):

        match_other_gets_gets (Optional[bool]):

        match_not_gets_gets (Optional[bool]):

        match_getsan_gets (Optional[bool]):

        match_getsnt_gets (Optional[bool]):

        match_getsfc_gets (Optional[bool]):

        match_getsfcan_gets (Optional[bool]):

        match_getsfcnt_gets (Optional[bool]):

        match_location (Optional[str]):

        match_roaming (Optional[str]):

        time_schedule (Optional[Nillable[str]]):

        holiday_schedule (Optional[Nillable[str]]):

        match_number_portability_status (Optional[Nillable[ReplacementNumberPortabilityStatusList]]):

    """

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    match_call_type: Optional[Nillable[ReplacementCommunicationBarringCallTypeList]] = (
        field(default=None, metadata={"alias": "matchCallType"})
    )

    match_alternate_call_indicator: Optional[
        Nillable[ReplacementCommunicationBarringAlternateCallIndicatorList]
    ] = field(default=None, metadata={"alias": "matchAlternateCallIndicator"})

    match_virtual_on_net_call_type: Optional[
        Nillable[ReplacementVirtualOnNetCallTypeNameList]
    ] = field(default=None, metadata={"alias": "matchVirtualOnNetCallType"})

    match_public_network: Optional[bool] = field(
        default=None, metadata={"alias": "matchPublicNetwork"}
    )

    match_private_network: Optional[bool] = field(
        default=None, metadata={"alias": "matchPrivateNetwork"}
    )

    match_local_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchLocalCategory"}
    )

    match_national_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchNationalCategory"}
    )

    match_interlata_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchInterlataCategory"}
    )

    match_intralata_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchIntralataCategory"}
    )

    match_international_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchInternationalCategory"}
    )

    match_private_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchPrivateCategory"}
    )

    match_emergency_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchEmergencyCategory"}
    )

    match_other_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchOtherCategory"}
    )

    match_inter_network: Optional[bool] = field(
        default=None, metadata={"alias": "matchInterNetwork"}
    )

    match_inter_hosting_ne: Optional[bool] = field(
        default=None, metadata={"alias": "matchInterHostingNE"}
    )

    match_inter_as: Optional[bool] = field(
        default=None, metadata={"alias": "matchInterAS"}
    )

    match_intra_as: Optional[bool] = field(
        default=None, metadata={"alias": "matchIntraAS"}
    )

    match_charge_calls: Optional[bool] = field(
        default=None, metadata={"alias": "matchChargeCalls"}
    )

    match_no_charge_calls: Optional[bool] = field(
        default=None, metadata={"alias": "matchNoChargeCalls"}
    )

    match_group_calls: Optional[bool] = field(
        default=None, metadata={"alias": "matchGroupCalls"}
    )

    match_enterprise_calls: Optional[bool] = field(
        default=None, metadata={"alias": "matchEnterpriseCalls"}
    )

    match_network_calls: Optional[bool] = field(
        default=None, metadata={"alias": "matchNetworkCalls"}
    )

    match_network_url_calls: Optional[bool] = field(
        default=None, metadata={"alias": "matchNetworkURLCalls"}
    )

    match_repair_calls: Optional[bool] = field(
        default=None, metadata={"alias": "matchRepairCalls"}
    )

    match_emergency_calls: Optional[bool] = field(
        default=None, metadata={"alias": "matchEmergencyCalls"}
    )

    match_internal_calls: Optional[bool] = field(
        default=None, metadata={"alias": "matchInternalCalls"}
    )

    match_other_gets_gets: Optional[bool] = field(
        default=None, metadata={"alias": "matchOtherGETSGets"}
    )

    match_not_gets_gets: Optional[bool] = field(
        default=None, metadata={"alias": "matchNotGETSGets"}
    )

    match_getsan_gets: Optional[bool] = field(
        default=None, metadata={"alias": "matchGETSANGets"}
    )

    match_getsnt_gets: Optional[bool] = field(
        default=None, metadata={"alias": "matchGETSNTGets"}
    )

    match_getsfc_gets: Optional[bool] = field(
        default=None, metadata={"alias": "matchGETSFCGets"}
    )

    match_getsfcan_gets: Optional[bool] = field(
        default=None, metadata={"alias": "matchGETSFCANGets"}
    )

    match_getsfcnt_gets: Optional[bool] = field(
        default=None, metadata={"alias": "matchGETSFCNTGets"}
    )

    match_location: Optional[str] = field(
        default=None, metadata={"alias": "matchLocation"}
    )

    match_roaming: Optional[str] = field(
        default=None, metadata={"alias": "matchRoaming"}
    )

    time_schedule: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    match_number_portability_status: Optional[
        Nillable[ReplacementNumberPortabilityStatusList]
    ] = field(default=None, metadata={"alias": "matchNumberPortabilityStatus"})

    def __post_init__(self):
        nillable_fields = [
            "description",
            "match_call_type",
            "match_alternate_call_indicator",
            "match_virtual_on_net_call_type",
            "time_schedule",
            "holiday_schedule",
            "match_number_portability_status",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCommunicationBarringDigitPatternCriteriaAddRequest(OCIRequest):
    """Add a new Communication Barring Digit Pattern Criteria.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        description (Optional[str]):

        match_digit_pattern (Optional[List[str]]):

    """

    name: str = field(metadata={"alias": "name"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    match_digit_pattern: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchDigitPattern"}
    )


@dataclass(kw_only=True)
class SystemCommunicationBarringDigitPatternCriteriaDeleteRequest(OCIRequest):
    """Delete an existing Communication Barring Digit Pattern Criteria.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCommunicationBarringDigitPatternCriteriaGetListRequest(OCIRequest):
    """Get the list of all Digit Pattern Criteria defined at the system level.
        The response is either a SystemCommunicationBarringDigitPatternCriteriaGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCommunicationBarringDigitPatternCriteriaGetPatternListRequest(OCIRequest):
    """Get an existing Digit Pattern Criteria.
        The response is either a SystemCommunicationBarringDigitPatternCriteriaGetPatternListResponse or an ErrorResponse.

    Attributes:

        name (str):

        response_size_limit (Optional[int]):

        search_criteria_digit_pattern (Optional[List[SearchCriteriaDigitPattern]]):

    """

    name: str = field(metadata={"alias": "name"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_digit_pattern: Optional[List[SearchCriteriaDigitPattern]] = field(
        default=None, metadata={"alias": "searchCriteriaDigitPattern"}
    )


@dataclass(kw_only=True)
class SystemCommunicationBarringDigitPatternCriteriaGetRequest(OCIRequest):
    """Get an existing Communication Barring Digit Pattern Criteria.
        The response is either a SystemCommunicationBarringDigitPatternCriteriaGetResponse or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCommunicationBarringDigitPatternCriteriaModifyRequest(OCIRequest):
    """Modify an existing Communication Barring Digit Pattern Criteria.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        new_name (Optional[str]):

        description (Optional[Nillable[str]]):

        add_match_digit_pattern (Optional[List[str]]):

        delete_match_digit_pattern (Optional[List[str]]):

    """

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    add_match_digit_pattern: Optional[List[str]] = field(
        default=None, metadata={"alias": "addMatchDigitPattern"}
    )

    delete_match_digit_pattern: Optional[List[str]] = field(
        default=None, metadata={"alias": "deleteMatchDigitPattern"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCommunicationBarringGetRequest21sp1(OCIRequest):
    """Request the system level data associated with Communication Barring.
        The response is either a SystemCommunicationBarringGetResponse21sp1 or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCommunicationBarringIncomingCriteriaAddRequest22(OCIRequest):
    """Add a new Communication Barring Incoming Criteria.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        description (Optional[str]):

        time_schedule (Optional[str]):

        holiday_schedule (Optional[str]):

        match_number_portability_status (Optional[List[str]]):

        call_tagged_as_spam (bool):

    """

    name: str = field(metadata={"alias": "name"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    time_schedule: Optional[str] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[str] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    match_number_portability_status: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchNumberPortabilityStatus"}
    )

    call_tagged_as_spam: bool = field(metadata={"alias": "callTaggedAsSpam"})


@dataclass(kw_only=True)
class SystemCommunicationBarringIncomingCriteriaDeleteRequest(OCIRequest):
    """Delete an existing Communication Barring Incoming Criteria.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCommunicationBarringIncomingCriteriaGetListRequest(OCIRequest):
    """Get the list of all Communication Barring Incoming Criteria.
        The response is either a
        SystemCommunicationBarringIncomingCriteriaGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCommunicationBarringIncomingCriteriaGetRequest22(OCIRequest):
    """Get an existing Communication Barring Incoming Criteria.
        The response is either a
        SystemCommunicationBarringIncomingCriteriaGetResponse22 or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCommunicationBarringIncomingCriteriaModifyRequest(OCIRequest):
    """Modify an existing Communication Barring Incoming Criteria.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        new_name (Optional[str]):

        description (Optional[Nillable[str]]):

        time_schedule (Optional[Nillable[str]]):

        holiday_schedule (Optional[Nillable[str]]):

        match_number_portability_status (Optional[Nillable[ReplacementNumberPortabilityStatusList]]):

        call_tagged_as_spam (Optional[bool]):

    """

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    time_schedule: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    match_number_portability_status: Optional[
        Nillable[ReplacementNumberPortabilityStatusList]
    ] = field(default=None, metadata={"alias": "matchNumberPortabilityStatus"})

    call_tagged_as_spam: Optional[bool] = field(
        default=None, metadata={"alias": "callTaggedAsSpam"}
    )

    def __post_init__(self):
        nillable_fields = [
            "description",
            "time_schedule",
            "holiday_schedule",
            "match_number_portability_status",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCommunicationBarringModifyRequest(OCIRequest):
    """Modify the system level data associated with Communication Barring.
        The following elements are only used in AS data mode and ignored in XS data mode:
         vmCallbackScreening

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        direct_transfer_screening (Optional[bool]):

        vm_callback_screening (Optional[bool]):

    """

    direct_transfer_screening: Optional[bool] = field(
        default=None, metadata={"alias": "directTransferScreening"}
    )

    vm_callback_screening: Optional[bool] = field(
        default=None, metadata={"alias": "vmCallbackScreening"}
    )


@dataclass(kw_only=True)
class SystemCommunicationBarringProfileAddRequest19sp1(OCIRequest):
    """Add a new Communication Barring Profile.
        The priorities for IncomingRules are requantized to consecutive integers as part of the add.
        The response is either a SuccessResponse or an ErrorResponse.
      The following elements are only used in AS data mode:
           callMeNowDefaultAction, use value \"Block\" in XS data mode
           callMeNowDefaultCallTimeout
           callMeNowRule
           applyToAttendedCallTransfers, use value \"false\" in XS data mode

    Attributes:

        name (str):

        description (Optional[str]):

        originating_default_action (str):

        originating_default_treatment_id (Optional[str]):

        originating_default_transfer_number (Optional[str]):

        originating_default_call_timeout (Optional[int]):

        originating_rule (Optional[List[CommunicationBarringOriginatingRule]]):

        redirecting_default_action (str):

        redirecting_default_call_timeout (Optional[int]):

        redirecting_rule (Optional[List[CommunicationBarringRedirectingRule]]):

        incoming_default_action (str):

        incoming_default_call_timeout (Optional[int]):

        incoming_rule (Optional[List[CommunicationBarringIncomingRule19sp1]]):

        call_me_now_default_action (str):

        call_me_now_default_call_timeout (Optional[int]):

        call_me_now_rule (Optional[List[CommunicationBarringCallMeNowRule]]):

        apply_to_attended_call_transfers (bool):

    """

    name: str = field(metadata={"alias": "name"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    originating_default_action: str = field(
        metadata={"alias": "originatingDefaultAction"}
    )

    originating_default_treatment_id: Optional[str] = field(
        default=None, metadata={"alias": "originatingDefaultTreatmentId"}
    )

    originating_default_transfer_number: Optional[str] = field(
        default=None, metadata={"alias": "originatingDefaultTransferNumber"}
    )

    originating_default_call_timeout: Optional[int] = field(
        default=None, metadata={"alias": "originatingDefaultCallTimeout"}
    )

    originating_rule: Optional[List[CommunicationBarringOriginatingRule]] = field(
        default=None, metadata={"alias": "originatingRule"}
    )

    redirecting_default_action: str = field(
        metadata={"alias": "redirectingDefaultAction"}
    )

    redirecting_default_call_timeout: Optional[int] = field(
        default=None, metadata={"alias": "redirectingDefaultCallTimeout"}
    )

    redirecting_rule: Optional[List[CommunicationBarringRedirectingRule]] = field(
        default=None, metadata={"alias": "redirectingRule"}
    )

    incoming_default_action: str = field(metadata={"alias": "incomingDefaultAction"})

    incoming_default_call_timeout: Optional[int] = field(
        default=None, metadata={"alias": "incomingDefaultCallTimeout"}
    )

    incoming_rule: Optional[List[CommunicationBarringIncomingRule19sp1]] = field(
        default=None, metadata={"alias": "incomingRule"}
    )

    call_me_now_default_action: str = field(
        metadata={"alias": "callMeNowDefaultAction"}
    )

    call_me_now_default_call_timeout: Optional[int] = field(
        default=None, metadata={"alias": "callMeNowDefaultCallTimeout"}
    )

    call_me_now_rule: Optional[List[CommunicationBarringCallMeNowRule]] = field(
        default=None, metadata={"alias": "callMeNowRule"}
    )

    apply_to_attended_call_transfers: bool = field(
        metadata={"alias": "applyToAttendedCallTransfers"}
    )


@dataclass(kw_only=True)
class SystemCommunicationBarringProfileDeleteRequest(OCIRequest):
    """Delete an existing Communication Barring Profile.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCommunicationBarringProfileGetCriteriaUsageListRequest(OCIRequest):
    """Get the list of Communication Barring Proifles that uses a specific
        Communication Barring criteria.
        The response is either a SystemCommunicationBarringProfileGetCriteriaUsageListResponse
        or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCommunicationBarringProfileGetDigitPatternCriteriaUsageListRequest(
    OCIRequest
):
    """Get the list of Profiles that use a specific Digit Pattern Criteria.
        The response is either a
        SystemCommunicationBarringProfileGetDigitPatternCriteriaUsageListResponse
        or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCommunicationBarringProfileGetIncomingCriteriaUsageListRequest(OCIRequest):
    """Get the list of Communication Barring Proifles that uses a specific
        Communication Barring Incoming criteria.
        The response is either a SystemCommunicationBarringProfileGetIncomingCriteriaUsageListResponse
        or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCommunicationBarringProfileGetListRequest(OCIRequest):
    """Get the list of all Communication Barring Profiles.
        The response is either a
        SystemCommunicationBarringProfileGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCommunicationBarringProfileGetRequest19sp1V2(OCIRequest):
    """Get an existing Communication Barring Profile.
        The response is either a SystemCommunicationBarringProfileGetResponse19sp1V2
        or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCommunicationBarringProfileModifyRequest(OCIRequest):
    """Modify an existing Communication Barring Profile.
        When the originatingDefaultAction is not Treatment, originatingDefaultTreatmentId
        will be automatically cleared. Also when the action of originatingRule is not Treatment,
        treatmentId will be automatically cleared for the rule.
        The priorities for IncomingRules are requantized to consecutive integers as part of the modify.
        The response is either a SuccessResponse or an ErrorResponse.
              The following elements are only used in AS data mode:
           callMeNowDefaultAction
           callMeNowDefaultCallTimeout
           callMeNowRule
           applyToAttendedCallTransfers

    Attributes:

        name (str):

        new_name (Optional[str]):

        description (Optional[Nillable[str]]):

        originating_default_action (Optional[str]):

        originating_default_treatment_id (Optional[Nillable[str]]):

        originating_default_transfer_number (Optional[Nillable[str]]):

        originating_default_call_timeout (Optional[Nillable[int]]):

        originating_rule (Optional[Nillable[ReplacementCommunicationBarringOriginatingRuleList]]):

        redirecting_default_action (Optional[str]):

        redirecting_default_call_timeout (Optional[Nillable[int]]):

        redirecting_rule (Optional[Nillable[ReplacementCommunicationBarringRedirectingRuleList]]):

        incoming_default_action (Optional[str]):

        incoming_default_call_timeout (Optional[Nillable[int]]):

        incoming_rule (Optional[Nillable[ReplacementCommunicationBarringIncomingRuleList19sp1]]):

        call_me_now_default_action (Optional[str]):

        call_me_now_default_call_timeout (Optional[Nillable[int]]):

        call_me_now_rule (Optional[Nillable[ReplacementCommunicationBarringCallMeNowRuleList]]):

        apply_to_attended_call_transfers (Optional[bool]):

    """

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    originating_default_action: Optional[str] = field(
        default=None, metadata={"alias": "originatingDefaultAction"}
    )

    originating_default_treatment_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "originatingDefaultTreatmentId"}
    )

    originating_default_transfer_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "originatingDefaultTransferNumber"}
    )

    originating_default_call_timeout: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "originatingDefaultCallTimeout"}
    )

    originating_rule: Optional[
        Nillable[ReplacementCommunicationBarringOriginatingRuleList]
    ] = field(default=None, metadata={"alias": "originatingRule"})

    redirecting_default_action: Optional[str] = field(
        default=None, metadata={"alias": "redirectingDefaultAction"}
    )

    redirecting_default_call_timeout: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "redirectingDefaultCallTimeout"}
    )

    redirecting_rule: Optional[
        Nillable[ReplacementCommunicationBarringRedirectingRuleList]
    ] = field(default=None, metadata={"alias": "redirectingRule"})

    incoming_default_action: Optional[str] = field(
        default=None, metadata={"alias": "incomingDefaultAction"}
    )

    incoming_default_call_timeout: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "incomingDefaultCallTimeout"}
    )

    incoming_rule: Optional[
        Nillable[ReplacementCommunicationBarringIncomingRuleList19sp1]
    ] = field(default=None, metadata={"alias": "incomingRule"})

    call_me_now_default_action: Optional[str] = field(
        default=None, metadata={"alias": "callMeNowDefaultAction"}
    )

    call_me_now_default_call_timeout: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "callMeNowDefaultCallTimeout"}
    )

    call_me_now_rule: Optional[
        Nillable[ReplacementCommunicationBarringCallMeNowRuleList]
    ] = field(default=None, metadata={"alias": "callMeNowRule"})

    apply_to_attended_call_transfers: Optional[bool] = field(
        default=None, metadata={"alias": "applyToAttendedCallTransfers"}
    )

    def __post_init__(self):
        nillable_fields = [
            "description",
            "originating_default_treatment_id",
            "originating_default_transfer_number",
            "originating_default_call_timeout",
            "originating_rule",
            "redirecting_default_call_timeout",
            "redirecting_rule",
            "incoming_default_call_timeout",
            "incoming_rule",
            "call_me_now_default_call_timeout",
            "call_me_now_rule",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCommunicationBarringServiceProviderGetCriteriaUsageListRequest(OCIRequest):
    """Get the list of Service Providers that use a specific
        Communication Barring Criteria.
        The response is either a SystemCommunicationBarringServiceProviderGetCriteriaUsageListResponse
        or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCommunicationBarringServiceProviderGetIncomingCriteriaUsageListRequest(
    OCIRequest
):
    """Get the list of Service Providers that use a specific
        Communication Barring Incoming Criteria.
        The response is either a SystemCommunicationBarringServiceProviderGetIncomingCriteriaUsageListResponse
        or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemCommunicationBarringUserControlGetRequest(OCIRequest):
    """Gets the Communication Barring system level settings.
        The response is either SystemCommunicationBarringUserControlGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCommunicationBarringUserControlModifyRequest(OCIRequest):
    """Modifies the system's Communication Barring User-Control settings.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        enable_lockout (Optional[bool]):

        max_number_of_failed_attempts (Optional[int]):

        lockout_minutes (Optional[int]):

    """

    enable_lockout: Optional[bool] = field(
        default=None, metadata={"alias": "enableLockout"}
    )

    max_number_of_failed_attempts: Optional[int] = field(
        default=None, metadata={"alias": "maxNumberOfFailedAttempts"}
    )

    lockout_minutes: Optional[int] = field(
        default=None, metadata={"alias": "lockoutMinutes"}
    )


@dataclass(kw_only=True)
class SystemConfigurableFileSystemGetRequest23V2(OCIRequest):
    """Request to get the File System parameters.
        The response is either SystemConfigurableFileSystemGetResponse23V2 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemConfigurableFileSystemModifyRequest(OCIRequest):
    """Request to modify File System parameters.
        The response is either SuccessResponse or ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
            protocolFile-secure

    Attributes:

        media_directory (Optional[str]):

        protocol_file (Optional[object]):

        protocol_web_dav (Optional[object]):

    """

    media_directory: Optional[str] = field(
        default=None, metadata={"alias": "mediaDirectory"}
    )

    protocol_file: Optional[object] = field(
        default=None, metadata={"alias": "protocolFile"}
    )

    protocol_web_dav: Optional[object] = field(
        default=None, metadata={"alias": "protocolWebDAV"}
    )


@dataclass(kw_only=True)
class SystemConfigurableTreatmentAddRequest(OCIRequest):
    """Add a configurable treatment.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        treatment_id (str):

        charge_indicator (str):

        description (Optional[str]):

        access_sip_status_code (Optional[int]):

        access_sip_status_message (Optional[str]):

        network_sip_status_code (Optional[int]):

        network_sip_status_message (Optional[str]):

        q850_cause_value (Optional[int]):

        q850_text (Optional[str]):

        access_treatment_audio_file (Optional[str]):

        access_treatment_video_file (Optional[str]):

        network_treatment_audio_file (Optional[str]):

        network_treatment_video_file (Optional[str]):

        cdr_termination_cause (Optional[str]):

        route_advance (Optional[bool]):

        internal_release_cause (Optional[str]):

        access_send_reason_header (Optional[bool]):

        network_send_reason_header (Optional[bool]):

        warn_code (Optional[int]):

        warn_text (Optional[str]):

        access_send_warning_header (Optional[bool]):

        network_send_warning_header (Optional[bool]):

    """

    treatment_id: str = field(metadata={"alias": "treatmentId"})

    charge_indicator: str = field(metadata={"alias": "chargeIndicator"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    access_sip_status_code: Optional[int] = field(
        default=None, metadata={"alias": "accessSIPStatusCode"}
    )

    access_sip_status_message: Optional[str] = field(
        default=None, metadata={"alias": "accessSIPStatusMessage"}
    )

    network_sip_status_code: Optional[int] = field(
        default=None, metadata={"alias": "networkSIPStatusCode"}
    )

    network_sip_status_message: Optional[str] = field(
        default=None, metadata={"alias": "networkSIPStatusMessage"}
    )

    q850_cause_value: Optional[int] = field(
        default=None, metadata={"alias": "q850CauseValue"}
    )

    q850_text: Optional[str] = field(default=None, metadata={"alias": "q850Text"})

    access_treatment_audio_file: Optional[str] = field(
        default=None, metadata={"alias": "accessTreatmentAudioFile"}
    )

    access_treatment_video_file: Optional[str] = field(
        default=None, metadata={"alias": "accessTreatmentVideoFile"}
    )

    network_treatment_audio_file: Optional[str] = field(
        default=None, metadata={"alias": "networkTreatmentAudioFile"}
    )

    network_treatment_video_file: Optional[str] = field(
        default=None, metadata={"alias": "networkTreatmentVideoFile"}
    )

    cdr_termination_cause: Optional[str] = field(
        default=None, metadata={"alias": "cdrTerminationCause"}
    )

    route_advance: Optional[bool] = field(
        default=None, metadata={"alias": "routeAdvance"}
    )

    internal_release_cause: Optional[str] = field(
        default=None, metadata={"alias": "internalReleaseCause"}
    )

    access_send_reason_header: Optional[bool] = field(
        default=None, metadata={"alias": "accessSendReasonHeader"}
    )

    network_send_reason_header: Optional[bool] = field(
        default=None, metadata={"alias": "networkSendReasonHeader"}
    )

    warn_code: Optional[int] = field(default=None, metadata={"alias": "warnCode"})

    warn_text: Optional[str] = field(default=None, metadata={"alias": "warnText"})

    access_send_warning_header: Optional[bool] = field(
        default=None, metadata={"alias": "accessSendWarningHeader"}
    )

    network_send_warning_header: Optional[bool] = field(
        default=None, metadata={"alias": "networkSendWarningHeader"}
    )


@dataclass(kw_only=True)
class SystemConfigurableTreatmentDeleteRequest(OCIRequest):
    """Delete a configurable treatment.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        treatment_id (str):

    """

    treatment_id: str = field(metadata={"alias": "treatmentId"})


@dataclass(kw_only=True)
class SystemConfigurableTreatmentGetListRequest(OCIRequest):
    """Get a list of configurable treatments.
        The response is either a SystemConfigurableTreatmentGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemConfigurableTreatmentGetRequest24(OCIRequest):
    """Get all the attributes of a configurable treatment.
        The response is either a SystemConfigurableTreatmentGetResponse24 or an ErrorResponse.

    Attributes:

        treatment_id (str):

    """

    treatment_id: str = field(metadata={"alias": "treatmentId"})


@dataclass(kw_only=True)
class SystemConfigurableTreatmentModifyRequest(OCIRequest):
    """Modify the fields for a configurable treatment.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          warnCode
          warnText
          accessSendWarningHeader
          networkSendWarningHeader

    Attributes:

        treatment_id (str):

        charge_indicator (Optional[str]):

        description (Optional[Nillable[str]]):

        access_sip_status_code (Optional[Nillable[int]]):

        access_sip_status_message (Optional[Nillable[str]]):

        network_sip_status_code (Optional[Nillable[int]]):

        network_sip_status_message (Optional[Nillable[str]]):

        q850_cause_value (Optional[Nillable[int]]):

        q850_text (Optional[Nillable[str]]):

        access_treatment_audio_file (Optional[Nillable[str]]):

        access_treatment_video_file (Optional[Nillable[str]]):

        network_treatment_audio_file (Optional[Nillable[str]]):

        network_treatment_video_file (Optional[Nillable[str]]):

        cdr_termination_cause (Optional[Nillable[str]]):

        route_advance (Optional[bool]):

        internal_release_cause (Optional[Nillable[str]]):

        access_send_reason_header (Optional[bool]):

        network_send_reason_header (Optional[bool]):

        warn_code (Optional[Nillable[int]]):

        warn_text (Optional[Nillable[str]]):

        access_send_warning_header (Optional[bool]):

        network_send_warning_header (Optional[bool]):

    """

    treatment_id: str = field(metadata={"alias": "treatmentId"})

    charge_indicator: Optional[str] = field(
        default=None, metadata={"alias": "chargeIndicator"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    access_sip_status_code: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "accessSIPStatusCode"}
    )

    access_sip_status_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "accessSIPStatusMessage"}
    )

    network_sip_status_code: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "networkSIPStatusCode"}
    )

    network_sip_status_message: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "networkSIPStatusMessage"}
    )

    q850_cause_value: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "q850CauseValue"}
    )

    q850_text: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "q850Text"}
    )

    access_treatment_audio_file: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "accessTreatmentAudioFile"}
    )

    access_treatment_video_file: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "accessTreatmentVideoFile"}
    )

    network_treatment_audio_file: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "networkTreatmentAudioFile"}
    )

    network_treatment_video_file: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "networkTreatmentVideoFile"}
    )

    cdr_termination_cause: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "cdrTerminationCause"}
    )

    route_advance: Optional[bool] = field(
        default=None, metadata={"alias": "routeAdvance"}
    )

    internal_release_cause: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "internalReleaseCause"}
    )

    access_send_reason_header: Optional[bool] = field(
        default=None, metadata={"alias": "accessSendReasonHeader"}
    )

    network_send_reason_header: Optional[bool] = field(
        default=None, metadata={"alias": "networkSendReasonHeader"}
    )

    warn_code: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "warnCode"}
    )

    warn_text: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "warnText"}
    )

    access_send_warning_header: Optional[bool] = field(
        default=None, metadata={"alias": "accessSendWarningHeader"}
    )

    network_send_warning_header: Optional[bool] = field(
        default=None, metadata={"alias": "networkSendWarningHeader"}
    )

    def __post_init__(self):
        nillable_fields = [
            "description",
            "access_sip_status_code",
            "access_sip_status_message",
            "network_sip_status_code",
            "network_sip_status_message",
            "q850_cause_value",
            "q850_text",
            "access_treatment_audio_file",
            "access_treatment_video_file",
            "network_treatment_audio_file",
            "network_treatment_video_file",
            "cdr_termination_cause",
            "internal_release_cause",
            "warn_code",
            "warn_text",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemConnectedLineIdentificationPresentationGetRequest(OCIRequest):
    """Request the system level data associated with the COLP service.
        The response is either a
        SystemConnectedLineIdentificationPresentationGetResponse or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemConnectedLineIdentificationPresentationModifyRequest(OCIRequest):
    """Modify the system level data associated with the COLP Service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        enforce_user_service_assignment (Optional[bool]):

    """

    enforce_user_service_assignment: Optional[bool] = field(
        default=None, metadata={"alias": "enforceUserServiceAssignment"}
    )


@dataclass(kw_only=True)
class SystemCountryCodeAddRequest(OCIRequest):
    """Add a country code to the system.
        If ringPeriodMilliseconds is not specified, a default of 6000 milliseconds is assumed.
        If offHookWarningTimerSeconds is not specified, a default of 30 seconds is assumed.
        If enableNationalPrefix is not specified, a default of false is assumed.
        If nationalPrefix is not specified, a default of null string is assumed.
        If disableNationalPrefixForOffNetCalls is not specified, a default of false is assumed.
        The following elements are only used in AS data mode:
           disableNationalPrefixForOffNetCalls.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        country_code (str):

        country_name (str):

        ring_period_milliseconds (Optional[int]):

        off_hook_warning_timer_seconds (Optional[int]):

        enable_national_prefix (Optional[bool]):

        national_prefix (Optional[str]):

        max_call_waiting_tones (Optional[int]):

        time_between_call_waiting_tones_milliseconds (Optional[int]):

        disable_national_prefix_for_off_net_calls (Optional[bool]):

    """

    country_code: str = field(metadata={"alias": "countryCode"})

    country_name: str = field(metadata={"alias": "countryName"})

    ring_period_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "ringPeriodMilliseconds"}
    )

    off_hook_warning_timer_seconds: Optional[int] = field(
        default=None, metadata={"alias": "offHookWarningTimerSeconds"}
    )

    enable_national_prefix: Optional[bool] = field(
        default=None, metadata={"alias": "enableNationalPrefix"}
    )

    national_prefix: Optional[str] = field(
        default=None, metadata={"alias": "nationalPrefix"}
    )

    max_call_waiting_tones: Optional[int] = field(
        default=None, metadata={"alias": "maxCallWaitingTones"}
    )

    time_between_call_waiting_tones_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "timeBetweenCallWaitingTonesMilliseconds"}
    )

    disable_national_prefix_for_off_net_calls: Optional[bool] = field(
        default=None, metadata={"alias": "disableNationalPrefixForOffNetCalls"}
    )


@dataclass(kw_only=True)
class SystemCountryCodeDeleteRequest(OCIRequest):
    """Delete a country code from the system.
        A country code cannot be deleted if it is the default country code or
        if any carriers or call type mappings are defined against it.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        country_code (str):

    """

    country_code: str = field(metadata={"alias": "countryCode"})


@dataclass(kw_only=True)
class SystemCountryCodeGetListRequest(OCIRequest):
    """Request data for all country codes.
        The response is either a SystemCountryCodeGetListResponse or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCountryCodeModifyRequest(OCIRequest):
    """Modify the attributes of a country code.
        If becomeDefaultCountryCode is true, the country code
        in this request becomes the default country code for the system.
        The following elements are only used in AS data mode:
          disableNationalPrefixForOffNetCalls

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        country_code (str):

        ring_period_milliseconds (Optional[int]):

        off_hook_warning_timer_seconds (Optional[int]):

        enable_national_prefix (Optional[bool]):

        national_prefix (Optional[Nillable[str]]):

        become_default_country_code (Optional[bool]):

        max_call_waiting_tones (Optional[int]):

        time_between_call_waiting_tones_milliseconds (Optional[int]):

        disable_national_prefix_for_off_net_calls (Optional[bool]):

    """

    country_code: str = field(metadata={"alias": "countryCode"})

    ring_period_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "ringPeriodMilliseconds"}
    )

    off_hook_warning_timer_seconds: Optional[int] = field(
        default=None, metadata={"alias": "offHookWarningTimerSeconds"}
    )

    enable_national_prefix: Optional[bool] = field(
        default=None, metadata={"alias": "enableNationalPrefix"}
    )

    national_prefix: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "nationalPrefix"}
    )

    become_default_country_code: Optional[bool] = field(
        default=None, metadata={"alias": "becomeDefaultCountryCode"}
    )

    max_call_waiting_tones: Optional[int] = field(
        default=None, metadata={"alias": "maxCallWaitingTones"}
    )

    time_between_call_waiting_tones_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "timeBetweenCallWaitingTonesMilliseconds"}
    )

    disable_national_prefix_for_off_net_calls: Optional[bool] = field(
        default=None, metadata={"alias": "disableNationalPrefixForOffNetCalls"}
    )

    def __post_init__(self):
        nillable_fields = ["national_prefix"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCrInterfaceGetRequest22(OCIRequest):
    """Gets the system level attributes of the Cr Interface.
        The response is either a SystemCrInterfaceGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCrInterfaceModifyRequest(OCIRequest):
    """Modify the system level data associated with Cr Interface.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        cr_audit_enabled (Optional[bool]):

        cr_audit_interval_milliseconds (Optional[int]):

        cr_audit_timeout_milliseconds (Optional[int]):

        cr_connection_enabled (Optional[bool]):

        cr_connection_timeout_milliseconds (Optional[int]):

        cr_tcp_connection_timeout_seconds (Optional[int]):

        cr_number_of_reconnection_attempts (Optional[int]):

    """

    cr_audit_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "crAuditEnabled"}
    )

    cr_audit_interval_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "crAuditIntervalMilliseconds"}
    )

    cr_audit_timeout_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "crAuditTimeoutMilliseconds"}
    )

    cr_connection_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "crConnectionEnabled"}
    )

    cr_connection_timeout_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "crConnectionTimeoutMilliseconds"}
    )

    cr_tcp_connection_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "crTcpConnectionTimeoutSeconds"}
    )

    cr_number_of_reconnection_attempts: Optional[int] = field(
        default=None, metadata={"alias": "crNumberOfReconnectionAttempts"}
    )


@dataclass(kw_only=True)
class SystemCustomerOriginatedTraceGetRequest(OCIRequest):
    """Request the system level data associated with Customer Originated Trace.
        The response is either a SystemCustomerOriginatedTraceGetResponse or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemCustomerOriginatedTraceModifyRequest(OCIRequest):
    """Modify the system level data associated with Customer Originated Trace.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        screen_malicious_callers (Optional[bool]):

    """

    screen_malicious_callers: Optional[bool] = field(
        default=None, metadata={"alias": "screenMaliciousCallers"}
    )


@dataclass(kw_only=True)
class SystemDTMFTransmissionGetRequest(OCIRequest):
    """Get the system DTMF transmission configurations.
      The response is either SystemDTMFTransmissionGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemDTMFTransmissionModifyRequest(OCIRequest):
    """Modify the DTMF transmission settings.
      The response is either SuccessResponse or an ErrorResponse.

    Attributes:

        transmission_method (Optional[str]):

        signaling_content_type (Optional[str]):

    """

    transmission_method: Optional[str] = field(
        default=None, metadata={"alias": "transmissionMethod"}
    )

    signaling_content_type: Optional[str] = field(
        default=None, metadata={"alias": "signalingContentType"}
    )


@dataclass(kw_only=True)
class SystemDeviceActivationPolicyGetRequest(OCIRequest):
    """Request the Device Activation policy of the system.
        The response is either a SystemDeviceActivationPolicyGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemDeviceActivationPolicyModifyRequest(OCIRequest):
    """Modify the Device Activation policy of the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        allow_activation_code_request_by_user (Optional[bool]):

        send_activation_code_in_email (Optional[bool]):

    """

    allow_activation_code_request_by_user: Optional[bool] = field(
        default=None, metadata={"alias": "allowActivationCodeRequestByUser"}
    )

    send_activation_code_in_email: Optional[bool] = field(
        default=None, metadata={"alias": "sendActivationCodeInEmail"}
    )


@dataclass(kw_only=True)
class SystemDeviceFamilyAddRequest(OCIRequest):
    """Request to add a device family.
        When the optional element resellerId is specified, the device family created is at reseller level. Device family name
        should be unique throughout the system including all the reseller level device families.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in the XS data mode:
          resellerId

    Attributes:

        device_family_name (str):

        reseller_id (Optional[str]):

        assign_device_type (Optional[List[str]]):

        assign_tag_set (Optional[List[str]]):

    """

    device_family_name: str = field(metadata={"alias": "deviceFamilyName"})

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    assign_device_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "assignDeviceType"}
    )

    assign_tag_set: Optional[List[str]] = field(
        default=None, metadata={"alias": "assignTagSet"}
    )


@dataclass(kw_only=True)
class SystemDeviceFamilyAssignDeviceTypeListRequest(OCIRequest):
    """Request to assign a list of Device Types to a device family.

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_family_name (str):

        device_type_name (List[str]):

    """

    device_family_name: str = field(metadata={"alias": "deviceFamilyName"})

    device_type_name: List[str] = field(metadata={"alias": "deviceTypeName"})


@dataclass(kw_only=True)
class SystemDeviceFamilyAssignTagSetListRequest(OCIRequest):
    """Request to assign a list of Tag Sets to a device family.

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_family_name (str):

        tag_set_name (List[str]):

    """

    device_family_name: str = field(metadata={"alias": "deviceFamilyName"})

    tag_set_name: List[str] = field(metadata={"alias": "tagSetName"})


@dataclass(kw_only=True)
class SystemDeviceFamilyDeleteListRequest(OCIRequest):
    """Request to delete a device family.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_family_name (List[str]):

    """

    device_family_name: List[str] = field(metadata={"alias": "deviceFamilyName"})


@dataclass(kw_only=True)
class SystemDeviceFamilyExportRequest(OCIRequest):
    """Request to export a device family.

        The response is either a SystemDeviceFamilyExportResponse or an ErrorResponse.

    Attributes:

        device_family_name (str):

    """

    device_family_name: str = field(metadata={"alias": "deviceFamilyName"})


@dataclass(kw_only=True)
class SystemDeviceFamilyGetListRequest(OCIRequest):
    """Request to get the list of device family managed by the Device Management System.
        If includeSystemLevel is specified, all system level device families and the reseller device families matching search criteria
        are returned even when searchCriteriaResellerId is specified.
        If reseller administrator sends the request, searchCriteriaResellerId is ignored and automatically set to the administrator's reseller.

        The response is either SystemDeviceFamilyGetListResponse or ErrorResponse.

    Attributes:

        include_system_level (Optional[bool]):

        search_criteria_reseller_id (Optional[List[SearchCriteriaResellerId]]):

    """

    include_system_level: Optional[bool] = field(
        default=None, metadata={"alias": "includeSystemLevel"}
    )

    search_criteria_reseller_id: Optional[List[SearchCriteriaResellerId]] = field(
        default=None, metadata={"alias": "searchCriteriaResellerId"}
    )


@dataclass(kw_only=True)
class SystemDeviceFamilyGetRequest(OCIRequest):
    """Request to get the associated device types and tagsets for a given device family.

        The response is either SystemDeviceFamilyGetResponse or ErrorResponse.

    Attributes:

        device_family_name (str):

    """

    device_family_name: str = field(metadata={"alias": "deviceFamilyName"})


@dataclass(kw_only=True)
class SystemDeviceFamilyImportDryRunRequest(OCIRequest):
    """Request to perform a dry run import of a Device Family Set Archive File (DFAF) as a new Device Family.  The URL supports the HTTP and the FILE protocols.
        When the optional element resellerId is specified, the device type created is at reseller level.
        When the optional element deviceFamilyOverride is set to true, an existing device family with the same name on the destination system will be overridden.
        When the optional element tagSetOverride is set to true, any existing tag set on the destination system will be overridden.
        When the optional element deviceTypeFileUpdate is set, on import, for any existing device type associated with the device family, the files that are matched based on the file format are updated with the ones from the DTAF. The file format and the file category are the only attributes that can't be updated.
        The response is either a SystemDeviceFamilyImportDryRunResponse or an ErrorResponse.

        The following data elements are only used in AS data mode and ignored in XS data mode:
          resellerId

    Attributes:

        file (str):

        reseller_id (Optional[str]):

        device_family_override (Optional[bool]):

        tag_set_override (Optional[bool]):

        device_type_file_update (Optional[bool]):

    """

    file: str = field(metadata={"alias": "file"})

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    device_family_override: Optional[bool] = field(
        default=None, metadata={"alias": "deviceFamilyOverride"}
    )

    tag_set_override: Optional[bool] = field(
        default=None, metadata={"alias": "tagSetOverride"}
    )

    device_type_file_update: Optional[bool] = field(
        default=None, metadata={"alias": "deviceTypeFileUpdate"}
    )


@dataclass(kw_only=True)
class SystemDeviceFamilyImportRequest(OCIRequest):
    """Request to import a Device Family Set Archive File (DFAF) as a new Device Family.  The URL supports the HTTP and the FILE protocols.
        When the optional element resellerId is specified, the device type created is at reseller level.
        When the optional element deviceFamilyOverride is set to true, an existing device family with the same name on the destination system will be overridden.
        When the optional element tagSetOverride is set to true, any existing tag set on the destination system will be overridden.
        When the optional element deviceTypeFileUpdate is set, on import, for any existing device type associated with the device family, the files that are matched based on the file format are updated with the ones from the DTAF. The file format and the file category are the only attributes that can't be updated.
        The response is either a SuccessResponse or an ErrorResponse.

        The following data elements are only used in AS data mode and ignored in XS data mode:
          resellerId

    Attributes:

        file (str):

        reseller_id (Optional[str]):

        device_family_override (Optional[bool]):

        tag_set_override (Optional[bool]):

        device_type_file_update (Optional[bool]):

    """

    file: str = field(metadata={"alias": "file"})

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    device_family_override: Optional[bool] = field(
        default=None, metadata={"alias": "deviceFamilyOverride"}
    )

    tag_set_override: Optional[bool] = field(
        default=None, metadata={"alias": "tagSetOverride"}
    )

    device_type_file_update: Optional[bool] = field(
        default=None, metadata={"alias": "deviceTypeFileUpdate"}
    )


@dataclass(kw_only=True)
class SystemDeviceFamilyModifyRequest(OCIRequest):
    """Request to modify a device family.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_family_name (str):

        new_device_family_name (Optional[str]):

        device_type_list (Optional[Nillable[ReplacementDeviceTypeList]]):

        tag_set_list (Optional[Nillable[ReplacementTagSetList]]):

    """

    device_family_name: str = field(metadata={"alias": "deviceFamilyName"})

    new_device_family_name: Optional[str] = field(
        default=None, metadata={"alias": "newDeviceFamilyName"}
    )

    device_type_list: Optional[Nillable[ReplacementDeviceTypeList]] = field(
        default=None, metadata={"alias": "deviceTypeList"}
    )

    tag_set_list: Optional[Nillable[ReplacementTagSetList]] = field(
        default=None, metadata={"alias": "tagSetList"}
    )

    def __post_init__(self):
        nillable_fields = ["device_type_list", "tag_set_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemDeviceFamilyUnassignDeviceTypeListRequest(OCIRequest):
    """Request to unassign a list of Device Types to a device family. Device family name
        should be unique through out the system including all the reseller level device families.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in the XS data mode:
          resellerId

    Attributes:

        device_family_name (str):

        device_type_name (List[str]):

    """

    device_family_name: str = field(metadata={"alias": "deviceFamilyName"})

    device_type_name: List[str] = field(metadata={"alias": "deviceTypeName"})


@dataclass(kw_only=True)
class SystemDeviceFamilyUnassignTagSetListRequest(OCIRequest):
    """Request to unassign a list of Tag Sets to a device family.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_family_name (str):

        tag_set_name (List[str]):

    """

    device_family_name: str = field(metadata={"alias": "deviceFamilyName"})

    tag_set_name: List[str] = field(metadata={"alias": "tagSetName"})


@dataclass(kw_only=True)
class SystemDeviceManagementAutoRebuildConfigGetListRequest(OCIRequest):
    """Request the list of OCI request prefixes including if they trigger DM
        automatic rebuild event or not.
        The response is either a SystemDeviceManagementAutoRebuildConfigGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemDeviceManagementAutoRebuildConfigModifyListRequest(OCIRequest):
    """Request to enable or disable automatic trigger of DM events for
        OCI request prefixes, regardless of the request's
        version.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        auto_rebuild_config_entry (List[DeviceManagementAutoRebuildConfigEntry]):

    """

    auto_rebuild_config_entry: List[DeviceManagementAutoRebuildConfigEntry] = field(
        metadata={"alias": "autoRebuildConfigEntry"}
    )


@dataclass(kw_only=True)
class SystemDeviceManagementEventGetListRequest22(OCIRequest):
    """Request device management's events for a specific queue.
        It is possible to restrict the number of rows returned using
        responseSizeLimit.
        If eventQueueType is not specified, the events from all the
        event queues are returned.
        The response is either a SystemDeviceManagementEventGetListResponse22 or an ErrorResponse.

    Attributes:

        event_queue_type (Optional[str]):

        response_size_limit (Optional[int]):

        search_criteria_exact_device_management_event_status_in_progress_or_pending (Optional[SearchCriteriaExactDeviceManagementEventStatusInProgressOrPending]):

        search_criteria_exact_device_management_event_status_completed (Optional[SearchCriteriaExactDeviceManagementEventStatusCompleted]):

        search_criteria_exact_device_management_event_action (Optional[SearchCriteriaExactDeviceManagementEventAction]):

        search_criteria_exact_device_management_event_level (Optional[SearchCriteriaExactDeviceManagementEventLevel]):

        search_criteria_exact_device_management_event_type (Optional[SearchCriteriaExactDeviceManagementEventType]):

        search_criteria_device_management_event_additional_info (Optional[List[SearchCriteriaDeviceManagementEventAdditionalInfo]]):

        search_criteria_device_management_event_login_id (Optional[List[SearchCriteriaDeviceManagementEventLoginId]]):

        search_criteria_device_management_event_request (Optional[List[SearchCriteriaDeviceManagementEventRequest]]):

        search_criteria_device_management_event_request_tracking_id (Optional[List[SearchCriteriaDeviceManagementEventRequestTrackingId]]):

    """

    event_queue_type: Optional[str] = field(
        default=None, metadata={"alias": "eventQueueType"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_exact_device_management_event_status_in_progress_or_pending: Optional[
        SearchCriteriaExactDeviceManagementEventStatusInProgressOrPending
    ] = field(
        default=None,
        metadata={
            "alias": "searchCriteriaExactDeviceManagementEventStatusInProgressOrPending"
        },
    )

    search_criteria_exact_device_management_event_status_completed: Optional[
        SearchCriteriaExactDeviceManagementEventStatusCompleted
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaExactDeviceManagementEventStatusCompleted"},
    )

    search_criteria_exact_device_management_event_action: Optional[
        SearchCriteriaExactDeviceManagementEventAction
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaExactDeviceManagementEventAction"},
    )

    search_criteria_exact_device_management_event_level: Optional[
        SearchCriteriaExactDeviceManagementEventLevel
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaExactDeviceManagementEventLevel"},
    )

    search_criteria_exact_device_management_event_type: Optional[
        SearchCriteriaExactDeviceManagementEventType
    ] = field(
        default=None, metadata={"alias": "searchCriteriaExactDeviceManagementEventType"}
    )

    search_criteria_device_management_event_additional_info: Optional[
        List[SearchCriteriaDeviceManagementEventAdditionalInfo]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaDeviceManagementEventAdditionalInfo"},
    )

    search_criteria_device_management_event_login_id: Optional[
        List[SearchCriteriaDeviceManagementEventLoginId]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceManagementEventLoginId"}
    )

    search_criteria_device_management_event_request: Optional[
        List[SearchCriteriaDeviceManagementEventRequest]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceManagementEventRequest"}
    )

    search_criteria_device_management_event_request_tracking_id: Optional[
        List[SearchCriteriaDeviceManagementEventRequestTrackingId]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaDeviceManagementEventRequestTrackingId"},
    )


@dataclass(kw_only=True)
class SystemDeviceManagementGetAccessDeviceCountForDeviceTypeRequest(OCIRequest):
    """Request the number of access device of a particular device type or all
        device types if deviceType is not specified.
        If countOnlyResetSupportedDevice is true, count only access devices if the device type supports reset.
        By default unmanaged device types are not allowed and devices are counted only if their device type supports Device Management.
        An error is returned if deviceType is specified but does not support device management.
        When allowUnmanagedDeviceType is true, unmanaged device type will be counted and a successful response is returned.
        The response is either SystemDeviceManagementGetAccessDeviceCountForDeviceTypeResponse or ErrorResponse.

    Attributes:

        device_type (Optional[str]):

        count_only_reset_supported_device (Optional[bool]):

        allow_unmanaged_device_type (Optional[bool]):

    """

    device_type: Optional[str] = field(default=None, metadata={"alias": "deviceType"})

    count_only_reset_supported_device: Optional[bool] = field(
        default=None, metadata={"alias": "countOnlyResetSupportedDevice"}
    )

    allow_unmanaged_device_type: Optional[bool] = field(
        default=None, metadata={"alias": "allowUnmanagedDeviceType"}
    )


@dataclass(kw_only=True)
class SystemDeviceManagementGetEventStatusSummaryCountRequest(OCIRequest):
    """Request a summary table of the number of events in state 'Pending',
        'Queued Internally', and 'Completed' in the system per action.
        One row is returned per action.
        Actions are as per the DeviceManagementEventActionType (ex: Delete, Download, Rebuild, Reset, Upload).
        The state 'Queued Internally' includes total for events with status
        equal to 'Queued' and 'In Progress' as per DeviceManagementEventStatus.
        The response is either SystemDeviceManagementGetEventStatusSummaryCountResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemDeviceManagementInProgressAndPendingEventCancelRequest(OCIRequest):
    """Cancel pending and in progress events.  Either all events, multiple
      events, or a list of specified events can be canceled.
      When specifying multiple events, an event must meet all specified
      criteria to be canceled.
      The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        cancel_all_events (Optional[Any]):

        cancel_multiple_events (Optional[object]):

        event_id (Optional[List[int]]):

    """

    cancel_all_events: Optional[Any] = field(
        default=None, metadata={"alias": "cancelAllEvents"}
    )

    cancel_multiple_events: Optional[object] = field(
        default=None, metadata={"alias": "cancelMultipleEvents"}
    )

    event_id: Optional[List[int]] = field(default=None, metadata={"alias": "eventId"})


@dataclass(kw_only=True)
class SystemDeviceManagementSwitchDeviceTypeDeviceRequest(OCIRequest):
    """Switch the device type for a specified device.
        To switch a system level device profile, serviceProviderId and groupId should not be present.
        To switch a service provider level device profile, only serviceProviderId should be specified.
        To switch a group level device profile, serviceProviderId and groupId should specified.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (Optional[str]):

        svc_provider_id (Optional[str]):

        group_id (Optional[str]):

        device_name (str):

        to_device_type (str):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    svc_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "svcProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    to_device_type: str = field(metadata={"alias": "toDeviceType"})


@dataclass(kw_only=True)
class SystemDeviceManagementSwitchDeviceTypeRequest(OCIRequest):
    """Switch the device type for all devices at the specified scope for a device type.
        To switch all the device type's device profiles for the system, neither the serviceProviderId and groupId should be present.
        To switch all the device type's device profiles for a service provider, only serviceProviderId should be specified.
        To switch all the device type's device profiles for a group, serviceProviderId and groupId should specified.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_provider_id (Optional[str]):

        svc_provider_id (Optional[str]):

        group_id (Optional[str]):

        from_device_type (str):

        to_device_type (str):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    svc_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "svcProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    from_device_type: str = field(metadata={"alias": "fromDeviceType"})

    to_device_type: str = field(metadata={"alias": "toDeviceType"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagAddRequest22(OCIRequest):
    """Request to add a static configuration tag.

        The following elements are only used in XS data mode and ignored in AS data mode:
          isTagValueEncrypted
          tagValueToEncrypt

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        system_default_tag_set (Optional[bool]):

        tag_set_name (Optional[str]):

        tag_name (str):

        is_tag_value_encrypted (Optional[bool]):

        tag_value (Optional[str]):

        tag_value_to_encrypt (Optional[str]):

        is_tag_value_overridable (bool):

    """

    system_default_tag_set: Optional[bool] = field(
        default=None, metadata={"alias": "systemDefaultTagSet"}
    )

    tag_set_name: Optional[str] = field(default=None, metadata={"alias": "tagSetName"})

    tag_name: str = field(metadata={"alias": "tagName"})

    is_tag_value_encrypted: Optional[bool] = field(
        default=None, metadata={"alias": "isTagValueEncrypted"}
    )

    tag_value: Optional[str] = field(default=None, metadata={"alias": "tagValue"})

    tag_value_to_encrypt: Optional[str] = field(
        default=None, metadata={"alias": "tagValueToEncrypt"}
    )

    is_tag_value_overridable: bool = field(metadata={"alias": "isTagValueOverridable"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagDeleteListRequest(OCIRequest):
    """Request to delete static configuration tags.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        system_default_tag_set (Optional[bool]):

        tag_set_name (Optional[str]):

        tag_name (List[str]):

    """

    system_default_tag_set: Optional[bool] = field(
        default=None, metadata={"alias": "systemDefaultTagSet"}
    )

    tag_set_name: Optional[str] = field(default=None, metadata={"alias": "tagSetName"})

    tag_name: List[str] = field(metadata={"alias": "tagName"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagGetListRequest(OCIRequest):
    """Request to get the list of custom configuration tags managed by the Device Management System.
        The response is either SystemDeviceManagementTagGetListResponse or ErrorResponse.

    Attributes:

        system_default_tag_set (Optional[bool]):

        tag_set_name (Optional[str]):

    """

    system_default_tag_set: Optional[bool] = field(
        default=None, metadata={"alias": "systemDefaultTagSet"}
    )

    tag_set_name: Optional[str] = field(default=None, metadata={"alias": "tagSetName"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagModifyRequest(OCIRequest):
    """Request to modify a static configuration tag.

        The following elements are only used in XS data mode and ignored in AS data mode:
          tagValueToEncrypt

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        system_default_tag_set (Optional[bool]):

        tag_set_name (Optional[str]):

        tag_name (str):

        tag_value (Optional[Nillable[str]]):

        tag_value_to_encrypt (Optional[Nillable[str]]):

        is_tag_value_overridable (Optional[bool]):

    """

    system_default_tag_set: Optional[bool] = field(
        default=None, metadata={"alias": "systemDefaultTagSet"}
    )

    tag_set_name: Optional[str] = field(default=None, metadata={"alias": "tagSetName"})

    tag_name: str = field(metadata={"alias": "tagName"})

    tag_value: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "tagValue"}
    )

    tag_value_to_encrypt: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "tagValueToEncrypt"}
    )

    is_tag_value_overridable: Optional[bool] = field(
        default=None, metadata={"alias": "isTagValueOverridable"}
    )

    def __post_init__(self):
        nillable_fields = ["tag_value", "tag_value_to_encrypt"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetAddRequest(OCIRequest):
    """Request to add a static configuration tag set.
        When the optional element resellerId is specified, the tag set created is at reseller level. Tag set name
        should be unique through out the system including all the reseller level tag sets.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in the XS data mode:
          resellerId

    Attributes:

        tag_set_name (str):

        reseller_id (Optional[str]):

    """

    tag_set_name: str = field(metadata={"alias": "tagSetName"})

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetCountryAddRequest(OCIRequest):
    """Request to add a country to a region within a static configuration tag set for per-region tags override.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        tag_set_name (str):

        region_name (str):

        country_name (str):

    """

    tag_set_name: str = field(metadata={"alias": "tagSetName"})

    region_name: str = field(metadata={"alias": "regionName"})

    country_name: str = field(metadata={"alias": "countryName"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetCountryDeleteListRequest(OCIRequest):
    """Request to delete a list of countries from a region within a static configuration tag set for per-region tags override.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        tag_set_name (str):

        region_name (str):

        country_name (List[str]):

    """

    tag_set_name: str = field(metadata={"alias": "tagSetName"})

    region_name: str = field(metadata={"alias": "regionName"})

    country_name: List[str] = field(metadata={"alias": "countryName"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetCountryGetListRequest(OCIRequest):
    """Request to get the list of countries within the region of a static configuration tag set for per-region tags override.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        tag_set_name (str):

        region_name (str):

    """

    tag_set_name: str = field(metadata={"alias": "tagSetName"})

    region_name: str = field(metadata={"alias": "regionName"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetDeleteRequest(OCIRequest):
    """Request to delete a static configuration tag set.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        tag_set_name (str):

    """

    tag_set_name: str = field(metadata={"alias": "tagSetName"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetExportRequest(OCIRequest):
    """Request to export a custom tag set.
        Tag set name should be unique through out the system including all the reseller level tag sets.
        The response is either a SystemDeviceManagementTagSetExportResponse or an ErrorResponse.

    Attributes:

        tag_set_name (str):

    """

    tag_set_name: str = field(metadata={"alias": "tagSetName"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetGetListRequest22(OCIRequest):
    """Request to get the list of custom configuration tag sets managed by the Device Management System.
        If excludeReseller is set, only system level tag sets are returned.
        If resellerId is specified, all system level tag sets and the tag sets in the reseller are returned.
        If reseller administrator sends the request, resellerId is not specified, the administrator's resellerId is used.
        If neither excludeReseller nor resellerId is specified, all system level and reseller level tag sets are returned.

        The response is either SystemDeviceManagementTagSetGetListResponse22 or ErrorResponse.

    Attributes:

        exclude_reseller (Optional[bool]):

        reseller_id (Optional[str]):

    """

    exclude_reseller: Optional[bool] = field(
        default=None, metadata={"alias": "excludeReseller"}
    )

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetImportDryRunRequest(OCIRequest):
    """Request to perform a dry run for the import of a Tag Set Archive File (TSAF) as a new Tag Set.  The URL supports the HTTP and the FILE protocols.
        When the optional element resellerId is specified, the device type created is at reseller level.
        When the optional element tagSetOverride is set to true, an existing tag set on the destination system will be overridden.
        When the optional element tagSetRename is set, on import the tag set name part of the TSAF will be changed to the desired name on the destination system.
        The response is either a SystemDeviceManagementTagSetImportDryRunResponse or an ErrorResponse.

        The following data elements are only used in AS data mode and ignored in XS data mode:
          resellerId

    Attributes:

        file (str):

        reseller_id (Optional[str]):

        tag_set_override (Optional[bool]):

        tag_set_rename (Optional[DeviceManagementTagSetRename]):

    """

    file: str = field(metadata={"alias": "file"})

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    tag_set_override: Optional[bool] = field(
        default=None, metadata={"alias": "tagSetOverride"}
    )

    tag_set_rename: Optional[DeviceManagementTagSetRename] = field(
        default=None, metadata={"alias": "tagSetRename"}
    )


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetImportRequest(OCIRequest):
    """Request to import a Tag Set Archive File (TSAF) as a new Tag Set.  The URL supports the HTTP and the FILE protocols.
        When the optional element resellerId is specified, the device type created is at reseller level.
        When the optional element tagSetOverride is set to true, an existing tag set on the destination system will be overridden.
        When the optional element tagSetRename is set, on import the tag set name part of the TSAF will be changed to the desired name on the destination system.
        The response is either a SuccessResponse or an ErrorResponse.

        The following data elements are only used in AS data mode and ignored in XS data mode:
          resellerId

    Attributes:

        file (str):

        reseller_id (Optional[str]):

        tag_set_override (Optional[bool]):

        tag_set_rename (Optional[DeviceManagementTagSetRename]):

    """

    file: str = field(metadata={"alias": "file"})

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    tag_set_override: Optional[bool] = field(
        default=None, metadata={"alias": "tagSetOverride"}
    )

    tag_set_rename: Optional[DeviceManagementTagSetRename] = field(
        default=None, metadata={"alias": "tagSetRename"}
    )


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetModifyRequest(OCIRequest):
    """Request to modify a static configuration tag set.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        tag_set_name (str):

        new_tag_set_name (Optional[str]):

    """

    tag_set_name: str = field(metadata={"alias": "tagSetName"})

    new_tag_set_name: Optional[str] = field(
        default=None, metadata={"alias": "newTagSetName"}
    )


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetRegionAddRequest(OCIRequest):
    """Request to add a region within a static configuration tag set for per-region tags override.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        tag_set_name (str):

        region_name (str):

    """

    tag_set_name: str = field(metadata={"alias": "tagSetName"})

    region_name: str = field(metadata={"alias": "regionName"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetRegionDeleteListRequest(OCIRequest):
    """Request to delete a region within a static configuration tag set for per-region tags override.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        tag_set_name (str):

        region_name (List[str]):

    """

    tag_set_name: str = field(metadata={"alias": "tagSetName"})

    region_name: List[str] = field(metadata={"alias": "regionName"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetRegionGetListRequest(OCIRequest):
    """Request to get the list of regions within a static configuration tag set for per-region tags override.
        The response is either a SystemDeviceManagementTagSetRegionGetListResponse or an ErrorResponse.

    Attributes:

        tag_set_name (str):

    """

    tag_set_name: str = field(metadata={"alias": "tagSetName"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetRegionModifyRequest(OCIRequest):
    """Request to modify the name of a region within a static configuration tag set for per-region tags override.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        tag_set_name (str):

        region_name (str):

        new_region_name (Optional[str]):

    """

    tag_set_name: str = field(metadata={"alias": "tagSetName"})

    region_name: str = field(metadata={"alias": "regionName"})

    new_region_name: Optional[str] = field(
        default=None, metadata={"alias": "newRegionName"}
    )


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetRegionTagAddListRequest(OCIRequest):
    """Request to add a tag override to a region of a static configuration tag set.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        tag_set_name (str):

        region_name (str):

        tag (List[DeviceManagementTag]):

    """

    tag_set_name: str = field(metadata={"alias": "tagSetName"})

    region_name: str = field(metadata={"alias": "regionName"})

    tag: List[DeviceManagementTag] = field(metadata={"alias": "tag"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetRegionTagDeleteListRequest(OCIRequest):
    """Request to delete a tag override to a region of a static configuration tag set.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        tag_set_name (str):

        region_name (str):

        tag_name (List[str]):

    """

    tag_set_name: str = field(metadata={"alias": "tagSetName"})

    region_name: str = field(metadata={"alias": "regionName"})

    tag_name: List[str] = field(metadata={"alias": "tagName"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetRegionTagGetListRequest(OCIRequest):
    """Request to get the list of tag overrides for a region within a static configuration tag set for per-region tags override.
        The response is either a SystemDeviceManagementTagSetRegionTagGetListResponse or an ErrorResponse.

    Attributes:

        tag_set_name (str):

        region_name (str):

    """

    tag_set_name: str = field(metadata={"alias": "tagSetName"})

    region_name: str = field(metadata={"alias": "regionName"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetRegionTagModifyRequest(OCIRequest):
    """Request to modify the value of a tag override within a region of a static configuration tag set.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        tag_set_name (str):

        region_name (str):

        tag_name (str):

        tag_value (Optional[Nillable[str]]):

    """

    tag_set_name: str = field(metadata={"alias": "tagSetName"})

    region_name: str = field(metadata={"alias": "regionName"})

    tag_name: str = field(metadata={"alias": "tagName"})

    tag_value: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "tagValue"}
    )

    def __post_init__(self):
        nillable_fields = ["tag_value"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemDeviceProfileAuthenticationLockoutClearAllRequest(OCIRequest):
    """Request to clear all device password authentication lockouts in the system.
         The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemDeviceProfileAuthenticationLockoutClearRequest(OCIRequest):
    """Request to clear device profile authentication lockouts in the system.
         The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        access_device (List[AccessDeviceKey]):

    """

    access_device: List[AccessDeviceKey] = field(metadata={"alias": "accessDevice"})


@dataclass(kw_only=True)
class SystemDeviceProfileAuthenticationLockoutGetRequest(OCIRequest):
    """Request to get device password authentication lockout data in the system.
         The response is either a SystemDeviceProfileAuthenticationLockoutGetResponse or an ErrorResponse.

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_exact_organization_type (Optional[SearchCriteriaExactOrganizationType]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_device_name (Optional[List[SearchCriteriaDeviceName]]):

        search_criteria_exact_device_type (Optional[SearchCriteriaExactDeviceType]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_exact_organization_type: Optional[
        SearchCriteriaExactOrganizationType
    ] = field(default=None, metadata={"alias": "searchCriteriaExactOrganizationType"})

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_device_name: Optional[List[SearchCriteriaDeviceName]] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceName"}
    )

    search_criteria_exact_device_type: Optional[SearchCriteriaExactDeviceType] = field(
        default=None, metadata={"alias": "searchCriteriaExactDeviceType"}
    )


@dataclass(kw_only=True)
class SystemDeviceProfileAuthenticationPasswordRulesGetRequestRI(OCIRequest):
    """Request to get the system level device profile authentication password rule settings.
        The response is either a SystemDeviceProfileAuthenticationPasswordRulesGetResponseRI or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemDeviceProfileAuthenticationPasswordRulesModifyRequest(OCIRequest):
    """Request to modify the system level device profile authentication password rule settings.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        disallow_authentication_name (Optional[bool]):

        disallow_old_password (Optional[bool]):

        disallow_reversed_old_password (Optional[bool]):

        restrict_min_digits (Optional[bool]):

        min_digits (Optional[int]):

        restrict_min_upper_case_letters (Optional[bool]):

        min_upper_case_letters (Optional[int]):

        restrict_min_lower_case_letters (Optional[bool]):

        min_lower_case_letters (Optional[int]):

        restrict_min_non_alphanumeric_characters (Optional[bool]):

        min_non_alphanumeric_characters (Optional[int]):

        min_length (Optional[int]):

        send_permanent_lockout_notification (Optional[bool]):

        permanent_lockout_notify_email_address (Optional[Nillable[str]]):

        device_profile_authentication_lockout_type (Optional[str]):

        device_profile_temporary_lockout_threshold (Optional[int]):

        device_profile_wait_algorithm (Optional[str]):

        device_profile_lockout_fixed_minutes (Optional[str]):

        device_profile_permanent_lockout_threshold (Optional[int]):

        use_password_validation_service (Optional[bool]):

    """

    disallow_authentication_name: Optional[bool] = field(
        default=None, metadata={"alias": "disallowAuthenticationName"}
    )

    disallow_old_password: Optional[bool] = field(
        default=None, metadata={"alias": "disallowOldPassword"}
    )

    disallow_reversed_old_password: Optional[bool] = field(
        default=None, metadata={"alias": "disallowReversedOldPassword"}
    )

    restrict_min_digits: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinDigits"}
    )

    min_digits: Optional[int] = field(default=None, metadata={"alias": "minDigits"})

    restrict_min_upper_case_letters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinUpperCaseLetters"}
    )

    min_upper_case_letters: Optional[int] = field(
        default=None, metadata={"alias": "minUpperCaseLetters"}
    )

    restrict_min_lower_case_letters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinLowerCaseLetters"}
    )

    min_lower_case_letters: Optional[int] = field(
        default=None, metadata={"alias": "minLowerCaseLetters"}
    )

    restrict_min_non_alphanumeric_characters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinNonAlphanumericCharacters"}
    )

    min_non_alphanumeric_characters: Optional[int] = field(
        default=None, metadata={"alias": "minNonAlphanumericCharacters"}
    )

    min_length: Optional[int] = field(default=None, metadata={"alias": "minLength"})

    send_permanent_lockout_notification: Optional[bool] = field(
        default=None, metadata={"alias": "sendPermanentLockoutNotification"}
    )

    permanent_lockout_notify_email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "permanentLockoutNotifyEmailAddress"}
    )

    device_profile_authentication_lockout_type: Optional[str] = field(
        default=None, metadata={"alias": "deviceProfileAuthenticationLockoutType"}
    )

    device_profile_temporary_lockout_threshold: Optional[int] = field(
        default=None, metadata={"alias": "deviceProfileTemporaryLockoutThreshold"}
    )

    device_profile_wait_algorithm: Optional[str] = field(
        default=None, metadata={"alias": "deviceProfileWaitAlgorithm"}
    )

    device_profile_lockout_fixed_minutes: Optional[str] = field(
        default=None, metadata={"alias": "deviceProfileLockoutFixedMinutes"}
    )

    device_profile_permanent_lockout_threshold: Optional[int] = field(
        default=None, metadata={"alias": "deviceProfilePermanentLockoutThreshold"}
    )

    use_password_validation_service: Optional[bool] = field(
        default=None, metadata={"alias": "usePasswordValidationService"}
    )

    def __post_init__(self):
        nillable_fields = ["permanent_lockout_notify_email_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemDeviceTypeExportRequest(OCIRequest):
    """Request to export an existing Device Type to a Device Type Archive File (DTAF).
        The response is either a SystemDeviceTypeExportResponse or an ErrorResponse.

    Attributes:

        device_type (str):

    """

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class SystemDeviceTypeGetAvailableListRequest22V2(OCIRequest):
    """Requests a list of non-obsolete Identity/device profile types defined in the system and resellers. It is possible
        to get either all conference device types or all non-conference types. This command is similar
        to the SystemSIPDeviceTypeGetListRequest and SystemMGCPDeviceTypeGetListRequest
        but gets both SIP and MGCP types.
        If excludeReseller is specified, only system level available device types are returned.
        If resellerId is specified, all the system level available device types and the device types in the given reseller are returned.
        If reseller administrator sends the request, resellerId is not specified, the administrator's resellerId is used.
        If neither excludeReseller nor resellerId is specified, all the system level and reseller level available device types are returned.
        If excludeLeafDeviceTypes is specified, leaf device types are excluded in the response returned.  Leaf
        device types are device types that have the option supportLinks set to \"Support Link to Device\" or \"Support Link to Device and User\".
        If onlyTreeDeviceTypes is specified, all available tree device types are returned.  Tree
        device types are device types that have the option supportLinks set to \"Support Links from Devices\".

        The following elements are only used in AS data mode and ignored in the XS data mode:
          resellerId
          excludeLeafDeviceTypes
          onlyTreeDeviceTypes

        The response is either SystemDeviceTypeGetlAvailableListResponse22V2 or ErrorResponse.

    Attributes:

        allow_conference (bool):

        allow_music_on_hold (bool):

        only_conference (bool):

        only_video_capable (bool):

        only_optional_ip_address (bool):

        exclude_reseller (Optional[bool]):

        reseller_id (Optional[str]):

        exclude_leaf_device_types (Optional[bool]):

        only_tree_device_types (Optional[bool]):

    """

    allow_conference: bool = field(metadata={"alias": "allowConference"})

    allow_music_on_hold: bool = field(metadata={"alias": "allowMusicOnHold"})

    only_conference: bool = field(metadata={"alias": "onlyConference"})

    only_video_capable: bool = field(metadata={"alias": "onlyVideoCapable"})

    only_optional_ip_address: bool = field(metadata={"alias": "onlyOptionalIpAddress"})

    exclude_reseller: Optional[bool] = field(
        default=None, metadata={"alias": "excludeReseller"}
    )

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    exclude_leaf_device_types: Optional[bool] = field(
        default=None, metadata={"alias": "excludeLeafDeviceTypes"}
    )

    only_tree_device_types: Optional[bool] = field(
        default=None, metadata={"alias": "onlyTreeDeviceTypes"}
    )


@dataclass(kw_only=True)
class SystemDeviceTypeGetRequest22V7(OCIRequest):
    """Requests the information about the specified device type without regard to whether the
        type is SIP or MGCP.
        The response is either SystemDeviceTypeGetResponse22V7 or ErrorResponse.
    Note: The elements deviceTypeConfigurationOption and staticLineOrdering apply to SIP device types only. Therefore, only present in the response when the device type is SIP.

    Attributes:

        device_type (str):

    """

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class SystemDeviceTypeImportDryRunRequest(OCIRequest):
    """Request to perform a dry run for the import of a Device Type Archive File (DTAF) as a new Device Type.  The URL supports the HTTP and the FILE protocols.
        When the optional element resellerId is specified, the device type created is at reseller level.
        When the optional element deviceTypeRename is set, on import, the device type name part of the DTAF will be changed to the desired name on the destination system.
        When the optional element deviceTypeFileUpdate is set, on import, the files that are matched based on the file format are updated with the ones from the DTAF. The file format and the file category are the only attributes that can't be updated.
        The response is either a SystemDeviceTypeImportDryRunResponse or an ErrorResponse.

        The following data elements are only used in AS data mode and ignored in XS data mode:
          deviceTypeFileUpdate
          deviceTypeRename
          resellerId

    Attributes:

        file (str):

        reseller_id (Optional[str]):

        device_type_rename (Optional[AccessDeviceTypeRename]):

        device_type_file_update (Optional[bool]):

    """

    file: str = field(metadata={"alias": "file"})

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    device_type_rename: Optional[AccessDeviceTypeRename] = field(
        default=None, metadata={"alias": "deviceTypeRename"}
    )

    device_type_file_update: Optional[bool] = field(
        default=None, metadata={"alias": "deviceTypeFileUpdate"}
    )


@dataclass(kw_only=True)
class SystemDeviceTypeImportRequest(OCIRequest):
    """Request to import a Device Type Archive File (DTAF) as a new Device Type.  The URL supports the HTTP and the FILE protocols.
        When the optional element resellerId is specified, the device type created is at reseller level.
        When the optional element deviceTypeRename is set, on import, the device type name part of the DTAF will be changed to the desired name on the destination system.
        When the optional element deviceTypeFileUpdate is set, on import, the files that are matched based on the file format are updated with the ones from the DTAF. The file format and the file category are the only attributes that can't be updated.
        The response is either a SuccessResponse or an ErrorResponse.

        The following data elements are only used in AS data mode and ignored in XS data mode:
          deviceTypeFileUpdate
          deviceTypeRename
          resellerId

    Attributes:

        file (str):

        reseller_id (Optional[str]):

        device_type_rename (Optional[AccessDeviceTypeRename]):

        device_type_file_update (Optional[bool]):

    """

    file: str = field(metadata={"alias": "file"})

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    device_type_rename: Optional[AccessDeviceTypeRename] = field(
        default=None, metadata={"alias": "deviceTypeRename"}
    )

    device_type_file_update: Optional[bool] = field(
        default=None, metadata={"alias": "deviceTypeFileUpdate"}
    )


@dataclass(kw_only=True)
class SystemDialPlanPolicyAddAccessCodeRequest(OCIRequest):
    """Request to add a system-level Dial Plan Access Code and its all attribues.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        access_code (str):

        include_code_for_network_translations_and_routing (bool):

        include_code_for_screening_services (bool):

        enable_secondary_dial_tone (bool):

        description (Optional[str]):

    """

    access_code: str = field(metadata={"alias": "accessCode"})

    include_code_for_network_translations_and_routing: bool = field(
        metadata={"alias": "includeCodeForNetworkTranslationsAndRouting"}
    )

    include_code_for_screening_services: bool = field(
        metadata={"alias": "includeCodeForScreeningServices"}
    )

    enable_secondary_dial_tone: bool = field(
        metadata={"alias": "enableSecondaryDialTone"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemDialPlanPolicyDeleteAccessCodeRequest(OCIRequest):
    """Request to delete a system-level Dial Plan Access Code and its all attribues.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        access_code (str):

    """

    access_code: str = field(metadata={"alias": "accessCode"})


@dataclass(kw_only=True)
class SystemDialPlanPolicyGetAccessCodeListRequest(OCIRequest):
    """Request the system level Access Codes data associated with Dial Plan Policy.
        The response is either a SystemDialPlanPolicyGetAccessCodeListResponse
        or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemDialPlanPolicyGetAccessCodeRequest(OCIRequest):
    """Request access code data associated with system level Dial Plan Policy access codes.
        The response is either a SystemDialPlanPolicyGetAccessCodeResponse or an ErrorResponse.

    Attributes:

        access_code (str):

    """

    access_code: str = field(metadata={"alias": "accessCode"})


@dataclass(kw_only=True)
class SystemDialPlanPolicyGetRequest22V2(OCIRequest):
    """Request the system level data associated with Dial Plan Policy.
        The response is either a SystemDialPlanPolicyGetResponse22V2 or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemDialPlanPolicyModifyAccessCodeRequest(OCIRequest):
    """Request to modify a system-level Dial Plan Access Code and its attribues.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        access_code (str):

        include_code_for_network_translations_and_routing (Optional[bool]):

        include_code_for_screening_services (Optional[bool]):

        enable_secondary_dial_tone (Optional[bool]):

        description (Optional[Nillable[str]]):

    """

    access_code: str = field(metadata={"alias": "accessCode"})

    include_code_for_network_translations_and_routing: Optional[bool] = field(
        default=None, metadata={"alias": "includeCodeForNetworkTranslationsAndRouting"}
    )

    include_code_for_screening_services: Optional[bool] = field(
        default=None, metadata={"alias": "includeCodeForScreeningServices"}
    )

    enable_secondary_dial_tone: Optional[bool] = field(
        default=None, metadata={"alias": "enableSecondaryDialTone"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemDialPlanPolicyModifyRequest(OCIRequest):
    """Modify the system level data associated with Dial Plan Policy.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          overrideResolvedDeviceDigitMap
          deviceDigitMap
          permissiveOACDialing
          performInternalTranslationsWithOAC

    Attributes:

        requires_access_code_for_public_calls (Optional[bool]):

        allow_e164_public_calls (Optional[bool]):

        prefer_e164_number_format_for_callback_services (Optional[bool]):

        public_digit_map (Optional[str]):

        private_digit_map (Optional[Nillable[str]]):

        override_resolved_device_digit_map (Optional[bool]):

        device_digit_map (Optional[Nillable[str]]):

        perform_internal_translations_with_oac (Optional[bool]):

        permissive_oac_dialing (Optional[bool]):

    """

    requires_access_code_for_public_calls: Optional[bool] = field(
        default=None, metadata={"alias": "requiresAccessCodeForPublicCalls"}
    )

    allow_e164_public_calls: Optional[bool] = field(
        default=None, metadata={"alias": "allowE164PublicCalls"}
    )

    prefer_e164_number_format_for_callback_services: Optional[bool] = field(
        default=None, metadata={"alias": "preferE164NumberFormatForCallbackServices"}
    )

    public_digit_map: Optional[str] = field(
        default=None, metadata={"alias": "publicDigitMap"}
    )

    private_digit_map: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "privateDigitMap"}
    )

    override_resolved_device_digit_map: Optional[bool] = field(
        default=None, metadata={"alias": "overrideResolvedDeviceDigitMap"}
    )

    device_digit_map: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "deviceDigitMap"}
    )

    perform_internal_translations_with_oac: Optional[bool] = field(
        default=None, metadata={"alias": "performInternalTranslationsWithOAC"}
    )

    permissive_oac_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "permissiveOACDialing"}
    )

    def __post_init__(self):
        nillable_fields = ["private_digit_map", "device_digit_map"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemDialableCallerIDCriteriaAddRequest(OCIRequest):
    """Add a new Dialable Caller ID Criteria. Criteria are added at the bottom of the list with the lowest priority. The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        description (Optional[str]):

        prefix_digits (Optional[str]):

        match_call_type (Optional[List[str]]):

        match_alternate_call_indicator (Optional[List[str]]):

        match_local_category (bool):

        match_national_category (bool):

        match_interlata_category (bool):

        match_intralata_category (bool):

        match_international_category (bool):

        match_private_category (bool):

        match_emergency_category (bool):

        match_other_category (bool):

    """

    name: str = field(metadata={"alias": "name"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    prefix_digits: Optional[str] = field(
        default=None, metadata={"alias": "prefixDigits"}
    )

    match_call_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchCallType"}
    )

    match_alternate_call_indicator: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchAlternateCallIndicator"}
    )

    match_local_category: bool = field(metadata={"alias": "matchLocalCategory"})

    match_national_category: bool = field(metadata={"alias": "matchNationalCategory"})

    match_interlata_category: bool = field(metadata={"alias": "matchInterlataCategory"})

    match_intralata_category: bool = field(metadata={"alias": "matchIntralataCategory"})

    match_international_category: bool = field(
        metadata={"alias": "matchInternationalCategory"}
    )

    match_private_category: bool = field(metadata={"alias": "matchPrivateCategory"})

    match_emergency_category: bool = field(metadata={"alias": "matchEmergencyCategory"})

    match_other_category: bool = field(metadata={"alias": "matchOtherCategory"})


@dataclass(kw_only=True)
class SystemDialableCallerIDCriteriaDeleteRequest(OCIRequest):
    """Delete a Dialable Caller ID Criteria.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemDialableCallerIDCriteriaGetRequest(OCIRequest):
    """Get an existing Dialable Caller ID Criteria.
        The response is either a
        SystemDialableCallerIDCriteriaGetRequest or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemDialableCallerIDCriteriaModifyRequest(OCIRequest):
    """Modify a Dialable Caller ID Criteria.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        new_name (Optional[str]):

        description (Optional[Nillable[str]]):

        prefix_digits (Optional[Nillable[str]]):

        match_call_type (Optional[Nillable[ReplacementCommunicationBarringCallTypeList]]):

        match_alternate_call_indicator (Optional[Nillable[ReplacementCommunicationBarringAlternateCallIndicatorList]]):

        match_local_category (Optional[bool]):

        match_national_category (Optional[bool]):

        match_interlata_category (Optional[bool]):

        match_intralata_category (Optional[bool]):

        match_international_category (Optional[bool]):

        match_private_category (Optional[bool]):

        match_emergency_category (Optional[bool]):

        match_other_category (Optional[bool]):

    """

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    prefix_digits: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "prefixDigits"}
    )

    match_call_type: Optional[Nillable[ReplacementCommunicationBarringCallTypeList]] = (
        field(default=None, metadata={"alias": "matchCallType"})
    )

    match_alternate_call_indicator: Optional[
        Nillable[ReplacementCommunicationBarringAlternateCallIndicatorList]
    ] = field(default=None, metadata={"alias": "matchAlternateCallIndicator"})

    match_local_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchLocalCategory"}
    )

    match_national_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchNationalCategory"}
    )

    match_interlata_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchInterlataCategory"}
    )

    match_intralata_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchIntralataCategory"}
    )

    match_international_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchInternationalCategory"}
    )

    match_private_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchPrivateCategory"}
    )

    match_emergency_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchEmergencyCategory"}
    )

    match_other_category: Optional[bool] = field(
        default=None, metadata={"alias": "matchOtherCategory"}
    )

    def __post_init__(self):
        nillable_fields = [
            "description",
            "prefix_digits",
            "match_call_type",
            "match_alternate_call_indicator",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemDialableCallerIDGetRequest(OCIRequest):
    """Get the system level Dialable Caller ID criteria list.
        The response is either a
        SystemDialableCallerIDGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemDialableCallerIDModifyRequest(OCIRequest):
    """Modify the system level Dialable Caller ID criteria list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        criteria_priority_order (Optional[List[DialableCallerIDCriteriaPriorityOrder]]):

    """

    criteria_priority_order: Optional[List[DialableCallerIDCriteriaPriorityOrder]] = (
        field(default=None, metadata={"alias": "criteriaPriorityOrder"})
    )


@dataclass(kw_only=True)
class SystemDigitCollectionGetRequest13mp4(OCIRequest):
    """Request the system's digit collection attributes.
        The response is either a SystemDigitCollectionGetResponse13mp4 or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemDigitCollectionModifyRequest(OCIRequest):
    """Modifies the system's digit collection attributes.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        access_code (Optional[Nillable[str]]):

        public_digit_map (Optional[str]):

        private_digit_map (Optional[Nillable[str]]):

    """

    access_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "accessCode"}
    )

    public_digit_map: Optional[str] = field(
        default=None, metadata={"alias": "publicDigitMap"}
    )

    private_digit_map: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "privateDigitMap"}
    )

    def __post_init__(self):
        nillable_fields = ["access_code", "private_digit_map"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemDnGetSummaryListRequest(OCIRequest):
    """Request a summary table of all DNs in the system. If resellerId is specified,
        the DNs assigned to the enterprises/service providers within the reseller are returned.
        If reseller administrator sends the request and resellerId is not specified, the administrator's resellerId is used.
        The search can be done using multiple criteria. Only results matching all the search criteria are included in the results.

        The response is either SystemDnGetSummaryListResponse or ErrorResponse.

        The following data elements are only used in AS data mode:
          resellerId

        The following elements are only used in XS data mode and ignored in AS data mode:
          searchCriteriaDn, searchCriteriaServiceProviderId, searchCriteriaExactOrganizationType

    Attributes:

        reseller_id (Optional[str]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_exact_organization_type (Optional[SearchCriteriaExactOrganizationType]):

    """

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_exact_organization_type: Optional[
        SearchCriteriaExactOrganizationType
    ] = field(default=None, metadata={"alias": "searchCriteriaExactOrganizationType"})


@dataclass(kw_only=True)
class SystemDnGetUtilizationListRequest(OCIRequest):
    """Request a list of DN utilizations by service providers. If resellerId is specified,
        the DNs assigned to the enterprises/service providers within the reseller are returned.
        If reseller administrator sends the request and resellerId is not specified, the administrator's resellerId is used.

        The response is either SystemDnUtilizationGetListResponse or ErrorResponse.

        The following data elements are only used in AS data mode:
          resellerId

    Attributes:

        reseller_id (Optional[str]):

    """

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class SystemDnGetUtilizationRequest14sp3(OCIRequest):
    """Get the utilization of a single DN.
        The response is either
        SystemDnGetUtilizationResponse14sp3 or ErrorResponse.

    Attributes:

        phone_number (str):

    """

    phone_number: str = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class SystemDomainAddRequest(OCIRequest):
    """Add a system or reseller domain to the system.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        domain (str):

        reseller_id (Optional[str]):

    """

    domain: str = field(metadata={"alias": "domain"})

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class SystemDomainDeleteRequest(OCIRequest):
    """Delete a system domain from the system.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        domain (str):

    """

    domain: str = field(metadata={"alias": "domain"})


@dataclass(kw_only=True)
class SystemDomainGetAssignedServiceProviderListRequest(OCIRequest):
    """Request a list of service providers that have a given domain assigned.
        If resellerId is specified, only the service providers within the reseller should be returned.
        If reseller administrator sends the request and resellerId is not specified, the administrator's resellerId is used.

        The response is either SystemDomainGetAssignedServiceProviderListResponse or ErrorResponse.

        The following elements are only used in AS data mode:
          resellerId

    Attributes:

        domain (str):

        reseller_id (Optional[str]):

    """

    domain: str = field(metadata={"alias": "domain"})

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class SystemDomainGetListRequest22V2(OCIRequest):
    """Requests the list of all matching system-level domains and all matching reseller level domains.
        If excludeReseller is specified, returns all matching system-level domain names only.
        If resellerId is specified, returns all matching system-level domain names and the given reseller's domains.
        If reseller administrator sends the request and resellerId is not specified, the administrator's resellerId is used.

        The response is either SystemDomainGetListResponse22V2 or ErrorResponse.

        The following elements are only used in AS data mode and will be ingored in XS data mode:
          includeReseller
          resellerId
          responseSizeLimit
          searchCriteriaDomainName
          searchCriteriaResellerId
          searchCriteriaExactDomainLevel

    Attributes:

        exclude_reseller (Optional[bool]):

        reseller_id (Optional[str]):

        response_size_limit (Optional[int]):

        search_criteria_domain_name (Optional[List[SearchCriteriaDomainName]]):

        search_criteria_reseller_id (Optional[List[SearchCriteriaResellerId]]):

        search_criteria_exact_domain_level (Optional[SearchCriteriaExactDomainLevel]):

    """

    exclude_reseller: Optional[bool] = field(
        default=None, metadata={"alias": "excludeReseller"}
    )

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_domain_name: Optional[List[SearchCriteriaDomainName]] = field(
        default=None, metadata={"alias": "searchCriteriaDomainName"}
    )

    search_criteria_reseller_id: Optional[List[SearchCriteriaResellerId]] = field(
        default=None, metadata={"alias": "searchCriteriaResellerId"}
    )

    search_criteria_exact_domain_level: Optional[SearchCriteriaExactDomainLevel] = (
        field(default=None, metadata={"alias": "searchCriteriaExactDomainLevel"})
    )


@dataclass(kw_only=True)
class SystemDomainParametersGetRequest(OCIRequest):
    """Request to get the list of system Domain parameters.
        The response is either SystemDomainParametersGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemDomainParametersModifyRequest(OCIRequest):
    """Request to modify system Domain parameters.
        The response is either SuccessResponse or ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          useAliasForDomain

    Attributes:

        use_alias_for_domain (Optional[bool]):

        default_domain (Optional[str]):

    """

    use_alias_for_domain: Optional[bool] = field(
        default=None, metadata={"alias": "useAliasForDomain"}
    )

    default_domain: Optional[str] = field(
        default=None, metadata={"alias": "defaultDomain"}
    )


@dataclass(kw_only=True)
class SystemEmergencyCallDDoSProtectionGetRequest(OCIRequest):
    """Get the system Emergency Call DDos Protection configurations.
      The response is either SystemEmergencyCallDDoSProtectionGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemEmergencyCallDDoSProtectionModifyRequest(OCIRequest):
    """Modify the Emergency Call DDos Protection settings.
      The response is either SuccessResponse or an ErrorResponse.

    Attributes:

        enabled (Optional[bool]):

        sample_interval_seconds (Optional[int]):

        protection_rate (Optional[Nillable[int]]):

        protection_action (Optional[str]):

    """

    enabled: Optional[bool] = field(default=None, metadata={"alias": "enabled"})

    sample_interval_seconds: Optional[int] = field(
        default=None, metadata={"alias": "sampleIntervalSeconds"}
    )

    protection_rate: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "protectionRate"}
    )

    protection_action: Optional[str] = field(
        default=None, metadata={"alias": "protectionAction"}
    )

    def __post_init__(self):
        nillable_fields = ["protection_rate"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemEmergencyCallNotificationGetRequest(OCIRequest):
    """Request the system level data associated with Emergency Call Notification.
        The response is either a SystemEmergencyCallNotificationGetResponse or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemEmergencyCallNotificationModifyRequest(OCIRequest):
    """Modify the system level data associated with Emergency Call Notification.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        default_from_address (Optional[str]):

    """

    default_from_address: Optional[str] = field(
        default=None, metadata={"alias": "defaultFromAddress"}
    )


@dataclass(kw_only=True)
class SystemEmergencyZonesGetRequest(OCIRequest):
    """Request the system level data associated with Emergency Zones.
        The response is either a SystemEmergencyZonesGetResponse or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemEmergencyZonesModifyRequest(OCIRequest):
    """Modify the system level data associated with Emergency Zones.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        default_from_address (Optional[str]):

    """

    default_from_address: Optional[str] = field(
        default=None, metadata={"alias": "defaultFromAddress"}
    )


@dataclass(kw_only=True)
class SystemEndpointGetListRequest(OCIRequest):
    """Request to search endpoints in the system.
        If reseller administrator sends the request, searchCriteriaResellerId is ignored. All endpoints
        in the administrator's reseller meeting the search criteria are returned.

        The response is either SystemEndpointGetListResponse or ErrorResponse.

        The following data elements are only used in AS data mode:
          searchCriteriaResellerId

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_exact_organization_type (Optional[SearchCriteriaExactOrganizationType]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_line_port_user_part (Optional[List[SearchCriteriaLinePortUserPart]]):

        search_criteria_line_port_domain (Optional[List[SearchCriteriaLinePortDomain]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_device_type (Optional[List[SearchCriteriaDeviceType]]):

        search_criteria_device_name (Optional[List[SearchCriteriaDeviceName]]):

        search_criteria_device_mac_address (Optional[List[SearchCriteriaDeviceMACAddress]]):

        search_criteria_device_net_address (Optional[List[SearchCriteriaDeviceNetAddress]]):

        search_criteria_reseller_id (Optional[List[SearchCriteriaResellerId]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_exact_organization_type: Optional[
        SearchCriteriaExactOrganizationType
    ] = field(default=None, metadata={"alias": "searchCriteriaExactOrganizationType"})

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_line_port_user_part: Optional[
        List[SearchCriteriaLinePortUserPart]
    ] = field(default=None, metadata={"alias": "searchCriteriaLinePortUserPart"})

    search_criteria_line_port_domain: Optional[List[SearchCriteriaLinePortDomain]] = (
        field(default=None, metadata={"alias": "searchCriteriaLinePortDomain"})
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_device_type: Optional[List[SearchCriteriaDeviceType]] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceType"}
    )

    search_criteria_device_name: Optional[List[SearchCriteriaDeviceName]] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceName"}
    )

    search_criteria_device_mac_address: Optional[
        List[SearchCriteriaDeviceMACAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceMACAddress"})

    search_criteria_device_net_address: Optional[
        List[SearchCriteriaDeviceNetAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaDeviceNetAddress"})

    search_criteria_reseller_id: Optional[List[SearchCriteriaResellerId]] = field(
        default=None, metadata={"alias": "searchCriteriaResellerId"}
    )


@dataclass(kw_only=True)
class SystemEnhancedCallLogsActiveSchemaInstanceGetListRequest(OCIRequest):
    """Request the system level database schema instances defined for Enhanced Call Logs.
      For each instance, the number of actual users (users that have the Enhanced Call Logs service,
      are assigned to that schema instance and have recorded call logs on the NDS) are given.
      The response is either a SystemEnhancedCallLogsActiveSchemaInstanceGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemEnhancedCallLogsGetRequest22V2(OCIRequest):
    """Request the system level data associated with Enhanced Call Logs. The response is either a
        SystemEnhancedCallLogsGetResponse22V2 or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemEnhancedCallLogsModifyRequest22(OCIRequest):
    """Modify the system level data associated with Enhanced Call Logs.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        max_non_paged_response_size (Optional[int]):

        ecl_query_application_url (Optional[Nillable[str]]):

        ecl_query_data_repository_url (Optional[Nillable[str]]):

        default_schema (Optional[Nillable[str]]):

    """

    max_non_paged_response_size: Optional[int] = field(
        default=None, metadata={"alias": "maxNonPagedResponseSize"}
    )

    ecl_query_application_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "eclQueryApplicationURL"}
    )

    ecl_query_data_repository_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "eclQueryDataRepositoryURL"}
    )

    default_schema: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultSchema"}
    )

    def __post_init__(self):
        nillable_fields = [
            "ecl_query_application_url",
            "ecl_query_data_repository_url",
            "default_schema",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemEnhancedCallLogsSchemaInstanceGetListRequest(OCIRequest):
    """Request the system level database schema instances defined for Enhanced Call Logs.
      For each instance, the number of actual users (users that have the Enhanced Call Logs service
      and are assigned to that schema instance) and the number of potential users are given
      (users part of a group or service provider using that schema instance).
      The response is either a SystemEnhancedCallLogsSchemaInstanceGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemEnterpriseTrunkGetRequest(OCIRequest):
    """Request the system level data associated with the Enterprise Trunk service.
        The response is either SystemEnterpriseTrunkGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemEnterpriseTrunkModifyRequest(OCIRequest):
    """Modify the system level data associated with the Enterprise Trunk Service.

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        enable_holdover_of_highwater_call_counts (Optional[bool]):

        holdover_period (Optional[str]):

        time_zone_offset_minutes (Optional[str]):

    """

    enable_holdover_of_highwater_call_counts: Optional[bool] = field(
        default=None, metadata={"alias": "enableHoldoverOfHighwaterCallCounts"}
    )

    holdover_period: Optional[str] = field(
        default=None, metadata={"alias": "holdoverPeriod"}
    )

    time_zone_offset_minutes: Optional[str] = field(
        default=None, metadata={"alias": "timeZoneOffsetMinutes"}
    )


@dataclass(kw_only=True)
class SystemExecutiveGetRequest24(OCIRequest):
    """Request to get the Executive system parameters.
         The response is either SystemExecutiveGetResponse24 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemExecutiveModifyRequest(OCIRequest):
    """Request to modify the Executive system parameters.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        treat_virtual_on_net_calls_as_internal (Optional[bool]):

        consider_executive_on_hook_for_assistant_calls (Optional[bool]):

    """

    treat_virtual_on_net_calls_as_internal: Optional[bool] = field(
        default=None, metadata={"alias": "treatVirtualOnNetCallsAsInternal"}
    )

    consider_executive_on_hook_for_assistant_calls: Optional[bool] = field(
        default=None, metadata={"alias": "considerExecutiveOnHookForAssistantCalls"}
    )


@dataclass(kw_only=True)
class SystemExpensiveCallNotificationGetRequest(OCIRequest):
    """Request to get the expensive call notification service parameters.
        The response is either a SystemExpensiveCallNotificationGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemExpensiveCallNotificationModifyRequest(OCIRequest):
    """Modify the expensive call notification service parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        enable_post_announcement_delay_timer (Optional[bool]):

        post_announcement_delay_seconds (Optional[int]):

    """

    enable_post_announcement_delay_timer: Optional[bool] = field(
        default=None, metadata={"alias": "enablePostAnnouncementDelayTimer"}
    )

    post_announcement_delay_seconds: Optional[int] = field(
        default=None, metadata={"alias": "postAnnouncementDelaySeconds"}
    )


@dataclass(kw_only=True)
class SystemExpensiveCallTypeAddRequest(OCIRequest):
    """Add an alternate call indicator to the list of expensive alternate call indicators.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        alternate_call_indicator (str):

        treatment_audio_file (Optional[str]):

    """

    alternate_call_indicator: str = field(metadata={"alias": "alternateCallIndicator"})

    treatment_audio_file: Optional[str] = field(
        default=None, metadata={"alias": "treatmentAudioFile"}
    )


@dataclass(kw_only=True)
class SystemExpensiveCallTypeDeleteRequest(OCIRequest):
    """Delete an alternate call indicator from the list of expensive alternate call indicators.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        alternate_call_indicator (str):

    """

    alternate_call_indicator: str = field(metadata={"alias": "alternateCallIndicator"})


@dataclass(kw_only=True)
class SystemExpensiveCallTypeGetListRequest16sp1(OCIRequest):
    """Request to get the list of expensive alternate call indicators in the system.
        The response is either a SystemExpensiveCallTypeGetListResponse16sp1
        or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemExpensiveCallTypeModifyRequest(OCIRequest):
    """Modify an existing call indicator in the list of expensive alternate call indicators.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        alternate_call_indicator (str):

        treatment_audio_file (Optional[Nillable[str]]):

    """

    alternate_call_indicator: str = field(metadata={"alias": "alternateCallIndicator"})

    treatment_audio_file: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "treatmentAudioFile"}
    )

    def __post_init__(self):
        nillable_fields = ["treatment_audio_file"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemExportAddressingDataRequest(OCIRequest):
    """Request to export Application Server addressing data, such as DNs, extensions, alias and user ids
        to a file so they can be uploaded to a Network Server.
        In XS data mode, response is sent without waiting for completion.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        file_name (str):

    """

    file_name: str = field(metadata={"alias": "fileName"})


@dataclass(kw_only=True)
class SystemExportBroadCloudDataRequest(OCIRequest):
    """Request to export all users that have BroadCloud services, such as
        user profile information and BroadCloud services related information for that user
        to a file so they can be uploaded to a Messaging Server/BroadCloud.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        file_name (str):

    """

    file_name: str = field(metadata={"alias": "fileName"})


@dataclass(kw_only=True)
class SystemExportSubscriberRequest(OCIRequest):
    """Request subscribers be exported to files on the AS filesystem.
        The response is either a SuccessResponse or an
        ErrorResponse.

        ***** Warning *****:
        This activity should only be done during non-busy hours on the secondary
        provisioning server because this may cause large amounts of data to be
        dumped to disk and it may take some time to execute.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemExtensionLengthGetRequest(OCIRequest):
    """Request the system's extension range.
        The response is either a SystemExtensionLengthGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemExtensionLengthModifyRequest(OCIRequest):
    """Modify the group's extension length range.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        min_extension_length (Optional[int]):

        max_extension_length (Optional[int]):

    """

    min_extension_length: Optional[int] = field(
        default=None, metadata={"alias": "minExtensionLength"}
    )

    max_extension_length: Optional[int] = field(
        default=None, metadata={"alias": "maxExtensionLength"}
    )


@dataclass(kw_only=True)
class SystemExternalAuthenticationAddACLEntryRequest14sp2(OCIRequest):
    """Add an entry to the external authentication access control list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        net_address (str):

        description (Optional[str]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemExternalAuthenticationDeleteACLEntryRequest14sp2(OCIRequest):
    """Delete an entry from the external authentication access control list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        net_address (str):

    """

    net_address: str = field(metadata={"alias": "netAddress"})


@dataclass(kw_only=True)
class SystemExternalAuthenticationGetACLListRequest(OCIRequest):
    """Get the external authentication access control list.
        The response is either SystemExternalAuthenticationGetACLListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemExternalAuthenticationModifyACLEntryRequest14sp2(OCIRequest):
    """Modify an entry from the external authentication access control list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        net_address (str):

        description (Optional[Nillable[str]]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemExternalEmergencyRoutingParametersGetRequest13mp13(OCIRequest):
    """Request to get the list of External Emergency Routing system parameters.
        The response is either SystemExternalEmergencyRoutingParametersGetResponse13mp13 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemExternalEmergencyRoutingParametersModifyRequest13mp13(OCIRequest):
    """Request to modify Call External Emergency Routing system parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_uri (Optional[Nillable[str]]):

        default_emergency_number (Optional[Nillable[str]]):

        is_active (Optional[bool]):

        supports_dnssrv (Optional[bool]):

        connection_timeout_seconds (Optional[int]):

    """

    service_uri: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "serviceURI"}
    )

    default_emergency_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultEmergencyNumber"}
    )

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    supports_dnssrv: Optional[bool] = field(
        default=None, metadata={"alias": "supportsDNSSRV"}
    )

    connection_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "connectionTimeoutSeconds"}
    )

    def __post_init__(self):
        nillable_fields = ["service_uri", "default_emergency_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemFaxMessagingGetRequest(OCIRequest):
    """Request the system level data associated with Fax Messaging.
        The response is either a SystemFaxMessagingGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemFaxMessagingModifyRequest(OCIRequest):
    """Modify the system level data associated with Fax Messaging.
        The following elements are only used in AS data mode and ignored in XS data mode:
          statusDurationHours
          statusAuditIntervalHours
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        status_duration_hours (Optional[int]):

        status_audit_interval_hours (Optional[int]):

        maximum_concurrent_faxes_per_user (Optional[int]):

    """

    status_duration_hours: Optional[int] = field(
        default=None, metadata={"alias": "statusDurationHours"}
    )

    status_audit_interval_hours: Optional[int] = field(
        default=None, metadata={"alias": "statusAuditIntervalHours"}
    )

    maximum_concurrent_faxes_per_user: Optional[int] = field(
        default=None, metadata={"alias": "maximumConcurrentFaxesPerUser"}
    )


@dataclass(kw_only=True)
class SystemFeatureAccessCodeGetListRequest21(OCIRequest):
    """Request to get list of default Feature Access Codes defined on system
        level.
        The response is either SystemFeatureAccessCodeGetListResponse20 or
        ErrorResponse.

        In release 20 the \"Call Recording\" FAC name is changed to
        \"Call Recording - Start\".

    Attributes:

    """


@dataclass(kw_only=True)
class SystemFeatureAccessCodeModifyListRequest21(OCIRequest):
    """Modify default Feature Access Codes.
        The response is either a SuccessResponse or an ErrorResponse.

        In release 20 the \"Call Recording\" FAC name is changed to
        \"Call Recording - Start\".

    Attributes:

        feature_access_code (Optional[List[FeatureAccessCodeModifyEntry]]):

    """

    feature_access_code: Optional[List[FeatureAccessCodeModifyEntry]] = field(
        default=None, metadata={"alias": "featureAccessCode"}
    )


@dataclass(kw_only=True)
class SystemFileGetContentRequest(OCIRequest):
    """Requests the contents of a file.  This transaction is only allowed to get content for files under
        /var/broadworks/userfiles/AuditLogs/ or /var/broadworks/IpDeviceConfig/.
        The response is either a SystemFileGetContentResponse or an ErrorResponse.

    Attributes:

        file_name (str):

    """

    file_name: str = field(metadata={"alias": "fileName"})


@dataclass(kw_only=True)
class SystemFileRepositoryDeviceAddRequest20(OCIRequest):
    """Add a new file repository.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        name (str):

        root_directory (Optional[str]):

        port (Optional[int]):

        protocol_web_dav (Optional[FileRepositoryProtocolWebDAV20]):

        protocol_ftp (Optional[FileRepositoryProtocolFTP16]):

        protocol_sftp (Optional[FileRepositoryProtocolFTP16]):

        protocol_ftps (Optional[FileRepositoryProtocolFTP16]):

    """

    name: str = field(metadata={"alias": "name"})

    root_directory: Optional[str] = field(
        default=None, metadata={"alias": "rootDirectory"}
    )

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    protocol_web_dav: Optional[FileRepositoryProtocolWebDAV20] = field(
        default=None, metadata={"alias": "protocolWebDAV"}
    )

    protocol_ftp: Optional[FileRepositoryProtocolFTP16] = field(
        default=None, metadata={"alias": "protocolFTP"}
    )

    protocol_sftp: Optional[FileRepositoryProtocolFTP16] = field(
        default=None, metadata={"alias": "protocolSFTP"}
    )

    protocol_ftps: Optional[FileRepositoryProtocolFTP16] = field(
        default=None, metadata={"alias": "protocolFTPS"}
    )


@dataclass(kw_only=True)
class SystemFileRepositoryDeviceDeleteRequest(OCIRequest):
    """Delete a file repository.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemFileRepositoryDeviceGetListRequest(OCIRequest):
    """Request the list of file repositories in the system.
        The response is either a SystemFileRepositoryDeviceGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemFileRepositoryDeviceGetRequest22(OCIRequest):
    """Request to get the file repository information.  The response is either SystemFileRepositoryDeviceGetResponse22 or ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemFileRepositoryDeviceModifyRequest22(OCIRequest):
    """Modify a file repository.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        name (str):

        root_directory (Optional[Nillable[str]]):

        secure (Optional[bool]):

        net_address (Optional[str]):

        ftp_passive (Optional[bool]):

        protocol (Optional[str]):

        port (Optional[Nillable[int]]):

        ftp_remote_verification (Optional[bool]):

    """

    name: str = field(metadata={"alias": "name"})

    root_directory: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "rootDirectory"}
    )

    secure: Optional[bool] = field(default=None, metadata={"alias": "secure"})

    net_address: Optional[str] = field(default=None, metadata={"alias": "netAddress"})

    ftp_passive: Optional[bool] = field(default=None, metadata={"alias": "ftpPassive"})

    protocol: Optional[str] = field(default=None, metadata={"alias": "protocol"})

    port: Optional[Nillable[int]] = field(default=None, metadata={"alias": "port"})

    ftp_remote_verification: Optional[bool] = field(
        default=None, metadata={"alias": "ftpRemoteVerification"}
    )

    def __post_init__(self):
        nillable_fields = ["root_directory", "port"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemFileRepositoryDeviceUserAddRequest(OCIRequest):
    """Add a new file repository user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        file_repository_name (str):

        user_name (str):

        password (str):

        allow_put (bool):

        allow_delete (bool):

        allow_get (bool):

    """

    file_repository_name: str = field(metadata={"alias": "fileRepositoryName"})

    user_name: str = field(metadata={"alias": "userName"})

    password: str = field(metadata={"alias": "password"})

    allow_put: bool = field(metadata={"alias": "allowPut"})

    allow_delete: bool = field(metadata={"alias": "allowDelete"})

    allow_get: bool = field(metadata={"alias": "allowGet"})


@dataclass(kw_only=True)
class SystemFileRepositoryDeviceUserDeleteRequest(OCIRequest):
    """Delete a file repository user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        file_repository_name (str):

        user_name (str):

    """

    file_repository_name: str = field(metadata={"alias": "fileRepositoryName"})

    user_name: str = field(metadata={"alias": "userName"})


@dataclass(kw_only=True)
class SystemFileRepositoryDeviceUserGetListRequest(OCIRequest):
    """Request the list of users for a file repository in the system.
        The response is either a SystemFileRepositoryDeviceUserGetListResponse or an ErrorResponse.

    Attributes:

        file_repository_name (str):

    """

    file_repository_name: str = field(metadata={"alias": "fileRepositoryName"})


@dataclass(kw_only=True)
class SystemFileRepositoryDeviceUserGetRequest(OCIRequest):
    """Request a user of a file repository in the system.
        The response is either a SystemFileRepositoryDeviceUserGetResponse or an ErrorResponse.

    Attributes:

        file_repository_name (str):

        user_name (str):

    """

    file_repository_name: str = field(metadata={"alias": "fileRepositoryName"})

    user_name: str = field(metadata={"alias": "userName"})


@dataclass(kw_only=True)
class SystemFileRepositoryDeviceUserModifyRequest(OCIRequest):
    """Modify a file repository user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        file_repository_name (str):

        user_name (str):

        password (Optional[str]):

        allow_put (Optional[bool]):

        allow_delete (Optional[bool]):

        allow_get (Optional[bool]):

    """

    file_repository_name: str = field(metadata={"alias": "fileRepositoryName"})

    user_name: str = field(metadata={"alias": "userName"})

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    allow_put: Optional[bool] = field(default=None, metadata={"alias": "allowPut"})

    allow_delete: Optional[bool] = field(
        default=None, metadata={"alias": "allowDelete"}
    )

    allow_get: Optional[bool] = field(default=None, metadata={"alias": "allowGet"})


@dataclass(kw_only=True)
class SystemGETSAvpCodeMapAddRequest(OCIRequest):
    """Add a GETS AVP Code map at the system level.  It maps a Diameter AVP Code with a vendor ID for.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        avp_code (int):

        vendor_id (int):

    """

    avp_code: int = field(metadata={"alias": "avpCode"})

    vendor_id: int = field(metadata={"alias": "vendorId"})


@dataclass(kw_only=True)
class SystemGETSAvpCodeMapDeleteRequest(OCIRequest):
    """Delete a system GETS AVP Code map.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        avp_code (int):

        vendor_id (int):

    """

    avp_code: int = field(metadata={"alias": "avpCode"})

    vendor_id: int = field(metadata={"alias": "vendorId"})


@dataclass(kw_only=True)
class SystemGETSAvpCodeMapGetListRequest(OCIRequest):
    """Get a list of GETS AVP Code Maps at the system level.
        The response is either SystemGETSAvpCodeMapGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemGETSGetRequest22(OCIRequest):
    """Get the GETS system settings.
        The response is either SystemGETSGetResponse22 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemGETSModifyRequest(OCIRequest):
    """Modify GETS system settings.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        enabled (Optional[bool]):

        enable_require_resource_priority (Optional[bool]):

        send_access_resource_priority (Optional[bool]):

        call_identifier_mode (Optional[str]):

        default_priority_avp (Optional[int]):

        signaling_dscp (Optional[int]):

        default_r_value (Optional[str]):

        bypass_ro_release (Optional[bool]):

        ignore_resource_priorities_when_gets_disabled (Optional[bool]):

    """

    enabled: Optional[bool] = field(default=None, metadata={"alias": "enabled"})

    enable_require_resource_priority: Optional[bool] = field(
        default=None, metadata={"alias": "enableRequireResourcePriority"}
    )

    send_access_resource_priority: Optional[bool] = field(
        default=None, metadata={"alias": "sendAccessResourcePriority"}
    )

    call_identifier_mode: Optional[str] = field(
        default=None, metadata={"alias": "callIdentifierMode"}
    )

    default_priority_avp: Optional[int] = field(
        default=None, metadata={"alias": "defaultPriorityAVP"}
    )

    signaling_dscp: Optional[int] = field(
        default=None, metadata={"alias": "signalingDSCP"}
    )

    default_r_value: Optional[str] = field(
        default=None, metadata={"alias": "defaultRValue"}
    )

    bypass_ro_release: Optional[bool] = field(
        default=None, metadata={"alias": "bypassRoRelease"}
    )

    ignore_resource_priorities_when_gets_disabled: Optional[bool] = field(
        default=None, metadata={"alias": "ignoreResourcePrioritiesWhenGETSDisabled"}
    )


@dataclass(kw_only=True)
class SystemGETSNumberAddRequest(OCIRequest):
    """Add a GETS reserved Number.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        number (str):

        type (str):

        description (Optional[str]):

    """

    number: str = field(metadata={"alias": "number"})

    type: str = field(metadata={"alias": "type"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemGETSNumberDeleteRequest(OCIRequest):
    """Delete a GETS reserved Number.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        number (str):

    """

    number: str = field(metadata={"alias": "number"})


@dataclass(kw_only=True)
class SystemGETSNumberGetListRequest(OCIRequest):
    """Get a list of GETS reserved Numbers.
        The response is either SystemGETSNumberGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemGETSNumberModifyRequest(OCIRequest):
    """Modify a GETS reserved Number.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        number (str):

        type (Optional[str]):

        description (Optional[Nillable[str]]):

    """

    number: str = field(metadata={"alias": "number"})

    type: Optional[str] = field(default=None, metadata={"alias": "type"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemGETSReservedFeatureAccessCodeAddRequest(OCIRequest):
    """Add a GETS reserved FAC.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        code (str):

        description (Optional[str]):

    """

    code: str = field(metadata={"alias": "code"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemGETSReservedFeatureAccessCodeDeleteRequest(OCIRequest):
    """Delete a GETS reserved FAC.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        code (str):

    """

    code: str = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class SystemGETSReservedFeatureAccessCodeGetListRequest(OCIRequest):
    """Get a list of GETS reserved FAC.
        The response is either SystemGETSReservedFeatureAccessCodeGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemGETSReservedFeatureAccessCodeModifyRequest(OCIRequest):
    """Modify a GETS reserved FAC.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        code (str):

        new_code (Optional[str]):

        description (Optional[Nillable[str]]):

    """

    code: str = field(metadata={"alias": "code"})

    new_code: Optional[str] = field(default=None, metadata={"alias": "newCode"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemGETSResourcePriorityAddRequest(OCIRequest):
    """Add a GETS Resource Priority.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        priority_value (str):

        priority_level (int):

        priority_class (str):

    """

    priority_value: str = field(metadata={"alias": "priorityValue"})

    priority_level: int = field(metadata={"alias": "priorityLevel"})

    priority_class: str = field(metadata={"alias": "priorityClass"})


@dataclass(kw_only=True)
class SystemGETSResourcePriorityDeleteRequest(OCIRequest):
    """Delete a GETS Resource Priority.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        priority_value (str):

    """

    priority_value: str = field(metadata={"alias": "priorityValue"})


@dataclass(kw_only=True)
class SystemGETSResourcePriorityGetListRequest(OCIRequest):
    """Get a list of GETS Resource Priorities.
        The response is either SystemGETSResourcePriorityGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemGETSResourcePriorityModifyRequest(OCIRequest):
    """Modify a GETS reserved Resource Priority.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        priority_value (str):

        new_priority_value (Optional[str]):

        priority_level (Optional[int]):

        priority_class (Optional[str]):

    """

    priority_value: str = field(metadata={"alias": "priorityValue"})

    new_priority_value: Optional[str] = field(
        default=None, metadata={"alias": "newPriorityValue"}
    )

    priority_level: Optional[int] = field(
        default=None, metadata={"alias": "priorityLevel"}
    )

    priority_class: Optional[str] = field(
        default=None, metadata={"alias": "priorityClass"}
    )


@dataclass(kw_only=True)
class SystemGETSSessionPriorityMapAddRequest(OCIRequest):
    """Add a GETS Session Priority map.  It maps a priority level with a session priority AVP value.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        priority_level (int):

        session_priority (int):

    """

    priority_level: int = field(metadata={"alias": "priorityLevel"})

    session_priority: int = field(metadata={"alias": "sessionPriority"})


@dataclass(kw_only=True)
class SystemGETSSessionPriorityMapDeleteRequest(OCIRequest):
    """Delete a GETS Session Priority map.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        priority_level (int):

    """

    priority_level: int = field(metadata={"alias": "priorityLevel"})


@dataclass(kw_only=True)
class SystemGETSSessionPriorityMapGetListRequest(OCIRequest):
    """Get a list of GETS Session Priority maps.
        The response is either SystemGETSSessionPriorityMapGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemGETSSessionPriorityMapModifyRequest(OCIRequest):
    """Modify a GETS Session Priority Map.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        priority_level (int):

        session_priority (Optional[int]):

    """

    priority_level: int = field(metadata={"alias": "priorityLevel"})

    session_priority: Optional[int] = field(
        default=None, metadata={"alias": "sessionPriority"}
    )


@dataclass(kw_only=True)
class SystemGeographicRedundancyPeerSipConnectionMonitoringGetRequest(OCIRequest):
    """Request to get the list of Peer SIP Connection system parameters
        The response is a SystemGeographicRedundancyPeerSipConnectionMonitoringGetResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemGeographicRedundancyPeerSipConnectionMonitoringModifyRequest(OCIRequest):
    """Modify the list of Peer SIP Connection Monitoring system parameters
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        enabled (Optional[bool]):

        heartbeat_interval (Optional[int]):

        heartbeat_timeout (Optional[int]):

    """

    enabled: Optional[bool] = field(default=None, metadata={"alias": "enabled"})

    heartbeat_interval: Optional[int] = field(
        default=None, metadata={"alias": "heartbeatInterval"}
    )

    heartbeat_timeout: Optional[int] = field(
        default=None, metadata={"alias": "heartbeatTimeout"}
    )


@dataclass(kw_only=True)
class SystemGeographicRedundancyProxyGetRequest(OCIRequest):
    """Request to get the list of Geographic Redundancy Proxy system parameters
        The response is a SystemGeographicRedundancyProxyGetResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemGeographicRedundancyProxyModifyRequest(OCIRequest):
    """Modify the list of Geographic Redundancy Proxysystem parameters
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        enabled (Optional[bool]):

    """

    enabled: Optional[bool] = field(default=None, metadata={"alias": "enabled"})


@dataclass(kw_only=True)
class SystemGeographicRedundancyUnreachableFromPrimaryGetUserListRequest22(OCIRequest):
    """Get the list of users that are unreachable from the primary application server.
        The response is a SystemGeographicRedundancyUnreachableFromPrimaryGetUserListResponse22 or an ErrorResponse.

    Attributes:

        user_list_size_limit (Optional[int]):

    """

    user_list_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "userListSizeLimit"}
    )


@dataclass(kw_only=True)
class SystemGetAvailableLeafDeviceListRequest22(OCIRequest):
    """Requests the list of available leaf devices that can be linked to a tree device for the entire system.
        A leaf device is a device associated with a device type that has the option
        supportLinks set to \"Support Link to Device\" or \"Support Link to Device and User\".  It can
        be linked to only one tree device.
        The list returned includes devices created at the system, service provider, and group levels.
        If the leafDeviceCategory is not set in the request, then linked leaf devices of all categories are requested, otherwise only the linked leaf devices of the specified category are requested.
        The category values are: \"Handset\", \"Base Station\", \"All\".
        The response is either SystemGetAvailableLeafDeviceListResponse22 or
        ErrorResponse.

    Attributes:

        leaf_device_category (Optional[str]):

    """

    leaf_device_category: Optional[str] = field(
        default=None, metadata={"alias": "leafDeviceCategory"}
    )


@dataclass(kw_only=True)
class SystemGetAvailableTreeDeviceListRequest(OCIRequest):
    """Requests the list of available tree devices to link to for the entire system.
        Requests the list of available tree devices to which a leaf device can be linked for the entire system.
        A tree device is a device associated with a device type that has the option
        supportLinks set to \"Support Links from Devices\". Many leaf devices can be linked to it.
        The list returned includes devices created at the system, service provider, and group levels.
        The response is either SystemGetAvailableTreeDeviceListResponse or
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemGetRegistrationContactListRequest21sp1(OCIRequest):
    """Get the list of registration contacts.
        This request handles all levels of administration privileges.  The content of the response will only contain
        items within the scope of the requester's login id.  At the system level any of the choice parameters may be
        specified to filter the registrations listed.  At the reseller level, the resellerId must be specified.
        ResellerId is not valid at service provider, group or user level. At the service provider level the
        serviceProviderId must be specified for the service provider and group options.  When using the userId or
        linePort options the specified value must be valid for that service provider login.  At the group level
        the servicProviderId and the groupId must be specified for the group option. When using the userId or linePort
        options the specified value must be valid for that group login.
        The serviceProviderId option is not valid at the group level.  At the user level when using the userId or
        linePort options the specified value must be valid for that user login.  The serviceProviderId and groupId
        options are not valid at the user level.
        The response is either SystemGetRegistrationContactListResponse21sp1 or ErrorResponse.
        The RegistrationEndpointType21sp1 is sent in response The Endpoint Type column contains one of the enumerated RegistrationEndpointType21sp1 values.
        The value Mobility in Endpoint Type column is only applicable in AS data mode.

        The following elements are only used in AS data mode:
          resellerId

    Attributes:

        reseller_id (Optional[str]):

        service_provider_id (Optional[str]):

        svc_provider_id (Optional[str]):

        group_id (Optional[str]):

        user_id (Optional[str]):

        line_port (Optional[str]):

        device_level (Optional[str]):

        device_name (Optional[str]):

        device_type (Optional[str]):

        search_criteria_registration_uri (Optional[List[SearchCriteriaRegistrationURI]]):

        search_criteria_sip_contact (Optional[List[SearchCriteriaSIPContact]]):

        endpoint_type (Optional[str]):

        expired (Optional[bool]):

    """

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    svc_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "svcProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})

    line_port: Optional[str] = field(default=None, metadata={"alias": "linePort"})

    device_level: Optional[str] = field(default=None, metadata={"alias": "deviceLevel"})

    device_name: Optional[str] = field(default=None, metadata={"alias": "deviceName"})

    device_type: Optional[str] = field(default=None, metadata={"alias": "deviceType"})

    search_criteria_registration_uri: Optional[List[SearchCriteriaRegistrationURI]] = (
        field(default=None, metadata={"alias": "searchCriteriaRegistrationURI"})
    )

    search_criteria_sip_contact: Optional[List[SearchCriteriaSIPContact]] = field(
        default=None, metadata={"alias": "searchCriteriaSIPContact"}
    )

    endpoint_type: Optional[str] = field(
        default=None, metadata={"alias": "endpointType"}
    )

    expired: Optional[bool] = field(default=None, metadata={"alias": "expired"})


@dataclass(kw_only=True)
class SystemGroupNightForwardingGetRequest(OCIRequest):
    """Request to get the Group Night Forwarding system parameters.
        The response is either SystemGroupNightForwardingGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemGroupNightForwardingModifyRequest(OCIRequest):
    """Request to modify the Group Night Forwarding system parameters.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        night_forward_group_calls_within_enterprise (Optional[bool]):

    """

    night_forward_group_calls_within_enterprise: Optional[bool] = field(
        default=None, metadata={"alias": "nightForwardGroupCallsWithinEnterprise"}
    )


@dataclass(kw_only=True)
class SystemHPBXAlternateCarrierSelectionAddCarrierRequest(OCIRequest):
    """Add a new alternate carrier for CbC and Preselection.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        prefix (str):

        domain (str):

        type (str):

    """

    name: str = field(metadata={"alias": "name"})

    prefix: str = field(metadata={"alias": "prefix"})

    domain: str = field(metadata={"alias": "domain"})

    type: str = field(metadata={"alias": "type"})


@dataclass(kw_only=True)
class SystemHPBXAlternateCarrierSelectionDeleteCarrierRequest(OCIRequest):
    """Delete an alternate carrier for CbC and Preselection.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemHPBXAlternateCarrierSelectionGetCarrierListRequest(OCIRequest):
    """Request the list of alternate carriers available for CbC and Preselection.
        The response is either a SystemHPBXAlternateCarrierSelectionGetCarrierListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemHPBXAlternateCarrierSelectionModifyCarrierRequest(OCIRequest):
    """Modify an alternate carrier for CbC and Preselection.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        new_name (Optional[str]):

        prefix (Optional[str]):

        domain (Optional[str]):

        type (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    prefix: Optional[str] = field(default=None, metadata={"alias": "prefix"})

    domain: Optional[str] = field(default=None, metadata={"alias": "domain"})

    type: Optional[str] = field(default=None, metadata={"alias": "type"})


@dataclass(kw_only=True)
class SystemHPBXMobileTerminationGetRequest(OCIRequest):
    """Request to get the hPBX mobile termination related configuration parameters.
        The response is either a SystemHPBXMobileTerminationGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemHPBXMobileTerminationModifyRequest(OCIRequest):
    """Request to modify the hPBX mobile termination related configuration parameters.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        routing_prefix (Optional[Nillable[str]]):

    """

    routing_prefix: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "routingPrefix"}
    )

    def __post_init__(self):
        nillable_fields = ["routing_prefix"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemHomeNetworkAddRequest(OCIRequest):
    """Add a Home Network.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        msc_address (str):

    """

    msc_address: str = field(metadata={"alias": "mscAddress"})


@dataclass(kw_only=True)
class SystemHomeNetworkDeleteRequest(OCIRequest):
    """Delete a Home Network.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        msc_address (str):

    """

    msc_address: str = field(metadata={"alias": "mscAddress"})


@dataclass(kw_only=True)
class SystemHomeNetworkGetListRequest(OCIRequest):
    """Get the list of all Home Networks.
        The response is either a SystemHomeNetworkGetListResponse or an ErrorResponse.

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_home_msc_address (Optional[List[SearchCriteriaHomeMscAddress]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_home_msc_address: Optional[List[SearchCriteriaHomeMscAddress]] = (
        field(default=None, metadata={"alias": "searchCriteriaHomeMscAddress"})
    )


@dataclass(kw_only=True)
class SystemHuntGroupGetRequest21(OCIRequest):
    """Request the system level data associated with Hunt Group.
        The response is either a SystemHuntGroupGetResponse21 or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemHuntGroupModifyRequest21(OCIRequest):
    """Modify the system level data associated with Hunt Group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        remove_hunt_group_name_from_clid (Optional[bool]):

        uniform_call_distribution_policy_scope (Optional[str]):

        allow_agent_device_initiated_forward (Optional[bool]):

    """

    remove_hunt_group_name_from_clid: Optional[bool] = field(
        default=None, metadata={"alias": "removeHuntGroupNameFromCLID"}
    )

    uniform_call_distribution_policy_scope: Optional[str] = field(
        default=None, metadata={"alias": "uniformCallDistributionPolicyScope"}
    )

    allow_agent_device_initiated_forward: Optional[bool] = field(
        default=None, metadata={"alias": "allowAgentDeviceInitiatedForward"}
    )


@dataclass(kw_only=True)
class SystemInCallServiceActivationGetRequest17(OCIRequest):
    """Request the system's DTMF based in-call service activation trigger attributes. The response is either a SystemInCallServiceActivationGetResponse17 or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemInCallServiceActivationModifyRequest17(OCIRequest):
    """Modifies the system's DTMF based in-call service activation trigger  attributes.The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        default_flash_activation_digits (Optional[str]):

        default_call_transfer_activation_digits (Optional[str]):

    """

    default_flash_activation_digits: Optional[str] = field(
        default=None, metadata={"alias": "defaultFlashActivationDigits"}
    )

    default_call_transfer_activation_digits: Optional[str] = field(
        default=None, metadata={"alias": "defaultCallTransferActivationDigits"}
    )


@dataclass(kw_only=True)
class SystemIntegratedIMPGetRequest25(OCIRequest):
    """Get the system Integrated IMP service attributes.
        The response is either SystemIntegratedIMPGetResponse25 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemIntegratedIMPModifyRequest(OCIRequest):
    """Modify the system Integrated IMP service attributes.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode:
          boshURL
          allowImpPasswordRetrieval
          propagateImpErrorDetails

    Attributes:

        service_domain (Optional[Nillable[str]]):

        service_port (Optional[Nillable[int]]):

        add_service_provider_in_imp_user_id (Optional[bool]):

        bosh_url (Optional[Nillable[str]]):

        allow_imp_password_retrieval (Optional[bool]):

        propagate_imp_error_details (Optional[bool]):

    """

    service_domain: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "serviceDomain"}
    )

    service_port: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "servicePort"}
    )

    add_service_provider_in_imp_user_id: Optional[bool] = field(
        default=None, metadata={"alias": "addServiceProviderInIMPUserId"}
    )

    bosh_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "boshURL"}
    )

    allow_imp_password_retrieval: Optional[bool] = field(
        default=None, metadata={"alias": "allowImpPasswordRetrieval"}
    )

    propagate_imp_error_details: Optional[bool] = field(
        default=None, metadata={"alias": "propagateImpErrorDetails"}
    )

    def __post_init__(self):
        nillable_fields = ["service_domain", "service_port", "bosh_url"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemInterceptUserAddDnListRequest(OCIRequest):
    """Request to add an Intercept User number(s) to the system.
          The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        intercept_dn_list (List[InterceptDNListEntry]):

    """

    intercept_dn_list: List[InterceptDNListEntry] = field(
        metadata={"alias": "interceptDNList"}
    )


@dataclass(kw_only=True)
class SystemInterceptUserDeleteDnListRequest(OCIRequest):
    """Request to delete an Intercept User number(s) from the system.
         The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        phone_numbers (List[str]):

    """

    phone_numbers: List[str] = field(metadata={"alias": "phoneNumbers"})


@dataclass(kw_only=True)
class SystemInterceptUserGetDnListRequest(OCIRequest):
    """Request to get a list of Intercept User dns defined in the system.
          The response is either a SystemInterceptUserGetDnListResponse
          or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemInterceptUserGetRequest(OCIRequest):
    """Get the system-level intercept user service settings.
        The response is either a SystemInterceptUserGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemInterceptUserModifyDnRequest(OCIRequest):
    """Request to modify a Intercept User number's description in the system.
          The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        phone_number (str):

        description (Optional[Nillable[str]]):

    """

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemInterceptUserModifyRequest(OCIRequest):
    """Modify the system-level intercept user service settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        emergency_and_repair_intercept (Optional[bool]):

    """

    emergency_and_repair_intercept: Optional[bool] = field(
        default=None, metadata={"alias": "emergencyAndRepairIntercept"}
    )


@dataclass(kw_only=True)
class SystemInventoryReportGetRequest(OCIRequest):
    """Request the system level data associated with Inventory Report.
        The response is either a SystemInventoryReportGetResponse or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemInventoryReportModifyRequest(OCIRequest):
    """Modify the system level data associated with Inventory Report.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        default_from_address (Optional[str]):

    """

    default_from_address: Optional[str] = field(
        default=None, metadata={"alias": "defaultFromAddress"}
    )


@dataclass(kw_only=True)
class SystemLanguageAddRequest22(OCIRequest):
    """Request to add a language to the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        language (str):

        locale (str):

        encoding (str):

    """

    language: str = field(metadata={"alias": "language"})

    locale: str = field(metadata={"alias": "locale"})

    encoding: str = field(metadata={"alias": "encoding"})


@dataclass(kw_only=True)
class SystemLanguageDeleteRequest(OCIRequest):
    """Request to delete a language from the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        language (str):

    """

    language: str = field(metadata={"alias": "language"})


@dataclass(kw_only=True)
class SystemLanguageGetListRequest(OCIRequest):
    """Request the defined languages in the system.
        The response is either a SystemLanguageGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemLanguageModifyRequest22(OCIRequest):
    """Request to modify a language properties in the system.
        If the becomeDefaultLanguage element is present, the language in this request becomes
        the default language for the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        language (str):

        become_default_language (Optional[bool]):

        locale (Optional[str]):

        encoding (Optional[str]):

    """

    language: str = field(metadata={"alias": "language"})

    become_default_language: Optional[bool] = field(
        default=None, metadata={"alias": "becomeDefaultLanguage"}
    )

    locale: Optional[str] = field(default=None, metadata={"alias": "locale"})

    encoding: Optional[str] = field(default=None, metadata={"alias": "encoding"})


@dataclass(kw_only=True)
class SystemLegacyAutomaticCallbackGetLineTypeListRequest(OCIRequest):
    """Request the system's legacy automatic callback line type settings.
        The response is either a SystemLegacyAutomaticCallbackGetTypeLineListResponse or
        an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemLegacyAutomaticCallbackGetRequest(OCIRequest):
    """Request the system's legacy automatic callback attributes.
        The response is either a SystemLegacyAutomaticCallbackGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemLegacyAutomaticCallbackModifyLineTypeRequest(OCIRequest):
    """Modifies the system's legacy automatic callback line type attributes.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        line_type (str):

        match_action (Optional[str]):

        no_match_action (Optional[str]):

    """

    line_type: str = field(metadata={"alias": "lineType"})

    match_action: Optional[str] = field(default=None, metadata={"alias": "matchAction"})

    no_match_action: Optional[str] = field(
        default=None, metadata={"alias": "noMatchAction"}
    )


@dataclass(kw_only=True)
class SystemLegacyAutomaticCallbackModifyRequest(OCIRequest):
    """Modifies the system's legacy automatic callback attributes.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        max_monitors_per_originator (Optional[int]):

        max_monitors_per_terminator (Optional[int]):

        t2_minutes (Optional[int]):

        t4_seconds (Optional[int]):

        t5_seconds (Optional[int]):

        t6_minutes (Optional[int]):

        t7_minutes (Optional[int]):

        t8_seconds (Optional[int]):

        t_ring_seconds (Optional[int]):

        t10_o_minutes (Optional[int]):

        t10_t_minutes (Optional[int]):

    """

    max_monitors_per_originator: Optional[int] = field(
        default=None, metadata={"alias": "maxMonitorsPerOriginator"}
    )

    max_monitors_per_terminator: Optional[int] = field(
        default=None, metadata={"alias": "maxMonitorsPerTerminator"}
    )

    t2_minutes: Optional[int] = field(default=None, metadata={"alias": "t2Minutes"})

    t4_seconds: Optional[int] = field(default=None, metadata={"alias": "t4Seconds"})

    t5_seconds: Optional[int] = field(default=None, metadata={"alias": "t5Seconds"})

    t6_minutes: Optional[int] = field(default=None, metadata={"alias": "t6Minutes"})

    t7_minutes: Optional[int] = field(default=None, metadata={"alias": "t7Minutes"})

    t8_seconds: Optional[int] = field(default=None, metadata={"alias": "t8Seconds"})

    t_ring_seconds: Optional[int] = field(
        default=None, metadata={"alias": "tRingSeconds"}
    )

    t10_o_minutes: Optional[int] = field(
        default=None, metadata={"alias": "t10OMinutes"}
    )

    t10_t_minutes: Optional[int] = field(
        default=None, metadata={"alias": "t10TMinutes"}
    )


@dataclass(kw_only=True)
class SystemLicensingGetRequest21sp1(OCIRequest):
    """Get all the licensing information.
        The response is either SystemLicensingGetResponse21sp1 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemLicensingGetSystemLicenseListRequest22V2(OCIRequest):
    """Request to get the list of system licenses in the system.
        The response is either a SystemLicensingGetSystemLicenseListResponse22V2 or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemLicensingReloadRequest(OCIRequest):
    """Load a new license file.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemLocationBasedCallingRestrictionsGetRequest24(OCIRequest):
    """Gets system level the Location Based Calling Restrictions attributes.
        The response is either a SystemLocationBasedCallingRestrictionsGetResponse24 or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemLocationBasedCallingRestrictionsModifyRequest(OCIRequest):
    """Modifies the system level Location Based Calling Restriction attributes.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        physical_location_indicator (Optional[str]):

        enforce_msc_validation (Optional[bool]):

        enable_office_zone_announcement (Optional[bool]):

        enhance_office_zone (Optional[bool]):

        enable_mcc_mnc_based_location (Optional[bool]):

        mcc_mnc_roaming_network_translation_index (Optional[Nillable[str]]):

        default_mcc_mnc_based_location (Optional[str]):

    """

    physical_location_indicator: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocationIndicator"}
    )

    enforce_msc_validation: Optional[bool] = field(
        default=None, metadata={"alias": "enforceMscValidation"}
    )

    enable_office_zone_announcement: Optional[bool] = field(
        default=None, metadata={"alias": "enableOfficeZoneAnnouncement"}
    )

    enhance_office_zone: Optional[bool] = field(
        default=None, metadata={"alias": "enhanceOfficeZone"}
    )

    enable_mcc_mnc_based_location: Optional[bool] = field(
        default=None, metadata={"alias": "enableMccMncBasedLocation"}
    )

    mcc_mnc_roaming_network_translation_index: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "mccMncRoamingNetworkTranslationIndex"}
    )

    default_mcc_mnc_based_location: Optional[str] = field(
        default=None, metadata={"alias": "defaultMccMncBasedLocation"}
    )

    def __post_init__(self):
        nillable_fields = ["mcc_mnc_roaming_network_translation_index"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemMGCPDeviceTypeGetListRequest(OCIRequest):
    """Request to get the list of mgcp device types in the system.
        See Also: SystemDeviceTypeGetAvailableListRequest14sp3.
        The response is either SystemMGCPDeviceTypeGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemMGCPDeviceTypeGetRequest(OCIRequest):
    """Request to get a mgcp device type.
        See Also: SystemDeviceTypeGetRequest
        The response is either SystemMGCPDeviceTypeGetResponse or ErrorResponse.

    Attributes:

        device_type (str):

    """

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class SystemMGCPDeviceTypeModifyRequest(OCIRequest):
    """Request to modify a mgcp device type. In release 14, this is limited to changing the obsolete flag.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        device_type (str):

        is_obsolete (Optional[bool]):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    is_obsolete: Optional[bool] = field(default=None, metadata={"alias": "isObsolete"})


@dataclass(kw_only=True)
class SystemMailParametersGetRequest22(OCIRequest):
    """Request to get the list of Mail system parameters.
        The response is either SystemMailParametersGetResponse22 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemMailParametersModifyRequest(OCIRequest):
    """Request to modify Mail system parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        primary_server_net_address (Optional[Nillable[str]]):

        secondary_server_net_address (Optional[Nillable[str]]):

        default_from_address (Optional[str]):

        default_subject (Optional[Nillable[str]]):

        support_dnssrv_for_mail_server_access (Optional[bool]):

        secure_mode (Optional[str]):

        port (Optional[Nillable[int]]):

    """

    primary_server_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "primaryServerNetAddress"}
    )

    secondary_server_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "secondaryServerNetAddress"}
    )

    default_from_address: Optional[str] = field(
        default=None, metadata={"alias": "defaultFromAddress"}
    )

    default_subject: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultSubject"}
    )

    support_dnssrv_for_mail_server_access: Optional[bool] = field(
        default=None, metadata={"alias": "supportDNSSRVForMailServerAccess"}
    )

    secure_mode: Optional[str] = field(default=None, metadata={"alias": "secureMode"})

    port: Optional[Nillable[int]] = field(default=None, metadata={"alias": "port"})

    def __post_init__(self):
        nillable_fields = [
            "primary_server_net_address",
            "secondary_server_net_address",
            "default_subject",
            "port",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemMaliciousCallTraceGetRequest(OCIRequest):
    """Get Malicious Call Trace system parameters and the list of users that use the
        Malicious Call Trace feature.
        The response is either a SystemMaliciousCallTraceGetResponse or
        an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemMaliciousCallTraceModifyRequest(OCIRequest):
    """Modify a Malicious Call Trace system parameter.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        play_mct_warning_announcement (Optional[bool]):

    """

    play_mct_warning_announcement: Optional[bool] = field(
        default=None, metadata={"alias": "playMCTWarningAnnouncement"}
    )


@dataclass(kw_only=True)
class SystemMccMncHomeNetworkAddRequest(OCIRequest):
    """Adds a Mcc/Mnc home network.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        home_network_mcc_mnc (str):

    """

    home_network_mcc_mnc: str = field(metadata={"alias": "homeNetworkMccMnc"})


@dataclass(kw_only=True)
class SystemMccMncHomeNetworkDeleteRequest(OCIRequest):
    """Deletes a Mcc/Mnc home network.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        home_network_mcc_mnc (str):

    """

    home_network_mcc_mnc: str = field(metadata={"alias": "homeNetworkMccMnc"})


@dataclass(kw_only=True)
class SystemMccMncHomeNetworkGetListRequest(OCIRequest):
    """Get a list of Mcc/Mnc home networks at the system level.
        The response is either SystemMccMncHomeNetworkGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemMediaAddRequest16(OCIRequest):
    """Request to add a Media to the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        media_name (str):

        codec_name (str):

        media_type (str):

        bandwidth_enforcement_type (str):

        media_bandwidth (Optional[int]):

    """

    media_name: str = field(metadata={"alias": "mediaName"})

    codec_name: str = field(metadata={"alias": "codecName"})

    media_type: str = field(metadata={"alias": "mediaType"})

    bandwidth_enforcement_type: str = field(
        metadata={"alias": "bandwidthEnforcementType"}
    )

    media_bandwidth: Optional[int] = field(
        default=None, metadata={"alias": "mediaBandwidth"}
    )


@dataclass(kw_only=True)
class SystemMediaDeleteRequest(OCIRequest):
    """Request to delete a Media from the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        media_name (str):

    """

    media_name: str = field(metadata={"alias": "mediaName"})


@dataclass(kw_only=True)
class SystemMediaGetListRequest(OCIRequest):
    """Request to get a list of media in the system.
        The response is either a SystemMediaGetListResponse or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemMediaGroupAddRequest(OCIRequest):
    """Request to add a media group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemMediaGroupCodecAddRequest(OCIRequest):
    """Request to add a media to a media group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        codec_name (str):

        codec_weight (int):

    """

    name: str = field(metadata={"alias": "name"})

    codec_name: str = field(metadata={"alias": "codecName"})

    codec_weight: int = field(metadata={"alias": "codecWeight"})


@dataclass(kw_only=True)
class SystemMediaGroupCodecDeleteRequest(OCIRequest):
    """Request to delete media from a media group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        codec_name (str):

    """

    name: str = field(metadata={"alias": "name"})

    codec_name: str = field(metadata={"alias": "codecName"})


@dataclass(kw_only=True)
class SystemMediaGroupCodecGetListRequest(OCIRequest):
    """Request to get the list of media under a media group.
        The response is either SystemMediaGroupCodecGetListResponse or ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemMediaGroupCodecModifyRequest(OCIRequest):
    """Request to modify a media associated with a media group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        codec_name (str):

        codec_weight (Optional[int]):

    """

    name: str = field(metadata={"alias": "name"})

    codec_name: str = field(metadata={"alias": "codecName"})

    codec_weight: Optional[int] = field(default=None, metadata={"alias": "codecWeight"})


@dataclass(kw_only=True)
class SystemMediaGroupDeleteRequest(OCIRequest):
    """Request to delete a media group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemMediaGroupGetListRequest(OCIRequest):
    """Request to get the list of media groups.
        The response is either SystemMediaGroupGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemMediaGroupModifyRequest(OCIRequest):
    """Request to modify a media group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        new_name (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})


@dataclass(kw_only=True)
class SystemMediaGroupUsageListRequest(OCIRequest):
    """Request to get the list of SAC groups associated with a media group.
        The response is either SystemMediaGroupUsageResponse or ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemMediaModifyRequest(OCIRequest):
    """Request to modify a media.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        media_name (str):

        codec_name (Optional[str]):

        bandwidth_enforcement_type (Optional[str]):

        media_bandwidth (Optional[Nillable[int]]):

    """

    media_name: str = field(metadata={"alias": "mediaName"})

    codec_name: Optional[str] = field(default=None, metadata={"alias": "codecName"})

    bandwidth_enforcement_type: Optional[str] = field(
        default=None, metadata={"alias": "bandwidthEnforcementType"}
    )

    media_bandwidth: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "mediaBandwidth"}
    )

    def __post_init__(self):
        nillable_fields = ["media_bandwidth"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemMediaServerAddRequest14(OCIRequest):
    """Request to add a Media Server to the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        net_address (str):

        port (Optional[int]):

        transport_protocol (str):

        description (Optional[str]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    transport_protocol: str = field(metadata={"alias": "transportProtocol"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemMediaServerDeleteRequest(OCIRequest):
    """Request to delete a Media Server from the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        net_address (str):

    """

    net_address: str = field(metadata={"alias": "netAddress"})


@dataclass(kw_only=True)
class SystemMediaServerGetListRequest(OCIRequest):
    """Request to get a list of Media Servers defined in the system.
        The response is either a SystemMediaServerGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemMediaServerModifyRequest(OCIRequest):
    """Request to modify a Media Server in the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        net_address (str):

        port (Optional[Nillable[int]]):

        transport_protocol (Optional[str]):

        description (Optional[Nillable[str]]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    port: Optional[Nillable[int]] = field(default=None, metadata={"alias": "port"})

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["port", "description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemMediaServerParametersGetRequest(OCIRequest):
    """Request to get the list of Media Server system parameters.
        The response is either SystemMediaServerParametersGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemMediaServerParametersModifyRequest(OCIRequest):
    """Request to modify Media Server system parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        media_server_response_timer_milliseconds (Optional[int]):

        media_server_selection_route_timer_milliseconds (Optional[int]):

        use_static_media_server_device (Optional[bool]):

    """

    media_server_response_timer_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "mediaServerResponseTimerMilliseconds"}
    )

    media_server_selection_route_timer_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "mediaServerSelectionRouteTimerMilliseconds"}
    )

    use_static_media_server_device: Optional[bool] = field(
        default=None, metadata={"alias": "useStaticMediaServerDevice"}
    )


@dataclass(kw_only=True)
class SystemMediaSetAddRequest(OCIRequest):
    """Request to add a Media Set.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        set_name (str):

        media_name (List[str]):

    """

    set_name: str = field(metadata={"alias": "setName"})

    media_name: List[str] = field(metadata={"alias": "mediaName"})


@dataclass(kw_only=True)
class SystemMediaSetDeleteRequest(OCIRequest):
    """Request to delete a Media Set.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        set_name (str):

    """

    set_name: str = field(metadata={"alias": "setName"})


@dataclass(kw_only=True)
class SystemMediaSetGetListRequest(OCIRequest):
    """Request to get the list of Media Sets in the system.
        The response is either a SystemMediaSetGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemMediaSetGetRequest(OCIRequest):
    """Request to get a Media Set.
        The response is either a SystemMediaSetGetResponse or an ErrorResponse.

    Attributes:

        set_name (str):

    """

    set_name: str = field(metadata={"alias": "setName"})


@dataclass(kw_only=True)
class SystemMediaSetModifyRequest(OCIRequest):
    """Request to modify a Media Set.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        set_name (str):

        media_name_list (Optional[ReplacementMediaNameList]):

    """

    set_name: str = field(metadata={"alias": "setName"})

    media_name_list: Optional[ReplacementMediaNameList] = field(
        default=None, metadata={"alias": "mediaNameList"}
    )


@dataclass(kw_only=True)
class SystemMeetMeConferencingGetRequest19(OCIRequest):
    """Request the system level data associated with Meet-Me Conferencing functions.
        The response is either a SystemMeetMeConferencingGetResponse19 or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemMeetMeConferencingModifyRequest(OCIRequest):
    """Modify the system level data associated with Meet-Me Conferencing.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        conference_id_length (Optional[int]):

        moderator_pin_length (Optional[int]):

        enable_conference_end_date_restriction (Optional[bool]):

        conference_end_date_restriction_months (Optional[int]):

        delete_expired_conferences_after_hold_period (Optional[bool]):

        expired_conference_hold_period_days (Optional[int]):

        recording_web_app_url (Optional[Nillable[str]]):

        recording_file_format (Optional[str]):

        terminate_after_grace_period (Optional[bool]):

        conference_grace_period_minutes (Optional[MeetMeConferencingConferenceDuration]):

        conference_participant_early_entry_minutes (Optional[int]):

        enable_conference_expiry_notification (Optional[bool]):

        enable_active_conference_notification (Optional[bool]):

        conference_from_address (Optional[str]):

        conference_active_talker_refresh_interval_seconds (Optional[int]):

    """

    conference_id_length: Optional[int] = field(
        default=None, metadata={"alias": "conferenceIdLength"}
    )

    moderator_pin_length: Optional[int] = field(
        default=None, metadata={"alias": "moderatorPinLength"}
    )

    enable_conference_end_date_restriction: Optional[bool] = field(
        default=None, metadata={"alias": "enableConferenceEndDateRestriction"}
    )

    conference_end_date_restriction_months: Optional[int] = field(
        default=None, metadata={"alias": "conferenceEndDateRestrictionMonths"}
    )

    delete_expired_conferences_after_hold_period: Optional[bool] = field(
        default=None, metadata={"alias": "deleteExpiredConferencesAfterHoldPeriod"}
    )

    expired_conference_hold_period_days: Optional[int] = field(
        default=None, metadata={"alias": "expiredConferenceHoldPeriodDays"}
    )

    recording_web_app_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "recordingWebAppURL"}
    )

    recording_file_format: Optional[str] = field(
        default=None, metadata={"alias": "recordingFileFormat"}
    )

    terminate_after_grace_period: Optional[bool] = field(
        default=None, metadata={"alias": "terminateAfterGracePeriod"}
    )

    conference_grace_period_minutes: Optional[MeetMeConferencingConferenceDuration] = (
        field(default=None, metadata={"alias": "conferenceGracePeriodMinutes"})
    )

    conference_participant_early_entry_minutes: Optional[int] = field(
        default=None, metadata={"alias": "conferenceParticipantEarlyEntryMinutes"}
    )

    enable_conference_expiry_notification: Optional[bool] = field(
        default=None, metadata={"alias": "enableConferenceExpiryNotification"}
    )

    enable_active_conference_notification: Optional[bool] = field(
        default=None, metadata={"alias": "enableActiveConferenceNotification"}
    )

    conference_from_address: Optional[str] = field(
        default=None, metadata={"alias": "conferenceFromAddress"}
    )

    conference_active_talker_refresh_interval_seconds: Optional[int] = field(
        default=None, metadata={"alias": "conferenceActiveTalkerRefreshIntervalSeconds"}
    )

    def __post_init__(self):
        nillable_fields = ["recording_web_app_url"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemMigratedUsersGetListRequest22(OCIRequest):
    """Get a list of migrated users.
        If the optional parameter userListSizeLimit is set, then the list returned in the response will contain entries up to value of userListSizeLimit.
        The response is either SystemMigratedUsersGetListResponse22 or ErrorResponse.

    Attributes:

        user_list_size_limit (Optional[int]):

    """

    user_list_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "userListSizeLimit"}
    )


@dataclass(kw_only=True)
class SystemMultimediaPolicyGetRequest(OCIRequest):
    """Request the system level data associated with Multimedia Policy.
        The response is either a SystemMultimediaPolicyGetResponse or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemMultimediaPolicyModifyRequest(OCIRequest):
    """Modify the system level data associated with Multimedia Policy.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        restrict_non_audio_video_media_types (Optional[bool]):

    """

    restrict_non_audio_video_media_types: Optional[bool] = field(
        default=None, metadata={"alias": "restrictNonAudioVideoMediaTypes"}
    )


@dataclass(kw_only=True)
class SystemMusicOnHoldGetRequest(OCIRequest):
    """Request the system level data associated with Music On Hold.
        The response is either a SystemMusicOnHoldGetResponse or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemMusicOnHoldModifyRequest(OCIRequest):
    """Modify the system level data associated with Music On Hold.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        delay_milliseconds (Optional[int]):

    """

    delay_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "delayMilliseconds"}
    )


@dataclass(kw_only=True)
class SystemNetworkAdministratorParametersGetRequest(OCIRequest):
    """Get the network administrator settings for the system.
        The response is either a SystemNetworkAdministratorParametersGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemNetworkAdministratorParametersModifyRequest(OCIRequest):
    """Modify the network administrator settings for the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        enabled (Optional[bool]):

        cache_refresh_interval_in_minutes (Optional[int]):

    """

    enabled: Optional[bool] = field(default=None, metadata={"alias": "enabled"})

    cache_refresh_interval_in_minutes: Optional[int] = field(
        default=None, metadata={"alias": "cacheRefreshIntervalInMinutes"}
    )


@dataclass(kw_only=True)
class SystemNetworkClassOfServiceAddRequest(OCIRequest):
    """Add a new Network Class of Service.
        The following elements are only used in AS data mode:
          callProcessingPolicyProfileName

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        description (Optional[str]):

        communication_barring_profile0 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        communication_barring_profile1 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        communication_barring_profile2 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        communication_barring_profile3 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        communication_barring_profile4 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        communication_barring_profile5 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        communication_barring_profile6 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        communication_barring_profile7 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        communication_barring_profile8 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        communication_barring_profile9 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        network_translation_index (Optional[str]):

        call_processing_policy_profile_name (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    communication_barring_profile0: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile0"})

    communication_barring_profile1: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile1"})

    communication_barring_profile2: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile2"})

    communication_barring_profile3: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile3"})

    communication_barring_profile4: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile4"})

    communication_barring_profile5: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile5"})

    communication_barring_profile6: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile6"})

    communication_barring_profile7: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile7"})

    communication_barring_profile8: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile8"})

    communication_barring_profile9: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile9"})

    network_translation_index: Optional[str] = field(
        default=None, metadata={"alias": "networkTranslationIndex"}
    )

    call_processing_policy_profile_name: Optional[str] = field(
        default=None, metadata={"alias": "callProcessingPolicyProfileName"}
    )


@dataclass(kw_only=True)
class SystemNetworkClassOfServiceDeleteRequest(OCIRequest):
    """Delete a Network Class of Service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemNetworkClassOfServiceGetAssignedServiceProviderListRequest(OCIRequest):
    """Request a list of service providers that have a given Network Class
        of Service assigned.
        The response is either a
        SystemNetworkClassOfServiceGetAssignedServiceProviderListResponse or
        ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemNetworkClassOfServiceGetAssignedSystemVoicePortalListRequest(OCIRequest):
    """Request a list of system voice portals that have a given Network Class
        of Service assigned.
        The response is either a
        SystemNetworkClassOfServiceGetAssignedSystemVoicePortalListResponse or
        ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemNetworkClassOfServiceGetCommunicationBarringProfileUsageListRequest(
    OCIRequest
):
    """Get the list of Network Classes of Service that contain a specific
        Communication Barring Profile.
        The response is either a SystemNetworkClassOfServiceGetCommunicationBarringProfileUsageListResponse
        or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemNetworkClassOfServiceGetListRequest(OCIRequest):
    """Get the list of all Network Classes of Service.
        The response is either a SystemNetworkClassOfServiceGetListResponse
        or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemNetworkClassOfServiceGetRequest19sp1(OCIRequest):
    """Get an existing Network Class of Service.
        The response is either a SystemNetworkClassOfServiceGetResponse19sp1
        or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemNetworkClassOfServiceModifyRequest(OCIRequest):
    """Modify an existing Network Class of Service.
        The following elements are only used in AS data mode:
          callProcessingPolicyProfileName

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        new_name (Optional[str]):

        description (Optional[Nillable[str]]):

        communication_barring_profile0 (Optional[Nillable[NetworkClassOfServiceCommunicationBarringProfile]]):

        communication_barring_profile1 (Optional[Nillable[NetworkClassOfServiceCommunicationBarringProfile]]):

        communication_barring_profile2 (Optional[Nillable[NetworkClassOfServiceCommunicationBarringProfile]]):

        communication_barring_profile3 (Optional[Nillable[NetworkClassOfServiceCommunicationBarringProfile]]):

        communication_barring_profile4 (Optional[Nillable[NetworkClassOfServiceCommunicationBarringProfile]]):

        communication_barring_profile5 (Optional[Nillable[NetworkClassOfServiceCommunicationBarringProfile]]):

        communication_barring_profile6 (Optional[Nillable[NetworkClassOfServiceCommunicationBarringProfile]]):

        communication_barring_profile7 (Optional[Nillable[NetworkClassOfServiceCommunicationBarringProfile]]):

        communication_barring_profile8 (Optional[Nillable[NetworkClassOfServiceCommunicationBarringProfile]]):

        communication_barring_profile9 (Optional[Nillable[NetworkClassOfServiceCommunicationBarringProfile]]):

        network_translation_index (Optional[Nillable[str]]):

        call_processing_policy_profile_name (Optional[Nillable[str]]):

    """

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    communication_barring_profile0: Optional[
        Nillable[NetworkClassOfServiceCommunicationBarringProfile]
    ] = field(default=None, metadata={"alias": "communicationBarringProfile0"})

    communication_barring_profile1: Optional[
        Nillable[NetworkClassOfServiceCommunicationBarringProfile]
    ] = field(default=None, metadata={"alias": "communicationBarringProfile1"})

    communication_barring_profile2: Optional[
        Nillable[NetworkClassOfServiceCommunicationBarringProfile]
    ] = field(default=None, metadata={"alias": "communicationBarringProfile2"})

    communication_barring_profile3: Optional[
        Nillable[NetworkClassOfServiceCommunicationBarringProfile]
    ] = field(default=None, metadata={"alias": "communicationBarringProfile3"})

    communication_barring_profile4: Optional[
        Nillable[NetworkClassOfServiceCommunicationBarringProfile]
    ] = field(default=None, metadata={"alias": "communicationBarringProfile4"})

    communication_barring_profile5: Optional[
        Nillable[NetworkClassOfServiceCommunicationBarringProfile]
    ] = field(default=None, metadata={"alias": "communicationBarringProfile5"})

    communication_barring_profile6: Optional[
        Nillable[NetworkClassOfServiceCommunicationBarringProfile]
    ] = field(default=None, metadata={"alias": "communicationBarringProfile6"})

    communication_barring_profile7: Optional[
        Nillable[NetworkClassOfServiceCommunicationBarringProfile]
    ] = field(default=None, metadata={"alias": "communicationBarringProfile7"})

    communication_barring_profile8: Optional[
        Nillable[NetworkClassOfServiceCommunicationBarringProfile]
    ] = field(default=None, metadata={"alias": "communicationBarringProfile8"})

    communication_barring_profile9: Optional[
        Nillable[NetworkClassOfServiceCommunicationBarringProfile]
    ] = field(default=None, metadata={"alias": "communicationBarringProfile9"})

    network_translation_index: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "networkTranslationIndex"}
    )

    call_processing_policy_profile_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callProcessingPolicyProfileName"}
    )

    def __post_init__(self):
        nillable_fields = [
            "description",
            "communication_barring_profile0",
            "communication_barring_profile1",
            "communication_barring_profile2",
            "communication_barring_profile3",
            "communication_barring_profile4",
            "communication_barring_profile5",
            "communication_barring_profile6",
            "communication_barring_profile7",
            "communication_barring_profile8",
            "communication_barring_profile9",
            "network_translation_index",
            "call_processing_policy_profile_name",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemNetworkDeviceMonitorParametersGetRequest(OCIRequest):
    """Request to get the list of Network Device Polling system parameters.
        The response is either SystemNetworkDeviceMonitorParametersGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemNetworkDeviceMonitorParametersModifyRequest(OCIRequest):
    """Request to modify Network Device Polling system parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        polling_interval_minutes (Optional[int]):

        failed_polling_interval_minutes (Optional[int]):

    """

    polling_interval_minutes: Optional[int] = field(
        default=None, metadata={"alias": "pollingIntervalMinutes"}
    )

    failed_polling_interval_minutes: Optional[int] = field(
        default=None, metadata={"alias": "failedPollingIntervalMinutes"}
    )


@dataclass(kw_only=True)
class SystemNetworkProgressionGetRequest(OCIRequest):
    """Request the system level data associated with network progression.
        The response is either a SystemNetworkProgressionGetResponse or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemNetworkProgressionModifyRequest(OCIRequest):
    """Modify the system level data associated with network progression.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        is_active (Optional[bool]):

        wait_period_seconds (Optional[int]):

    """

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    wait_period_seconds: Optional[int] = field(
        default=None, metadata={"alias": "waitPeriodSeconds"}
    )


@dataclass(kw_only=True)
class SystemNetworkRoutingServerAddRequest(OCIRequest):
    """Request to add a routing Network Server to the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        net_address (str):

        port (Optional[int]):

        transport_protocol (str):

        poll (bool):

        description (Optional[str]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    transport_protocol: str = field(metadata={"alias": "transportProtocol"})

    poll: bool = field(metadata={"alias": "poll"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemNetworkRoutingServerDeleteRequest(OCIRequest):
    """Request to delete a routing Network Server from the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        net_address (str):

    """

    net_address: str = field(metadata={"alias": "netAddress"})


@dataclass(kw_only=True)
class SystemNetworkRoutingServerGetListRequest(OCIRequest):
    """Request to get a list of routing Network Servers defined in the system.
        The response is either a SystemNetworkRoutingServerGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemNetworkRoutingServerModifyRequest(OCIRequest):
    """Request to modify a routing Network Server in the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        net_address (str):

        port (Optional[Nillable[int]]):

        transport_protocol (Optional[str]):

        poll (Optional[bool]):

        description (Optional[Nillable[str]]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    port: Optional[Nillable[int]] = field(default=None, metadata={"alias": "port"})

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    poll: Optional[bool] = field(default=None, metadata={"alias": "poll"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["port", "description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemNetworkServerSyncParametersGetRequest24V2(OCIRequest):
    """Request to get the list of Network Server Sync system parameters.
        The response is either SystemNetworkServerSyncParametersGetResponse24V2 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemNetworkServerSyncParametersModifyRequest(OCIRequest):
    """Request to modify Network Server Sync system parameters.
        The response is either SuccessResponse or ErrorResponse.
        The following elements are only used in AS data mode:
          syncTrunkGroups
          syncConnectionTimeoutSeconds

    Attributes:

        enable_sync (Optional[bool]):

        sync_line_ports (Optional[bool]):

        sync_device_management_info (Optional[bool]):

        sync_trunk_groups (Optional[bool]):

        sync_connection_timeout_seconds (Optional[int]):

        sync_enterprise_numbers (Optional[bool]):

    """

    enable_sync: Optional[bool] = field(default=None, metadata={"alias": "enableSync"})

    sync_line_ports: Optional[bool] = field(
        default=None, metadata={"alias": "syncLinePorts"}
    )

    sync_device_management_info: Optional[bool] = field(
        default=None, metadata={"alias": "syncDeviceManagementInfo"}
    )

    sync_trunk_groups: Optional[bool] = field(
        default=None, metadata={"alias": "syncTrunkGroups"}
    )

    sync_connection_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "syncConnectionTimeoutSeconds"}
    )

    sync_enterprise_numbers: Optional[bool] = field(
        default=None, metadata={"alias": "syncEnterpriseNumbers"}
    )


@dataclass(kw_only=True)
class SystemNetworkSynchingServerAddRequest22V2(OCIRequest):
    """Request to add a Network Server to the system.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in XS data mode and ignored in AS data mode:
          order

    Attributes:

        net_address (str):

        port (int):

        description (Optional[str]):

        order (Optional[int]):

        secure (bool):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    port: int = field(metadata={"alias": "port"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    order: Optional[int] = field(default=None, metadata={"alias": "order"})

    secure: bool = field(metadata={"alias": "secure"})


@dataclass(kw_only=True)
class SystemNetworkSynchingServerDeleteRequest(OCIRequest):
    """Request to delete a Network Server from the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        net_address (str):

    """

    net_address: str = field(metadata={"alias": "netAddress"})


@dataclass(kw_only=True)
class SystemNetworkSynchingServerGetListRequest(OCIRequest):
    """Request to get a list of Network Servers defined in the system.
        The response is either a SystemNetworkSynchingServerGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemNetworkSynchingServerModifyRequest22(OCIRequest):
    """Request to modify a Network Server in the system.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
          becomePreferred
        The following elements are only used in XS data mode and ignored in AS data mode:
          order

    Attributes:

        net_address (str):

        port (Optional[int]):

        description (Optional[Nillable[str]]):

        become_preferred (Optional[bool]):

        order (Optional[int]):

        secure (Optional[bool]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    become_preferred: Optional[bool] = field(
        default=None, metadata={"alias": "becomePreferred"}
    )

    order: Optional[int] = field(default=None, metadata={"alias": "order"})

    secure: Optional[bool] = field(default=None, metadata={"alias": "secure"})

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemNotificationOfReachabilityParametersGetRequest(OCIRequest):
    """Request to get the system Notification of Reachability parameters.
        The response is either SystemNotificationOfReachabilityParametersGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemNotificationOfReachabilityParametersModifyRequest(OCIRequest):
    """Request to modify the system Notification of Reachability parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        enable_no_r (Optional[bool]):

        always_send_third_party_v_mfor_unreachable (Optional[bool]):

        disable_fa_cfor_third_party_voice_mail (Optional[bool]):

    """

    enable_no_r: Optional[bool] = field(default=None, metadata={"alias": "enableNoR"})

    always_send_third_party_v_mfor_unreachable: Optional[bool] = field(
        default=None, metadata={"alias": "alwaysSendThirdPartyVMforUnreachable"}
    )

    disable_fa_cfor_third_party_voice_mail: Optional[bool] = field(
        default=None, metadata={"alias": "disableFACforThirdPartyVoiceMail"}
    )


@dataclass(kw_only=True)
class SystemNumberActivationGetRequest21(OCIRequest):
    """Request to get the number activation state and enterprise trunk number range activation status.
        The response is either SystemNumberActivationGetResponse21 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemNumberActivationModifyRequest18sp1(OCIRequest):
    """Request to modify system number activation and enterprise trunk number range activation setting.
        The response is either SuccessResponse or ErrorResponse.

        The following element values are only applicable in AS data mode:
          enableEnterpriseTrunkNumberRangeActivation
          numberActivationMode = Group And User Activation Enabled will raise an error in XS data mode.

    Attributes:

        number_activation_mode (Optional[str]):

        enable_enterprise_trunk_number_range_activation (Optional[bool]):

    """

    number_activation_mode: Optional[str] = field(
        default=None, metadata={"alias": "numberActivationMode"}
    )

    enable_enterprise_trunk_number_range_activation: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnterpriseTrunkNumberRangeActivation"}
    )


@dataclass(kw_only=True)
class SystemNumberFormattingParametersGetRequest(OCIRequest):
    """Request to get the system number formatting parameters.
        The response is either SystemNumberFormattingParametersGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemNumberFormattingParametersModifyRequest(OCIRequest):
    """Request to modify the system number formatting parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        apply_formatting_to_e164_numbers (Optional[bool]):

    """

    apply_formatting_to_e164_numbers: Optional[bool] = field(
        default=None, metadata={"alias": "applyFormattingToE164Numbers"}
    )


@dataclass(kw_only=True)
class SystemNumberPortabilityQueryDigitPatternAddRequest(OCIRequest):
    """Request to add a System Number Portability Query Status Digit Pattern mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        digit_pattern (str):

        status (str):

    """

    digit_pattern: str = field(metadata={"alias": "digitPattern"})

    status: str = field(metadata={"alias": "status"})


@dataclass(kw_only=True)
class SystemNumberPortabilityQueryDigitPatternDeleteListRequest(OCIRequest):
    """Request to delete a list of System Number Portability Status Digit Pattern mappings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        digit_pattern (List[str]):

    """

    digit_pattern: List[str] = field(metadata={"alias": "digitPattern"})


@dataclass(kw_only=True)
class SystemNumberPortabilityQueryDigitPatternGetListRequest(OCIRequest):
    """Request to get the System Number Portability Query Digit Pattern List information.
        The response is either a SystemNumberPortabilityQueryDigitPatternGetListResponse or an ErrorResponse.

    Attributes:

        search_criteria_number_portability_query_digit_pattern (Optional[List[SearchCriteriaNumberPortabilityQueryDigitPattern]]):

        search_criteria_number_portability_status (Optional[List[SearchCriteriaNumberPortabilityStatus]]):

        response_size_limit (Optional[int]):

    """

    search_criteria_number_portability_query_digit_pattern: Optional[
        List[SearchCriteriaNumberPortabilityQueryDigitPattern]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaNumberPortabilityQueryDigitPattern"},
    )

    search_criteria_number_portability_status: Optional[
        List[SearchCriteriaNumberPortabilityStatus]
    ] = field(default=None, metadata={"alias": "searchCriteriaNumberPortabilityStatus"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )


@dataclass(kw_only=True)
class SystemNumberPortabilityQueryDigitPatternGetRequest(OCIRequest):
    """Request to get a System Number Portability Status Digit Pattern mapping.
        The response is either a SystemNumberPortabilityQueryDigitPatternGetResponse or an ErrorResponse.

    Attributes:

        digit_pattern (str):

    """

    digit_pattern: str = field(metadata={"alias": "digitPattern"})


@dataclass(kw_only=True)
class SystemNumberPortabilityQueryDigitPatternModifyRequest(OCIRequest):
    """Request to modify a System Number Portability Status Digit Pattern mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        digit_pattern (str):

        new_digit_pattern (Optional[str]):

        status (Optional[str]):

    """

    digit_pattern: str = field(metadata={"alias": "digitPattern"})

    new_digit_pattern: Optional[str] = field(
        default=None, metadata={"alias": "newDigitPattern"}
    )

    status: Optional[str] = field(default=None, metadata={"alias": "status"})


@dataclass(kw_only=True)
class SystemNumberPortabilityQueryGetRequest(OCIRequest):
    """Get system Number Portability Query Parameters.
        The response is either SystemNumberPortabilityQueryGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemNumberPortabilityQueryModifyRequest(OCIRequest):
    """Modify system Number Portability Query Parameters.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        continue_call_as_dialed_on_timeout_or_error (Optional[bool]):

        number_portability_name_lookup_timeout_milliseconds (Optional[int]):

    """

    continue_call_as_dialed_on_timeout_or_error: Optional[bool] = field(
        default=None, metadata={"alias": "continueCallAsDialedOnTimeoutOrError"}
    )

    number_portability_name_lookup_timeout_milliseconds: Optional[int] = field(
        default=None,
        metadata={"alias": "numberPortabilityNameLookupTimeoutMilliseconds"},
    )


@dataclass(kw_only=True)
class SystemNumberPortabilityQueryStatusAddRequest(OCIRequest):
    """Add a system number portability status information.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        status (str):

        treatment_file_name (Optional[str]):

    """

    status: str = field(metadata={"alias": "status"})

    treatment_file_name: Optional[str] = field(
        default=None, metadata={"alias": "treatmentFileName"}
    )


@dataclass(kw_only=True)
class SystemNumberPortabilityQueryStatusDeleteListRequest(OCIRequest):
    """Delete a list of system number portability query statuses.
        The number of status entries is limited to 100.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        status (List[str]):

    """

    status: List[str] = field(metadata={"alias": "status"})


@dataclass(kw_only=True)
class SystemNumberPortabilityQueryStatusGetListRequest(OCIRequest):
    """Get a list system Number Portability Query Statuses.
        The response is either SystemNumberPortabilityQueryStatusGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemNumberPortabilityQueryStatusGetRequest(OCIRequest):
    """Get information for a system Number Portability Query Status.
        The response is either SystemNumberPortabilityQueryStatusGetResponse or ErrorResponse.

    Attributes:

        status (str):

    """

    status: str = field(metadata={"alias": "status"})


@dataclass(kw_only=True)
class SystemNumberPortabilityQueryStatusModifyRequest(OCIRequest):
    """Modify the system number portability status information.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        status_name (str):

        new_status_name (Optional[str]):

        treatment_file_name (Optional[Nillable[str]]):

    """

    status_name: str = field(metadata={"alias": "statusName"})

    new_status_name: Optional[str] = field(
        default=None, metadata={"alias": "newStatusName"}
    )

    treatment_file_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "treatmentFileName"}
    )

    def __post_init__(self):
        nillable_fields = ["treatment_file_name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemOCIAddACLEntryRequest(OCIRequest):
    """Add an entry to the OCI access control list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        net_address (str):

        description (Optional[str]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemOCICallControlAddACLEntryRequest(OCIRequest):
    """Add an entry to the OCI call control access control list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        net_address (str):

        description (Optional[str]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemOCICallControlApplicationAddACLEntryRequest(OCIRequest):
    """Add an entry to the OCI call control application access control list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        application_id (str):

        net_address (str):

        description (Optional[str]):

    """

    application_id: str = field(metadata={"alias": "applicationId"})

    net_address: str = field(metadata={"alias": "netAddress"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemOCICallControlApplicationAddRequest22(OCIRequest):
    """Add an application to the OCI call control application list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        application_id (str):

        enable_system_wide (bool):

        notification_timeout_seconds (int):

        description (Optional[str]):

        max_event_channels_per_set (int):

        unresponsive_channel_set_grace_period_seconds (int):

    """

    application_id: str = field(metadata={"alias": "applicationId"})

    enable_system_wide: bool = field(metadata={"alias": "enableSystemWide"})

    notification_timeout_seconds: int = field(
        metadata={"alias": "notificationTimeoutSeconds"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    max_event_channels_per_set: int = field(
        metadata={"alias": "maxEventChannelsPerSet"}
    )

    unresponsive_channel_set_grace_period_seconds: int = field(
        metadata={"alias": "unresponsiveChannelSetGracePeriodSeconds"}
    )


@dataclass(kw_only=True)
class SystemOCICallControlApplicationDeleteACLEntryRequest(OCIRequest):
    """Delete an entry from the OCI call control application access control list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        application_id (str):

        net_address (str):

    """

    application_id: str = field(metadata={"alias": "applicationId"})

    net_address: str = field(metadata={"alias": "netAddress"})


@dataclass(kw_only=True)
class SystemOCICallControlApplicationDeleteRequest(OCIRequest):
    """Delete an entry from the OCI call control application list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        application_id (str):

    """

    application_id: str = field(metadata={"alias": "applicationId"})


@dataclass(kw_only=True)
class SystemOCICallControlApplicationGetACLListRequest(OCIRequest):
    """Get the OCI call control access control list.
        The response is either SystemOCICallControlApplicationGetACLListResponse or ErrorResponse.

    Attributes:

        application_id (str):

    """

    application_id: str = field(metadata={"alias": "applicationId"})


@dataclass(kw_only=True)
class SystemOCICallControlApplicationGetListRequest(OCIRequest):
    """Get the OCI call control application list.
        The response is either SystemOCICallControlApplicationGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemOCICallControlApplicationModifyACLEntryRequest(OCIRequest):
    """Modify an entry from the call control access control list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        application_id (str):

        net_address (str):

        description (Optional[Nillable[str]]):

    """

    application_id: str = field(metadata={"alias": "applicationId"})

    net_address: str = field(metadata={"alias": "netAddress"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemOCICallControlApplicationModifyRequest(OCIRequest):
    """Modify an application from the OCI call control application list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        application_id (str):

        enable_system_wide (Optional[bool]):

        notification_timeout_seconds (Optional[int]):

        description (Optional[Nillable[str]]):

        max_event_channels_per_set (Optional[int]):

        unresponsive_channel_set_grace_period_seconds (Optional[int]):

    """

    application_id: str = field(metadata={"alias": "applicationId"})

    enable_system_wide: Optional[bool] = field(
        default=None, metadata={"alias": "enableSystemWide"}
    )

    notification_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "notificationTimeoutSeconds"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    max_event_channels_per_set: Optional[int] = field(
        default=None, metadata={"alias": "maxEventChannelsPerSet"}
    )

    unresponsive_channel_set_grace_period_seconds: Optional[int] = field(
        default=None, metadata={"alias": "unresponsiveChannelSetGracePeriodSeconds"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemOCICallControlDeleteACLEntryRequest(OCIRequest):
    """Delete an entry from the OCI call control access control list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        net_address (str):

    """

    net_address: str = field(metadata={"alias": "netAddress"})


@dataclass(kw_only=True)
class SystemOCICallControlGetACLListRequest(OCIRequest):
    """Get the OCI call control access control list.
        The response is either SystemOCICallControlGetACLListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemOCICallControlModifyACLEntryRequest(OCIRequest):
    """Modify an entry from the call control access control list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        net_address (str):

        description (Optional[Nillable[str]]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemOCIDeleteACLEntryRequest(OCIRequest):
    """Delete an entry from the OCI access control list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        net_address (str):

    """

    net_address: str = field(metadata={"alias": "netAddress"})


@dataclass(kw_only=True)
class SystemOCIGetACLListRequest(OCIRequest):
    """Get the OCI access control list.
        The response is either SystemOCIGetACLListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemOCIModifyACLEntryRequest(OCIRequest):
    """Modify an entry in the OCI access control list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        net_address (str):

        description (Optional[Nillable[str]]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemOCIReportingAddACLEntryRequest13mp9(OCIRequest):
    """Add an entry to the OCI Reporting Access Control List.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        net_address (str):

        description (Optional[str]):

        restrict_messages (bool):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    restrict_messages: bool = field(metadata={"alias": "restrictMessages"})


@dataclass(kw_only=True)
class SystemOCIReportingAddMessageNameListRequest(OCIRequest):
    """Add a list of reported messages for a host in the OCI Reporting
        Access Control List. The response is either a SuccessResponse or an
        ErrorResponse.

    Attributes:

        net_address (str):

        message_name_starts_with (List[str]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    message_name_starts_with: List[str] = field(
        metadata={"alias": "messageNameStartsWith"}
    )


@dataclass(kw_only=True)
class SystemOCIReportingDeleteACLEntryRequest(OCIRequest):
    """Delete an entry from the OCI Reporting Access Control List.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        net_address (str):

    """

    net_address: str = field(metadata={"alias": "netAddress"})


@dataclass(kw_only=True)
class SystemOCIReportingDeleteMessageNameListRequest(OCIRequest):
    """Delete a list of reported messages from a host in the OCI Reporting
        Access Control List. The response is either a SuccessResponse or an
        ErrorResponse.

    Attributes:

        net_address (str):

        delete_all_message_names (Optional[bool]):

        message_name_starts_with (Optional[List[str]]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    delete_all_message_names: Optional[bool] = field(
        default=None, metadata={"alias": "deleteAllMessageNames"}
    )

    message_name_starts_with: Optional[List[str]] = field(
        default=None, metadata={"alias": "messageNameStartsWith"}
    )


@dataclass(kw_only=True)
class SystemOCIReportingGetACLListRequest(OCIRequest):
    """Get the OCI Reporting Access Control List.
        The response is either a SystemOCIReportingACLListGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemOCIReportingGetMessageNameListRequest(OCIRequest):
    """Get a list of restricted messages from a host in the OCI Reporting
        Access Control List. The response is either a
        SystemOCIReportingGetMessageNameListResponse or an ErrorResponse.

    Attributes:

        net_address (str):

    """

    net_address: str = field(metadata={"alias": "netAddress"})


@dataclass(kw_only=True)
class SystemOCIReportingModifyACLEntryRequest(OCIRequest):
    """Modify the description on an entry in the OCI Reporting Access Control List.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        net_address (str):

        description (Optional[Nillable[str]]):

        restrict_messages (Optional[bool]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    restrict_messages: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMessages"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemOCIReportingParametersGetRequest22(OCIRequest):
    """Request to get the list of OCIReporting system parameters.
        The response is either SystemOCIReportingParametersGetResponse22 or
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemOCIReportingParametersModifyRequest(OCIRequest):
    """Request to modify OCI Reporting system parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        server_port (Optional[int]):

        enable_connection_ping (Optional[bool]):

        connection_ping_interval_seconds (Optional[int]):

        alter_passwords (Optional[bool]):

        enable_public_identity_reporting (Optional[bool]):

        secure (Optional[bool]):

    """

    server_port: Optional[int] = field(default=None, metadata={"alias": "serverPort"})

    enable_connection_ping: Optional[bool] = field(
        default=None, metadata={"alias": "enableConnectionPing"}
    )

    connection_ping_interval_seconds: Optional[int] = field(
        default=None, metadata={"alias": "connectionPingIntervalSeconds"}
    )

    alter_passwords: Optional[bool] = field(
        default=None, metadata={"alias": "alterPasswords"}
    )

    enable_public_identity_reporting: Optional[bool] = field(
        default=None, metadata={"alias": "enablePublicIdentityReporting"}
    )

    secure: Optional[bool] = field(default=None, metadata={"alias": "secure"})


@dataclass(kw_only=True)
class SystemOfficeZoneAddRequest(OCIRequest):
    """Add a new Office Zone.  The zoneList is an ordered list with the first member being of the highest priority.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        office_zone_name (str):

        description (Optional[str]):

        zone_name (List[str]):

        primary_zone_name (str):

    """

    office_zone_name: str = field(metadata={"alias": "officeZoneName"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    zone_name: List[str] = field(metadata={"alias": "zoneName"})

    primary_zone_name: str = field(metadata={"alias": "primaryZoneName"})


@dataclass(kw_only=True)
class SystemOfficeZoneDeleteRequest(OCIRequest):
    """Delete an Office Zone.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        office_zone_name (str):

    """

    office_zone_name: str = field(metadata={"alias": "officeZoneName"})


@dataclass(kw_only=True)
class SystemOfficeZoneGetAssignedServiceProviderListRequest(OCIRequest):
    """Request a list of service providers that have a given Office Zone assigned.  The response is either a SystemOfficeZoneGetAssignedServiceProviderListResponse or ErrorResponse.

    Attributes:

        office_zone_name (str):

    """

    office_zone_name: str = field(metadata={"alias": "officeZoneName"})


@dataclass(kw_only=True)
class SystemOfficeZoneGetListRequest(OCIRequest):
    """Get the list of all Office Zones.
        The response is either a SystemOfficeZoneGetListResponse
        or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemOfficeZoneGetRequest(OCIRequest):
    """Get an existing Office Zone.
        The response is either a SystemOfficeZoneGetResponse
        or an ErrorResponse.

    Attributes:

        office_zone_name (str):

    """

    office_zone_name: str = field(metadata={"alias": "officeZoneName"})


@dataclass(kw_only=True)
class SystemOfficeZoneGetZoneUsageListRequest(OCIRequest):
    """Get the list of Office Zones that contain a specific
        Zone.
        The response is either a SystemOfficeZoneGetZoneUsageListResponse
        or an ErrorResponse.

    Attributes:

        zone_name (str):

    """

    zone_name: str = field(metadata={"alias": "zoneName"})


@dataclass(kw_only=True)
class SystemOfficeZoneModifyRequest(OCIRequest):
    """Modify an existing Office Zone.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        office_zone_name (str):

        new_office_zone_name (Optional[str]):

        description (Optional[Nillable[str]]):

        replacement_zone_list (Optional[ReplacementZoneList]):

        primary_zone_name (Optional[str]):

    """

    office_zone_name: str = field(metadata={"alias": "officeZoneName"})

    new_office_zone_name: Optional[str] = field(
        default=None, metadata={"alias": "newOfficeZoneName"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    replacement_zone_list: Optional[ReplacementZoneList] = field(
        default=None, metadata={"alias": "replacementZoneList"}
    )

    primary_zone_name: Optional[str] = field(
        default=None, metadata={"alias": "primaryZoneName"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemOutboundProxyCacheParametersGetRequest(OCIRequest):
    """Request to get the list of Outbound Proxy Cache system parameters.
        The response is either SystemOutboundProxyCacheParametersGetResponse or ErrorResponse.

        Note that an error is returned if CloudPBX is not licensed.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemOutboundProxyCacheParametersModifyRequest(OCIRequest):
    """Request to modify Outbound Proxy Cache system parameters.
        The response is either SuccessResponse or ErrorResponse.

        Note that an error is returned if CloudPBX is not licensed.

    Attributes:

        eviction_timeout_minutes (Optional[int]):

        refresh_timeout_minutes (Optional[int]):

        audit_interval_minutes (Optional[int]):

        maximum_cache_size (Optional[int]):

        dns_type_default_value (Optional[Nillable[str]]):

        use_dns_srv_default_value (Optional[Nillable[str]]):

        srv_prefix_default_value (Optional[Nillable[str]]):

        outbound_proxy_default_value (Optional[Nillable[str]]):

        transport_type_default_value (Optional[Nillable[str]]):

        secure_rtp_default_value (Optional[Nillable[str]]):

    """

    eviction_timeout_minutes: Optional[int] = field(
        default=None, metadata={"alias": "evictionTimeoutMinutes"}
    )

    refresh_timeout_minutes: Optional[int] = field(
        default=None, metadata={"alias": "refreshTimeoutMinutes"}
    )

    audit_interval_minutes: Optional[int] = field(
        default=None, metadata={"alias": "auditIntervalMinutes"}
    )

    maximum_cache_size: Optional[int] = field(
        default=None, metadata={"alias": "maximumCacheSize"}
    )

    dns_type_default_value: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "dnsTypeDefaultValue"}
    )

    use_dns_srv_default_value: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "useDnsSrvDefaultValue"}
    )

    srv_prefix_default_value: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "srvPrefixDefaultValue"}
    )

    outbound_proxy_default_value: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "outboundProxyDefaultValue"}
    )

    transport_type_default_value: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "transportTypeDefaultValue"}
    )

    secure_rtp_default_value: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "secureRtpDefaultValue"}
    )

    def __post_init__(self):
        nillable_fields = [
            "dns_type_default_value",
            "use_dns_srv_default_value",
            "srv_prefix_default_value",
            "outbound_proxy_default_value",
            "transport_type_default_value",
            "secure_rtp_default_value",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemOutboundProxyCacheStaleRequest(OCIRequest):
    """Request to stale the Outbound Proxy Cache.
        The response is either SuccessResponse or ErrorResponse.

        Note that an error is returned if CloudPBX is not licensed.

    Attributes:

        reseller_id (Optional[str]):

        service_provider_id (Optional[str]):

    """

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )


@dataclass(kw_only=True)
class SystemOutgoingCallingPlanCallTypeAddMappingRequest(OCIRequest):
    """Add a system outgoing calling plan call type mapping.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        country_code (str):

        digit_map (str):

        call_type (str):

    """

    country_code: str = field(metadata={"alias": "countryCode"})

    digit_map: str = field(metadata={"alias": "digitMap"})

    call_type: str = field(metadata={"alias": "callType"})


@dataclass(kw_only=True)
class SystemOutgoingCallingPlanCallTypeDeleteMappingRequest(OCIRequest):
    """Delete a system outgoing calling plan call type mapping.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        country_code (str):

        digit_map (str):

    """

    country_code: str = field(metadata={"alias": "countryCode"})

    digit_map: str = field(metadata={"alias": "digitMap"})


@dataclass(kw_only=True)
class SystemOutgoingCallingPlanCallTypeGetListRequest(OCIRequest):
    """Request to get the list of call types of outgoing calling plan
        Response is SystemOutgoingCallingPlanCallTypeGetListRequest or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemOutgoingCallingPlanCallTypeGetMappingListRequest(OCIRequest):
    """Get a list of system outgoing calling plan call type mappings.
        The response is either SystemOutgoingCallingPlanCallTypeGetMappingListResponse or ErrorResponse.

    Attributes:

        country_code (Optional[str]):

    """

    country_code: Optional[str] = field(default=None, metadata={"alias": "countryCode"})


@dataclass(kw_only=True)
class SystemOutgoingCallingPlanGetRequest17sp3(OCIRequest):
    """Request the system level data associated with Outgoing Calling Plan.
        The response is either a SystemOutgoingCallingPlanGetResponse17sp3 or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemOutgoingCallingPlanModifyRequest(OCIRequest):
    """Modify the system level data associated with Outgoing Calling Plan.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        direct_transfer_screening (Optional[bool]):

        enable_enhanced_toll_call_typing (Optional[bool]):

    """

    direct_transfer_screening: Optional[bool] = field(
        default=None, metadata={"alias": "directTransferScreening"}
    )

    enable_enhanced_toll_call_typing: Optional[bool] = field(
        default=None, metadata={"alias": "enableEnhancedTollCallTyping"}
    )


@dataclass(kw_only=True)
class SystemPasswordRulesGetRequestRI(OCIRequest):
    """Requests the system's password rules setting applicable to
        System administrator, Provisioning Administrator,
        and/or Service Provider Administrator, Group Administrator, Department Administrator, user.
        The response is either SystemPasswordRulesGetResponseRI or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemPasswordRulesModifyRequestRI(OCIRequest):
    """Request to modify the system providers password rule
        setting applicable to System Adminstrator, Provisioning Administrator,
        and/or Service Provider Administrator, Group Administrator, Department Administrator, User.

        The following elements are only used in AS data mode and ignored in XS data mode:
        forcePasswordChangeAfterReset
        reenableLogin
        lockOutInMinutes

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        rules_apply_to (Optional[str]):

        allow_web_add_external_authentication_users (Optional[bool]):

        disallow_user_id (Optional[bool]):

        disallow_old_password (Optional[bool]):

        disallow_reversed_old_password (Optional[bool]):

        restrict_min_digits (Optional[bool]):

        min_digits (Optional[int]):

        restrict_min_upper_case_letters (Optional[bool]):

        min_upper_case_letters (Optional[int]):

        restrict_min_lower_case_letters (Optional[bool]):

        min_lower_case_letters (Optional[int]):

        restrict_min_non_alphanumeric_characters (Optional[bool]):

        min_non_alphanumeric_characters (Optional[int]):

        min_length (Optional[int]):

        max_failed_login_attempts (Optional[int]):

        password_expires_days (Optional[int]):

        send_login_disabled_notify_email (Optional[bool]):

        login_disabled_notify_email_address (Optional[Nillable[str]]):

        disallow_previous_passwords (Optional[bool]):

        number_of_previous_passwords (Optional[int]):

        force_password_change_after_reset (Optional[bool]):

        enforce_external_auth_for_route_point (Optional[bool]):

        use_password_validation_service (Optional[bool]):

        reenable_login (Optional[bool]):

        lock_out_in_minutes (Optional[int]):

    """

    rules_apply_to: Optional[str] = field(
        default=None, metadata={"alias": "rulesApplyTo"}
    )

    allow_web_add_external_authentication_users: Optional[bool] = field(
        default=None, metadata={"alias": "allowWebAddExternalAuthenticationUsers"}
    )

    disallow_user_id: Optional[bool] = field(
        default=None, metadata={"alias": "disallowUserId"}
    )

    disallow_old_password: Optional[bool] = field(
        default=None, metadata={"alias": "disallowOldPassword"}
    )

    disallow_reversed_old_password: Optional[bool] = field(
        default=None, metadata={"alias": "disallowReversedOldPassword"}
    )

    restrict_min_digits: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinDigits"}
    )

    min_digits: Optional[int] = field(default=None, metadata={"alias": "minDigits"})

    restrict_min_upper_case_letters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinUpperCaseLetters"}
    )

    min_upper_case_letters: Optional[int] = field(
        default=None, metadata={"alias": "minUpperCaseLetters"}
    )

    restrict_min_lower_case_letters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinLowerCaseLetters"}
    )

    min_lower_case_letters: Optional[int] = field(
        default=None, metadata={"alias": "minLowerCaseLetters"}
    )

    restrict_min_non_alphanumeric_characters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinNonAlphanumericCharacters"}
    )

    min_non_alphanumeric_characters: Optional[int] = field(
        default=None, metadata={"alias": "minNonAlphanumericCharacters"}
    )

    min_length: Optional[int] = field(default=None, metadata={"alias": "minLength"})

    max_failed_login_attempts: Optional[int] = field(
        default=None, metadata={"alias": "maxFailedLoginAttempts"}
    )

    password_expires_days: Optional[int] = field(
        default=None, metadata={"alias": "passwordExpiresDays"}
    )

    send_login_disabled_notify_email: Optional[bool] = field(
        default=None, metadata={"alias": "sendLoginDisabledNotifyEmail"}
    )

    login_disabled_notify_email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "loginDisabledNotifyEmailAddress"}
    )

    disallow_previous_passwords: Optional[bool] = field(
        default=None, metadata={"alias": "disallowPreviousPasswords"}
    )

    number_of_previous_passwords: Optional[int] = field(
        default=None, metadata={"alias": "numberOfPreviousPasswords"}
    )

    force_password_change_after_reset: Optional[bool] = field(
        default=None, metadata={"alias": "forcePasswordChangeAfterReset"}
    )

    enforce_external_auth_for_route_point: Optional[bool] = field(
        default=None, metadata={"alias": "enforceExternalAuthForRoutePoint"}
    )

    use_password_validation_service: Optional[bool] = field(
        default=None, metadata={"alias": "usePasswordValidationService"}
    )

    reenable_login: Optional[bool] = field(
        default=None, metadata={"alias": "reenableLogin"}
    )

    lock_out_in_minutes: Optional[int] = field(
        default=None, metadata={"alias": "lockOutInMinutes"}
    )

    def __post_init__(self):
        nillable_fields = ["login_disabled_notify_email_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemPasswordSecurityParametersGetRequest(OCIRequest):
    """Get the password security parameters for the system.
        The response is either a SystemPasswordSecurityParametersGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemPasswordSecurityParametersModifyRequest(OCIRequest):
    """Modify the password security settings for the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        use_existing_hashing (Optional[bool]):

        enforce_password_change_on_expiry (Optional[bool]):

    """

    use_existing_hashing: Optional[bool] = field(
        default=None, metadata={"alias": "useExistingHashing"}
    )

    enforce_password_change_on_expiry: Optional[bool] = field(
        default=None, metadata={"alias": "enforcePasswordChangeOnExpiry"}
    )


@dataclass(kw_only=True)
class SystemPerformanceMeasurementGenerateReportRequest(OCIRequest):
    """Generate a performance measurements report.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemPerformanceMeasurementReportingAddFileServerRequest22(OCIRequest):
    """Add a performance measurements reporting ftp server.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        repository_url (str):

        ftp_user_id (str):

        ftp_user_password (str):

        passive_ftp (Optional[bool]):

    """

    repository_url: str = field(metadata={"alias": "repositoryUrl"})

    ftp_user_id: str = field(metadata={"alias": "ftpUserId"})

    ftp_user_password: str = field(metadata={"alias": "ftpUserPassword"})

    passive_ftp: Optional[bool] = field(default=None, metadata={"alias": "passiveFTP"})


@dataclass(kw_only=True)
class SystemPerformanceMeasurementReportingDeleteFileServerRequest22(OCIRequest):
    """Delete a performance measurements reporting ftp server.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        repository_url (str):

    """

    repository_url: str = field(metadata={"alias": "repositoryUrl"})


@dataclass(kw_only=True)
class SystemPerformanceMeasurementReportingGetFileServerListRequest22(OCIRequest):
    """Requests the list performance measurements reporting ftp servers.
        The response is either SystemPerformanceMeasurementReportingGetFileServerListResponse22 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemPerformanceMeasurementReportingGetRequest24(OCIRequest):
    """Requests the performance measurements reporting settings.
        The response is either SystemPerformanceMeasurementReportingGetResponse24 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemPerformanceMeasurementReportingModifyFileServerRequest22(OCIRequest):
    """Modify a performance measurements reporting ftp server.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        repository_url (str):

        passive_ftp (Optional[bool]):

    """

    repository_url: str = field(metadata={"alias": "repositoryUrl"})

    passive_ftp: Optional[bool] = field(default=None, metadata={"alias": "passiveFTP"})


@dataclass(kw_only=True)
class SystemPerformanceMeasurementReportingModifyRequest(OCIRequest):
    """Modify the performance measurements reporting settings.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        is_active (Optional[bool]):

        reporting_interval (Optional[int]):

        reset_measurements_after_each_report (Optional[bool]):

        report_enterprise (Optional[bool]):

        report_service_provider (Optional[bool]):

        report_device (Optional[bool]):

        report_table (Optional[bool]):

        report_encoding (Optional[str]):

    """

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    reporting_interval: Optional[int] = field(
        default=None, metadata={"alias": "reportingInterval"}
    )

    reset_measurements_after_each_report: Optional[bool] = field(
        default=None, metadata={"alias": "resetMeasurementsAfterEachReport"}
    )

    report_enterprise: Optional[bool] = field(
        default=None, metadata={"alias": "reportEnterprise"}
    )

    report_service_provider: Optional[bool] = field(
        default=None, metadata={"alias": "reportServiceProvider"}
    )

    report_device: Optional[bool] = field(
        default=None, metadata={"alias": "reportDevice"}
    )

    report_table: Optional[bool] = field(
        default=None, metadata={"alias": "reportTable"}
    )

    report_encoding: Optional[str] = field(
        default=None, metadata={"alias": "reportEncoding"}
    )


@dataclass(kw_only=True)
class SystemPersonalAssistantGetRequest(OCIRequest):
    """Get system Personal Assistant Parameters.
        The response is either SystemPersonalAssistantGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemPersonalAssistantModifyRequest(OCIRequest):
    """Modify system Personal Assistant Parameters.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        transfer_to_attendant_key (Optional[str]):

        transfer_to_voice_messaging_key (Optional[str]):

    """

    transfer_to_attendant_key: Optional[str] = field(
        default=None, metadata={"alias": "transferToAttendantKey"}
    )

    transfer_to_voice_messaging_key: Optional[str] = field(
        default=None, metadata={"alias": "transferToVoiceMessagingKey"}
    )


@dataclass(kw_only=True)
class SystemPhoneListsGetRequest(OCIRequest):
    """Get system phone list settings.
        The response is either SystemPhoneListsGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemPhoneListsModifyRequest(OCIRequest):
    """Modify system phone list settings.

    Attributes:

        allow_special_numbers_in_phone_lists (Optional[bool]):

    """

    allow_special_numbers_in_phone_lists: Optional[bool] = field(
        default=None, metadata={"alias": "allowSpecialNumbersInPhoneLists"}
    )


@dataclass(kw_only=True)
class SystemPhysicalLocationGetRequest(OCIRequest):
    """Request to get the list of Physical Location system parameters.
        The response is either SystemPhysicalLocationGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemPhysicalLocationModifyRequest(OCIRequest):
    """Request to modify Physical Location system parameters.
         The response is either SuccessResponse or ErrorResponse.

    Attributes:

        always_allow_emergency_calls (Optional[bool]):

    """

    always_allow_emergency_calls: Optional[bool] = field(
        default=None, metadata={"alias": "alwaysAllowEmergencyCalls"}
    )


@dataclass(kw_only=True)
class SystemPolicyGetDefaultRequest22(OCIRequest):
    """Requests the system's default policy settings.
        The response is either SystemPolicyGetDefaultResponse22 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemPolicyModifyDefaultRequest22(OCIRequest):
    """Request to modify the system's default policy settings.
        The response is either SuccessResponse or ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS mode:
            GroupAdminCommunicationBarringUserProfileAccess (This element is only used for groups in an Enterprise)
            GroupAdminVerifyTranslationAndRoutingAccess
            ServiceProviderVerifyTranslationAndRoutingAccess
            groupUserAutoAttendantNameDialingAccess
        The following elements are only used in XS data mode and ignored in AS mode:
            serviceProviderAdminCommunicationBarringAccess

    Attributes:

        group_calling_plan_access (Optional[str]):

        group_extension_access (Optional[str]):

        group_voice_messaging_access (Optional[str]):

        group_department_admin_user_access (Optional[str]):

        group_department_admin_trunk_group_access (Optional[str]):

        group_department_admin_phone_number_extension_access (Optional[str]):

        group_department_admin_calling_line_id_number_access (Optional[str]):

        group_user_authentication_access (Optional[str]):

        group_user_group_directory_access (Optional[str]):

        group_user_profile_access (Optional[str]):

        group_user_enhanced_call_logs_access (Optional[str]):

        group_user_auto_attendant_name_dialing_access (Optional[str]):

        group_admin_profile_access (Optional[str]):

        group_admin_user_access (Optional[str]):

        group_admin_admin_access (Optional[str]):

        group_admin_department_access (Optional[str]):

        group_admin_access_device_access (Optional[str]):

        group_admin_enhanced_service_instance_access (Optional[str]):

        group_admin_feature_access_code_access (Optional[str]):

        group_admin_phone_number_extension_access (Optional[str]):

        group_admin_calling_line_id_number_access (Optional[str]):

        group_admin_service_access (Optional[str]):

        group_admin_trunk_group_access (Optional[str]):

        group_admin_verify_translation_and_routing_access (Optional[str]):

        group_admin_session_admission_control_access (Optional[str]):

        group_admin_dialable_caller_id_access (Optional[str]):

        group_admin_office_zone_access (Optional[str]):

        group_admin_number_activation_access (Optional[str]):

        group_admin_communication_barring_user_profile_access (Optional[str]):

        service_provider_admin_profile_access (Optional[str]):

        service_provider_admin_group_access (Optional[str]):

        service_provider_admin_user_access (Optional[str]):

        service_provider_admin_admin_access (Optional[str]):

        service_provider_admin_department_access (Optional[str]):

        service_provider_admin_access_device_access (Optional[str]):

        service_provider_admin_phone_number_extension_access (Optional[str]):

        service_provider_admin_calling_line_id_number_access (Optional[str]):

        service_provider_admin_service_access (Optional[str]):

        service_provider_admin_service_pack_access (Optional[str]):

        service_provider_admin_session_admission_control_access (Optional[str]):

        service_provider_admin_verify_translation_and_routing_access (Optional[str]):

        service_provider_admin_web_branding_access (Optional[str]):

        service_provider_admin_office_zone_access (Optional[str]):

        service_provider_admin_communication_barring_access (Optional[str]):

        enterprise_admin_network_policy_access (Optional[str]):

        service_provider_admin_dialable_caller_id_access (Optional[str]):

        enterprise_admin_number_activation_access (Optional[str]):

    """

    group_calling_plan_access: Optional[str] = field(
        default=None, metadata={"alias": "groupCallingPlanAccess"}
    )

    group_extension_access: Optional[str] = field(
        default=None, metadata={"alias": "groupExtensionAccess"}
    )

    group_voice_messaging_access: Optional[str] = field(
        default=None, metadata={"alias": "groupVoiceMessagingAccess"}
    )

    group_department_admin_user_access: Optional[str] = field(
        default=None, metadata={"alias": "groupDepartmentAdminUserAccess"}
    )

    group_department_admin_trunk_group_access: Optional[str] = field(
        default=None, metadata={"alias": "groupDepartmentAdminTrunkGroupAccess"}
    )

    group_department_admin_phone_number_extension_access: Optional[str] = field(
        default=None,
        metadata={"alias": "groupDepartmentAdminPhoneNumberExtensionAccess"},
    )

    group_department_admin_calling_line_id_number_access: Optional[str] = field(
        default=None,
        metadata={"alias": "groupDepartmentAdminCallingLineIdNumberAccess"},
    )

    group_user_authentication_access: Optional[str] = field(
        default=None, metadata={"alias": "groupUserAuthenticationAccess"}
    )

    group_user_group_directory_access: Optional[str] = field(
        default=None, metadata={"alias": "groupUserGroupDirectoryAccess"}
    )

    group_user_profile_access: Optional[str] = field(
        default=None, metadata={"alias": "groupUserProfileAccess"}
    )

    group_user_enhanced_call_logs_access: Optional[str] = field(
        default=None, metadata={"alias": "groupUserEnhancedCallLogsAccess"}
    )

    group_user_auto_attendant_name_dialing_access: Optional[str] = field(
        default=None, metadata={"alias": "groupUserAutoAttendantNameDialingAccess"}
    )

    group_admin_profile_access: Optional[str] = field(
        default=None, metadata={"alias": "groupAdminProfileAccess"}
    )

    group_admin_user_access: Optional[str] = field(
        default=None, metadata={"alias": "groupAdminUserAccess"}
    )

    group_admin_admin_access: Optional[str] = field(
        default=None, metadata={"alias": "groupAdminAdminAccess"}
    )

    group_admin_department_access: Optional[str] = field(
        default=None, metadata={"alias": "groupAdminDepartmentAccess"}
    )

    group_admin_access_device_access: Optional[str] = field(
        default=None, metadata={"alias": "groupAdminAccessDeviceAccess"}
    )

    group_admin_enhanced_service_instance_access: Optional[str] = field(
        default=None, metadata={"alias": "groupAdminEnhancedServiceInstanceAccess"}
    )

    group_admin_feature_access_code_access: Optional[str] = field(
        default=None, metadata={"alias": "groupAdminFeatureAccessCodeAccess"}
    )

    group_admin_phone_number_extension_access: Optional[str] = field(
        default=None, metadata={"alias": "groupAdminPhoneNumberExtensionAccess"}
    )

    group_admin_calling_line_id_number_access: Optional[str] = field(
        default=None, metadata={"alias": "groupAdminCallingLineIdNumberAccess"}
    )

    group_admin_service_access: Optional[str] = field(
        default=None, metadata={"alias": "groupAdminServiceAccess"}
    )

    group_admin_trunk_group_access: Optional[str] = field(
        default=None, metadata={"alias": "groupAdminTrunkGroupAccess"}
    )

    group_admin_verify_translation_and_routing_access: Optional[str] = field(
        default=None, metadata={"alias": "groupAdminVerifyTranslationAndRoutingAccess"}
    )

    group_admin_session_admission_control_access: Optional[str] = field(
        default=None, metadata={"alias": "groupAdminSessionAdmissionControlAccess"}
    )

    group_admin_dialable_caller_id_access: Optional[str] = field(
        default=None, metadata={"alias": "groupAdminDialableCallerIDAccess"}
    )

    group_admin_office_zone_access: Optional[str] = field(
        default=None, metadata={"alias": "groupAdminOfficeZoneAccess"}
    )

    group_admin_number_activation_access: Optional[str] = field(
        default=None, metadata={"alias": "groupAdminNumberActivationAccess"}
    )

    group_admin_communication_barring_user_profile_access: Optional[str] = field(
        default=None,
        metadata={"alias": "groupAdminCommunicationBarringUserProfileAccess"},
    )

    service_provider_admin_profile_access: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderAdminProfileAccess"}
    )

    service_provider_admin_group_access: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderAdminGroupAccess"}
    )

    service_provider_admin_user_access: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderAdminUserAccess"}
    )

    service_provider_admin_admin_access: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderAdminAdminAccess"}
    )

    service_provider_admin_department_access: Optional[str] = field(
        default=None, metadata={"alias": "ServiceProviderAdminDepartmentAccess"}
    )

    service_provider_admin_access_device_access: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderAdminAccessDeviceAccess"}
    )

    service_provider_admin_phone_number_extension_access: Optional[str] = field(
        default=None,
        metadata={"alias": "serviceProviderAdminPhoneNumberExtensionAccess"},
    )

    service_provider_admin_calling_line_id_number_access: Optional[str] = field(
        default=None,
        metadata={"alias": "serviceProviderAdminCallingLineIdNumberAccess"},
    )

    service_provider_admin_service_access: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderAdminServiceAccess"}
    )

    service_provider_admin_service_pack_access: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderAdminServicePackAccess"}
    )

    service_provider_admin_session_admission_control_access: Optional[str] = field(
        default=None,
        metadata={"alias": "serviceProviderAdminSessionAdmissionControlAccess"},
    )

    service_provider_admin_verify_translation_and_routing_access: Optional[str] = field(
        default=None,
        metadata={"alias": "serviceProviderAdminVerifyTranslationAndRoutingAccess"},
    )

    service_provider_admin_web_branding_access: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderAdminWebBrandingAccess"}
    )

    service_provider_admin_office_zone_access: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderAdminOfficeZoneAccess"}
    )

    service_provider_admin_communication_barring_access: Optional[str] = field(
        default=None,
        metadata={"alias": "serviceProviderAdminCommunicationBarringAccess"},
    )

    enterprise_admin_network_policy_access: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseAdminNetworkPolicyAccess"}
    )

    service_provider_admin_dialable_caller_id_access: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderAdminDialableCallerIDAccess"}
    )

    enterprise_admin_number_activation_access: Optional[str] = field(
        default=None, metadata={"alias": "enterpriseAdminNumberActivationAccess"}
    )


@dataclass(kw_only=True)
class SystemPortalPasscodeRulesGetRequestRI(OCIRequest):
    """Requests the system passcode rules setting.
        The response is either SystemPortalPasscodeRulesGetResponseRI or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemPortalPasscodeRulesModifyRequest(OCIRequest):
    """Request to modify the system passcode rules setting.
        The response is either SuccessResponse or ErrorResponse.

        The following elements are only used in AS data mode:
          numberOfRepeatedDigits
          disallowRepeatedPatterns
          disallowContiguousSequences
          numberOfAscendingDigits
          numberOfDescendingDigits
          numberOfPreviousPasscodes
          reenableLogin
          lockOutInMinutes

    Attributes:

        disallow_repeated_digits (Optional[bool]):

        number_of_repeated_digits (Optional[int]):

        disallow_repeated_patterns (Optional[bool]):

        disallow_contiguous_sequences (Optional[bool]):

        number_of_ascending_digits (Optional[int]):

        number_of_descending_digits (Optional[int]):

        disallow_user_number (Optional[bool]):

        disallow_reversed_user_number (Optional[bool]):

        disallow_old_passcode (Optional[bool]):

        number_of_previous_passcodes (Optional[int]):

        disallow_reversed_old_passcode (Optional[bool]):

        min_code_length (Optional[int]):

        max_code_length (Optional[int]):

        disable_login_after_max_failed_login_attempts (Optional[bool]):

        max_failed_login_attempts (Optional[int]):

        expire_password (Optional[bool]):

        passcode_expires_days (Optional[int]):

        send_login_disabled_notify_email (Optional[bool]):

        login_disabled_notify_email_address (Optional[Nillable[str]]):

        default_password (Optional[str]):

        reenable_login (Optional[bool]):

        lock_out_in_minutes (Optional[int]):

    """

    disallow_repeated_digits: Optional[bool] = field(
        default=None, metadata={"alias": "disallowRepeatedDigits"}
    )

    number_of_repeated_digits: Optional[int] = field(
        default=None, metadata={"alias": "numberOfRepeatedDigits"}
    )

    disallow_repeated_patterns: Optional[bool] = field(
        default=None, metadata={"alias": "disallowRepeatedPatterns"}
    )

    disallow_contiguous_sequences: Optional[bool] = field(
        default=None, metadata={"alias": "disallowContiguousSequences"}
    )

    number_of_ascending_digits: Optional[int] = field(
        default=None, metadata={"alias": "numberOfAscendingDigits"}
    )

    number_of_descending_digits: Optional[int] = field(
        default=None, metadata={"alias": "numberOfDescendingDigits"}
    )

    disallow_user_number: Optional[bool] = field(
        default=None, metadata={"alias": "disallowUserNumber"}
    )

    disallow_reversed_user_number: Optional[bool] = field(
        default=None, metadata={"alias": "disallowReversedUserNumber"}
    )

    disallow_old_passcode: Optional[bool] = field(
        default=None, metadata={"alias": "disallowOldPasscode"}
    )

    number_of_previous_passcodes: Optional[int] = field(
        default=None, metadata={"alias": "numberOfPreviousPasscodes"}
    )

    disallow_reversed_old_passcode: Optional[bool] = field(
        default=None, metadata={"alias": "disallowReversedOldPasscode"}
    )

    min_code_length: Optional[int] = field(
        default=None, metadata={"alias": "minCodeLength"}
    )

    max_code_length: Optional[int] = field(
        default=None, metadata={"alias": "maxCodeLength"}
    )

    disable_login_after_max_failed_login_attempts: Optional[bool] = field(
        default=None, metadata={"alias": "disableLoginAfterMaxFailedLoginAttempts"}
    )

    max_failed_login_attempts: Optional[int] = field(
        default=None, metadata={"alias": "maxFailedLoginAttempts"}
    )

    expire_password: Optional[bool] = field(
        default=None, metadata={"alias": "expirePassword"}
    )

    passcode_expires_days: Optional[int] = field(
        default=None, metadata={"alias": "passcodeExpiresDays"}
    )

    send_login_disabled_notify_email: Optional[bool] = field(
        default=None, metadata={"alias": "sendLoginDisabledNotifyEmail"}
    )

    login_disabled_notify_email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "loginDisabledNotifyEmailAddress"}
    )

    default_password: Optional[str] = field(
        default=None, metadata={"alias": "defaultPassword"}
    )

    reenable_login: Optional[bool] = field(
        default=None, metadata={"alias": "reenableLogin"}
    )

    lock_out_in_minutes: Optional[int] = field(
        default=None, metadata={"alias": "lockOutInMinutes"}
    )

    def __post_init__(self):
        nillable_fields = ["login_disabled_notify_email_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemPreferredCarrierAddRequest(OCIRequest):
    """Add a carrier to the system.
        More than one carrier may be assigned to each country code.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        carrier (str):

        cic (str):

        country_code (str):

        is_intra_lata (bool):

        is_inter_lata (bool):

        is_international (bool):

    """

    carrier: str = field(metadata={"alias": "carrier"})

    cic: str = field(metadata={"alias": "cic"})

    country_code: str = field(metadata={"alias": "countryCode"})

    is_intra_lata: bool = field(metadata={"alias": "isIntraLata"})

    is_inter_lata: bool = field(metadata={"alias": "isInterLata"})

    is_international: bool = field(metadata={"alias": "isInternational"})


@dataclass(kw_only=True)
class SystemPreferredCarrierDeleteRequest(OCIRequest):
    """Delete a carrier from the system.
        The response is either a SuccessResponse or an ErrorResponse.
        An ErrorResponse is returned if the carrier is in use, or if the carrier didn't exist prior to deletion..

    Attributes:

        carrier (str):

    """

    carrier: str = field(metadata={"alias": "carrier"})


@dataclass(kw_only=True)
class SystemPreferredCarrierGetGroupListRequest(OCIRequest):
    """Requests a list of groups using the specified carrier.  It is possible to restrict the
        number of rows returned by specifying various search criteria. Multiple search criteria
        are logically ANDed together.
        The response is either a SystemPreferredCarrierGetGroupListResponse or an ErrorResponse.

    Attributes:

        carrier (str):

        response_size_limit (Optional[int]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_group_name (Optional[List[SearchCriteriaGroupName]]):

        search_criteria_exact_service_provider (Optional[SearchCriteriaExactServiceProvider]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

    """

    carrier: str = field(metadata={"alias": "carrier"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_group_name: Optional[List[SearchCriteriaGroupName]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupName"}
    )

    search_criteria_exact_service_provider: Optional[
        SearchCriteriaExactServiceProvider
    ] = field(default=None, metadata={"alias": "searchCriteriaExactServiceProvider"})

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})


@dataclass(kw_only=True)
class SystemPreferredCarrierGetListRequest(OCIRequest):
    """Requests a table of all the carriers defined in the system.
        The response is either a SystemPreferredCarrierGetListResponse
        or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemPreferredCarrierGetRequest(OCIRequest):
    """Requests the attributes of carrier.
        The response is either a SystemPreferreredCarrierGetResponse or an ErrorResponse.

    Attributes:

        carrier (str):

    """

    carrier: str = field(metadata={"alias": "carrier"})


@dataclass(kw_only=True)
class SystemPreferredCarrierGetUserListRequest(OCIRequest):
    """Requests a list of users using the specified carrier.  It is possible to restrict the
        number of rows returned by specifying various search criteria. Multiple search criteria
        are logically ANDed together.
        The response is either a SystemPreferreredCarrierGetUserListResponse
        or an ErrorResponse.

    Attributes:

        carrier (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    carrier: str = field(metadata={"alias": "carrier"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class SystemPreferredCarrierModifyRequest(OCIRequest):
    """Modify the attributes of a carrier.
        The response is either a SuccessResponse or an ErrorResponse.
        An ErrorResponse is returned if countryCode modification is attempted while the carrier is assigned to a service provider.
        An ErrorResponse is returned if an attempt to set isIntraLata to false is made while the carrier is used as an intra-LATA carrier.
        An ErrorResponse is returned if an attempt to set isInternational to false is made while the carrier is used as an international carrier.

    Attributes:

        carrier (str):

        cic (Optional[str]):

        country_code (Optional[str]):

        is_intra_lata (Optional[bool]):

        is_inter_lata (Optional[bool]):

        is_international (Optional[bool]):

    """

    carrier: str = field(metadata={"alias": "carrier"})

    cic: Optional[str] = field(default=None, metadata={"alias": "cic"})

    country_code: Optional[str] = field(default=None, metadata={"alias": "countryCode"})

    is_intra_lata: Optional[bool] = field(
        default=None, metadata={"alias": "isIntraLata"}
    )

    is_inter_lata: Optional[bool] = field(
        default=None, metadata={"alias": "isInterLata"}
    )

    is_international: Optional[bool] = field(
        default=None, metadata={"alias": "isInternational"}
    )


@dataclass(kw_only=True)
class SystemProvisioningValidationGetRequest25(OCIRequest):
    """Request to get the system's provisioning validation attributes.
        The response is either a SystemProvisioningValidationGetResponse25 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemProvisioningValidationModifyRequest(OCIRequest):
    """Request to modify the system's provisioning validation attributes.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          denyMobilityNumberAsRedirectionDestination
          denyEnterpriseNumberAsNetworkLocationDestination
          denyAutoAttendantIdentityAsAutoAttendantTransferNumber

    Attributes:

        is_active (Optional[bool]):

        is_network_server_query_active (Optional[bool]):

        timeout_seconds (Optional[int]):

        deny_mobility_number_as_redirection_destination (Optional[bool]):

        deny_enterprise_number_as_network_location_destination (Optional[bool]):

        deny_auto_attendant_identity_as_auto_attendant_transfer_number (Optional[bool]):

    """

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    is_network_server_query_active: Optional[bool] = field(
        default=None, metadata={"alias": "isNetworkServerQueryActive"}
    )

    timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "timeoutSeconds"}
    )

    deny_mobility_number_as_redirection_destination: Optional[bool] = field(
        default=None, metadata={"alias": "denyMobilityNumberAsRedirectionDestination"}
    )

    deny_enterprise_number_as_network_location_destination: Optional[bool] = field(
        default=None,
        metadata={"alias": "denyEnterpriseNumberAsNetworkLocationDestination"},
    )

    deny_auto_attendant_identity_as_auto_attendant_transfer_number: Optional[bool] = (
        field(
            default=None,
            metadata={
                "alias": "denyAutoAttendantIdentityAsAutoAttendantTransferNumber"
            },
        )
    )


@dataclass(kw_only=True)
class SystemPushNotificationAllowedApplicationAddRequest(OCIRequest):
    """Request to add an application to the list of allowed push notification applications.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        application_id (str):

        description (Optional[str]):

    """

    application_id: str = field(metadata={"alias": "applicationId"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemPushNotificationAllowedApplicationDeleteRequest(OCIRequest):
    """Request to remove an application from the list of allowed push notification applications.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        application_id (str):

    """

    application_id: str = field(metadata={"alias": "applicationId"})


@dataclass(kw_only=True)
class SystemPushNotificationAllowedApplicationGetListRequest(OCIRequest):
    """Request to get the list of allowed push notification applications.
        The response is either SystemPushNotificationAllowedApplicationGetListResponse or
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemPushNotificationAllowedApplicationModifyRequest(OCIRequest):
    """Request to modify an application in the list of allowed push notification applications.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        application_id (str):

        description (Optional[Nillable[str]]):

    """

    application_id: str = field(metadata={"alias": "applicationId"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemPushNotificationParametersGetRequest(OCIRequest):
    """Request to get the list of push notification system parameters.
        The response is either SystemPushNotificationParametersGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemPushNotificationParametersModifyRequest(OCIRequest):
    """Request to modify push notification system parameters.

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        enforce_allowed_application_list (Optional[bool]):

        maximum_registrations_per_user (Optional[int]):

        maximum_registration_age_days (Optional[int]):

        new_call_timeout (Optional[int]):

        subscription_events_per_second (Optional[int]):

    """

    enforce_allowed_application_list: Optional[bool] = field(
        default=None, metadata={"alias": "enforceAllowedApplicationList"}
    )

    maximum_registrations_per_user: Optional[int] = field(
        default=None, metadata={"alias": "maximumRegistrationsPerUser"}
    )

    maximum_registration_age_days: Optional[int] = field(
        default=None, metadata={"alias": "maximumRegistrationAgeDays"}
    )

    new_call_timeout: Optional[int] = field(
        default=None, metadata={"alias": "newCallTimeout"}
    )

    subscription_events_per_second: Optional[int] = field(
        default=None, metadata={"alias": "subscriptionEventsPerSecond"}
    )


@dataclass(kw_only=True)
class SystemRedundancyParametersGetRequest16sp2(OCIRequest):
    """Request to get the list of Redundancy system parameters.
        The response is either SystemRedundancyParametersGetResponse16sp2 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemRedundancyParametersModifyRequest(OCIRequest):
    """Request to modify Redundancy system parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        roll_back_timer_minutes (Optional[int]):

        send_sip_option_message_upon_migration (Optional[bool]):

    """

    roll_back_timer_minutes: Optional[int] = field(
        default=None, metadata={"alias": "rollBackTimerMinutes"}
    )

    send_sip_option_message_upon_migration: Optional[bool] = field(
        default=None, metadata={"alias": "sendSipOptionMessageUponMigration"}
    )


@dataclass(kw_only=True)
class SystemResourcePriorityGetRequest(OCIRequest):
    """Get the system Resource Priority service attributes.
        The response is either SystemResourcePriorityGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemResourcePriorityModifyRequest(OCIRequest):
    """Modify the system Resource Priority service attributes.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        send_resource_priority_to_network (Optional[bool]):

        resource_priority (Optional[str]):

    """

    send_resource_priority_to_network: Optional[bool] = field(
        default=None, metadata={"alias": "sendResourcePriorityToNetwork"}
    )

    resource_priority: Optional[str] = field(
        default=None, metadata={"alias": "resourcePriority"}
    )


@dataclass(kw_only=True)
class SystemRoamingNetworkAddRequest(OCIRequest):
    """Add a Roaming Network.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        msc_address (str):

        network_translation_index (Optional[str]):

    """

    msc_address: str = field(metadata={"alias": "mscAddress"})

    network_translation_index: Optional[str] = field(
        default=None, metadata={"alias": "networkTranslationIndex"}
    )


@dataclass(kw_only=True)
class SystemRoamingNetworkDeleteRequest(OCIRequest):
    """Delete a Roaming Network.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        msc_address (str):

    """

    msc_address: str = field(metadata={"alias": "mscAddress"})


@dataclass(kw_only=True)
class SystemRoamingNetworkGetListRequest(OCIRequest):
    """Get the list of all Roaming Networks.
        The response is either a SystemRoamingNetworkGetListResponse or an ErrorResponse.

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_roaming_msc_address (Optional[List[SearchCriteriaRoamingMscAddress]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_roaming_msc_address: Optional[
        List[SearchCriteriaRoamingMscAddress]
    ] = field(default=None, metadata={"alias": "searchCriteriaRoamingMscAddress"})


@dataclass(kw_only=True)
class SystemRoamingNetworkModifyRequest(OCIRequest):
    """Modify a Roaming Network.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        msc_address (str):

        network_translation_index (Optional[Nillable[str]]):

    """

    msc_address: str = field(metadata={"alias": "mscAddress"})

    network_translation_index: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "networkTranslationIndex"}
    )

    def __post_init__(self):
        nillable_fields = ["network_translation_index"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemRouteListEnterpriseTrunkNumberPrefixGetSummaryListRequest(OCIRequest):
    """Request a summary table of all enterprise trunk prefixes in the system.
        If resellerId is specified, only the prefixes assigned to the enterprise/service provider within
        the given reseller are returned.
        If reseller administrator sends the request and resellerId is not specified, the administrator's resellerId is used.

        The response is either SystemRouteListEnterpriseTrunkNumberPrefixGetSummaryListResponse or ErrorResponse.

    Attributes:

        reseller_id (Optional[str]):

    """

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class SystemRouteListEnterpriseTrunkNumberRangeGetSummaryListRequest(OCIRequest):
    """Request a summary table of all enterprise trunk number ranges in the system.
        If resellerId is specified, the number ranges assigned to the enterprises/service providers
        within the reseller are returned.
        If reseller administrator sends the request and resellerId is not specified, the administrator's resellerId is used.

        The response is either SystemRouteListEnterpriseTrunkNumberRangeGetSummaryListResponse or ErrorResponse.

    Attributes:

        reseller_id (Optional[str]):

    """

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class SystemRoutePointExternalSystemAddRequest(OCIRequest):
    """Add an Route Point External System, which is a cluster of Application
      Controllers.
      The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        description (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemRoutePointExternalSystemApplicationControllerAddListRequest(OCIRequest):
    """Add an application controller to Route Point External System.
      The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        application_controller (Optional[List[str]]):

    """

    name: str = field(metadata={"alias": "name"})

    application_controller: Optional[List[str]] = field(
        default=None, metadata={"alias": "applicationController"}
    )


@dataclass(kw_only=True)
class SystemRoutePointExternalSystemApplicationControllerDeleteListRequest(OCIRequest):
    """Delete an application controller for Route Point External System.
      The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        application_controller (Optional[List[str]]):

    """

    name: str = field(metadata={"alias": "name"})

    application_controller: Optional[List[str]] = field(
        default=None, metadata={"alias": "applicationController"}
    )


@dataclass(kw_only=True)
class SystemRoutePointExternalSystemApplicationControllerGetRequest(OCIRequest):
    """Get a list of Application Controllers assigned to the Route Point External Systems specified.
      The response is either SystemRoutePointExternalSystemApplicationControllerGetResponse or ErrorResponse.

    Attributes:

        external_system (str):

    """

    external_system: str = field(metadata={"alias": "externalSystem"})


@dataclass(kw_only=True)
class SystemRoutePointExternalSystemDeleteRequest(OCIRequest):
    """Delete an Route Point External System.
      The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemRoutePointExternalSystemGetListRequest(OCIRequest):
    """Get a list of Route Point External Systems that are configured for the system.
      The response is either SystemRoutePointExternalSystemGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemRoutePointExternalSystemGetRoutePointListRequest(OCIRequest):
    """Get a list of Route Points that are using the specified Route Point External System.
      The response is either a SystemRoutePointExternalSystemGetRoutePointListResponse or an
      ErrorResponse.

    Attributes:

        route_point_external_system (str):

    """

    route_point_external_system: str = field(
        metadata={"alias": "routePointExternalSystem"}
    )


@dataclass(kw_only=True)
class SystemRoutePointExternalSystemModifyRequest(OCIRequest):
    """Modify an Route Point External System.
      The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        new_name (Optional[str]):

        description (Optional[Nillable[str]]):

    """

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemRoutingAddRouteDeviceRequest14(OCIRequest):
    """Request to add a routing device to a route.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        route_name (str):

        net_address (str):

        port (Optional[int]):

        transport_protocol (str):

        description (Optional[str]):

    """

    route_name: str = field(metadata={"alias": "routeName"})

    net_address: str = field(metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    transport_protocol: str = field(metadata={"alias": "transportProtocol"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemRoutingAddRouteRequest(OCIRequest):
    """Request to add a route to the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        route_name (str):

    """

    route_name: str = field(metadata={"alias": "routeName"})


@dataclass(kw_only=True)
class SystemRoutingAddTranslationRequest(OCIRequest):
    """Request to add a digit routing table entry to the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        digits (str):

        route_name (str):

    """

    digits: str = field(metadata={"alias": "digits"})

    route_name: str = field(metadata={"alias": "routeName"})


@dataclass(kw_only=True)
class SystemRoutingDeleteRouteDeviceRequest(OCIRequest):
    """Request to delete a routing device from a route.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        route_name (str):

        net_address (str):

        port (Optional[int]):

    """

    route_name: str = field(metadata={"alias": "routeName"})

    net_address: str = field(metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})


@dataclass(kw_only=True)
class SystemRoutingDeleteRouteRequest(OCIRequest):
    """Request to delete a route from the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        route_name (str):

    """

    route_name: str = field(metadata={"alias": "routeName"})


@dataclass(kw_only=True)
class SystemRoutingDeleteTranslationRequest(OCIRequest):
    """Request to delete a digit routing table entry from the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        digits (str):

    """

    digits: str = field(metadata={"alias": "digits"})


@dataclass(kw_only=True)
class SystemRoutingGetRequest(OCIRequest):
    """Request the system's general routing attributes.
        The response is either a SystemRoutingGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemRoutingGetRouteDeviceListRequest(OCIRequest):
    """Request to get a list of devices for a route.
        The response is either a SystemRoutingGetRouteDeviceListResponse or an ErrorResponse.

    Attributes:

        route_name (str):

    """

    route_name: str = field(metadata={"alias": "routeName"})


@dataclass(kw_only=True)
class SystemRoutingGetRouteListRequest(OCIRequest):
    """Request to get a list of routes in the system.
        The response is either a SystemRoutingGetRouteListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemRoutingGetTranslationListRequest(OCIRequest):
    """Request to get the system digit routing table.
        The response is either a SystemRoutingGetTranslationListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemRoutingModifyRequest(OCIRequest):
    """Modifies the system's general routing attributes.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        is_route_round_robin (Optional[bool]):

        route_timer_seconds (Optional[int]):

        dns_resolved_address_selection_policy (Optional[str]):

        stateful_expiration_minutes (Optional[int]):

        max_addresses_per_hostname (Optional[int]):

        max_addresses_during_setup (Optional[int]):

    """

    is_route_round_robin: Optional[bool] = field(
        default=None, metadata={"alias": "isRouteRoundRobin"}
    )

    route_timer_seconds: Optional[int] = field(
        default=None, metadata={"alias": "routeTimerSeconds"}
    )

    dns_resolved_address_selection_policy: Optional[str] = field(
        default=None, metadata={"alias": "dnsResolvedAddressSelectionPolicy"}
    )

    stateful_expiration_minutes: Optional[int] = field(
        default=None, metadata={"alias": "statefulExpirationMinutes"}
    )

    max_addresses_per_hostname: Optional[int] = field(
        default=None, metadata={"alias": "maxAddressesPerHostname"}
    )

    max_addresses_during_setup: Optional[int] = field(
        default=None, metadata={"alias": "maxAddressesDuringSetup"}
    )


@dataclass(kw_only=True)
class SystemRoutingModifyRouteDeviceRequest(OCIRequest):
    """Request to modify a routing device.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        route_name (str):

        net_address (str):

        port (Optional[int]):

        transport_protocol (Optional[str]):

        description (Optional[Nillable[str]]):

    """

    route_name: str = field(metadata={"alias": "routeName"})

    net_address: str = field(metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemRoutingModifyTranslationRequest(OCIRequest):
    """Request to modify a digit routing table entry in the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        digits (str):

        route_name (Optional[str]):

    """

    digits: str = field(metadata={"alias": "digits"})

    route_name: Optional[str] = field(default=None, metadata={"alias": "routeName"})


@dataclass(kw_only=True)
class SystemRoutingProfileGetListRequest(OCIRequest):
    """Request to get the list of system routing profiles.

        If resellerId is specified, the routing profiles assigned to the given reseller are returned. If reseller administrator sends the request, resellerId is not specified, the administrator’s resellerId is used.
        If system or provisioning administrator sends the request, resellerId is not specified, all system routing profiles are returned.

        The response is either a SystemRoutingProfileGetListResponse or an ErrorResponse.

    Attributes:

        reseller_id (Optional[str]):

    """

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class SystemRoutingProfileParametersGetRequest(OCIRequest):
    """Request to get the list of Routing Profile related system parameters.
        The response is either SystemRoutingProfileParametersGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemRoutingProfileParametersModifyRequest(OCIRequest):
    """Request to modify Routing Profile system parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        enable_permissive_routing (bool):

    """

    enable_permissive_routing: bool = field(
        metadata={"alias": "enablePermissiveRouting"}
    )


@dataclass(kw_only=True)
class SystemRuntimeDataPublicationGetRequest(OCIRequest):
    """Get the system call admission control parameters.
        The response is either a SystemRuntimeDataPublicationGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemRuntimeDataPublicationModifyRequest(OCIRequest):
    """Modify the system call admission control parameters.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
        enableRuntimeDataSync,
        runtimeIntervalInMilliSeconds

    Attributes:

        enable_runtime_data_sync (Optional[bool]):

        runtime_data_sync_interval_in_milli_seconds (Optional[int]):

    """

    enable_runtime_data_sync: Optional[bool] = field(
        default=None, metadata={"alias": "enableRuntimeDataSync"}
    )

    runtime_data_sync_interval_in_milli_seconds: Optional[int] = field(
        default=None, metadata={"alias": "runtimeDataSyncIntervalInMilliSeconds"}
    )


@dataclass(kw_only=True)
class SystemSIPAddACLEntryRequest14sp2(OCIRequest):
    """Add an entry to the SIP access control list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        net_address (str):

        transport_protocol (str):

        description (Optional[str]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    transport_protocol: str = field(metadata={"alias": "transportProtocol"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemSIPAddContentTypeRequest(OCIRequest):
    """Add a content type for the SIP interface.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        content_type (str):

        interface (str):

    """

    content_type: str = field(metadata={"alias": "contentType"})

    interface: str = field(metadata={"alias": "interface"})


@dataclass(kw_only=True)
class SystemSIPAuthenticationEndpointLockoutClearRequest(OCIRequest):
    """Request to clear sip authentication endpoint lockouts in the system.
         The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_endpoint_key (List[UserEndpointKey]):

    """

    user_endpoint_key: List[UserEndpointKey] = field(
        metadata={"alias": "userEndpointKey"}
    )


@dataclass(kw_only=True)
class SystemSIPAuthenticationEndpointLockoutGetRequest(OCIRequest):
    """Request to get sip authentication endpoint lockout data in the system.
         The response is either a SystemSIPAuthenticationEndpointLockoutGetResponse or an ErrorResponse.

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_exact_organization_type (Optional[SearchCriteriaExactOrganizationType]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_line_port_user_part (Optional[List[SearchCriteriaLinePortUserPart]]):

        search_criteria_line_port_domain (Optional[List[SearchCriteriaLinePortDomain]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_exact_organization_type: Optional[
        SearchCriteriaExactOrganizationType
    ] = field(default=None, metadata={"alias": "searchCriteriaExactOrganizationType"})

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_line_port_user_part: Optional[
        List[SearchCriteriaLinePortUserPart]
    ] = field(default=None, metadata={"alias": "searchCriteriaLinePortUserPart"})

    search_criteria_line_port_domain: Optional[List[SearchCriteriaLinePortDomain]] = (
        field(default=None, metadata={"alias": "searchCriteriaLinePortDomain"})
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )


@dataclass(kw_only=True)
class SystemSIPAuthenticationLockoutClearAllRequest(OCIRequest):
    """Request to clear all sip authentication lockouts (both endpoint and trunk group) in the system.
         The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSIPAuthenticationPasswordRulesGetRequestRI(OCIRequest):
    """Request to get the system level SIP authentication password rule settings.
        The response is either a SystemSIPAuthenticationPasswordRulesGetResponseRI or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSIPAuthenticationPasswordRulesModifyRequest(OCIRequest):
    """Request to modify the system level SIP authentication password rule settings
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        disallow_authentication_name (Optional[bool]):

        disallow_old_password (Optional[bool]):

        disallow_reversed_old_password (Optional[bool]):

        restrict_min_digits (Optional[bool]):

        min_digits (Optional[int]):

        restrict_min_upper_case_letters (Optional[bool]):

        min_upper_case_letters (Optional[int]):

        restrict_min_lower_case_letters (Optional[bool]):

        min_lower_case_letters (Optional[int]):

        restrict_min_non_alphanumeric_characters (Optional[bool]):

        min_non_alphanumeric_characters (Optional[int]):

        min_length (Optional[int]):

        send_permanent_lockout_notification (Optional[bool]):

        permanent_lockout_notify_email_address (Optional[Nillable[str]]):

        endpoint_authentication_lockout_type (Optional[str]):

        endpoint_temporary_lockout_threshold (Optional[int]):

        endpoint_wait_algorithm (Optional[str]):

        endpoint_lockout_fixed_minutes (Optional[str]):

        endpoint_permanent_lockout_threshold (Optional[int]):

        trunk_group_authentication_lockout_type (Optional[str]):

        trunk_group_temporary_lockout_threshold (Optional[int]):

        trunk_group_wait_algorithm (Optional[str]):

        trunk_group_lockout_fixed_minutes (Optional[str]):

        trunk_group_permanent_lockout_threshold (Optional[int]):

        use_password_validation_service (Optional[bool]):

    """

    disallow_authentication_name: Optional[bool] = field(
        default=None, metadata={"alias": "disallowAuthenticationName"}
    )

    disallow_old_password: Optional[bool] = field(
        default=None, metadata={"alias": "disallowOldPassword"}
    )

    disallow_reversed_old_password: Optional[bool] = field(
        default=None, metadata={"alias": "disallowReversedOldPassword"}
    )

    restrict_min_digits: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinDigits"}
    )

    min_digits: Optional[int] = field(default=None, metadata={"alias": "minDigits"})

    restrict_min_upper_case_letters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinUpperCaseLetters"}
    )

    min_upper_case_letters: Optional[int] = field(
        default=None, metadata={"alias": "minUpperCaseLetters"}
    )

    restrict_min_lower_case_letters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinLowerCaseLetters"}
    )

    min_lower_case_letters: Optional[int] = field(
        default=None, metadata={"alias": "minLowerCaseLetters"}
    )

    restrict_min_non_alphanumeric_characters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinNonAlphanumericCharacters"}
    )

    min_non_alphanumeric_characters: Optional[int] = field(
        default=None, metadata={"alias": "minNonAlphanumericCharacters"}
    )

    min_length: Optional[int] = field(default=None, metadata={"alias": "minLength"})

    send_permanent_lockout_notification: Optional[bool] = field(
        default=None, metadata={"alias": "sendPermanentLockoutNotification"}
    )

    permanent_lockout_notify_email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "permanentLockoutNotifyEmailAddress"}
    )

    endpoint_authentication_lockout_type: Optional[str] = field(
        default=None, metadata={"alias": "endpointAuthenticationLockoutType"}
    )

    endpoint_temporary_lockout_threshold: Optional[int] = field(
        default=None, metadata={"alias": "endpointTemporaryLockoutThreshold"}
    )

    endpoint_wait_algorithm: Optional[str] = field(
        default=None, metadata={"alias": "endpointWaitAlgorithm"}
    )

    endpoint_lockout_fixed_minutes: Optional[str] = field(
        default=None, metadata={"alias": "endpointLockoutFixedMinutes"}
    )

    endpoint_permanent_lockout_threshold: Optional[int] = field(
        default=None, metadata={"alias": "endpointPermanentLockoutThreshold"}
    )

    trunk_group_authentication_lockout_type: Optional[str] = field(
        default=None, metadata={"alias": "trunkGroupAuthenticationLockoutType"}
    )

    trunk_group_temporary_lockout_threshold: Optional[int] = field(
        default=None, metadata={"alias": "trunkGroupTemporaryLockoutThreshold"}
    )

    trunk_group_wait_algorithm: Optional[str] = field(
        default=None, metadata={"alias": "trunkGroupWaitAlgorithm"}
    )

    trunk_group_lockout_fixed_minutes: Optional[str] = field(
        default=None, metadata={"alias": "trunkGroupLockoutFixedMinutes"}
    )

    trunk_group_permanent_lockout_threshold: Optional[int] = field(
        default=None, metadata={"alias": "trunkGroupPermanentLockoutThreshold"}
    )

    use_password_validation_service: Optional[bool] = field(
        default=None, metadata={"alias": "usePasswordValidationService"}
    )

    def __post_init__(self):
        nillable_fields = ["permanent_lockout_notify_email_address"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemSIPAuthenticationTrunkGroupLockoutClearRequest(OCIRequest):
    """Request to clear sip authentication trunk group lockouts in the system.
         The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        trunk_groupkey (List[TrunkGroupKey]):

    """

    trunk_groupkey: List[TrunkGroupKey] = field(metadata={"alias": "trunkGroupkey"})


@dataclass(kw_only=True)
class SystemSIPAuthenticationTrunkGroupLockoutGetRequest(OCIRequest):
    """Request to get sip authentication trunk group lockout data in the system.
         The response is either a SystemSIPAuthenticationTrunkGroupLockoutGetResponse or an ErrorResponse.

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_exact_organization_type (Optional[SearchCriteriaExactOrganizationType]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_trunk_group_name (Optional[List[SearchCriteriaTrunkGroupName]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_exact_organization_type: Optional[
        SearchCriteriaExactOrganizationType
    ] = field(default=None, metadata={"alias": "searchCriteriaExactOrganizationType"})

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_trunk_group_name: Optional[List[SearchCriteriaTrunkGroupName]] = (
        field(default=None, metadata={"alias": "searchCriteriaTrunkGroupName"})
    )


@dataclass(kw_only=True)
class SystemSIPDeleteACLEntryRequest14sp2(OCIRequest):
    """Delete an entry from the SIP access control list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        net_address (str):

    """

    net_address: str = field(metadata={"alias": "netAddress"})


@dataclass(kw_only=True)
class SystemSIPDeleteContentTypeRequest(OCIRequest):
    """Delete a content type for the SIP interface.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        content_type (str):

    """

    content_type: str = field(metadata={"alias": "contentType"})


@dataclass(kw_only=True)
class SystemSIPDeviceFileApplyExtendedCaptureToAllDeviceProfilesRequest(OCIRequest):
    """Request to apply an extended file capture value to all the profile instances associated to a sip device type file.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        device_type (str):

        file_format (str):

        extended_capture_on_upload_from_device (bool):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    file_format: str = field(metadata={"alias": "fileFormat"})

    extended_capture_on_upload_from_device: bool = field(
        metadata={"alias": "extendedCaptureOnUploadFromDevice"}
    )


@dataclass(kw_only=True)
class SystemSIPDeviceTypeAddRequest23V9(OCIRequest):
    """Request to add a sip device type.
        The response is either SuccessResponse or ErrorResponse. When the optional element resellerId is specified,
        the device type created is at reseller level. Device type name should be unique throughout the system
        including all the reseller level device types.

        The following elements are only used in the XS data mode and ignored in the AS data mode:
          enhancedForICS, use value \"false\" in AS data mode
          supports3G4GContinuity, use value \"false\" in AS data mode
          publishesOwnPresence, use value \"false\" in AS data mode
          locationNetwork, use value \"Fixed\" in AS data mode
          allowTerminationBasedOnICSI, use value \"false\" in AS data mode
          roamingMode, use value \"None\" in AS data mode

        The following elements are only used in AS data mode and ignored in the XS data mode:
          supportClientSessionInfo, use value \"false\" in XS data mode
          supportCallInfoConferenceSubscriptionURI, use value \"false\" in XS data mode
          supportRemotePartyInfo, use value \"false\" in XS data mode
          supportVisualDeviceManagementRedirectLink, use value \"false\" in XS data mode
          bypassMediaTreatment, use value \"false\" in XS data mode
          supportCauseParameter, use value \"false\" in XS data mode
          resellerId
          supportVisualDeviceManagementAPI, use value \"false\" in XS data mode
          deviceCategory
          verstatInPAIHeader, use value \"false\" in XS data mode
          verstatInFromHeader, use value \"false\" in XS data mode
          supportPreferredAutoAndForcedAnswer
          supportCiscoCallerIdDispositionHeader

        The following values for element profile are only used in AS data mode and an error is returned in the XS data mode:
          SignalingAddressType=Non-intelligent Device Addressing
          SignalingAddressType=Intelligent Device Addressing

        The following logic applies to these elements:
          macInCert
          macInNonRequestURI
          The two elements are mutually exclusive.
          When both are set to true, the command fails.

    Attributes:

        device_type (str):

        number_of_ports (UnboundedPositiveInt):

        profile (str):

        registration_capable (bool):

        is_conference_device (bool):

        is_mobility_manager_device (bool):

        is_music_on_hold_device (bool):

        hold_normalization (str):

        hold_announcement_method (str):

        is_trusted (bool):

        e164_capable (bool):

        route_advance (bool):

        forwarding_override (bool):

        wireless_integration (bool):

        web_based_config_url (Optional[str]):

        is_video_capable (bool):

        pbx_integration (bool):

        static_registration_capable (bool):

        cpe_device_options (Optional[CPEDeviceOptions22V6]):

        early_media_support (str):

        authenticate_refer (bool):

        auto_config_soft_client (bool):

        authentication_mode (str):

        requires_broad_works_digit_collection (bool):

        requires_broad_works_call_waiting_tone (bool):

        requires_mwi_subscription (bool):

        use_history_info_header_on_access_side (bool):

        advice_of_charge_capable (bool):

        reset_event (Optional[str]):

        reset_string (Optional[str]):

        support_call_center_mime_type (bool):

        trunk_mode (str):

        add_p_called_party_id (bool):

        support_identity_in_update_and_re_invite (bool):

        unscreened_presentation_identity_policy (str):

        enhanced_for_ics (bool):

        support_emergency_disconnect_control (bool):

        device_type_configuration_option (str):

        support_rfc3398 (bool):

        static_line_ordering (bool):

        support_client_session_info (bool):

        support_call_info_conference_subscription_uri (bool):

        support_remote_party_info (bool):

        support_visual_device_management_redirect_link (bool):

        bypass_media_treatment (bool):

        supports3_g4_g_continuity (bool):

        publishes_own_presence (bool):

        support_cause_parameter (bool):

        location_network (str):

        reseller_id (Optional[str]):

        allow_termination_based_on_icsi (bool):

        roaming_mode (str):

        support_calling_party_category_in_outbound_from_header (bool):

        support_visual_device_management_api (Optional[bool]):

        device_category (Optional[str]):

        add_to_file_server (Optional[bool]):

        verstat_in_pai_header (Optional[bool]):

        verstat_in_from_header (Optional[bool]):

        support_preferred_auto_and_forced_answer (Optional[bool]):

        support_cisco_caller_id_disposition_header (Optional[bool]):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    number_of_ports: UnboundedPositiveInt = field(metadata={"alias": "numberOfPorts"})

    profile: str = field(metadata={"alias": "profile"})

    registration_capable: bool = field(metadata={"alias": "registrationCapable"})

    is_conference_device: bool = field(metadata={"alias": "isConferenceDevice"})

    is_mobility_manager_device: bool = field(
        metadata={"alias": "isMobilityManagerDevice"}
    )

    is_music_on_hold_device: bool = field(metadata={"alias": "isMusicOnHoldDevice"})

    hold_normalization: str = field(metadata={"alias": "holdNormalization"})

    hold_announcement_method: str = field(metadata={"alias": "holdAnnouncementMethod"})

    is_trusted: bool = field(metadata={"alias": "isTrusted"})

    e164_capable: bool = field(metadata={"alias": "E164Capable"})

    route_advance: bool = field(metadata={"alias": "routeAdvance"})

    forwarding_override: bool = field(metadata={"alias": "forwardingOverride"})

    wireless_integration: bool = field(metadata={"alias": "wirelessIntegration"})

    web_based_config_url: Optional[str] = field(
        default=None, metadata={"alias": "webBasedConfigURL"}
    )

    is_video_capable: bool = field(metadata={"alias": "isVideoCapable"})

    pbx_integration: bool = field(metadata={"alias": "PBXIntegration"})

    static_registration_capable: bool = field(
        metadata={"alias": "staticRegistrationCapable"}
    )

    cpe_device_options: Optional[CPEDeviceOptions22V6] = field(
        default=None, metadata={"alias": "cpeDeviceOptions"}
    )

    early_media_support: str = field(metadata={"alias": "earlyMediaSupport"})

    authenticate_refer: bool = field(metadata={"alias": "authenticateRefer"})

    auto_config_soft_client: bool = field(metadata={"alias": "autoConfigSoftClient"})

    authentication_mode: str = field(metadata={"alias": "authenticationMode"})

    requires_broad_works_digit_collection: bool = field(
        metadata={"alias": "requiresBroadWorksDigitCollection"}
    )

    requires_broad_works_call_waiting_tone: bool = field(
        metadata={"alias": "requiresBroadWorksCallWaitingTone"}
    )

    requires_mwi_subscription: bool = field(
        metadata={"alias": "requiresMWISubscription"}
    )

    use_history_info_header_on_access_side: bool = field(
        metadata={"alias": "useHistoryInfoHeaderOnAccessSide"}
    )

    advice_of_charge_capable: bool = field(metadata={"alias": "adviceOfChargeCapable"})

    reset_event: Optional[str] = field(default=None, metadata={"alias": "resetEvent"})

    reset_string: Optional[str] = field(default=None, metadata={"alias": "resetString"})

    support_call_center_mime_type: bool = field(
        metadata={"alias": "supportCallCenterMIMEType"}
    )

    trunk_mode: str = field(metadata={"alias": "trunkMode"})

    add_p_called_party_id: bool = field(metadata={"alias": "addPCalledPartyId"})

    support_identity_in_update_and_re_invite: bool = field(
        metadata={"alias": "supportIdentityInUpdateAndReInvite"}
    )

    unscreened_presentation_identity_policy: str = field(
        metadata={"alias": "unscreenedPresentationIdentityPolicy"}
    )

    enhanced_for_ics: bool = field(metadata={"alias": "enhancedForICS"})

    support_emergency_disconnect_control: bool = field(
        metadata={"alias": "supportEmergencyDisconnectControl"}
    )

    device_type_configuration_option: str = field(
        metadata={"alias": "deviceTypeConfigurationOption"}
    )

    support_rfc3398: bool = field(metadata={"alias": "supportRFC3398"})

    static_line_ordering: bool = field(metadata={"alias": "staticLineOrdering"})

    support_client_session_info: bool = field(
        metadata={"alias": "supportClientSessionInfo"}
    )

    support_call_info_conference_subscription_uri: bool = field(
        metadata={"alias": "supportCallInfoConferenceSubscriptionURI"}
    )

    support_remote_party_info: bool = field(
        metadata={"alias": "supportRemotePartyInfo"}
    )

    support_visual_device_management_redirect_link: bool = field(
        metadata={"alias": "supportVisualDeviceManagementRedirectLink"}
    )

    bypass_media_treatment: bool = field(metadata={"alias": "bypassMediaTreatment"})

    supports3_g4_g_continuity: bool = field(
        metadata={"alias": "supports3G4GContinuity"}
    )

    publishes_own_presence: bool = field(metadata={"alias": "publishesOwnPresence"})

    support_cause_parameter: bool = field(metadata={"alias": "supportCauseParameter"})

    location_network: str = field(metadata={"alias": "locationNetwork"})

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    allow_termination_based_on_icsi: bool = field(
        metadata={"alias": "allowTerminationBasedOnICSI"}
    )

    roaming_mode: str = field(metadata={"alias": "roamingMode"})

    support_calling_party_category_in_outbound_from_header: bool = field(
        metadata={"alias": "supportCallingPartyCategoryInOutboundFromHeader"}
    )

    support_visual_device_management_api: Optional[bool] = field(
        default=None, metadata={"alias": "supportVisualDeviceManagementAPI"}
    )

    device_category: Optional[str] = field(
        default=None, metadata={"alias": "deviceCategory"}
    )

    add_to_file_server: Optional[bool] = field(
        default=False, metadata={"alias": "addToFileServer"}
    )

    verstat_in_pai_header: Optional[bool] = field(
        default=None, metadata={"alias": "verstatInPAIHeader"}
    )

    verstat_in_from_header: Optional[bool] = field(
        default=None, metadata={"alias": "verstatInFromHeader"}
    )

    support_preferred_auto_and_forced_answer: Optional[bool] = field(
        default=None, metadata={"alias": "supportPreferredAutoAndForcedAnswer"}
    )

    support_cisco_caller_id_disposition_header: Optional[bool] = field(
        default=None, metadata={"alias": "supportCiscoCallerIdDispositionHeader"}
    )


@dataclass(kw_only=True)
class SystemSIPDeviceTypeDeleteRequest(OCIRequest):
    """Request to delete a sip device type.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        device_type (str):

    """

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class SystemSIPDeviceTypeFileAddRequest22V2(OCIRequest):
    """Request to add a sip device type file.
        The response is either SuccessResponse or ErrorResponse.

        The following logic applies to these elements:
          macInCert
          macInNonRequestURI
          The two elements are mutually exclusive.
          When both are set to true, the command fails.

    Attributes:

        device_type (str):

        file_format (str):

        remote_file_format (str):

        file_category (str):

        file_customization (str):

        file_source (str):

        upload_file (Optional[FileResource]):

        use_http_digest_authentication (bool):

        mac_based_file_authentication (bool):

        user_name_password_file_authentication (bool):

        bearer_file_authentication (bool):

        mac_in_non_request_uri (bool):

        mac_in_cert (bool):

        mac_format_in_non_request_uri (Optional[str]):

        allow_http (bool):

        allow_https (bool):

        allow_tftp (bool):

        enable_caching (bool):

        allow_upload_from_device (bool):

        default_extended_file_capture_mode (Optional[bool]):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    file_format: str = field(metadata={"alias": "fileFormat"})

    remote_file_format: str = field(metadata={"alias": "remoteFileFormat"})

    file_category: str = field(metadata={"alias": "fileCategory"})

    file_customization: str = field(metadata={"alias": "fileCustomization"})

    file_source: str = field(metadata={"alias": "fileSource"})

    upload_file: Optional[FileResource] = field(
        default=None, metadata={"alias": "uploadFile"}
    )

    use_http_digest_authentication: bool = field(
        metadata={"alias": "useHttpDigestAuthentication"}
    )

    mac_based_file_authentication: bool = field(
        metadata={"alias": "macBasedFileAuthentication"}
    )

    user_name_password_file_authentication: bool = field(
        metadata={"alias": "userNamePasswordFileAuthentication"}
    )

    bearer_file_authentication: bool = field(
        metadata={"alias": "bearerFileAuthentication"}
    )

    mac_in_non_request_uri: bool = field(metadata={"alias": "macInNonRequestURI"})

    mac_in_cert: bool = field(metadata={"alias": "macInCert"})

    mac_format_in_non_request_uri: Optional[str] = field(
        default=None, metadata={"alias": "macFormatInNonRequestURI"}
    )

    allow_http: bool = field(metadata={"alias": "allowHttp"})

    allow_https: bool = field(metadata={"alias": "allowHttps"})

    allow_tftp: bool = field(metadata={"alias": "allowTftp"})

    enable_caching: bool = field(metadata={"alias": "enableCaching"})

    allow_upload_from_device: bool = field(metadata={"alias": "allowUploadFromDevice"})

    default_extended_file_capture_mode: Optional[bool] = field(
        default=None, metadata={"alias": "defaultExtendedFileCaptureMode"}
    )


@dataclass(kw_only=True)
class SystemSIPDeviceTypeFileDeleteRequest14sp8(OCIRequest):
    """Request to delete a sip device type file.
          The response is either SuccessResponse or ErrorResponse.

    Attributes:

        device_type (str):

        file_format (str):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    file_format: str = field(metadata={"alias": "fileFormat"})


@dataclass(kw_only=True)
class SystemSIPDeviceTypeFileGetListRequest14sp8(OCIRequest):
    """Request to get the list of device files managed by the Device Management System, on a per-device type basis.
        The response is either SystemSIPDeviceTypeFileGetListResponse14sp8 or ErrorResponse.

    Attributes:

        device_type (str):

    """

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class SystemSIPDeviceTypeFileGetRequest22V2(OCIRequest):
    """Request to get a sip device type file.
          The response is either SystemSIPDeviceTypeFileGetResponse22V2 or ErrorResponse.

    Attributes:

        device_type (str):

        file_format (str):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    file_format: str = field(metadata={"alias": "fileFormat"})


@dataclass(kw_only=True)
class SystemSIPDeviceTypeFileModifyRequest16sp1(OCIRequest):
    """Request to modify a sip device type file.
          The response is either SuccessResponse or ErrorResponse.

          The following logic applies to these elements:
            macInCert
            macInNonRequestURI
            The two elements are mutually exclusive.
            When both are set to true, the command fails.
            When macInCert is set to true, macInNonRequestURI will be reset to false.
            When macInNonRequestURI is set to true, macInCert will be reset to false.

          The following elements are ignored in XS data mode:
            bearerFileAuthentication

    Attributes:

        device_type (str):

        file_format (str):

        file_customization (Optional[str]):

        file_source (Optional[str]):

        upload_file (Optional[FileResource]):

        use_http_digest_authentication (Optional[bool]):

        mac_based_file_authentication (Optional[bool]):

        user_name_password_file_authentication (Optional[bool]):

        mac_in_non_request_uri (Optional[bool]):

        mac_in_cert (Optional[bool]):

        mac_format_in_non_request_uri (Optional[Nillable[str]]):

        allow_http (Optional[bool]):

        allow_https (Optional[bool]):

        allow_tftp (Optional[bool]):

        enable_caching (Optional[bool]):

        allow_upload_from_device (Optional[bool]):

        default_extended_file_capture_mode (Optional[bool]):

        bearer_file_authentication (Optional[bool]):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    file_format: str = field(metadata={"alias": "fileFormat"})

    file_customization: Optional[str] = field(
        default=None, metadata={"alias": "fileCustomization"}
    )

    file_source: Optional[str] = field(default=None, metadata={"alias": "fileSource"})

    upload_file: Optional[FileResource] = field(
        default=None, metadata={"alias": "uploadFile"}
    )

    use_http_digest_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "useHttpDigestAuthentication"}
    )

    mac_based_file_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "macBasedFileAuthentication"}
    )

    user_name_password_file_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "userNamePasswordFileAuthentication"}
    )

    mac_in_non_request_uri: Optional[bool] = field(
        default=None, metadata={"alias": "macInNonRequestURI"}
    )

    mac_in_cert: Optional[bool] = field(default=None, metadata={"alias": "macInCert"})

    mac_format_in_non_request_uri: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "macFormatInNonRequestURI"}
    )

    allow_http: Optional[bool] = field(default=None, metadata={"alias": "allowHttp"})

    allow_https: Optional[bool] = field(default=None, metadata={"alias": "allowHttps"})

    allow_tftp: Optional[bool] = field(default=None, metadata={"alias": "allowTftp"})

    enable_caching: Optional[bool] = field(
        default=None, metadata={"alias": "enableCaching"}
    )

    allow_upload_from_device: Optional[bool] = field(
        default=None, metadata={"alias": "allowUploadFromDevice"}
    )

    default_extended_file_capture_mode: Optional[bool] = field(
        default=None, metadata={"alias": "defaultExtendedFileCaptureMode"}
    )

    bearer_file_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "bearerFileAuthentication"}
    )

    def __post_init__(self):
        nillable_fields = ["mac_format_in_non_request_uri"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemSIPDeviceTypeGetListRequest(OCIRequest):
    """Request to get the list of sip device types in the system.
        If includeSystemLevel is specified, all system level device types and the reseller device types matching search criteria
        are returned even when searchCriteriaResellerId is specified.
        If reseller administrator sends the request, searchCriteriaResellerId is ignored. All system level device
        types and the device types in the administrator's reseller meeting the search criteria are returned.
        See Also: SystemDeviceTypeGetAvailableListRequest22 in AS data mode, SystemDeviceTypeGetAvailableListRequest19 in XS data mode.
        The response is either SystemSIPDeviceTypeGetListResponse or ErrorResponse.

        The following data elements are only used in AS data mode and ignored in XS data mode:
          searchCriteriaExactDeviceTypeConfigurationOptionType

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_device_type (Optional[List[SearchCriteriaDeviceType]]):

        search_criteria_exact_signaling_address_type (Optional[SearchCriteriaExactSignalingAddressType]):

        search_criteria_reseller_id (Optional[List[SearchCriteriaResellerId]]):

        search_criteria_device_configuration_options (Optional[List[SearchCriteriaExactDeviceTypeConfigurationOptionType]]):

        include_system_level (Optional[bool]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_device_type: Optional[List[SearchCriteriaDeviceType]] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceType"}
    )

    search_criteria_exact_signaling_address_type: Optional[
        SearchCriteriaExactSignalingAddressType
    ] = field(
        default=None, metadata={"alias": "searchCriteriaExactSignalingAddressType"}
    )

    search_criteria_reseller_id: Optional[List[SearchCriteriaResellerId]] = field(
        default=None, metadata={"alias": "searchCriteriaResellerId"}
    )

    search_criteria_device_configuration_options: Optional[
        List[SearchCriteriaExactDeviceTypeConfigurationOptionType]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaDeviceConfigurationOptions"}
    )

    include_system_level: Optional[bool] = field(
        default=None, metadata={"alias": "includeSystemLevel"}
    )


@dataclass(kw_only=True)
class SystemSIPDeviceTypeGetRequest23V13(OCIRequest):
    """Request to get a sip device type.
        See Also: SystemDeviceTypeGetRequest
        The response is either SystemSIPDeviceTypeGetResponse23V13 or ErrorResponse.

    Attributes:

        device_type (str):

    """

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class SystemSIPDeviceTypeLanguageMappingGetListRequest(OCIRequest):
    """Request to get the list of device language names mapped to BroadWorks language names, per-device type.
        The response is either SystemSIPDeviceTypeLanguageMappingGetListResponse or ErrorResponse.

    Attributes:

        device_type (str):

    """

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class SystemSIPDeviceTypeLanguageMappingModifyRequest(OCIRequest):
    """Request to modify the device language name that is mapped to a BroadWorks language name. The request can be used to map many languages.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        device_type (str):

        language_mapping (Optional[List[DeviceManagementLanguageMapping]]):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    language_mapping: Optional[List[DeviceManagementLanguageMapping]] = field(
        default=None, metadata={"alias": "languageMapping"}
    )


@dataclass(kw_only=True)
class SystemSIPDeviceTypeModifyRequest22V7(OCIRequest):
    """Request to modify a sip device type.
        The response is either SuccessResponse or ErrorResponse.

        The following elements are not changeable:
          SignalingAddressType
          isConferenceDevice
          isMusicOnHoldDevice
          isMobilityManagerDevice
          deviceTypeConfigurationOption
          staticLineOrdering

        The following elements are only used in AS data mode and ignored in XS data mode:
          supportClientSessionInfo
          supportCallInfoConferenceSubscriptionURI
          supportRemotePartyInfo
          supportVisualDeviceManagementRedirectLink
          bypassMediaTreatment
          supportCauseParameter
          supportCallingPartyCategoryInOutboundFromHeader
          supportVisualDeviceManagementAPI
          deviceCategory
          verstatInPAIHeader
          verstatInFromHeader
          supportPreferredAutoAndForcedAnswer
          supportCiscoCallerIdDispositionHeader

        The following elements are only used in XS data mode and ignored in AS mode:
          enhancedForICS
          supports3G4GContinuity
          publishesOwnPresence
          locationNetwork
          allowTerminationBasedOnICSI
          roamingMode

        The following logic applies to these elements:
          macInCert
          macInNonRequestURI
          The two elements are mutually exclusive.
          When both are set to true, the command fails.
          When macInCert is set to true, macInNonRequestURI will be reset to false.
          When macInNonRequestURI is set to true, macInCert will be reset to false.

    Attributes:

        device_type (str):

        number_of_ports (Optional[UnboundedPositiveInt]):

        is_obsolete (Optional[bool]):

        registration_capable (Optional[bool]):

        hold_normalization (Optional[str]):

        hold_announcement_method (Optional[str]):

        is_trusted (Optional[bool]):

        e164_capable (Optional[bool]):

        route_advance (Optional[bool]):

        forwarding_override (Optional[bool]):

        wireless_integration (Optional[bool]):

        web_based_config_url (Optional[Nillable[str]]):

        is_video_capable (Optional[bool]):

        pbx_integration (Optional[bool]):

        static_registration_capable (Optional[bool]):

        cpe_device_options (Optional[CPEDeviceModifyOptions22V3]):

        early_media_support (Optional[str]):

        authenticate_refer (Optional[bool]):

        auto_config_soft_client (Optional[bool]):

        authentication_mode (Optional[str]):

        requires_broad_works_digit_collection (Optional[bool]):

        requires_broad_works_call_waiting_tone (Optional[bool]):

        requires_mwi_subscription (Optional[bool]):

        use_history_info_header_on_access_side (Optional[bool]):

        advice_of_charge_capable (Optional[bool]):

        reset_event (Optional[Nillable[str]]):

        reset_string (Optional[Nillable[str]]):

        support_call_center_mime_type (Optional[bool]):

        trunk_mode (Optional[str]):

        add_p_called_party_id (Optional[bool]):

        support_identity_in_update_and_re_invite (Optional[bool]):

        unscreened_presentation_identity_policy (Optional[str]):

        enhanced_for_ics (Optional[bool]):

        support_emergency_disconnect_control (Optional[bool]):

        support_rfc3398 (Optional[bool]):

        support_client_session_info (Optional[bool]):

        support_call_info_conference_subscription_uri (Optional[bool]):

        support_remote_party_info (Optional[bool]):

        support_visual_device_management_redirect_link (Optional[bool]):

        bypass_media_treatment (Optional[bool]):

        supports3_g4_g_continuity (Optional[bool]):

        publishes_own_presence (Optional[bool]):

        support_cause_parameter (Optional[bool]):

        location_network (Optional[str]):

        allow_termination_based_on_icsi (Optional[bool]):

        roaming_mode (Optional[str]):

        support_calling_party_category_in_outbound_from_header (Optional[bool]):

        support_visual_device_management_api (Optional[bool]):

        device_category (Optional[str]):

        verstat_in_pai_header (Optional[bool]):

        verstat_in_from_header (Optional[bool]):

        support_preferred_auto_and_forced_answer (Optional[bool]):

        support_cisco_caller_id_disposition_header (Optional[bool]):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    number_of_ports: Optional[UnboundedPositiveInt] = field(
        default=None, metadata={"alias": "numberOfPorts"}
    )

    is_obsolete: Optional[bool] = field(default=None, metadata={"alias": "isObsolete"})

    registration_capable: Optional[bool] = field(
        default=None, metadata={"alias": "registrationCapable"}
    )

    hold_normalization: Optional[str] = field(
        default=None, metadata={"alias": "holdNormalization"}
    )

    hold_announcement_method: Optional[str] = field(
        default=None, metadata={"alias": "holdAnnouncementMethod"}
    )

    is_trusted: Optional[bool] = field(default=None, metadata={"alias": "isTrusted"})

    e164_capable: Optional[bool] = field(
        default=None, metadata={"alias": "E164Capable"}
    )

    route_advance: Optional[bool] = field(
        default=None, metadata={"alias": "routeAdvance"}
    )

    forwarding_override: Optional[bool] = field(
        default=None, metadata={"alias": "forwardingOverride"}
    )

    wireless_integration: Optional[bool] = field(
        default=None, metadata={"alias": "wirelessIntegration"}
    )

    web_based_config_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "webBasedConfigURL"}
    )

    is_video_capable: Optional[bool] = field(
        default=None, metadata={"alias": "isVideoCapable"}
    )

    pbx_integration: Optional[bool] = field(
        default=None, metadata={"alias": "PBXIntegration"}
    )

    static_registration_capable: Optional[bool] = field(
        default=None, metadata={"alias": "staticRegistrationCapable"}
    )

    cpe_device_options: Optional[CPEDeviceModifyOptions22V3] = field(
        default=None, metadata={"alias": "cpeDeviceOptions"}
    )

    early_media_support: Optional[str] = field(
        default=None, metadata={"alias": "earlyMediaSupport"}
    )

    authenticate_refer: Optional[bool] = field(
        default=None, metadata={"alias": "authenticateRefer"}
    )

    auto_config_soft_client: Optional[bool] = field(
        default=None, metadata={"alias": "autoConfigSoftClient"}
    )

    authentication_mode: Optional[str] = field(
        default=None, metadata={"alias": "authenticationMode"}
    )

    requires_broad_works_digit_collection: Optional[bool] = field(
        default=None, metadata={"alias": "requiresBroadWorksDigitCollection"}
    )

    requires_broad_works_call_waiting_tone: Optional[bool] = field(
        default=None, metadata={"alias": "requiresBroadWorksCallWaitingTone"}
    )

    requires_mwi_subscription: Optional[bool] = field(
        default=None, metadata={"alias": "requiresMWISubscription"}
    )

    use_history_info_header_on_access_side: Optional[bool] = field(
        default=None, metadata={"alias": "useHistoryInfoHeaderOnAccessSide"}
    )

    advice_of_charge_capable: Optional[bool] = field(
        default=None, metadata={"alias": "adviceOfChargeCapable"}
    )

    reset_event: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "resetEvent"}
    )

    reset_string: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "resetString"}
    )

    support_call_center_mime_type: Optional[bool] = field(
        default=None, metadata={"alias": "supportCallCenterMIMEType"}
    )

    trunk_mode: Optional[str] = field(default=None, metadata={"alias": "trunkMode"})

    add_p_called_party_id: Optional[bool] = field(
        default=None, metadata={"alias": "addPCalledPartyId"}
    )

    support_identity_in_update_and_re_invite: Optional[bool] = field(
        default=None, metadata={"alias": "supportIdentityInUpdateAndReInvite"}
    )

    unscreened_presentation_identity_policy: Optional[str] = field(
        default=None, metadata={"alias": "unscreenedPresentationIdentityPolicy"}
    )

    enhanced_for_ics: Optional[bool] = field(
        default=None, metadata={"alias": "enhancedForICS"}
    )

    support_emergency_disconnect_control: Optional[bool] = field(
        default=None, metadata={"alias": "supportEmergencyDisconnectControl"}
    )

    support_rfc3398: Optional[bool] = field(
        default=None, metadata={"alias": "supportRFC3398"}
    )

    support_client_session_info: Optional[bool] = field(
        default=None, metadata={"alias": "supportClientSessionInfo"}
    )

    support_call_info_conference_subscription_uri: Optional[bool] = field(
        default=None, metadata={"alias": "supportCallInfoConferenceSubscriptionURI"}
    )

    support_remote_party_info: Optional[bool] = field(
        default=None, metadata={"alias": "supportRemotePartyInfo"}
    )

    support_visual_device_management_redirect_link: Optional[bool] = field(
        default=None, metadata={"alias": "supportVisualDeviceManagementRedirectLink"}
    )

    bypass_media_treatment: Optional[bool] = field(
        default=None, metadata={"alias": "bypassMediaTreatment"}
    )

    supports3_g4_g_continuity: Optional[bool] = field(
        default=None, metadata={"alias": "supports3G4GContinuity"}
    )

    publishes_own_presence: Optional[bool] = field(
        default=None, metadata={"alias": "publishesOwnPresence"}
    )

    support_cause_parameter: Optional[bool] = field(
        default=None, metadata={"alias": "supportCauseParameter"}
    )

    location_network: Optional[str] = field(
        default=None, metadata={"alias": "locationNetwork"}
    )

    allow_termination_based_on_icsi: Optional[bool] = field(
        default=None, metadata={"alias": "allowTerminationBasedOnICSI"}
    )

    roaming_mode: Optional[str] = field(default=None, metadata={"alias": "roamingMode"})

    support_calling_party_category_in_outbound_from_header: Optional[bool] = field(
        default=None,
        metadata={"alias": "supportCallingPartyCategoryInOutboundFromHeader"},
    )

    support_visual_device_management_api: Optional[bool] = field(
        default=None, metadata={"alias": "supportVisualDeviceManagementAPI"}
    )

    device_category: Optional[str] = field(
        default=None, metadata={"alias": "deviceCategory"}
    )

    verstat_in_pai_header: Optional[bool] = field(
        default=None, metadata={"alias": "verstatInPAIHeader"}
    )

    verstat_in_from_header: Optional[bool] = field(
        default=None, metadata={"alias": "verstatInFromHeader"}
    )

    support_preferred_auto_and_forced_answer: Optional[bool] = field(
        default=None, metadata={"alias": "supportPreferredAutoAndForcedAnswer"}
    )

    support_cisco_caller_id_disposition_header: Optional[bool] = field(
        default=None, metadata={"alias": "supportCiscoCallerIdDispositionHeader"}
    )

    def __post_init__(self):
        nillable_fields = ["web_based_config_url", "reset_event", "reset_string"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemSIPDeviceTypeServiceGetRequest(OCIRequest):
    """Request to get the list of BroadWorks services that can be integrated to a device type and the level of integration for this device type.
        The response is either SystemSIPDeviceTypeServiceGetResponse or ErrorResponse.

    Attributes:

        device_type (str):

    """

    device_type: str = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class SystemSIPDeviceTypeServiceModifyRequest(OCIRequest):
    """Request to set the level of integration that a device type has in relation to BroadWorks services.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        device_type (str):

        supports_polycom_phone_services (Optional[bool]):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    supports_polycom_phone_services: Optional[bool] = field(
        default=None, metadata={"alias": "supportsPolycomPhoneServices"}
    )


@dataclass(kw_only=True)
class SystemSIPDiversionReasonGetRequest(OCIRequest):
    """Request to get the list of SIP Diversion Cause values.
        The response is either a SystemSIPDiversionReasonGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSIPDiversionReasonModifyRequest(OCIRequest):
    """Request to modify the SIP cause value for a given diversion reason.
        The response is either a SuccessResponse or ErrorResponse.

    Attributes:

        diversion_reason (str):

        cause_value (str):

    """

    diversion_reason: str = field(metadata={"alias": "diversionReason"})

    cause_value: str = field(metadata={"alias": "causeValue"})


@dataclass(kw_only=True)
class SystemSIPGetACLListRequest(OCIRequest):
    """Get the SIP access control list.
        The response is either SystemSIPGetACLListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSIPGetContentTypeListRequest(OCIRequest):
    """Get the content type list for the SIP interface.
        The response is either SystemSIPGetContentTypeListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSIPModifyACLEntryRequest14sp2(OCIRequest):
    """Modify an entry from the SIP access control list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        net_address (str):

        transport_protocol (Optional[str]):

        description (Optional[Nillable[str]]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemSIPModifyContentTypeRequest(OCIRequest):
    """Modify an content type for the SIP interface.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        content_type (str):

        interface (Optional[str]):

    """

    content_type: str = field(metadata={"alias": "contentType"})

    interface: Optional[str] = field(default=None, metadata={"alias": "interface"})


@dataclass(kw_only=True)
class SystemSMDIAddACLEntryRequest14sp2(OCIRequest):
    """Add an entry to the SMDI access control list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        net_address (str):

        description (Optional[str]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemSMDIDeleteACLEntryRequest14sp2(OCIRequest):
    """Delete an entry from the SMDI access control list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        net_address (str):

    """

    net_address: str = field(metadata={"alias": "netAddress"})


@dataclass(kw_only=True)
class SystemSMDIGetACLListRequest(OCIRequest):
    """Get the SMDI access control list.
        The response is either SystemSMDIGetACLListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSMDIMessageDeskAddServerRequest(OCIRequest):
    """Request to add a SMDI Server to the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_name (str):

        net_address (str):

        port (int):

        description (Optional[str]):

    """

    device_name: str = field(metadata={"alias": "deviceName"})

    net_address: str = field(metadata={"alias": "netAddress"})

    port: int = field(metadata={"alias": "port"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemSMDIMessageDeskAddServerRouteRequest(OCIRequest):
    """Request to add a SMDI Server route to the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        route_destination (str):

        device_name (List[str]):

    """

    route_destination: str = field(metadata={"alias": "routeDestination"})

    device_name: List[str] = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class SystemSMDIMessageDeskDeleteServerRequest(OCIRequest):
    """Request to delete a SMDI Server from the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_name (str):

    """

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class SystemSMDIMessageDeskDeleteServerRouteRequest(OCIRequest):
    """Request to delete a SMDI Server route from the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        route_destination (str):

    """

    route_destination: str = field(metadata={"alias": "routeDestination"})


@dataclass(kw_only=True)
class SystemSMDIMessageDeskGetServerListRequest(OCIRequest):
    """Request to get a list of SMDI Servers defined in the system.
        The response is either a SystemSMDIMessageDeskGetServerListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSMDIMessageDeskGetServerRouteListRequest(OCIRequest):
    """Request to get a list of SMDI Servers routes in the system.
        The response is either a SystemSMDIMessageDeskGetServerRouteListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSMDIMessageDeskModifyServerRequest(OCIRequest):
    """Request to modify a SMDI Server in the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        device_name (str):

        net_address (Optional[str]):

        port (Optional[int]):

        description (Optional[Nillable[str]]):

    """

    device_name: str = field(metadata={"alias": "deviceName"})

    net_address: Optional[str] = field(default=None, metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemSMDIMessageDeskModifyServerRouteRequest(OCIRequest):
    """Replace the list of devices associated with a SMDI server route destination.
        There must be at least one device in the list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        route_destination (str):

        device_name_list (Optional[object]):

    """

    route_destination: str = field(metadata={"alias": "routeDestination"})

    device_name_list: Optional[object] = field(
        default=None, metadata={"alias": "deviceNameList"}
    )


@dataclass(kw_only=True)
class SystemSMDIModifyACLEntryRequest14sp2(OCIRequest):
    """Modify an entry from the SMDI access control list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        net_address (str):

        description (Optional[Nillable[str]]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemSMDIParametersGetRequest(OCIRequest):
    """Request to get the list of SMDI system parameters.
        The response is either SystemSMDIParametersGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSMDIParametersModifyRequest(OCIRequest):
    """Request to modify SMDI system parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        enable_smdi (Optional[bool]):

        listening_port (Optional[int]):

        max_connections (Optional[int]):

    """

    enable_smdi: Optional[bool] = field(default=None, metadata={"alias": "enableSMDI"})

    listening_port: Optional[int] = field(
        default=None, metadata={"alias": "listeningPort"}
    )

    max_connections: Optional[int] = field(
        default=None, metadata={"alias": "maxConnections"}
    )


@dataclass(kw_only=True)
class SystemSMPPGetRequest22(OCIRequest):
    """Request the system level data associated with SMPP external interface.
        The response is either a SystemSMPPGetResponse21 or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSMPPModifyRequest(OCIRequest):
    """Request to modify the system level data associated with the SMPP external interface.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        primary_smpp_server_net_address (Optional[Nillable[str]]):

        primary_smpp_port (Optional[int]):

        secondary_smpp_server_net_address (Optional[Nillable[str]]):

        secondary_smpp_port (Optional[int]):

        system_id (Optional[Nillable[str]]):

        password (Optional[Nillable[str]]):

        version (Optional[str]):

        system_type (Optional[Nillable[str]]):

        enable_mwi_customized_message (Optional[bool]):

        support_message_payload (Optional[bool]):

        max_short_message_length (Optional[int]):

        use_gsm_mwi_ucs2_encoding (Optional[bool]):

        include_only_new_message_count (Optional[bool]):

    """

    primary_smpp_server_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "primarySMPPServerNetAddress"}
    )

    primary_smpp_port: Optional[int] = field(
        default=None, metadata={"alias": "primarySMPPPort"}
    )

    secondary_smpp_server_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "secondarySMPPServerNetAddress"}
    )

    secondary_smpp_port: Optional[int] = field(
        default=None, metadata={"alias": "secondarySMPPPort"}
    )

    system_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "systemId"}
    )

    password: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "password"}
    )

    version: Optional[str] = field(default=None, metadata={"alias": "version"})

    system_type: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "systemType"}
    )

    enable_mwi_customized_message: Optional[bool] = field(
        default=None, metadata={"alias": "enableMWICustomizedMessage"}
    )

    support_message_payload: Optional[bool] = field(
        default=None, metadata={"alias": "supportMessagePayload"}
    )

    max_short_message_length: Optional[int] = field(
        default=None, metadata={"alias": "maxShortMessageLength"}
    )

    use_gsm_mwi_ucs2_encoding: Optional[bool] = field(
        default=None, metadata={"alias": "useGsmMwiUcs2Encoding"}
    )

    include_only_new_message_count: Optional[bool] = field(
        default=None, metadata={"alias": "includeOnlyNewMessageCount"}
    )

    def __post_init__(self):
        nillable_fields = [
            "primary_smpp_server_net_address",
            "secondary_smpp_server_net_address",
            "system_id",
            "password",
            "system_type",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemScheduleAddEventRequest(OCIRequest):
    """Add an event to system schedule.
        The response is either a SuccessResponse or an ErrorResponse.
        The startDate element is adjusted to the first occurrence of the recurrent schedule that comes at or after the startDate.
        The endDate element is set to the sum of the adjusted starDate element value and the event duration.

    Attributes:

        schedule_key (ScheduleKey):

        event_name (str):

        start_date (int):

        all_day_event (Optional[bool]):

        start_time (Optional[HourMinute]):

        end_time (Optional[HourMinute]):

        end_date (int):

        recurrence (Optional[Recurrence]):

    """

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    event_name: str = field(metadata={"alias": "eventName"})

    start_date: int = field(metadata={"alias": "startDate"})

    all_day_event: Optional[bool] = field(
        default=None, metadata={"alias": "allDayEvent"}
    )

    start_time: Optional[HourMinute] = field(
        default=None, metadata={"alias": "startTime"}
    )

    end_time: Optional[HourMinute] = field(default=None, metadata={"alias": "endTime"})

    end_date: int = field(metadata={"alias": "endDate"})

    recurrence: Optional[Recurrence] = field(
        default=None, metadata={"alias": "recurrence"}
    )


@dataclass(kw_only=True)
class SystemScheduleAddRequest(OCIRequest):
    """Add a system schedule.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        schedule_name (str):

        schedule_type (str):

    """

    schedule_name: str = field(metadata={"alias": "scheduleName"})

    schedule_type: str = field(metadata={"alias": "scheduleType"})


@dataclass(kw_only=True)
class SystemScheduleDeleteEventListRequest(OCIRequest):
    """Delete a list of events from a system schedule.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        schedule_key (ScheduleKey):

        event_name (List[str]):

    """

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    event_name: List[str] = field(metadata={"alias": "eventName"})


@dataclass(kw_only=True)
class SystemScheduleDeleteListRequest(OCIRequest):
    """Delete a list of system schedule.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        schedule_key (List[ScheduleKey]):

    """

    schedule_key: List[ScheduleKey] = field(metadata={"alias": "scheduleKey"})


@dataclass(kw_only=True)
class SystemScheduleGetEventListRequest(OCIRequest):
    """Get the list of events of a system schedule.
        The response is either a SystemScheduleGetResponse or an ErrorResponse.

    Attributes:

        schedule_key (ScheduleKey):

    """

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})


@dataclass(kw_only=True)
class SystemScheduleGetEventRequest(OCIRequest):
    """Get an event from a system schedule.
        The response is either a SystemScheduleGetEventResponse or an ErrorResponse.

    Attributes:

        schedule_key (ScheduleKey):

        event_name (str):

    """

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    event_name: str = field(metadata={"alias": "eventName"})


@dataclass(kw_only=True)
class SystemScheduleGetListRequest(OCIRequest):
    """Get the list of a system schedules. The list can be filtered by schedule type.
        The response is either a SystemScheduleGetListResponse or an ErrorResponse.

    Attributes:

        schedule_type (Optional[str]):

    """

    schedule_type: Optional[str] = field(
        default=None, metadata={"alias": "scheduleType"}
    )


@dataclass(kw_only=True)
class SystemScheduleModifyEventRequest(OCIRequest):
    """Modify an event of a system schedule.
        The response is either a SuccessResponse or an ErrorResponse.
        The startDate element is adjusted to the first occurrence of the recurrent schedule that comes at or after the startDate.
        The endDate element is set to the sum of the adjusted starDate element value and the event duration.

    Attributes:

        schedule_key (ScheduleKey):

        event_name (str):

        new_event_name (Optional[str]):

        start_date (Optional[int]):

        all_day_event (Optional[bool]):

        start_time (Optional[HourMinute]):

        end_time (Optional[HourMinute]):

        end_date (Optional[int]):

        recurrence (Optional[Nillable[Recurrence]]):

    """

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    event_name: str = field(metadata={"alias": "eventName"})

    new_event_name: Optional[str] = field(
        default=None, metadata={"alias": "newEventName"}
    )

    start_date: Optional[int] = field(default=None, metadata={"alias": "startDate"})

    all_day_event: Optional[bool] = field(
        default=None, metadata={"alias": "allDayEvent"}
    )

    start_time: Optional[HourMinute] = field(
        default=None, metadata={"alias": "startTime"}
    )

    end_time: Optional[HourMinute] = field(default=None, metadata={"alias": "endTime"})

    end_date: Optional[int] = field(default=None, metadata={"alias": "endDate"})

    recurrence: Optional[Nillable[Recurrence]] = field(
        default=None, metadata={"alias": "recurrence"}
    )

    def __post_init__(self):
        nillable_fields = ["recurrence"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemScheduleModifyRequest(OCIRequest):
    """Modify a system schedule.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        schedule_key (ScheduleKey):

        new_schedule_name (Optional[str]):

    """

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    new_schedule_name: Optional[str] = field(
        default=None, metadata={"alias": "newScheduleName"}
    )


@dataclass(kw_only=True)
class SystemSecurityClassificationAddClassificationRequest(OCIRequest):
    """Add a new Security Classification
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        security_classification_name (str):

        audio_file (LabeledMediaFileResource):

    """

    security_classification_name: str = field(
        metadata={"alias": "securityClassificationName"}
    )

    audio_file: LabeledMediaFileResource = field(metadata={"alias": "audioFile"})


@dataclass(kw_only=True)
class SystemSecurityClassificationDeleteClassificationRequest(OCIRequest):
    """Delete a System Security Classification
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        security_classification_name (str):

    """

    security_classification_name: str = field(
        metadata={"alias": "securityClassificationName"}
    )


@dataclass(kw_only=True)
class SystemSecurityClassificationGetClassificationRequest(OCIRequest):
    """Get a system Security Classification.
        The response is either SystemSecurityClassificationGetClassificationResponse or ErrorResponse.

    Attributes:

        security_classification_name (str):

    """

    security_classification_name: str = field(
        metadata={"alias": "securityClassificationName"}
    )


@dataclass(kw_only=True)
class SystemSecurityClassificationGetClassificationTrunkGroupUsageListRequest(
    OCIRequest
):
    """Get a list of users that currently have the specified Security Classification assigned.
        The response is either SystemSecurityClassificationGetClassificationTrunkGroupUsageListResponse or ErrorResponse.

    Attributes:

        security_classification (str):

        response_size_limit (Optional[int]):

        search_criteria_trunk_group_name (Optional[List[SearchCriteriaTrunkGroupName]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_exact_organization_type (Optional[SearchCriteriaExactOrganizationType]):

    """

    security_classification: str = field(metadata={"alias": "securityClassification"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_trunk_group_name: Optional[List[SearchCriteriaTrunkGroupName]] = (
        field(default=None, metadata={"alias": "searchCriteriaTrunkGroupName"})
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_exact_organization_type: Optional[
        SearchCriteriaExactOrganizationType
    ] = field(default=None, metadata={"alias": "searchCriteriaExactOrganizationType"})


@dataclass(kw_only=True)
class SystemSecurityClassificationGetClassificationUserUsageListRequest(OCIRequest):
    """Get a list of users that currently have the specified Security Classification assigned.
        The response is either SystemSecurityClassificationGetClassificationUserUsageListResponse or ErrorResponse.

    Attributes:

        security_classification (str):

        response_size_limit (Optional[int]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    security_classification: str = field(metadata={"alias": "securityClassification"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class SystemSecurityClassificationGetRequest21(OCIRequest):
    """Get system Security Classifications parameters.
        The response is either SystemSecurityClassificationGetResponse21 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSecurityClassificationModifyClassificationRequest(OCIRequest):
    """Modify a Security Classification
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        security_classification_name (str):

        new_security_classification_name (Optional[str]):

        audio_file (Optional[LabeledMediaFileResource]):

    """

    security_classification_name: str = field(
        metadata={"alias": "securityClassificationName"}
    )

    new_security_classification_name: Optional[str] = field(
        default=None, metadata={"alias": "newSecurityClassificationName"}
    )

    audio_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "audioFile"}
    )


@dataclass(kw_only=True)
class SystemSecurityClassificationModifyRequest(OCIRequest):
    """Modify security classification parameters.
        The response is either a SuccessResponse or an ErrorResponse.
        NOTE: The security classifications must be specified in order of priority. The command fails if all the security classifications defined for the system are not provided.

    Attributes:

        meet_me_annc_threshold (Optional[int]):

        play_trunk_user_security_classification_announcement (Optional[bool]):

        security_classification_name (Optional[List[str]]):

    """

    meet_me_annc_threshold: Optional[int] = field(
        default=None, metadata={"alias": "meetMeAnncThreshold"}
    )

    play_trunk_user_security_classification_announcement: Optional[bool] = field(
        default=None,
        metadata={"alias": "playTrunkUserSecurityClassificationAnnouncement"},
    )

    security_classification_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "securityClassificationName"}
    )


@dataclass(kw_only=True)
class SystemSelectiveServicesGetRequest22(OCIRequest):
    """Request the system level data associated with Selective Services.
        The response is either a SystemSelectiveServicesGetResponse22 or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSelectiveServicesModifyRequest(OCIRequest):
    """Modify the system level data associated with SystemSelectiveServicesRequest.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        schedule_combination (Optional[str]):

        screen_private_number (Optional[bool]):

        empty_holiday_schedule_is_out_of_schedule (Optional[bool]):

    """

    schedule_combination: Optional[str] = field(
        default=None, metadata={"alias": "scheduleCombination"}
    )

    screen_private_number: Optional[bool] = field(
        default=None, metadata={"alias": "screenPrivateNumber"}
    )

    empty_holiday_schedule_is_out_of_schedule: Optional[bool] = field(
        default=None, metadata={"alias": "emptyHolidayScheduleIsOutOfSchedule"}
    )


@dataclass(kw_only=True)
class SystemServerAddressesGetRequest(OCIRequest):
    """Request to get the list of Server Addresses.
        The response is either SystemServerAddressesGetResponse or ErrorResponse.
        See also:
          PrimaryInfoGetRequest
          PublicClusterGetFullyQualifiedDomainNameRequest

    Attributes:

    """


@dataclass(kw_only=True)
class SystemServerAddressesModifyRequest(OCIRequest):
    """Request to modify Server Addresses.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        web_server_cluster_public_fqdn (Optional[Nillable[str]]):

        application_server_cluster_primary_public_fqdn (Optional[Nillable[str]]):

        application_server_cluster_secondary_public_fqdn (Optional[Nillable[str]]):

        application_server_cluster_primary_private_fqdn (Optional[Nillable[str]]):

        application_server_cluster_secondary_private_fqdn (Optional[Nillable[str]]):

    """

    web_server_cluster_public_fqdn: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "webServerClusterPublicFQDN"}
    )

    application_server_cluster_primary_public_fqdn: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "applicationServerClusterPrimaryPublicFQDN"}
    )

    application_server_cluster_secondary_public_fqdn: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "applicationServerClusterSecondaryPublicFQDN"}
    )

    application_server_cluster_primary_private_fqdn: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "applicationServerClusterPrimaryPrivateFQDN"}
    )

    application_server_cluster_secondary_private_fqdn: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "applicationServerClusterSecondaryPrivateFQDN"}
    )

    def __post_init__(self):
        nillable_fields = [
            "web_server_cluster_public_fqdn",
            "application_server_cluster_primary_public_fqdn",
            "application_server_cluster_secondary_public_fqdn",
            "application_server_cluster_primary_private_fqdn",
            "application_server_cluster_secondary_private_fqdn",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemServiceActivationAccessCodeGetRequest(OCIRequest):
    """Get the Service Activation Access Code system parameters.
        The response is either a SystemServiceActivationAccessCodeGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemServiceActivationAccessCodeModifyRequest(OCIRequest):
    """Request to modify Service Activation Access Code system parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        is_active (Optional[bool]):

        terminating_access_code (Optional[Nillable[str]]):

        redirecting_access_code (Optional[Nillable[str]]):

        click_to_dial_access_code (Optional[Nillable[str]]):

    """

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    terminating_access_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "terminatingAccessCode"}
    )

    redirecting_access_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "redirectingAccessCode"}
    )

    click_to_dial_access_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "clickToDialAccessCode"}
    )

    def __post_init__(self):
        nillable_fields = [
            "terminating_access_code",
            "redirecting_access_code",
            "click_to_dial_access_code",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemServiceAttributeDefaultGetListRequest(OCIRequest):
    """Request to get the default attributes for a service that are used when assigning the feature.
        The response is either a SystemServiceAttributeDefaultGetListResponse or an ErrorResponse.

    Attributes:

        service_name (str):

    """

    service_name: str = field(metadata={"alias": "serviceName"})


@dataclass(kw_only=True)
class SystemServiceAttributeDefaultModifyListRequest(OCIRequest):
    """Request to modify a list of default attributes that are used when assigning the feature.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_name (str):

        service_attribute_entry (List[ServiceAttributeEntry]):

    """

    service_name: str = field(metadata={"alias": "serviceName"})

    service_attribute_entry: List[ServiceAttributeEntry] = field(
        metadata={"alias": "serviceAttributeEntry"}
    )


@dataclass(kw_only=True)
class SystemServiceCodeAddRequest(OCIRequest):
    """Request to add a service code for the purpose of providing free format routable strings for dialing
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_code (str):

        description (str):

    """

    service_code: str = field(metadata={"alias": "serviceCode"})

    description: str = field(metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemServiceCodeDeleteRequest(OCIRequest):
    """Request to delete a service code for the purpose of providing free format routable strings for dialing
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_code (str):

    """

    service_code: str = field(metadata={"alias": "serviceCode"})


@dataclass(kw_only=True)
class SystemServiceCodeGetListRequest(OCIRequest):
    """Request to get all service codes that have been defined in the system.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        The response is either SystemServiceCodeGetListResponse or ErrorResponse.

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_service_code (Optional[List[SearchCriteriaServiceCode]]):

        search_criteria_service_code_description (Optional[List[SearchCriteriaServiceCodeDescription]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_service_code: Optional[List[SearchCriteriaServiceCode]] = field(
        default=None, metadata={"alias": "searchCriteriaServiceCode"}
    )

    search_criteria_service_code_description: Optional[
        List[SearchCriteriaServiceCodeDescription]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceCodeDescription"})


@dataclass(kw_only=True)
class SystemServiceCodeModifyRequest(OCIRequest):
    """Request to modify service code.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_code (str):

        description (Optional[str]):

    """

    service_code: str = field(metadata={"alias": "serviceCode"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemServicePackMigrationGetRequest(OCIRequest):
    """Get system level Service Pack Migration parameters.
        The response is either a SystemServicePackMigrationGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemServicePackMigrationModifyRequest(OCIRequest):
    """Modify system level settings for Service Pack Migration.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        max_simultaneous_migration_tasks (Optional[int]):

    """

    max_simultaneous_migration_tasks: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousMigrationTasks"}
    )


@dataclass(kw_only=True)
class SystemServicePhoneNumberLookupRequest(OCIRequest):
    """Lookup if the given number is defined in the specified service in the system.
        The response is SystemServicePhoneNumberLookupResponse.

    Attributes:

        service_type (str):

        phone_number (str):

    """

    service_type: str = field(metadata={"alias": "serviceType"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class SystemSessionAdmissionControlGetRequest25(OCIRequest):
    """Get the session admission control settings for the system.
        The response is either a SystemSessionAdmissionControlGetResponse25 or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSessionAdmissionControlModifyRequest(OCIRequest):
    """Modify the session admission control settings for the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        count_long_connections_to_media_server (Optional[bool]):

        sac_handling_for_mo_h (Optional[str]):

        block_vm_deposit_due_to_sac_limits (Optional[bool]):

        sac_codec_selection_policy (Optional[str]):

        count_call_to_mobile_number_for_sac_subscriber (Optional[bool]):

        count_bw_anywhere_for_sac_subscriber (Optional[bool]):

        count_ro_for_sac_subscriber (Optional[bool]):

        exclude_bw_mobility_for_sac_subscriber (Optional[bool]):

        enable_holdover_of_highwater_session_counts (Optional[bool]):

        holdover_period_minutes (Optional[str]):

        time_zone_offset_minutes (Optional[str]):

        count_calls_redirected_to_external_destination (Optional[bool]):

        release_bw_anywhere_devices_only (Optional[bool]):

    """

    count_long_connections_to_media_server: Optional[bool] = field(
        default=None, metadata={"alias": "countLongConnectionsToMediaServer"}
    )

    sac_handling_for_mo_h: Optional[str] = field(
        default=None, metadata={"alias": "sacHandlingForMoH"}
    )

    block_vm_deposit_due_to_sac_limits: Optional[bool] = field(
        default=None, metadata={"alias": "blockVMDepositDueToSACLimits"}
    )

    sac_codec_selection_policy: Optional[str] = field(
        default=None, metadata={"alias": "sacCodecSelectionPolicy"}
    )

    count_call_to_mobile_number_for_sac_subscriber: Optional[bool] = field(
        default=None, metadata={"alias": "countCallToMobileNumberForSACSubscriber"}
    )

    count_bw_anywhere_for_sac_subscriber: Optional[bool] = field(
        default=None, metadata={"alias": "countBWAnywhereForSACSubscriber"}
    )

    count_ro_for_sac_subscriber: Optional[bool] = field(
        default=None, metadata={"alias": "countROForSACSubscriber"}
    )

    exclude_bw_mobility_for_sac_subscriber: Optional[bool] = field(
        default=None, metadata={"alias": "excludeBWMobilityForSACSubscriber"}
    )

    enable_holdover_of_highwater_session_counts: Optional[bool] = field(
        default=None, metadata={"alias": "enableHoldoverOfHighwaterSessionCounts"}
    )

    holdover_period_minutes: Optional[str] = field(
        default=None, metadata={"alias": "holdoverPeriodMinutes"}
    )

    time_zone_offset_minutes: Optional[str] = field(
        default=None, metadata={"alias": "timeZoneOffsetMinutes"}
    )

    count_calls_redirected_to_external_destination: Optional[bool] = field(
        default=None, metadata={"alias": "countCallsRedirectedToExternalDestination"}
    )

    release_bw_anywhere_devices_only: Optional[bool] = field(
        default=None, metadata={"alias": "releaseBWAnywhereDevicesOnly"}
    )


@dataclass(kw_only=True)
class SystemSessionAuditGetRequest23(OCIRequest):
    """Request the system level data associated with session audit.
        The response is either a SystemSessionAuditGetResponse23 or
        an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSessionAuditModifyRequest14sp3(OCIRequest):
    """Modify the system level data associated with session audit.
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
        alwaysAllowRefreshForMS
        msAuditIntervalSeconds

    Attributes:

        is_audit_active (Optional[bool]):

        audit_interval_seconds (Optional[int]):

        audit_timeout_seconds (Optional[int]):

        release_call_on_audit_failure (Optional[bool]):

        is_sip_refresh_allowed_on_audit (Optional[bool]):

        allow_update_for_sip_refresh (Optional[bool]):

        is_sip_session_timer_active (Optional[bool]):

        sip_session_expires_minimum_seconds (Optional[int]):

        enforce_sip_session_expires_maximum (Optional[bool]):

        sip_session_expires_maximum_seconds (Optional[int]):

        sip_session_expires_timer_seconds (Optional[int]):

        always_use_session_timer_when_supported (Optional[bool]):

        preferred_session_timer_refresher (Optional[str]):

        enable_emergency_call_alarm_timer (Optional[bool]):

        emergency_call_alarm_minutes (Optional[int]):

        enable_emergency_call_cleanup_timer (Optional[bool]):

        emergency_call_cleanup_minutes (Optional[int]):

        always_allow_refresh_for_ms (Optional[bool]):

        ms_audit_interval_seconds (Optional[int]):

    """

    is_audit_active: Optional[bool] = field(
        default=None, metadata={"alias": "isAuditActive"}
    )

    audit_interval_seconds: Optional[int] = field(
        default=None, metadata={"alias": "auditIntervalSeconds"}
    )

    audit_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "auditTimeoutSeconds"}
    )

    release_call_on_audit_failure: Optional[bool] = field(
        default=None, metadata={"alias": "releaseCallOnAuditFailure"}
    )

    is_sip_refresh_allowed_on_audit: Optional[bool] = field(
        default=None, metadata={"alias": "isSIPRefreshAllowedOnAudit"}
    )

    allow_update_for_sip_refresh: Optional[bool] = field(
        default=None, metadata={"alias": "allowUpdateForSIPRefresh"}
    )

    is_sip_session_timer_active: Optional[bool] = field(
        default=None, metadata={"alias": "isSIPSessionTimerActive"}
    )

    sip_session_expires_minimum_seconds: Optional[int] = field(
        default=None, metadata={"alias": "sipSessionExpiresMinimumSeconds"}
    )

    enforce_sip_session_expires_maximum: Optional[bool] = field(
        default=None, metadata={"alias": "enforceSIPSessionExpiresMaximum"}
    )

    sip_session_expires_maximum_seconds: Optional[int] = field(
        default=None, metadata={"alias": "sipSessionExpiresMaximumSeconds"}
    )

    sip_session_expires_timer_seconds: Optional[int] = field(
        default=None, metadata={"alias": "sipSessionExpiresTimerSeconds"}
    )

    always_use_session_timer_when_supported: Optional[bool] = field(
        default=None, metadata={"alias": "alwaysUseSessionTimerWhenSupported"}
    )

    preferred_session_timer_refresher: Optional[str] = field(
        default=None, metadata={"alias": "preferredSessionTimerRefresher"}
    )

    enable_emergency_call_alarm_timer: Optional[bool] = field(
        default=None, metadata={"alias": "enableEmergencyCallAlarmTimer"}
    )

    emergency_call_alarm_minutes: Optional[int] = field(
        default=None, metadata={"alias": "emergencyCallAlarmMinutes"}
    )

    enable_emergency_call_cleanup_timer: Optional[bool] = field(
        default=None, metadata={"alias": "enableEmergencyCallCleanupTimer"}
    )

    emergency_call_cleanup_minutes: Optional[int] = field(
        default=None, metadata={"alias": "emergencyCallCleanupMinutes"}
    )

    always_allow_refresh_for_ms: Optional[bool] = field(
        default=None, metadata={"alias": "alwaysAllowRefreshForMS"}
    )

    ms_audit_interval_seconds: Optional[int] = field(
        default=None, metadata={"alias": "msAuditIntervalSeconds"}
    )


@dataclass(kw_only=True)
class SystemShInterfaceParametersGetRequest17(OCIRequest):
    """Retrieves the Sh Interface system parameters.
        The response is either a SystemShInterfaceParametersGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemShInterfaceParametersModifyRequest17(OCIRequest):
    """Modifies the Sh Interface system parameters.  This request must be submitted on both nodes in the redundant Application Server cluster in order for the changes to take effect on each node without requiring a restart.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        hss_realm (Optional[Nillable[str]]):

        public_identity_refresh_delay_seconds (Optional[int]):

    """

    hss_realm: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "hssRealm"}
    )

    public_identity_refresh_delay_seconds: Optional[int] = field(
        default=None, metadata={"alias": "publicIdentityRefreshDelaySeconds"}
    )

    def __post_init__(self):
        nillable_fields = ["hss_realm"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemShInterfaceRefreshTaskGetRequest(OCIRequest):
    """Retrieves the status of the system refresh task on the local Application Server node.
        The response is either a SystemShInterfaceRefreshTaskGetResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemShInterfaceRefreshTaskStartRequest(OCIRequest):
    """Dispatches the system refresh task on the local Application Server node.  At most one instance of the system refresh task may run on an Application Server node at a given point in time.  If the system refresh task is already running when this request is made, an ErrorResponse is returned.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemShInterfaceRefreshTaskTerminateRequest(OCIRequest):
    """Terminates the system refresh task in progress on the local Application Server node.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSoftwareVersionGetRequest(OCIRequest):
    """Requests the software version of the Application Server.
        The response is either SystemSoftwareVersionGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSpeedDial100GetRequest17sp1(OCIRequest):
    """Get the speed dial 100 system-wide default setting.
        The response is either a SystemSpeedDial100GetResponse17sp1 or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSpeedDial100ModifyRequest(OCIRequest):
    """Modify the speed dial 100 system-wide default prefix setting.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        prefix (Optional[Nillable[str]]):

    """

    prefix: Optional[Nillable[str]] = field(default=None, metadata={"alias": "prefix"})

    def __post_init__(self):
        nillable_fields = ["prefix"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemStateOrProvinceGetListRequest(OCIRequest):
    """Requests the list of state and province names.
        The response is either SystemStateOrProvinceGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemStirShakenCallerIdDispositionMappingGetRequest(OCIRequest):
    """Request to get the Caller Id Disposition mapping.

        The response is either SystemStirShakenCallerIdDispositionMappingGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemStirShakenCallerIdDispositionMappingModifyRequest(OCIRequest):
    """Request to modify the Caller Id Disposition mapping.

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        verstat (str):

        attestation_level (Optional[str]):

        disposition (Optional[str]):

    """

    verstat: str = field(metadata={"alias": "verstat"})

    attestation_level: Optional[str] = field(
        default=None, metadata={"alias": "attestationLevel"}
    )

    disposition: Optional[str] = field(default=None, metadata={"alias": "disposition"})


@dataclass(kw_only=True)
class SystemStirShakenGetRequest23V2(OCIRequest):
    """Get system Stir Shaken service settings.
        The response is either SystemStirShakenGetResponse23V2 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemStirShakenModifyRequest(OCIRequest):
    """Modify system Stir Shaken service settings.

    Attributes:

        signing_policy (Optional[str]):

        tagging_policy (Optional[str]):

        sign_emergency_calls (Optional[bool]):

        tag_emergency_calls (Optional[bool]):

        signing_service_url (Optional[Nillable[str]]):

        tag_from_or_pai (Optional[str]):

        verstat_tag (Optional[str]):

        use_os_value_for_orig_id (Optional[bool]):

        orig_uuid (Optional[Nillable[str]]):

        attestation_level (Optional[str]):

        enable_verification (Optional[bool]):

        verification_service_url (Optional[Nillable[str]]):

        verification_error_handling (Optional[str]):

        proxy_verstat_to_cnam_subscribe (Optional[bool]):

        use_unknown_headers_from_cnam_notify (Optional[bool]):

        use_ts24229_headers (Optional[bool]):

        enable_signing_for_unscreened_trunk_group_originations (Optional[bool]):

        enable_tagging_for_unscreened_trunk_group_originations (Optional[bool]):

        unscreened_trunk_group_origination_attestation_level (Optional[str]):

        verify_gets_calls (Optional[bool]):

        allow_partial_ingress_tagging (Optional[bool]):

        include_verstat_to_mobile_network_locations (Optional[bool]):

        allow_verstat_in_sipuri_with_phone_correction (Optional[bool]):

        include_tagged_headers_to_access_side (Optional[bool]):

        proxy_identity_header_to_access_side (Optional[bool]):

        check_directory_numbers_for_attestation (Optional[bool]):

        match_unassigned_numbers_only (Optional[bool]):

        enable_tagging_for_redirected_calls (Optional[bool]):

        prefer_ingress_tagging (Optional[bool]):

    """

    signing_policy: Optional[str] = field(
        default=None, metadata={"alias": "signingPolicy"}
    )

    tagging_policy: Optional[str] = field(
        default=None, metadata={"alias": "taggingPolicy"}
    )

    sign_emergency_calls: Optional[bool] = field(
        default=None, metadata={"alias": "signEmergencyCalls"}
    )

    tag_emergency_calls: Optional[bool] = field(
        default=None, metadata={"alias": "tagEmergencyCalls"}
    )

    signing_service_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "signingServiceURL"}
    )

    tag_from_or_pai: Optional[str] = field(
        default=None, metadata={"alias": "tagFromOrPAI"}
    )

    verstat_tag: Optional[str] = field(default=None, metadata={"alias": "verstatTag"})

    use_os_value_for_orig_id: Optional[bool] = field(
        default=None, metadata={"alias": "useOSValueForOrigId"}
    )

    orig_uuid: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "origUUID"}
    )

    attestation_level: Optional[str] = field(
        default=None, metadata={"alias": "attestationLevel"}
    )

    enable_verification: Optional[bool] = field(
        default=None, metadata={"alias": "enableVerification"}
    )

    verification_service_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "verificationServiceURL"}
    )

    verification_error_handling: Optional[str] = field(
        default=None, metadata={"alias": "verificationErrorHandling"}
    )

    proxy_verstat_to_cnam_subscribe: Optional[bool] = field(
        default=None, metadata={"alias": "proxyVerstatToCNAMSubscribe"}
    )

    use_unknown_headers_from_cnam_notify: Optional[bool] = field(
        default=None, metadata={"alias": "useUnknownHeadersFromCNAMNotify"}
    )

    use_ts24229_headers: Optional[bool] = field(
        default=None, metadata={"alias": "useTS24229Headers"}
    )

    enable_signing_for_unscreened_trunk_group_originations: Optional[bool] = field(
        default=None,
        metadata={"alias": "enableSigningForUnscreenedTrunkGroupOriginations"},
    )

    enable_tagging_for_unscreened_trunk_group_originations: Optional[bool] = field(
        default=None,
        metadata={"alias": "enableTaggingForUnscreenedTrunkGroupOriginations"},
    )

    unscreened_trunk_group_origination_attestation_level: Optional[str] = field(
        default=None,
        metadata={"alias": "unscreenedTrunkGroupOriginationAttestationLevel"},
    )

    verify_gets_calls: Optional[bool] = field(
        default=None, metadata={"alias": "verifyGETSCalls"}
    )

    allow_partial_ingress_tagging: Optional[bool] = field(
        default=None, metadata={"alias": "allowPartialIngressTagging"}
    )

    include_verstat_to_mobile_network_locations: Optional[bool] = field(
        default=None, metadata={"alias": "includeVerstatToMobileNetworkLocations"}
    )

    allow_verstat_in_sipuri_with_phone_correction: Optional[bool] = field(
        default=None, metadata={"alias": "allowVerstatInSIPURIWithPhoneCorrection"}
    )

    include_tagged_headers_to_access_side: Optional[bool] = field(
        default=None, metadata={"alias": "includeTaggedHeadersToAccessSide"}
    )

    proxy_identity_header_to_access_side: Optional[bool] = field(
        default=None, metadata={"alias": "proxyIdentityHeaderToAccessSide"}
    )

    check_directory_numbers_for_attestation: Optional[bool] = field(
        default=None, metadata={"alias": "checkDirectoryNumbersForAttestation"}
    )

    match_unassigned_numbers_only: Optional[bool] = field(
        default=None, metadata={"alias": "matchUnassignedNumbersOnly"}
    )

    enable_tagging_for_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "enableTaggingForRedirectedCalls"}
    )

    prefer_ingress_tagging: Optional[bool] = field(
        default=None, metadata={"alias": "preferIngressTagging"}
    )

    def __post_init__(self):
        nillable_fields = [
            "signing_service_url",
            "orig_uuid",
            "verification_service_url",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemSubscriberGetCallProcessingParametersRequest18sp1(OCIRequest):
    """Get the system call processing configuration for all subscribers
        The response is either a SystemSubscriberGetCallProcessingParametersResponse18sp1
        or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSubscriberGetLoginParametersRequest(OCIRequest):
    """Get the system login configuration for all subscribers.
        The response is either a SystemSubscriberGetLoginParametersResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSubscriberGetProvisioningParametersRequest24V2(OCIRequest):
    """Get the system provisioning configuration for all subscribers
        The response is either a SystemSubscriberGetProvisioningParametersResponse24V2
        or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSubscriberModifyCallProcessingParametersRequest14sp7(OCIRequest):
    """Modify the system call processing configuration for all subscribers.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in XS data mode and ignored in the AS data mode:
          minNoAnswerNumberOfRings

        The following elements are only used in AS data mode and ignored in the XS data mode:
          isExtendedCallingLineIdActive
          isRingTimeOutActive
          ringTimeoutSeconds
          allowEmergencyRemoteOfficeOriginations
          incomingCallToUserAliasMode
          bypassTerminationLoopDetection
          honorCLIDBlockingForEmergencyCalls
          useUnicodeIdentityName

    Attributes:

        is_extended_calling_line_id_active (Optional[bool]):

        is_ring_time_out_active (Optional[bool]):

        ring_timeout_seconds (Optional[int]):

        allow_emergency_remote_office_originations (Optional[bool]):

        max_no_answer_number_of_rings (Optional[int]):

        min_no_answer_number_of_rings (Optional[int]):

        incoming_call_to_user_alias_mode (Optional[str]):

        bypass_termination_loop_detection (Optional[bool]):

        honor_clid_blocking_for_emergency_calls (Optional[bool]):

        use_unicode_identity_name (Optional[bool]):

    """

    is_extended_calling_line_id_active: Optional[bool] = field(
        default=None, metadata={"alias": "isExtendedCallingLineIdActive"}
    )

    is_ring_time_out_active: Optional[bool] = field(
        default=None, metadata={"alias": "isRingTimeOutActive"}
    )

    ring_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "ringTimeoutSeconds"}
    )

    allow_emergency_remote_office_originations: Optional[bool] = field(
        default=None, metadata={"alias": "allowEmergencyRemoteOfficeOriginations"}
    )

    max_no_answer_number_of_rings: Optional[int] = field(
        default=None, metadata={"alias": "maxNoAnswerNumberOfRings"}
    )

    min_no_answer_number_of_rings: Optional[int] = field(
        default=None, metadata={"alias": "minNoAnswerNumberOfRings"}
    )

    incoming_call_to_user_alias_mode: Optional[str] = field(
        default=None, metadata={"alias": "incomingCallToUserAliasMode"}
    )

    bypass_termination_loop_detection: Optional[bool] = field(
        default=None, metadata={"alias": "bypassTerminationLoopDetection"}
    )

    honor_clid_blocking_for_emergency_calls: Optional[bool] = field(
        default=None, metadata={"alias": "honorCLIDBlockingForEmergencyCalls"}
    )

    use_unicode_identity_name: Optional[bool] = field(
        default=None, metadata={"alias": "useUnicodeIdentityName"}
    )


@dataclass(kw_only=True)
class SystemSubscriberModifyLoginParametersRequest(OCIRequest):
    """Modify the system login configuration for all subscribers
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        max_failed_login_attempts (Optional[int]):

        min_login_id_length (Optional[int]):

    """

    max_failed_login_attempts: Optional[int] = field(
        default=None, metadata={"alias": "maxFailedLoginAttempts"}
    )

    min_login_id_length: Optional[int] = field(
        default=None, metadata={"alias": "minLoginIdLength"}
    )


@dataclass(kw_only=True)
class SystemSubscriberModifyProvisioningParametersRequest(OCIRequest):
    """Modify the system provisioning configuration for all subscribers.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        configurable_clid_normalization (Optional[bool]):

        include_default_domain (Optional[bool]):

        min_auth_level_to_provision_alt_user_id (Optional[str]):

    """

    configurable_clid_normalization: Optional[bool] = field(
        default=None, metadata={"alias": "configurableCLIDNormalization"}
    )

    include_default_domain: Optional[bool] = field(
        default=None, metadata={"alias": "includeDefaultDomain"}
    )

    min_auth_level_to_provision_alt_user_id: Optional[str] = field(
        default=None, metadata={"alias": "minAuthLevelToProvisionAltUserID"}
    )


@dataclass(kw_only=True)
class SystemSubscriptionLicenseReportingGetRequest(OCIRequest):
    """Request to get the subscription license reporting system parameters.
        The response is either SystemSubscriptionLicenseReportingGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSubscriptionLicenseReportingModifyRequest(OCIRequest):
    """Modify the subscription license reporting system parameters.
      The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        daily_report_scheduled_time (HourMinute):

    """

    daily_report_scheduled_time: HourMinute = field(
        metadata={"alias": "dailyReportScheduledTime"}
    )


@dataclass(kw_only=True)
class SystemSystemServiceCallProcessingPoliciesGetRequest(OCIRequest):
    """Request the data associated with Call Processing Policy for system service instances.
        The response is either SystemSystemServiceCallProcessingPoliciesGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSystemServiceCallProcessingPoliciesModifyRequest(OCIRequest):
    """Request the data associated with Call Processing Policy for system service instances.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        use_max_simultaneous_calls (Optional[bool]):

        max_simultaneous_calls (Optional[int]):

        use_max_simultaneous_video_calls (Optional[bool]):

        max_simultaneous_video_calls (Optional[int]):

        use_max_concurrent_redirected_calls (Optional[bool]):

        max_concurrent_redirected_calls (Optional[int]):

        use_max_call_time_for_answered_calls (Optional[bool]):

        max_call_time_for_answered_calls_minutes (Optional[int]):

    """

    use_max_simultaneous_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousCalls"}
    )

    use_max_simultaneous_video_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_concurrent_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_call_time_for_answered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )


@dataclass(kw_only=True)
class SystemSystemServiceDnAddListRequest(OCIRequest):
    """Adds system service Dns. It is possible to add either: a single DN,
         a list of DNs a range of DNs, or any combination thereof.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        phone_number (Optional[List[str]]):

        dn_range (Optional[List[DNRange]]):

    """

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    dn_range: Optional[List[DNRange]] = field(
        default=None, metadata={"alias": "dnRange"}
    )


@dataclass(kw_only=True)
class SystemSystemServiceDnDeleteListRequest(OCIRequest):
    """Deletes system service DNs. It is possible to delete either:
        a single DN,
        a list of DNs, a range of DNs, or any combination thereof.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        phone_number (Optional[List[str]]):

        dn_range (Optional[List[DNRange]]):

    """

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    dn_range: Optional[List[DNRange]] = field(
        default=None, metadata={"alias": "dnRange"}
    )


@dataclass(kw_only=True)
class SystemSystemServiceDnGetAvailableListRequest(OCIRequest):
    """Request a list of system service DNs not yet in use.
        The response is either SystemSystemServiceDnGetAvailableListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSystemServiceDnGetSummaryListRequest(OCIRequest):
    """Request a summary table of all System Service DNs.
        The response is either SystemSystemServiceDnGetSummaryListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSystemServiceDnGetUsageListRequest(OCIRequest):
    """Request a list of System Service DN utilization.
        The response is either SystemSystemServiceDnGetUsageListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSystemVoicePortalAddRequest21sp1(OCIRequest):
    """Request to add a system voice portal instance.
        The response is either SuccessResponse or ErrorResponse.

        The following elements are only used in IMS mode:
        publicUserIdentity, ignored in standalone mode if provided.

        The following elements are only used in AS mode and ignored in XS data mode:
            networkClassOfService

    Attributes:

        system_voice_portal_id (str):

        name (str):

        calling_line_id_name (str):

        language (str):

        time_zone (str):

        phone_number (Optional[str]):

        public_user_identity (Optional[str]):

        network_voice_portal_number (Optional[str]):

        allow_identification_by_phone_number_or_voice_mail_aliases_on_login (bool):

        use_voice_portal_wizard (bool):

        use_voice_portal_default_greeting (bool):

        voice_portal_greeting_file (Optional[LabeledMediaFileResource]):

        use_voice_messaging_default_greeting (bool):

        voice_messaging_greeting_file (Optional[LabeledMediaFileResource]):

        express_mode (bool):

        network_class_of_service (Optional[str]):

    """

    system_voice_portal_id: str = field(metadata={"alias": "systemVoicePortalId"})

    name: str = field(metadata={"alias": "name"})

    calling_line_id_name: str = field(metadata={"alias": "callingLineIdName"})

    language: str = field(metadata={"alias": "language"})

    time_zone: str = field(metadata={"alias": "timeZone"})

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    public_user_identity: Optional[str] = field(
        default=None, metadata={"alias": "publicUserIdentity"}
    )

    network_voice_portal_number: Optional[str] = field(
        default=None, metadata={"alias": "networkVoicePortalNumber"}
    )

    allow_identification_by_phone_number_or_voice_mail_aliases_on_login: bool = field(
        metadata={"alias": "allowIdentificationByPhoneNumberOrVoiceMailAliasesOnLogin"}
    )

    use_voice_portal_wizard: bool = field(metadata={"alias": "useVoicePortalWizard"})

    use_voice_portal_default_greeting: bool = field(
        metadata={"alias": "useVoicePortalDefaultGreeting"}
    )

    voice_portal_greeting_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "voicePortalGreetingFile"}
    )

    use_voice_messaging_default_greeting: bool = field(
        metadata={"alias": "useVoiceMessagingDefaultGreeting"}
    )

    voice_messaging_greeting_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "voiceMessagingGreetingFile"}
    )

    express_mode: bool = field(metadata={"alias": "expressMode"})

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class SystemSystemVoicePortalDeleteRequest(OCIRequest):
    """Request to delete a system voice portal instance.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        system_voice_portal_id (str):

    """

    system_voice_portal_id: str = field(metadata={"alias": "systemVoicePortalId"})


@dataclass(kw_only=True)
class SystemSystemVoicePortalGetListRequest(OCIRequest):
    """Request to get the list of the system voice portals.
        The response is either SystemSystemVoicePortalGetListResponce or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemSystemVoicePortalGetRequest23(OCIRequest):
    """Request to get a system voice portal instance.
        The response is either SystemSystemVoicePortalGetResponse23 or ErrorResponse.

    Attributes:

        system_voice_portal_id (str):

    """

    system_voice_portal_id: str = field(metadata={"alias": "systemVoicePortalId"})


@dataclass(kw_only=True)
class SystemSystemVoicePortalModifyRequest(OCIRequest):
    """Request to update a System  Voice portal instance.
        The response is either SuccessResponse or ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
            networkClassOfService

    Attributes:

        system_voice_portal_id (str):

        new_system_voice_portal_id (Optional[str]):

        name (Optional[str]):

        calling_line_id_name (Optional[str]):

        language (Optional[str]):

        time_zone (Optional[str]):

        phone_number (Optional[Nillable[str]]):

        public_user_identity (Optional[Nillable[str]]):

        network_voice_portal_number (Optional[Nillable[str]]):

        allow_identification_by_phone_number_or_voice_mail_aliases_on_login (Optional[bool]):

        use_voice_portal_wizard (Optional[bool]):

        become_default_system_voice_portal (Optional[bool]):

        use_voice_portal_default_greeting (Optional[bool]):

        voice_portal_greeting_file (Optional[LabeledMediaFileResource]):

        use_voice_messaging_default_greeting (Optional[bool]):

        voice_messaging_greeting_file (Optional[LabeledMediaFileResource]):

        express_mode (Optional[bool]):

        network_class_of_service (Optional[str]):

    """

    system_voice_portal_id: str = field(metadata={"alias": "systemVoicePortalId"})

    new_system_voice_portal_id: Optional[str] = field(
        default=None, metadata={"alias": "newSystemVoicePortalId"}
    )

    name: Optional[str] = field(default=None, metadata={"alias": "name"})

    calling_line_id_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdName"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    public_user_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "publicUserIdentity"}
    )

    network_voice_portal_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "networkVoicePortalNumber"}
    )

    allow_identification_by_phone_number_or_voice_mail_aliases_on_login: Optional[
        bool
    ] = field(
        default=None,
        metadata={"alias": "allowIdentificationByPhoneNumberOrVoiceMailAliasesOnLogin"},
    )

    use_voice_portal_wizard: Optional[bool] = field(
        default=None, metadata={"alias": "useVoicePortalWizard"}
    )

    become_default_system_voice_portal: Optional[bool] = field(
        default=None, metadata={"alias": "becomeDefaultSystemVoicePortal"}
    )

    use_voice_portal_default_greeting: Optional[bool] = field(
        default=None, metadata={"alias": "useVoicePortalDefaultGreeting"}
    )

    voice_portal_greeting_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "voicePortalGreetingFile"}
    )

    use_voice_messaging_default_greeting: Optional[bool] = field(
        default=None, metadata={"alias": "useVoiceMessagingDefaultGreeting"}
    )

    voice_messaging_greeting_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "voiceMessagingGreetingFile"}
    )

    express_mode: Optional[bool] = field(
        default=None, metadata={"alias": "expressMode"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    def __post_init__(self):
        nillable_fields = [
            "phone_number",
            "public_user_identity",
            "network_voice_portal_number",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemTemplateOnlyDeviceFileGetListRequest(OCIRequest):
    """Request to get the list of template files used to support a VDM device defined at system level.
        The response is either SystemTemplateOnlyDeviceFileGetListResponse or ErrorResponse.

    Attributes:

        device_name (str):

    """

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class SystemThirdPartyEmergencyCallingGetRequest24(OCIRequest):
    """Get the third-party emergency call service settings for the system.
        The response is either a SystemThirdPartyEmergencyCallingGetResponse24 or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemThirdPartyEmergencyCallingModifyRequest(OCIRequest):
    """Modify the third-party emergency call service settings for the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        primary_held_server_url (Optional[Nillable[str]]):

        secondary_held_server_url (Optional[Nillable[str]]):

        emergency_route_net_address (Optional[Nillable[str]]):

        emergency_route_port (Optional[Nillable[int]]):

        emergency_route_transport (Optional[Nillable[str]]):

    """

    primary_held_server_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "primaryHELDServerURL"}
    )

    secondary_held_server_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "secondaryHELDServerURL"}
    )

    emergency_route_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "emergencyRouteNetAddress"}
    )

    emergency_route_port: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "emergencyRoutePort"}
    )

    emergency_route_transport: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "emergencyRouteTransport"}
    )

    def __post_init__(self):
        nillable_fields = [
            "primary_held_server_url",
            "secondary_held_server_url",
            "emergency_route_net_address",
            "emergency_route_port",
            "emergency_route_transport",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemThirdPartyIMPGetRequest19(OCIRequest):
    """Get the system Third-Party IMP service attributes.
        The response is either SystemThirdPartyIMPGetResponse19 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemThirdPartyIMPModifyRequest(OCIRequest):
    """Modify the system Third-Party IMP service attributes.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        service_net_address (Optional[Nillable[str]]):

        service_port (Optional[Nillable[int]]):

        bosh_url (Optional[Nillable[str]]):

    """

    service_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "serviceNetAddress"}
    )

    service_port: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "servicePort"}
    )

    bosh_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "boshURL"}
    )

    def __post_init__(self):
        nillable_fields = ["service_net_address", "service_port", "bosh_url"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemThirdPartyVoiceMailSupportAddDnRequest(OCIRequest):
    """Request to add a ThirdPartyVoiceMailSupport User DN to the system.
       The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        phone_number (str):

        description (Optional[str]):

    """

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemThirdPartyVoiceMailSupportDeleteDnRequest(OCIRequest):
    """Request to delete a ThirdPartyVoiceMailSupport User DN from the system.
       The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        phone_number (str):

    """

    phone_number: str = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class SystemThirdPartyVoiceMailSupportGetDnListRequest(OCIRequest):
    """Request to get a list of ThirdPartyVoiceMailSupport User DN's defined in the system.
       The response is either a SystemThirdPartyVoiceMailSupportGetDnListResponse or an ErrorResponse.
       The search can be done using multiple criterion.

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_system_service_dn (Optional[List[SearchCriteriaSystemServiceDn]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_system_service_dn: Optional[List[SearchCriteriaSystemServiceDn]] = (
        field(default=None, metadata={"alias": "searchCriteriaSystemServiceDn"})
    )


@dataclass(kw_only=True)
class SystemThirdPartyVoiceMailSupportGetRequest17sp4(OCIRequest):
    """Request the system level data associated with Third-party Voice Mail Support.
        The response is either a SystemThirdPartyVoiceMailSupportGetResponse17sp4 or an
        ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemThirdPartyVoiceMailSupportModifyDnRequest(OCIRequest):
    """Request to modify a ThirdPartyVoiceMailSupport User DN and description in the system.
       The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        phone_number (str):

        description (Optional[Nillable[str]]):

    """

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemThirdPartyVoiceMailSupportModifyRequest(OCIRequest):
    """Modify the system level data associated with Third-party Voice Mail Support.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode:
          stripDiversionOnVMDestinationRetrieval

    Attributes:

        override_alt_caller_id_for_vm_retrieval (Optional[bool]):

        strip_diversion_on_vm_destination_retrieval (Optional[bool]):

    """

    override_alt_caller_id_for_vm_retrieval: Optional[bool] = field(
        default=None, metadata={"alias": "overrideAltCallerIdForVMRetrieval"}
    )

    strip_diversion_on_vm_destination_retrieval: Optional[bool] = field(
        default=None, metadata={"alias": "stripDiversionOnVMDestinationRetrieval"}
    )


@dataclass(kw_only=True)
class SystemTimeZoneGetListRequest20(OCIRequest):
    """Requests the configured time zone of the server processing the request and the list of time zone names.
        The response is either SystemTimeZoneGetListResponse20 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemTreatmentMappingAccessSIPStatusAddRequest(OCIRequest):
    """Add an Access SIP Status Code Mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        sip_status_code (int):

        treatment_id (str):

    """

    sip_status_code: int = field(metadata={"alias": "sipStatusCode"})

    treatment_id: str = field(metadata={"alias": "treatmentId"})


@dataclass(kw_only=True)
class SystemTreatmentMappingAccessSIPStatusDeleteRequest(OCIRequest):
    """Delete an Access SIP Status Code mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        sip_status_code (int):

    """

    sip_status_code: int = field(metadata={"alias": "sipStatusCode"})


@dataclass(kw_only=True)
class SystemTreatmentMappingAccessSIPStatusGetListRequest(OCIRequest):
    """Requests a table of all the existing Access Side SIP Status Code Mappings in the system.
        The response is either an SystemTreatmentMappingAccessSIPStatusGetListResponse
        or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemTreatmentMappingAccessSIPStatusModifyRequest(OCIRequest):
    """Modify the fields for an Access SIP Status Code mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        sip_status_code (int):

        treatment_id (Optional[str]):

    """

    sip_status_code: int = field(metadata={"alias": "sipStatusCode"})

    treatment_id: Optional[str] = field(default=None, metadata={"alias": "treatmentId"})


@dataclass(kw_only=True)
class SystemTreatmentMappingCallBlockingServiceAddRequest24V2(OCIRequest):
    """Add a Call Blocking Service mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        call_blocking_service (str):

        treatment_id (str):

    """

    call_blocking_service: str = field(metadata={"alias": "callBlockingService"})

    treatment_id: str = field(metadata={"alias": "treatmentId"})


@dataclass(kw_only=True)
class SystemTreatmentMappingCallBlockingServiceDeleteRequest24V2(OCIRequest):
    """Delete a Call Blocking Service mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        call_blocking_service (str):

    """

    call_blocking_service: str = field(metadata={"alias": "callBlockingService"})


@dataclass(kw_only=True)
class SystemTreatmentMappingCallBlockingServiceGetListRequest24V2(OCIRequest):
    """Requests a table of all the existing Call Blocking Service Mappings in the system.

        The response is either a SystemTreatmentMappingCallBlockingServicesGetListResponse24V2
        or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemTreatmentMappingCallBlockingServiceModifyRequest24V2(OCIRequest):
    """Modify the fields for a Call Blocking Service mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        call_blocking_service (str):

        treatment_id (Optional[str]):

    """

    call_blocking_service: str = field(metadata={"alias": "callBlockingService"})

    treatment_id: Optional[str] = field(default=None, metadata={"alias": "treatmentId"})


@dataclass(kw_only=True)
class SystemTreatmentMappingInternalReleaseCauseAddRequest(OCIRequest):
    """Add an Internal Release Cause mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        internal_release_cause (str):

        treatment_id (str):

    """

    internal_release_cause: str = field(metadata={"alias": "internalReleaseCause"})

    treatment_id: str = field(metadata={"alias": "treatmentId"})


@dataclass(kw_only=True)
class SystemTreatmentMappingInternalReleaseCauseDeleteRequest(OCIRequest):
    """Delete an Internal Release Cause mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        internal_release_cause (str):

    """

    internal_release_cause: str = field(metadata={"alias": "internalReleaseCause"})


@dataclass(kw_only=True)
class SystemTreatmentMappingInternalReleaseCauseGetListRequest(OCIRequest):
    """Requests a table of all the Internal Release Cause mappings in the system.
        The response is either a SystemTreatmentMappingInternalReleaseCauseGetListResponse
        or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemTreatmentMappingInternalReleaseCauseModifyRequest(OCIRequest):
    """Modify the fields for an Internal Release Cause mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        internal_release_cause (str):

        treatment_id (Optional[str]):

    """

    internal_release_cause: str = field(metadata={"alias": "internalReleaseCause"})

    treatment_id: Optional[str] = field(default=None, metadata={"alias": "treatmentId"})


@dataclass(kw_only=True)
class SystemTreatmentMappingNetworkSIPStatusAddRequest(OCIRequest):
    """Add a Network SIP Status Code mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        sip_status_code (int):

        treatment_id (str):

    """

    sip_status_code: int = field(metadata={"alias": "sipStatusCode"})

    treatment_id: str = field(metadata={"alias": "treatmentId"})


@dataclass(kw_only=True)
class SystemTreatmentMappingNetworkSIPStatusDeleteRequest(OCIRequest):
    """Delete a Network SIP Status Code mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        sip_status_code (int):

    """

    sip_status_code: int = field(metadata={"alias": "sipStatusCode"})


@dataclass(kw_only=True)
class SystemTreatmentMappingNetworkSIPStatusGetListRequest(OCIRequest):
    """Requests a table of all the existing Network SIP Status Code Mappings in the system.
        The response is either an SystemTreatmentMappingNetworkSIPStatusCodeGetListResponse
        or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemTreatmentMappingNetworkSIPStatusModifyRequest(OCIRequest):
    """Modify the fields for a Network SIP Status Code mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        sip_status_code (int):

        treatment_id (Optional[str]):

    """

    sip_status_code: int = field(metadata={"alias": "sipStatusCode"})

    treatment_id: Optional[str] = field(default=None, metadata={"alias": "treatmentId"})


@dataclass(kw_only=True)
class SystemTreatmentMappingNetworkServerTreatmentAddRequest(OCIRequest):
    """Add a Network Server Treatment mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        ns_treatment (str):

        treatment_id (str):

    """

    ns_treatment: str = field(metadata={"alias": "nsTreatment"})

    treatment_id: str = field(metadata={"alias": "treatmentId"})


@dataclass(kw_only=True)
class SystemTreatmentMappingNetworkServerTreatmentDeleteRequest(OCIRequest):
    """Delete a NS Treatment mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        ns_treatment (str):

    """

    ns_treatment: str = field(metadata={"alias": "nsTreatment"})


@dataclass(kw_only=True)
class SystemTreatmentMappingNetworkServerTreatmentGetListRequest(OCIRequest):
    """Requests a table of all the existing NS Treatment Mappings in the system.
        The response is either a   SystemTreatmentMappingNetworkServerTreatmentGetListResponse
        or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemTreatmentMappingNetworkServerTreatmentModifyRequest(OCIRequest):
    """Modify the fields for a Network Server Treatment mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        ns_treatment (str):

        treatment_id (Optional[str]):

    """

    ns_treatment: str = field(metadata={"alias": "nsTreatment"})

    treatment_id: Optional[str] = field(default=None, metadata={"alias": "treatmentId"})


@dataclass(kw_only=True)
class SystemTreatmentMappingQ850CauseAddRequest(OCIRequest):
    """Add a Q850 Cause Value mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        q850_cause_value (int):

        treatment_id (str):

    """

    q850_cause_value: int = field(metadata={"alias": "q850CauseValue"})

    treatment_id: str = field(metadata={"alias": "treatmentId"})


@dataclass(kw_only=True)
class SystemTreatmentMappingQ850CauseDeleteRequest(OCIRequest):
    """Delete a Q850 Cause Value mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        q850_cause_value (int):

    """

    q850_cause_value: int = field(metadata={"alias": "q850CauseValue"})


@dataclass(kw_only=True)
class SystemTreatmentMappingQ850CauseGetListRequest(OCIRequest):
    """Requests a table of all the existing Q850 Cause Value Mappings in the system.
        The response is either a SystemTreatmentMappingQ850CauseGetListResponse
        or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemTreatmentMappingQ850CauseModifyRequest(OCIRequest):
    """Modify the fields for a Q850CauseValue mapping.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        q850_cause_value (int):

        treatment_id (Optional[str]):

    """

    q850_cause_value: int = field(metadata={"alias": "q850CauseValue"})

    treatment_id: Optional[str] = field(default=None, metadata={"alias": "treatmentId"})


@dataclass(kw_only=True)
class SystemTrunkGroupGetRequest24(OCIRequest):
    """Request the system level data associated with the Trunk Group service.
        The response is either SystemTrunkGroupGetResponse24 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemTrunkGroupModifyRequest(OCIRequest):
    """Modify the system level data associated with the Trunk Group Service.
        Following attributes are only used in IMS mode. The values are saved if specified not in IMS mode:
          implicitRegistrationSetSupportPolicy
          sipIdentityForPilotAndProxyTrunkModesPolicy
          useMostRecentEntryOnDeflection

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        enforce_clid_service_assignment_for_pilot_user (Optional[bool]):

        terminate_unreachable_trigger_detection_on_receipt_of18x (Optional[bool]):

        pilot_user_calling_line_asserted_identity_policy (Optional[str]):

        enforce_out_of_dialog_pbx_redirection_policies (Optional[bool]):

        unscreened_redirection_handling (Optional[str]):

        enable_holdover_of_highwater_call_counts (Optional[bool]):

        holdover_period (Optional[int]):

        time_zone_offset_minutes (Optional[int]):

        clid_source_for_screened_calls_policy (Optional[str]):

        user_lookup_policy (Optional[str]):

        out_of_dialog_pbx_redirection_clid_mapping (Optional[str]):

        enforce_out_of_dialog_pbx_redirection_trunk_group_capacity (Optional[bool]):

        implicit_registration_set_support_policy (Optional[str]):

        sip_identity_for_pilot_and_proxy_trunk_modes_policy (Optional[str]):

        support_connected_identity_policy (Optional[str]):

        use_unmapped_sessions_for_trunk_users (Optional[bool]):

        allow_pai_lookup_for_out_of_dialog_pbx_redirection (Optional[bool]):

        out_of_dialog_pbx_redirection_originator_lookup_policy (Optional[str]):

        allow_trunk_identity_for_all_originations (Optional[bool]):

        use_most_recent_entry_on_deflection (Optional[bool]):

    """

    enforce_clid_service_assignment_for_pilot_user: Optional[bool] = field(
        default=None, metadata={"alias": "enforceCLIDServiceAssignmentForPilotUser"}
    )

    terminate_unreachable_trigger_detection_on_receipt_of18x: Optional[bool] = field(
        default=None,
        metadata={"alias": "terminateUnreachableTriggerDetectionOnReceiptOf18x"},
    )

    pilot_user_calling_line_asserted_identity_policy: Optional[str] = field(
        default=None, metadata={"alias": "pilotUserCallingLineAssertedIdentityPolicy"}
    )

    enforce_out_of_dialog_pbx_redirection_policies: Optional[bool] = field(
        default=None, metadata={"alias": "enforceOutOfDialogPBXRedirectionPolicies"}
    )

    unscreened_redirection_handling: Optional[str] = field(
        default=None, metadata={"alias": "unscreenedRedirectionHandling"}
    )

    enable_holdover_of_highwater_call_counts: Optional[bool] = field(
        default=None, metadata={"alias": "enableHoldoverOfHighwaterCallCounts"}
    )

    holdover_period: Optional[int] = field(
        default=None, metadata={"alias": "holdoverPeriod"}
    )

    time_zone_offset_minutes: Optional[int] = field(
        default=None, metadata={"alias": "timeZoneOffsetMinutes"}
    )

    clid_source_for_screened_calls_policy: Optional[str] = field(
        default=None, metadata={"alias": "clidSourceForScreenedCallsPolicy"}
    )

    user_lookup_policy: Optional[str] = field(
        default=None, metadata={"alias": "userLookupPolicy"}
    )

    out_of_dialog_pbx_redirection_clid_mapping: Optional[str] = field(
        default=None, metadata={"alias": "outOfDialogPBXRedirectionCLIDMapping"}
    )

    enforce_out_of_dialog_pbx_redirection_trunk_group_capacity: Optional[bool] = field(
        default=None,
        metadata={"alias": "enforceOutOfDialogPBXRedirectionTrunkGroupCapacity"},
    )

    implicit_registration_set_support_policy: Optional[str] = field(
        default=None, metadata={"alias": "implicitRegistrationSetSupportPolicy"}
    )

    sip_identity_for_pilot_and_proxy_trunk_modes_policy: Optional[str] = field(
        default=None, metadata={"alias": "sipIdentityForPilotAndProxyTrunkModesPolicy"}
    )

    support_connected_identity_policy: Optional[str] = field(
        default=None, metadata={"alias": "supportConnectedIdentityPolicy"}
    )

    use_unmapped_sessions_for_trunk_users: Optional[bool] = field(
        default=None, metadata={"alias": "useUnmappedSessionsForTrunkUsers"}
    )

    allow_pai_lookup_for_out_of_dialog_pbx_redirection: Optional[bool] = field(
        default=None, metadata={"alias": "allowPAILookupForOutOfDialogPBXRedirection"}
    )

    out_of_dialog_pbx_redirection_originator_lookup_policy: Optional[str] = field(
        default=None,
        metadata={"alias": "outOfDialogPBXRedirectionOriginatorLookupPolicy"},
    )

    allow_trunk_identity_for_all_originations: Optional[bool] = field(
        default=None, metadata={"alias": "allowTrunkIdentityForAllOriginations"}
    )

    use_most_recent_entry_on_deflection: Optional[bool] = field(
        default=None, metadata={"alias": "useMostRecentEntryOnDeflection"}
    )


@dataclass(kw_only=True)
class SystemTrunkGroupOptionsMessageResponseStatusCodeAddListRequest(OCIRequest):
    """Add a list of system level successful SIP OPTIONS message respoonse status codes.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        status_code (List[str]):

    """

    status_code: List[str] = field(metadata={"alias": "statusCode"})


@dataclass(kw_only=True)
class SystemTrunkGroupOptionsMessageResponseStatusCodeDeleteListRequest(OCIRequest):
    """Delete a list of system level successful SIP OPTIONS message respoonse status codes.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        status_code (List[str]):

    """

    status_code: List[str] = field(metadata={"alias": "statusCode"})


@dataclass(kw_only=True)
class SystemTrunkGroupOptionsMessageResponseStatusCodeGetListRequest(OCIRequest):
    """Get the list of system level successful SIP OPTIONS message respoonse status codes.
        The response is either SystemTrunkGroupOptionsMessageResponseStatusCodeGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemTrunkGroupUserCreationTaskGetListRequest14sp4(OCIRequest):
    """Get the list of user creation tasks in the system.
        The response is either SystemTrunkGroupUserCreationTaskGetListResponse14sp4 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemTwoStageDialingAddDnRequest(OCIRequest):
    """Request to add Two Stage Dialing number to the system.
             The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        phone_number (str):

        description (Optional[str]):

    """

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemTwoStageDialingDeleteDnRequest(OCIRequest):
    """Request to delete a Two Stage Dialing number from the system.
          The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        phone_number (str):

    """

    phone_number: str = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class SystemTwoStageDialingGetDnListRequest(OCIRequest):
    """Request to get a list of Two Stage Dialing dns defined in the system.
          The response is either a SystemTwoStageDialingGetDnListResponse
          or an ErrorResponse.

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_system_service_dn (Optional[List[SearchCriteriaSystemServiceDn]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_system_service_dn: Optional[List[SearchCriteriaSystemServiceDn]] = (
        field(default=None, metadata={"alias": "searchCriteriaSystemServiceDn"})
    )


@dataclass(kw_only=True)
class SystemTwoStageDialingModifyDnRequest(OCIRequest):
    """Request to modify a Two Stage Dialing number's description in the system.
          The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        phone_number (str):

        description (Optional[Nillable[str]]):

    """

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemVerifyTranslationAndRoutingRequest(OCIRequest):
    """Represents a Verify Translation and Routing request which can be either a request containing
        parameters or a request containing a SIP message. Returns a SystemVerifyTranslationAndRoutingResponse.

    Attributes:

        parameters (Optional[VerifyTranslationAndRoutingParameters]):

        sip_message (Optional[str]):

    """

    parameters: Optional[VerifyTranslationAndRoutingParameters] = field(
        default=None, metadata={"alias": "parameters"}
    )

    sip_message: Optional[str] = field(default=None, metadata={"alias": "sipMessage"})


@dataclass(kw_only=True)
class SystemVideoServerAddRequest(OCIRequest):
    """Request to add a video server to the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        net_address (str):

        port (Optional[int]):

        transport_protocol (str):

        description (Optional[str]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    transport_protocol: str = field(metadata={"alias": "transportProtocol"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemVideoServerDeleteRequest(OCIRequest):
    """Request to delete a video server from the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        net_address (str):

    """

    net_address: str = field(metadata={"alias": "netAddress"})


@dataclass(kw_only=True)
class SystemVideoServerGetListRequest(OCIRequest):
    """Request to get a list of video servers defined in the system.
        The response is either a SystemVideoServerGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemVideoServerModifyRequest(OCIRequest):
    """Request to modify a video server in the system.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        net_address (str):

        port (Optional[Nillable[int]]):

        transport_protocol (Optional[str]):

        description (Optional[Nillable[str]]):

    """

    net_address: str = field(metadata={"alias": "netAddress"})

    port: Optional[Nillable[int]] = field(default=None, metadata={"alias": "port"})

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["port", "description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemVideoServerParametersGetRequest(OCIRequest):
    """Request to get the list of video server system parameters.
        The response is either SystemVideoServerParametersGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemVideoServerParametersModifyRequest(OCIRequest):
    """Request to modify video server system parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        video_server_response_timer_milliseconds (Optional[int]):

        video_server_selection_route_timer_milliseconds (Optional[int]):

        use_static_video_server_device (Optional[bool]):

    """

    video_server_response_timer_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "videoServerResponseTimerMilliseconds"}
    )

    video_server_selection_route_timer_milliseconds: Optional[int] = field(
        default=None, metadata={"alias": "videoServerSelectionRouteTimerMilliseconds"}
    )

    use_static_video_server_device: Optional[bool] = field(
        default=None, metadata={"alias": "useStaticVideoServerDevice"}
    )


@dataclass(kw_only=True)
class SystemVirtualOnNetCallTypeAddRequest(OCIRequest):
    """Add a Virtual On-Net Call Type.
         The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        virtual_on_net_call_type_name (str):

        virtual_on_net_call_type_cdr_value (str):

    """

    virtual_on_net_call_type_name: str = field(
        metadata={"alias": "virtualOnNetCallTypeName"}
    )

    virtual_on_net_call_type_cdr_value: str = field(
        metadata={"alias": "virtualOnNetCallTypeCdrValue"}
    )


@dataclass(kw_only=True)
class SystemVirtualOnNetCallTypeDeleteRequest(OCIRequest):
    """Delete a Virtual On-Net Call Type.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        virtual_on_net_call_type_name (str):

    """

    virtual_on_net_call_type_name: str = field(
        metadata={"alias": "virtualOnNetCallTypeName"}
    )


@dataclass(kw_only=True)
class SystemVirtualOnNetCallTypeGetListRequest(OCIRequest):
    """Get the list Virtual On-Net Call Types in the system.
        The response is either a SystemVirtualOnNetCallTypeGetListResponse
        or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemVirtualOnNetCallTypeModifyRequest(OCIRequest):
    """Modify a Virtual On-Net Call Type.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        virtual_on_net_call_type_name (str):

        virtual_on_net_call_type_cdr_value (Optional[str]):

    """

    virtual_on_net_call_type_name: str = field(
        metadata={"alias": "virtualOnNetCallTypeName"}
    )

    virtual_on_net_call_type_cdr_value: Optional[str] = field(
        default=None, metadata={"alias": "virtualOnNetCallTypeCdrValue"}
    )


@dataclass(kw_only=True)
class SystemVisualDeviceManagementGetDeviceInfoRequest(OCIRequest):
    """Get the information for a specified device supporting visual device management.
        The response is either a SystemVisualDeviceManagementGetDeviceInfoResponse or ErrorResponse.

    Attributes:

        device_name (str):

    """

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class SystemVoiceMessageSummaryUpdateGetRequest25(OCIRequest):
    """Requests system voice mail message summary update parameter settings.
        The response is either SystemVoiceMessageSummaryUpdateGetResponse25 or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemVoiceMessageSummaryUpdateModifyRequest(OCIRequest):
    """Modify the system level data associated with Voice Messaging.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        send_saved_and_urgent_mwi_on_notification (Optional[bool]):

        send_message_summary_update_on_register (Optional[bool]):

        min_time_between_mwi_on_register (Optional[int]):

        allow_multiple_users_per_account (Optional[bool]):

    """

    send_saved_and_urgent_mwi_on_notification: Optional[bool] = field(
        default=None, metadata={"alias": "sendSavedAndUrgentMWIOnNotification"}
    )

    send_message_summary_update_on_register: Optional[bool] = field(
        default=None, metadata={"alias": "sendMessageSummaryUpdateOnRegister"}
    )

    min_time_between_mwi_on_register: Optional[int] = field(
        default=None, metadata={"alias": "minTimeBetweenMWIOnRegister"}
    )

    allow_multiple_users_per_account: Optional[bool] = field(
        default=None, metadata={"alias": "allowMultipleUsersPerAccount"}
    )


@dataclass(kw_only=True)
class SystemVoiceMessagingGroupGetRequestRI(OCIRequest):
    """Request the system level data associated with Voice Messaging.
        The response is either a SystemVoiceMessagingGroupGetResponseRI or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemVoiceMessagingGroupGetVoicePortalMenusRequest21(OCIRequest):
    """Requests the system voice portal Menus setting.
        The response is either SystemVoiceMessagingGroupGetVoicePortalMenusResponse21 or ErrorResponse.

    Attributes:

        get_default_menu_keys (bool):

    """

    get_default_menu_keys: bool = field(metadata={"alias": "getDefaultMenuKeys"})


@dataclass(kw_only=True)
class SystemVoiceMessagingGroupModifyRequestRI(OCIRequest):
    """Modify the system level data associated with Voice Messaging.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode:
           realDeleteForImap
           useDnInMailBody
           useShortSubjectLine
           maxMessageLengthMinutes
           maxMailboxLengthMinutes
           doesMessageAge
           holdPeriodDays
           mailServerNetAddress
           mailServerProtocol
           defaultDeliveryFromAddress
           defaultNotificationFromAddress
           useOutgoingMWIOnSMDI
           mwiDelayInSeconds
           voicePortalScope
           enterpriseVoicePortalLicensed
           networkWideMessaging
           useExternalRouting
           defaultExternalRoutingAddress
           vmOnlySystem
           clientInitiatedMailServerSessionTimeoutMinutes
           recordingAudioFileFormat
           allowVoicePortalAccessFromVMDepositMenu
           allowVoicePortalAutoLoginForMobileDevicesOnly
           selectMwiTemplatePerCaller

    Attributes:

        real_delete_for_imap (Optional[bool]):

        use_dn_in_mail_body (Optional[bool]):

        use_short_subject_line (Optional[bool]):

        max_message_length_minutes (Optional[int]):

        max_mailbox_length_minutes (Optional[int]):

        does_message_age (Optional[bool]):

        hold_period_days (Optional[int]):

        mail_server_net_address (Optional[Nillable[str]]):

        mail_server_protocol (Optional[str]):

        default_delivery_from_address (Optional[str]):

        default_notification_from_address (Optional[str]):

        default_voice_portal_lockout_from_address (Optional[str]):

        use_outgoing_mwi_on_smdi (Optional[bool]):

        mwi_delay_in_seconds (Optional[int]):

        voice_portal_scope (Optional[str]):

        network_wide_messaging (Optional[bool]):

        use_external_routing (Optional[bool]):

        default_external_routing_address (Optional[Nillable[str]]):

        vm_only_system (Optional[bool]):

        client_initiated_mail_server_session_timeout_minutes (Optional[int]):

        recording_audio_file_format (Optional[str]):

        allow_voice_portal_access_from_vm_deposit_menu (Optional[bool]):

        allow_voice_portal_auto_login_for_mobile_devices_only (Optional[bool]):

        select_mwi_template_per_caller (Optional[bool]):

    """

    real_delete_for_imap: Optional[bool] = field(
        default=None, metadata={"alias": "realDeleteForImap"}
    )

    use_dn_in_mail_body: Optional[bool] = field(
        default=None, metadata={"alias": "useDnInMailBody"}
    )

    use_short_subject_line: Optional[bool] = field(
        default=None, metadata={"alias": "useShortSubjectLine"}
    )

    max_message_length_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxMessageLengthMinutes"}
    )

    max_mailbox_length_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxMailboxLengthMinutes"}
    )

    does_message_age: Optional[bool] = field(
        default=None, metadata={"alias": "doesMessageAge"}
    )

    hold_period_days: Optional[int] = field(
        default=None, metadata={"alias": "holdPeriodDays"}
    )

    mail_server_net_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "mailServerNetAddress"}
    )

    mail_server_protocol: Optional[str] = field(
        default=None, metadata={"alias": "mailServerProtocol"}
    )

    default_delivery_from_address: Optional[str] = field(
        default=None, metadata={"alias": "defaultDeliveryFromAddress"}
    )

    default_notification_from_address: Optional[str] = field(
        default=None, metadata={"alias": "defaultNotificationFromAddress"}
    )

    default_voice_portal_lockout_from_address: Optional[str] = field(
        default=None, metadata={"alias": "defaultVoicePortalLockoutFromAddress"}
    )

    use_outgoing_mwi_on_smdi: Optional[bool] = field(
        default=None, metadata={"alias": "useOutgoingMWIOnSMDI"}
    )

    mwi_delay_in_seconds: Optional[int] = field(
        default=None, metadata={"alias": "mwiDelayInSeconds"}
    )

    voice_portal_scope: Optional[str] = field(
        default=None, metadata={"alias": "voicePortalScope"}
    )

    network_wide_messaging: Optional[bool] = field(
        default=None, metadata={"alias": "networkWideMessaging"}
    )

    use_external_routing: Optional[bool] = field(
        default=None, metadata={"alias": "useExternalRouting"}
    )

    default_external_routing_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultExternalRoutingAddress"}
    )

    vm_only_system: Optional[bool] = field(
        default=None, metadata={"alias": "vmOnlySystem"}
    )

    client_initiated_mail_server_session_timeout_minutes: Optional[int] = field(
        default=None,
        metadata={"alias": "clientInitiatedMailServerSessionTimeoutMinutes"},
    )

    recording_audio_file_format: Optional[str] = field(
        default=None, metadata={"alias": "recordingAudioFileFormat"}
    )

    allow_voice_portal_access_from_vm_deposit_menu: Optional[bool] = field(
        default=None, metadata={"alias": "allowVoicePortalAccessFromVMDepositMenu"}
    )

    allow_voice_portal_auto_login_for_mobile_devices_only: Optional[bool] = field(
        default=None,
        metadata={"alias": "allowVoicePortalAutoLoginForMobileDevicesOnly"},
    )

    select_mwi_template_per_caller: Optional[bool] = field(
        default=None, metadata={"alias": "selectMwiTemplatePerCaller"}
    )

    def __post_init__(self):
        nillable_fields = [
            "mail_server_net_address",
            "default_external_routing_address",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemVoiceMessagingGroupModifyVoicePortalMenusRequest19(OCIRequest):
    """Request to modify the system voice portal menus setting.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        use_voice_portal_customization (Optional[bool]):

        voice_portal_main_menu_keys (Optional[object]):

        announcement_menu_keys (Optional[object]):

        announcement_recording_menu_keys (Optional[object]):

        greetings_menu_keys (Optional[object]):

        conference_greeting_menu_keys (Optional[object]):

        voice_messaging_menu_keys (Optional[object]):

        play_greeting_menu_keys (Optional[object]):

        change_busy_or_no_answer_greeting_menu_keys (Optional[object]):

        change_extended_away_greeting_menu_keys (Optional[object]):

        record_new_greeting_or_personalized_name_menu_keys (Optional[object]):

        delete_all_messages_menu_keys (Optional[object]):

        comm_pilot_express_profile_menu_keys (Optional[object]):

        personalized_name_menu_keys (Optional[object]):

        call_forwarding_options_menu_keys (Optional[object]):

        change_call_forwarding_destination_menu_keys (Optional[object]):

        voice_portal_calling_menu_keys (Optional[object]):

        hoteling_menu_keys (Optional[object]):

        passcode_menu_keys (Optional[object]):

        play_messages_menu_keys (Optional[object]):

        play_message_menu_keys (Optional[object]):

        additional_message_options_menu_keys (Optional[object]):

        forward_or_compose_message_menu_keys (Optional[object]):

        reply_message_menu_keys (Optional[object]):

        send_to_distribution_list_menu_keys (Optional[object]):

        select_distribution_list_menu_keys (Optional[object]):

        review_selected_distribution_list_menu_keys (Optional[object]):

        send_message_to_selected_distribution_list_menu_keys (Optional[object]):

        send_to_all_group_members_menu_keys (Optional[object]):

        send_to_person_menu_keys (Optional[object]):

        change_current_introduction_or_message_or_reply_menu_keys (Optional[object]):

        voice_portal_login_menu_keys (Optional[object]):

        fax_messaging_menu_keys (Optional[object]):

        message_deposit_menu_keys (Optional[object]):

        disable_message_deposit_menu_keys (Optional[object]):

        greeting_only_forwarding_destination_menu_keys (Optional[Nillable[object]]):

        personal_assistant_menu_keys (Optional[object]):

    """

    use_voice_portal_customization: Optional[bool] = field(
        default=None, metadata={"alias": "useVoicePortalCustomization"}
    )

    voice_portal_main_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "voicePortalMainMenuKeys"}
    )

    announcement_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "announcementMenuKeys"}
    )

    announcement_recording_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "announcementRecordingMenuKeys"}
    )

    greetings_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "greetingsMenuKeys"}
    )

    conference_greeting_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "conferenceGreetingMenuKeys"}
    )

    voice_messaging_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "voiceMessagingMenuKeys"}
    )

    play_greeting_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "playGreetingMenuKeys"}
    )

    change_busy_or_no_answer_greeting_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "changeBusyOrNoAnswerGreetingMenuKeys"}
    )

    change_extended_away_greeting_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "changeExtendedAwayGreetingMenuKeys"}
    )

    record_new_greeting_or_personalized_name_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "recordNewGreetingOrPersonalizedNameMenuKeys"}
    )

    delete_all_messages_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "deleteAllMessagesMenuKeys"}
    )

    comm_pilot_express_profile_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "commPilotExpressProfileMenuKeys"}
    )

    personalized_name_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "personalizedNameMenuKeys"}
    )

    call_forwarding_options_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "callForwardingOptionsMenuKeys"}
    )

    change_call_forwarding_destination_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "changeCallForwardingDestinationMenuKeys"}
    )

    voice_portal_calling_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "voicePortalCallingMenuKeys"}
    )

    hoteling_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "hotelingMenuKeys"}
    )

    passcode_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "passcodeMenuKeys"}
    )

    play_messages_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "playMessagesMenuKeys"}
    )

    play_message_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "playMessageMenuKeys"}
    )

    additional_message_options_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "additionalMessageOptionsMenuKeys"}
    )

    forward_or_compose_message_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "forwardOrComposeMessageMenuKeys"}
    )

    reply_message_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "replyMessageMenuKeys"}
    )

    send_to_distribution_list_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "sendToDistributionListMenuKeys"}
    )

    select_distribution_list_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "selectDistributionListMenuKeys"}
    )

    review_selected_distribution_list_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "reviewSelectedDistributionListMenuKeys"}
    )

    send_message_to_selected_distribution_list_menu_keys: Optional[object] = field(
        default=None,
        metadata={"alias": "sendMessageToSelectedDistributionListMenuKeys"},
    )

    send_to_all_group_members_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "sendToAllGroupMembersMenuKeys"}
    )

    send_to_person_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "sendToPersonMenuKeys"}
    )

    change_current_introduction_or_message_or_reply_menu_keys: Optional[object] = field(
        default=None,
        metadata={"alias": "changeCurrentIntroductionOrMessageOrReplyMenuKeys"},
    )

    voice_portal_login_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "voicePortalLoginMenuKeys"}
    )

    fax_messaging_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "faxMessagingMenuKeys"}
    )

    message_deposit_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "messageDepositMenuKeys"}
    )

    disable_message_deposit_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "disableMessageDepositMenuKeys"}
    )

    greeting_only_forwarding_destination_menu_keys: Optional[Nillable[object]] = field(
        default=None, metadata={"alias": "greetingOnlyForwardingDestinationMenuKeys"}
    )

    personal_assistant_menu_keys: Optional[object] = field(
        default=None, metadata={"alias": "personalAssistantMenuKeys"}
    )

    def __post_init__(self):
        nillable_fields = ["greeting_only_forwarding_destination_menu_keys"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemWebexMeetingsCallTypeAddRequest(OCIRequest):
    """Add an entry that defines a Webex Meetings call processing behavior.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        network_server_call_type (str):

        enforce_ns_charge_field (bool):

        process_as_internal_for_sac_subscriber (bool):

    """

    name: str = field(metadata={"alias": "name"})

    network_server_call_type: str = field(metadata={"alias": "networkServerCallType"})

    enforce_ns_charge_field: bool = field(metadata={"alias": "enforceNSChargeField"})

    process_as_internal_for_sac_subscriber: bool = field(
        metadata={"alias": "processAsInternalForSACSubscriber"}
    )


@dataclass(kw_only=True)
class SystemWebexMeetingsCallTypeDeleteRequest(OCIRequest):
    """Delete a Webex Meetings entry.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

    """

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemWebexMeetingsCallTypeGetListRequest(OCIRequest):
    """Get all the Webex Meetings call processing entries defined in the system.
        The response is either a SystemWebexMeetingsCallTypeGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemWebexMeetingsCallTypeModifyRequest(OCIRequest):
    """Modify a Webex Meetings call processing entry.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        network_server_call_type (Optional[str]):

        enforce_ns_charge_field (Optional[bool]):

        process_as_internal_for_sac_subscriber (Optional[bool]):

    """

    name: str = field(metadata={"alias": "name"})

    network_server_call_type: Optional[str] = field(
        default=None, metadata={"alias": "networkServerCallType"}
    )

    enforce_ns_charge_field: Optional[bool] = field(
        default=None, metadata={"alias": "enforceNSChargeField"}
    )

    process_as_internal_for_sac_subscriber: Optional[bool] = field(
        default=None, metadata={"alias": "processAsInternalForSACSubscriber"}
    )


@dataclass(kw_only=True)
class SystemXsiApplicationIdAddListRequest(OCIRequest):
    """Add the system Xsi application Id entries.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        xsi_application_id_entry (List[XsiApplicationIdEntry]):

    """

    xsi_application_id_entry: List[XsiApplicationIdEntry] = field(
        metadata={"alias": "xsiApplicationIdEntry"}
    )


@dataclass(kw_only=True)
class SystemXsiApplicationIdDeleteListRequest(OCIRequest):
    """Delete the entries from system Xsi application Id list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        xsi_application_id (List[str]):

    """

    xsi_application_id: List[str] = field(metadata={"alias": "xsiApplicationId"})


@dataclass(kw_only=True)
class SystemXsiApplicationIdGetListRequest(OCIRequest):
    """Get the system Xsi application Id white lists.
        The response is either SystemXsiApplicationIdGetListResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemXsiApplicationIdModifyRequest(OCIRequest):
    """Modify the system Xsi applicaiton Id description.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        xsi_application_id (str):

        description (Optional[Nillable[str]]):

    """

    xsi_application_id: str = field(metadata={"alias": "xsiApplicationId"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemXsiApplicationIdParameterGetRequest(OCIRequest):
    """Request to get the Xsi application Id system parameters.
        The response is either SystemXsiApplictionIdParameterGetResponse or ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemXsiApplicationIdParameterModifyRequest(OCIRequest):
    """Request to modify Xsi application system parameter.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        screen_xsi_application_id (Optional[bool]):

    """

    screen_xsi_application_id: Optional[bool] = field(
        default=None, metadata={"alias": "screenXsiApplicationId"}
    )


@dataclass(kw_only=True)
class SystemXsiPolicyProfileAddRequest(OCIRequest):
    """Add the system Xsi policy profile entry.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        name (str):

        level (str):

        description (Optional[str]):

        max_target_subscription (int):

    """

    name: str = field(metadata={"alias": "name"})

    level: str = field(metadata={"alias": "level"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    max_target_subscription: int = field(metadata={"alias": "maxTargetSubscription"})


@dataclass(kw_only=True)
class SystemXsiPolicyProfileDeleteRequest(OCIRequest):
    """Delete an entry from system Xsi application Id list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        xsi_policy_profile (XsiPolicyProfileKey):

    """

    xsi_policy_profile: XsiPolicyProfileKey = field(
        metadata={"alias": "xsiPolicyProfile"}
    )


@dataclass(kw_only=True)
class SystemXsiPolicyProfileGetAssignedServiceProviderListRequest(OCIRequest):
    """Get usage of specific policy profile.
        The response is either a SystemXsiPolicyProfileGetAssignedServiceProviderListResponse or an ErrorResponse.

    Attributes:

        xsi_policy_profile (XsiPolicyProfileKey):

        response_size_limit (Optional[int]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_service_provider_name (Optional[List[SearchCriteriaServiceProviderName]]):

        search_criteria_exact_organization_type (Optional[SearchCriteriaExactOrganizationType]):

        search_criteria_reseller_id (Optional[List[SearchCriteriaResellerId]]):

    """

    xsi_policy_profile: XsiPolicyProfileKey = field(
        metadata={"alias": "xsiPolicyProfile"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_service_provider_name: Optional[
        List[SearchCriteriaServiceProviderName]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderName"})

    search_criteria_exact_organization_type: Optional[
        SearchCriteriaExactOrganizationType
    ] = field(default=None, metadata={"alias": "searchCriteriaExactOrganizationType"})

    search_criteria_reseller_id: Optional[List[SearchCriteriaResellerId]] = field(
        default=None, metadata={"alias": "searchCriteriaResellerId"}
    )


@dataclass(kw_only=True)
class SystemXsiPolicyProfileGetListRequest(OCIRequest):
    """Get the system Xsi policy profile list.
        The response is either SystemXsiPolicyProfileGetListResponse or ErrorResponse.

    Attributes:

        xsi_policy_profile_level (Optional[str]):

    """

    xsi_policy_profile_level: Optional[str] = field(
        default=None, metadata={"alias": "xsiPolicyProfileLevel"}
    )


@dataclass(kw_only=True)
class SystemXsiPolicyProfileGetRequest(OCIRequest):
    """Get an existing Xsi policy profile.
        The response is either a SystemXsiPolicyProfileGetResponse
        or an ErrorResponse.

    Attributes:

        xsi_policy_profile (XsiPolicyProfileKey):

    """

    xsi_policy_profile: XsiPolicyProfileKey = field(
        metadata={"alias": "xsiPolicyProfile"}
    )


@dataclass(kw_only=True)
class SystemXsiPolicyProfileModifyRequest(OCIRequest):
    """Modify the system Xsi policy profile entry.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        xsi_policy_profile (XsiPolicyProfileKey):

        new_xsi_policy_profile_name (Optional[str]):

        description (Optional[Nillable[str]]):

        max_target_subscription (Optional[int]):

    """

    xsi_policy_profile: XsiPolicyProfileKey = field(
        metadata={"alias": "xsiPolicyProfile"}
    )

    new_xsi_policy_profile_name: Optional[str] = field(
        default=None, metadata={"alias": "newXsiPolicyProfileName"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    max_target_subscription: Optional[int] = field(
        default=None, metadata={"alias": "maxTargetSubscription"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemZoneAddRequest(OCIRequest):
    """Add a Zone and optional Net Addresses and Physical Locations.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        zone_name (str):

        net_address (Optional[List[str]]):

        net_address_range (Optional[List[IPAddressRange]]):

        location_based_physical_location (Optional[List[str]]):

        calling_zone_physical_location (Optional[str]):

    """

    zone_name: str = field(metadata={"alias": "zoneName"})

    net_address: Optional[List[str]] = field(
        default=None, metadata={"alias": "netAddress"}
    )

    net_address_range: Optional[List[IPAddressRange]] = field(
        default=None, metadata={"alias": "netAddressRange"}
    )

    location_based_physical_location: Optional[List[str]] = field(
        default=None, metadata={"alias": "locationBasedPhysicalLocation"}
    )

    calling_zone_physical_location: Optional[str] = field(
        default=None, metadata={"alias": "callingZonePhysicalLocation"}
    )


@dataclass(kw_only=True)
class SystemZoneCallingZonePhysicalLocationGetRequest(OCIRequest):
    """Returns a zone calling physical location for a given zone.
             Response is SystemZoneCallingZonePhysicalLocationGetResponse or an ErrorResponse.

    Attributes:

        zone_name (str):

    """

    zone_name: str = field(metadata={"alias": "zoneName"})


@dataclass(kw_only=True)
class SystemZoneCallingZonePhysicalLocationModifyRequest(OCIRequest):
    """Modifies a zone calling physical location for a given zone.
             Response is a SuccessResponse or an ErrorResponse.

    Attributes:

        zone_name (str):

        physical_location (Optional[Nillable[str]]):

    """

    zone_name: str = field(metadata={"alias": "zoneName"})

    physical_location: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    def __post_init__(self):
        nillable_fields = ["physical_location"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemZoneDeleteRequest(OCIRequest):
    """Delete a Zone.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        zone_name (str):

    """

    zone_name: str = field(metadata={"alias": "zoneName"})


@dataclass(kw_only=True)
class SystemZoneGetListRequest(OCIRequest):
    """Get the list of all Zones.
        The response is either a SystemZoneGetListResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class SystemZoneLocationBasedPhysicalLocationAddListRequest(OCIRequest):
    """Adds a list of physical locations to a zone
        The response is SuccessResponse or an ErrorResponse.

    Attributes:

        zone_name (str):

        physical_location (Optional[List[str]]):

    """

    zone_name: str = field(metadata={"alias": "zoneName"})

    physical_location: Optional[List[str]] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )


@dataclass(kw_only=True)
class SystemZoneLocationBasedPhysicalLocationDeleteListRequest(OCIRequest):
    """Deletes a list of physical addresses from a zone
        The response is SuccessResponse or an ErrorResponse.

    Attributes:

        zone_name (str):

        physical_location (Optional[List[str]]):

    """

    zone_name: str = field(metadata={"alias": "zoneName"})

    physical_location: Optional[List[str]] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )


@dataclass(kw_only=True)
class SystemZoneLocationBasedPhysicalLocationGetListRequest(OCIRequest):
    """Gets a list of physical locations assigned to a zone.
        Response is SystemZoneLocationBasedPhysicalLocationGetListResponse or an ErrorResponse.

    Attributes:

        zone_name (str):

        response_size_limit (Optional[int]):

        search_criteria_physical_location (Optional[List[SearchCriteriaPhysicalLocation]]):

    """

    zone_name: str = field(metadata={"alias": "zoneName"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_physical_location: Optional[
        List[SearchCriteriaPhysicalLocation]
    ] = field(default=None, metadata={"alias": "searchCriteriaPhysicalLocation"})


@dataclass(kw_only=True)
class SystemZoneNetAddressAddListRequest(OCIRequest):
    """Adds a list of IP addresses to a zone
        The response is SuccessResponse or an ErrorResponse.

    Attributes:

        zone_name (str):

        net_address (Optional[List[str]]):

        net_address_range (Optional[List[IPAddressRange]]):

    """

    zone_name: str = field(metadata={"alias": "zoneName"})

    net_address: Optional[List[str]] = field(
        default=None, metadata={"alias": "netAddress"}
    )

    net_address_range: Optional[List[IPAddressRange]] = field(
        default=None, metadata={"alias": "netAddressRange"}
    )


@dataclass(kw_only=True)
class SystemZoneNetAddressDeleteListRequest(OCIRequest):
    """Deletes a list of IP addresses from a zone
        The response is SuccessResponse or an ErrorResponse.

    Attributes:

        zone_name (str):

        net_address (Optional[List[str]]):

        net_address_range (Optional[List[IPAddressRange]]):

    """

    zone_name: str = field(metadata={"alias": "zoneName"})

    net_address: Optional[List[str]] = field(
        default=None, metadata={"alias": "netAddress"}
    )

    net_address_range: Optional[List[IPAddressRange]] = field(
        default=None, metadata={"alias": "netAddressRange"}
    )


@dataclass(kw_only=True)
class SystemZoneNetAddressGetListRequest(OCIRequest):
    """Gets a list of IP Addresses and/or Ranges assigned to a zone.
        Response is SystemZoneNetAddressGetListResponse or an ErrorResponse.

    Attributes:

        zone_name (str):

        response_size_limit (Optional[int]):

        search_criteria_zone_ip_address (Optional[List[SearchCriteriaZoneIPAddress]]):

    """

    zone_name: str = field(metadata={"alias": "zoneName"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_zone_ip_address: Optional[List[SearchCriteriaZoneIPAddress]] = (
        field(default=None, metadata={"alias": "searchCriteriaZoneIPAddress"})
    )


@dataclass(kw_only=True)
class TutorialFlagGetRequest(OCIRequest):
    """Get the tutorial flag setting for a user or admin.
        The response is either a TutorialFlagGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class TutorialFlagModifyRequest(OCIRequest):
    """Modify the tutorial flag setting for a user or admin.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        enable_tutorial (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    enable_tutorial: Optional[bool] = field(
        default=None, metadata={"alias": "enableTutorial"}
    )


@dataclass(kw_only=True)
class UserAccessDeviceDeviceActivationGetListRequest(OCIRequest):
    """Requests the list of access devices associated to a user and their device activation information.
        The response is either UserAccessDeviceDeviceActivationGetListResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserAccessDeviceFileGetListRequest(OCIRequest):
    """Request to get the list of Device Management user modifiable files.
        The response is either UserAccessDeviceFileGetListResponse or ErrorResponse.

    Attributes:

        user_id (str):

        access_device (AccessDevice):

    """

    user_id: str = field(metadata={"alias": "userId"})

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})


@dataclass(kw_only=True)
class UserAccessDeviceFileGetRequest(OCIRequest):
    """Request to get a user modifiable file.
        The response is either UserAccessDeviceFileGetResponse or ErrorResponse.

    Attributes:

        user_id (str):

        access_device (AccessDevice):

        file_format (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    file_format: str = field(metadata={"alias": "fileFormat"})


@dataclass(kw_only=True)
class UserAccessDeviceFileModifyRequest(OCIRequest):
    """Request to modify a user modifiable access device file.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        access_device (AccessDevice):

        file_format (str):

        upload_file (FileResource):

    """

    user_id: str = field(metadata={"alias": "userId"})

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    file_format: str = field(metadata={"alias": "fileFormat"})

    upload_file: FileResource = field(metadata={"alias": "uploadFile"})


@dataclass(kw_only=True)
class UserAccessDeviceResetRequest(OCIRequest):
    """Reset a specific user SIP device that supports the reset operation.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        access_device (AccessDevice):

    """

    user_id: str = field(metadata={"alias": "userId"})

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})


@dataclass(kw_only=True)
class UserAccessDeviceTagsGetRequest(OCIRequest):
    """Request to get all the device tag names and values for a specific device. The resolved tags are returned only if the device is the main device for this user.
        The response is either a UserAccessDeviceTagsGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        access_device (AccessDevice):

    """

    user_id: str = field(metadata={"alias": "userId"})

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})


@dataclass(kw_only=True)
class UserAddRequest22V2(OCIRequest):
    """Request to add a user.
        The domain is required in the userId.
        The password is not required if external authentication is enabled.

        The following elements are only used in AS data mode and will fail in XS data mode:
          trunkAddressing
        The following elements are only used in AS data mode and ignored in XS data mode:
          nameDialingName
          alternateUserId
          isPlace

        The following elements are only used in XS data mode and ignored in AS data mode:
          allowVideo

        The response is either SuccessResponse or ErrorResponse.

        The following elements can only be used by a system administrator:.
          allowVideo

        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        user_id (str):

        last_name (str):

        first_name (str):

        calling_line_id_last_name (str):

        calling_line_id_first_name (str):

        name_dialing_name (Optional[NameDialingName]):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

        phone_number (Optional[str]):

        extension (Optional[str]):

        calling_line_id_phone_number (Optional[str]):

        password (Optional[str]):

        department (Optional[DepartmentKey]):

        language (Optional[str]):

        time_zone (Optional[str]):

        alias (Optional[List[str]]):

        access_device_endpoint (Optional[AccessDeviceMultipleIdentityAndContactEndpointAdd22V2]):

        trunk_addressing (Optional[TrunkAddressingMultipleContactAdd22]):

        title (Optional[str]):

        pager_phone_number (Optional[str]):

        mobile_phone_number (Optional[str]):

        email_address (Optional[str]):

        yahoo_id (Optional[str]):

        address_location (Optional[str]):

        address (Optional[StreetAddress]):

        network_class_of_service (Optional[str]):

        alternate_user_id (Optional[List[AlternateUserIdEntry]]):

        is_place (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    user_id: str = field(metadata={"alias": "userId"})

    last_name: str = field(metadata={"alias": "lastName"})

    first_name: str = field(metadata={"alias": "firstName"})

    calling_line_id_last_name: str = field(metadata={"alias": "callingLineIdLastName"})

    calling_line_id_first_name: str = field(
        metadata={"alias": "callingLineIdFirstName"}
    )

    name_dialing_name: Optional[NameDialingName] = field(
        default=None, metadata={"alias": "nameDialingName"}
    )

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})

    calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    department: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "department"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    alias: Optional[List[str]] = field(default=None, metadata={"alias": "alias"})

    access_device_endpoint: Optional[
        AccessDeviceMultipleIdentityAndContactEndpointAdd22V2
    ] = field(default=None, metadata={"alias": "accessDeviceEndpoint"})

    trunk_addressing: Optional[TrunkAddressingMultipleContactAdd22] = field(
        default=None, metadata={"alias": "trunkAddressing"}
    )

    title: Optional[str] = field(default=None, metadata={"alias": "title"})

    pager_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "pagerPhoneNumber"}
    )

    mobile_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "mobilePhoneNumber"}
    )

    email_address: Optional[str] = field(
        default=None, metadata={"alias": "emailAddress"}
    )

    yahoo_id: Optional[str] = field(default=None, metadata={"alias": "yahooId"})

    address_location: Optional[str] = field(
        default=None, metadata={"alias": "addressLocation"}
    )

    address: Optional[StreetAddress] = field(
        default=None, metadata={"alias": "address"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    alternate_user_id: Optional[List[AlternateUserIdEntry]] = field(
        default=None, metadata={"alias": "alternateUserId"}
    )

    is_place: Optional[bool] = field(default=None, metadata={"alias": "isPlace"})


@dataclass(kw_only=True)
class UserAdviceOfChargeGetRequest(OCIRequest):
    """Request the user level data associated with Advice Of Charge.
        The response is either a UserAdviceOfChargeGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserAdviceOfChargeModifyRequest(OCIRequest):
    """Modify the user level data associated with Advice of Charge.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        aoc_type (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    aoc_type: Optional[str] = field(default=None, metadata={"alias": "aocType"})


@dataclass(kw_only=True)
class UserAlternateNumbersGetRequest21(OCIRequest):
    """Request the user level data associated with alternate numbers.
        The response is either a UserAlternateNumbersGetResponse21 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserAlternateNumbersModifyRequest(OCIRequest):
    """Modify the user level data associated with Alternate Numbers.
        The following element in AlternateNumberEntry21 datatype is only used in AS mode:
          description

        In XS data mode, the request will fail if one of the alternate entry's phone number element represents a currently configured BroadWorks Anywhere location for the user.

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        distinctive_ring (Optional[bool]):

        alternate_entry01 (Optional[AlternateNumberEntry21]):

        alternate_entry02 (Optional[AlternateNumberEntry21]):

        alternate_entry03 (Optional[AlternateNumberEntry21]):

        alternate_entry04 (Optional[AlternateNumberEntry21]):

        alternate_entry05 (Optional[AlternateNumberEntry21]):

        alternate_entry06 (Optional[AlternateNumberEntry21]):

        alternate_entry07 (Optional[AlternateNumberEntry21]):

        alternate_entry08 (Optional[AlternateNumberEntry21]):

        alternate_entry09 (Optional[AlternateNumberEntry21]):

        alternate_entry10 (Optional[AlternateNumberEntry21]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    distinctive_ring: Optional[bool] = field(
        default=None, metadata={"alias": "distinctiveRing"}
    )

    alternate_entry01: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry01"}
    )

    alternate_entry02: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry02"}
    )

    alternate_entry03: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry03"}
    )

    alternate_entry04: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry04"}
    )

    alternate_entry05: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry05"}
    )

    alternate_entry06: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry06"}
    )

    alternate_entry07: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry07"}
    )

    alternate_entry08: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry08"}
    )

    alternate_entry09: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry09"}
    )

    alternate_entry10: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry10"}
    )


@dataclass(kw_only=True)
class UserAlternateUserIdAddRequest(OCIRequest):
    """Request to add an alternate user Id to an user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        alternate_user_id (str):

        description (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    alternate_user_id: str = field(metadata={"alias": "alternateUserId"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class UserAlternateUserIdDeleteRequest(OCIRequest):
    """Request to delete an alternate user id of a user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        alternate_user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    alternate_user_id: str = field(metadata={"alias": "alternateUserId"})


@dataclass(kw_only=True)
class UserAlternateUserIdGetListRequest(OCIRequest):
    """Request to get the user id and the list of alternate user ids of an user.
        The response is either UserAlternateUserIdGetListResponse or ErrorResponse.
        The \"userId\" can be either the user Id or an alternate user Id.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserAlternateUserIdModifyRequest(OCIRequest):
    """Request to modify an alternate user id of a user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        alternate_user_id (str):

        new_alternate_user_id (Optional[str]):

        description (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    alternate_user_id: str = field(metadata={"alias": "alternateUserId"})

    new_alternate_user_id: Optional[str] = field(
        default=None, metadata={"alias": "newAlternateUserId"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserAnnouncementFileAddRequest(OCIRequest):
    """Add an announcement to the user announcement repository

        The following elements are only used in AS data mode and ignored in XS data mode:
          announcementFileExternalId

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        announcement_file_name (Optional[str]):

        announcement_file_external_id (Optional[str]):

        announcement_file (LabeledMediaFileResource):

    """

    user_id: str = field(metadata={"alias": "userId"})

    announcement_file_name: Optional[str] = field(
        default=None, metadata={"alias": "announcementFileName"}
    )

    announcement_file_external_id: Optional[str] = field(
        default=None, metadata={"alias": "announcementFileExternalId"}
    )

    announcement_file: LabeledMediaFileResource = field(
        metadata={"alias": "announcementFile"}
    )


@dataclass(kw_only=True)
class UserAnnouncementFileDeleteListRequest(OCIRequest):
    """Delete one or more announcements from the user announcement repository

        The following elements are only used in AS data mode and ignored in XS data mode:
          announcementFileExternalId

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        announcement_file_key (Optional[List[AnnouncementFileKey]]):

        announcement_file_external_id (Optional[List[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    announcement_file_key: Optional[List[AnnouncementFileKey]] = field(
        default=None, metadata={"alias": "announcementFileKey"}
    )

    announcement_file_external_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "announcementFileExternalId"}
    )


@dataclass(kw_only=True)
class UserAnnouncementFileGetAvailableListRequest(OCIRequest):
    """Get the list of available announcement files for a User from the Announcement Repository,
        for Virtual subscribers the list will also include the announcements for it's group.

    Attributes:

        user_id (str):

        announcement_file_type (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    announcement_file_type: Optional[str] = field(
        default=None, metadata={"alias": "announcementFileType"}
    )


@dataclass(kw_only=True)
class UserAnnouncementFileGetListRequest(OCIRequest):
    """Get the list of announcement names with associated media type and filesize for a User and
        given Announcement Repository Type
        The response is either a UserAnnouncementFileGetListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        announcement_file_type (Optional[str]):

        include_announcement_table (bool):

        response_size_limit (Optional[int]):

        search_criteria_announcement_file_name (Optional[List[SearchCriteriaAnnouncementFileName]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    announcement_file_type: Optional[str] = field(
        default=None, metadata={"alias": "announcementFileType"}
    )

    include_announcement_table: bool = field(
        metadata={"alias": "includeAnnouncementTable"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_announcement_file_name: Optional[
        List[SearchCriteriaAnnouncementFileName]
    ] = field(default=None, metadata={"alias": "searchCriteriaAnnouncementFileName"})


@dataclass(kw_only=True)
class UserAnnouncementFileGetPagedSortedListRequest(OCIRequest):
    """Get the list of announcement files for a user.
        If the responsePagingControl element is not provided,
        the paging startIndex will be set to 1 by default,
        and the responsePageSize will be set to the maximum responsePageSize by
        default.
        If no sortOrder is provided, the response is sorted by Name ascending by default.
        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.
        The response is either a
        UserAnnouncementFileGetPagedSortedListResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_by_announcement_file_name (Optional[SortByAnnouncementFileName]):

        sort_by_announcement_file_size (Optional[SortByAnnouncementFileSize]):

        search_criteria_announcement_file_name (Optional[List[SearchCriteriaAnnouncementFileName]]):

        search_criteria_exact_announcement_file_type (Optional[SearchCriteriaExactAnnouncementFileType]):

        search_criteria_exact_media_file_type (Optional[List[SearchCriteriaExactMediaFileType]]):

        search_criteria_mode_or (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_by_announcement_file_name: Optional[SortByAnnouncementFileName] = field(
        default=None, metadata={"alias": "sortByAnnouncementFileName"}
    )

    sort_by_announcement_file_size: Optional[SortByAnnouncementFileSize] = field(
        default=None, metadata={"alias": "sortByAnnouncementFileSize"}
    )

    search_criteria_announcement_file_name: Optional[
        List[SearchCriteriaAnnouncementFileName]
    ] = field(default=None, metadata={"alias": "searchCriteriaAnnouncementFileName"})

    search_criteria_exact_announcement_file_type: Optional[
        SearchCriteriaExactAnnouncementFileType
    ] = field(
        default=None, metadata={"alias": "searchCriteriaExactAnnouncementFileType"}
    )

    search_criteria_exact_media_file_type: Optional[
        List[SearchCriteriaExactMediaFileType]
    ] = field(default=None, metadata={"alias": "searchCriteriaExactMediaFileType"})

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class UserAnnouncementFileGetRequest22(OCIRequest):
    """Request to get the announcement repository file information.

        The following elements are only used in AS data mode and ignored in XS data mode:
          announcementFileExternalId

        The response is either UserAnnouncementFileGetResponse22 or ErrorResponse.

    Attributes:

        user_id (Optional[str]):

        announcement_file_key (Optional[AnnouncementFileKey]):

        announcement_file_external_id (Optional[str]):

    """

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})

    announcement_file_key: Optional[AnnouncementFileKey] = field(
        default=None, metadata={"alias": "announcementFileKey"}
    )

    announcement_file_external_id: Optional[str] = field(
        default=None, metadata={"alias": "announcementFileExternalId"}
    )


@dataclass(kw_only=True)
class UserAnnouncementFileModifyRequest(OCIRequest):
    """This command is used to change the name of the file or upload a new announcement file for
        an existing announcement in the user repository.
        When modifying the file type the command will fail if the media type of the new file changes
        the announcement from audio to video (or vice versa).

        The following elements are only used in AS data mode and ignored in XS data mode:
          announcementFileExternalId

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (Optional[str]):

        announcement_file_key (Optional[AnnouncementFileKey]):

        announcement_file_external_id (Optional[str]):

        new_announcement_file_name (Optional[str]):

        announcement_file (Optional[LabeledMediaFileResource]):

    """

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})

    announcement_file_key: Optional[AnnouncementFileKey] = field(
        default=None, metadata={"alias": "announcementFileKey"}
    )

    announcement_file_external_id: Optional[str] = field(
        default=None, metadata={"alias": "announcementFileExternalId"}
    )

    new_announcement_file_name: Optional[str] = field(
        default=None, metadata={"alias": "newAnnouncementFileName"}
    )

    announcement_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "announcementFile"}
    )


@dataclass(kw_only=True)
class UserAnnouncementRepositoryGetSettingsRequest(OCIRequest):
    """Return the disk space being used.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserAnonymousCallRejectionGetRequest(OCIRequest):
    """Request the user level data associated with Anonymous Call Rejection.
        The response is either a UserAnonymousCallRejectionGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserAnonymousCallRejectionModifyRequest(OCIRequest):
    """Modify the user level data associated with Anonymous Call Rejection.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserAssignedServicesGetListRequest(OCIRequest):
    """Get the list of assigned User and Group Services for the specified user.
        The response is either an UserAssignedServicesGetListResponse or an ErrorResponse.

    Attributes:

        user_id (Optional[str]):

    """

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserAuthenticationGetRequest(OCIRequest):
    """Get the user's authentication service information.
        The response is either a UserAuthenticationGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserAuthenticationModifyRequest(OCIRequest):
    """Modify the user's authentication service information.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        user_name (Optional[str]):

        new_password (Optional[str]):

        password (Optional[object]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    user_name: Optional[str] = field(default=None, metadata={"alias": "userName"})

    new_password: Optional[str] = field(default=None, metadata={"alias": "newPassword"})

    password: Optional[object] = field(default=None, metadata={"alias": "password"})


@dataclass(kw_only=True)
class UserAutomaticCallbackGetRequest(OCIRequest):
    """Request the user level data associated with Automatic Callback.
        The response is either a UserAutomaticCallbackGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserAutomaticCallbackModifyRequest(OCIRequest):
    """Modify the user level data associated with Automatic Callback.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserAutomaticCollectCallGetRequest(OCIRequest):
    """Get user Automatic Collect Call service settings.
        The response is either UserAutomaticCollectCallGetResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserAutomaticCollectCallModifyRequest(OCIRequest):
    """Modify user Automatic Collect Call service settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        enable_automatic_collect_call (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    enable_automatic_collect_call: Optional[bool] = field(
        default=None, metadata={"alias": "enableAutomaticCollectCall"}
    )


@dataclass(kw_only=True)
class UserAutomaticHoldRetrieveGetRequest(OCIRequest):
    """Request the user level data associated with Automatic Hold/Retrieve.
        The response is either a UserAutomaticHoldRetrieveGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserAutomaticHoldRetrieveModifyRequest(OCIRequest):
    """Modify the user level data associated with Automatic Hold/Retrieve.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        recall_timer_seconds (Optional[int]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    recall_timer_seconds: Optional[int] = field(
        default=None, metadata={"alias": "recallTimerSeconds"}
    )


@dataclass(kw_only=True)
class UserBargeInExemptGetRequest(OCIRequest):
    """Request the user level data associated with Barge In Exempt.
        The response is either a UserBargeInExemptGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserBargeInExemptModifyRequest(OCIRequest):
    """Modify the user level data associated with Barge In Exempt.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserBasicCallLogsGetListRequest14sp4(OCIRequest):
    """Request user's call logs.
        If the callLogType is not specified, all types of calls are returned.
        The response is either a UserBasicCallLogsGetListResponse14sp4 or an ErrorResponse.

    Attributes:

        user_id (str):

        call_log_type (Optional[str]):

        format_name_and_number (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    call_log_type: Optional[str] = field(
        default=None, metadata={"alias": "callLogType"}
    )

    format_name_and_number: Optional[bool] = field(
        default=None, metadata={"alias": "formatNameAndNumber"}
    )


@dataclass(kw_only=True)
class UserBroadWorksAnywhereAddPhoneNumberRequest(OCIRequest):
    """Add a broadworks Anywhere phone number.

        In XS data mode, the request will fail if the phoneNumber element represents the user's directory number or one of the user's alternate numbers.

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        phone_number (str):

        description (Optional[str]):

        is_active (bool):

        outbound_alternate_number (Optional[str]):

        broadworks_call_control (bool):

        use_diversion_inhibitor (bool):

        answer_confirmation_required (bool):

    """

    user_id: str = field(metadata={"alias": "userId"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    is_active: bool = field(metadata={"alias": "isActive"})

    outbound_alternate_number: Optional[str] = field(
        default=None, metadata={"alias": "outboundAlternateNumber"}
    )

    broadworks_call_control: bool = field(metadata={"alias": "broadworksCallControl"})

    use_diversion_inhibitor: bool = field(metadata={"alias": "useDiversionInhibitor"})

    answer_confirmation_required: bool = field(
        metadata={"alias": "answerConfirmationRequired"}
    )


@dataclass(kw_only=True)
class UserBroadWorksAnywhereAddSelectiveCriteriaRequest16(OCIRequest):
    """Add a criteria to the user's BroadWorks Anywhere phone number.
        The following elements are only used in AS data mode:
          callToNumber

        For the callToNumber, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        phone_number (str):

        criteria_name (str):

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria (CriteriaFromDn):

        call_to_number (Optional[List[CallToNumber]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria: CriteriaFromDn = field(metadata={"alias": "fromDnCriteria"})

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class UserBroadWorksAnywhereDeletePhoneNumberRequest(OCIRequest):
    """Delete a broadworks anywhere phone number. Also deletes all the selective criteria for the phone number.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        phone_number (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class UserBroadWorksAnywhereDeleteSelectiveCriteriaRequest(OCIRequest):
    """Delete a criteria from the user's BroadWorks Anywhere phone number.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        phone_number (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserBroadWorksAnywhereGetAvailablePortalListRequest21sp1(OCIRequest):
    """Get a list of all the available BroadWorks Anywhere portal instances for a specific user
        The response is either UserBroadWorksAnywhereGetAvailableListResponse21sp1 or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserBroadWorksAnywhereGetPhoneNumberPagedSortedListRequest(OCIRequest):
    """Get the list of all the BroadWorks Anywhere phone numbers for the user.
        If no sortOrder is included the response is sorted by Phone Number ascending by default.
        The response is either a UserBroadWorksAnywhereGetPhoneNumberPagedSortedListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_by_location (Optional[SortByLocation]):

        sort_by_enabled (Optional[SortByEnabled]):

        search_criteria_location (Optional[List[SearchCriteriaLocation]]):

        search_criteria_exact_location_enabled (Optional[SearchCriteriaExactLocationEnabled]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_by_location: Optional[SortByLocation] = field(
        default=None, metadata={"alias": "sortByLocation"}
    )

    sort_by_enabled: Optional[SortByEnabled] = field(
        default=None, metadata={"alias": "sortByEnabled"}
    )

    search_criteria_location: Optional[List[SearchCriteriaLocation]] = field(
        default=None, metadata={"alias": "searchCriteriaLocation"}
    )

    search_criteria_exact_location_enabled: Optional[
        SearchCriteriaExactLocationEnabled
    ] = field(default=None, metadata={"alias": "searchCriteriaExactLocationEnabled"})


@dataclass(kw_only=True)
class UserBroadWorksAnywhereGetPhoneNumberRequest(OCIRequest):
    """Get a broadworks anywhere phone number
        The response is UserBroadWorksAnywhereGetPhoneNumberResponse.

    Attributes:

        user_id (str):

        phone_number (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class UserBroadWorksAnywhereGetRequest16sp2(OCIRequest):
    """Get the list of all the BroadWorks Anywhere phone numbers for the user.
        The response is either a UserBroadWorksAnywhereGetResponse16sp2 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserBroadWorksAnywhereGetSelectiveCriteriaRequest21(OCIRequest):
    """Get a criteria for the user's BroadWorks Anywhere phone number.
        The response is either a UserBroadWorksAnywhereGetSelectiveCriteriaResponse21 or an ErrorResponse.

    Attributes:

        user_id (str):

        phone_number (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserBroadWorksAnywhereModifyPhoneNumberRequest(OCIRequest):
    """Modify a BroadWorks Anywhere phone number

          In XS data mode, the request will fail if the phoneNumber element represents the user's directory number or one of the user's alternate numbers.

          The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        phone_number (str):

        new_phone_number (Optional[str]):

        description (Optional[Nillable[str]]):

        is_active (Optional[bool]):

        outbound_alternate_number (Optional[Nillable[str]]):

        broadworks_call_control (Optional[bool]):

        use_diversion_inhibitor (Optional[bool]):

        answer_confirmation_required (Optional[bool]):

        criteria_activation (Optional[List[CriteriaActivation]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    new_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "newPhoneNumber"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    outbound_alternate_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "outboundAlternateNumber"}
    )

    broadworks_call_control: Optional[bool] = field(
        default=None, metadata={"alias": "broadworksCallControl"}
    )

    use_diversion_inhibitor: Optional[bool] = field(
        default=None, metadata={"alias": "useDiversionInhibitor"}
    )

    answer_confirmation_required: Optional[bool] = field(
        default=None, metadata={"alias": "answerConfirmationRequired"}
    )

    criteria_activation: Optional[List[CriteriaActivation]] = field(
        default=None, metadata={"alias": "criteriaActivation"}
    )

    def __post_init__(self):
        nillable_fields = ["description", "outbound_alternate_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserBroadWorksAnywhereModifyRequest(OCIRequest):
    """Request to modify the user-level settings for the BroadWorks Anywhere service for a specified user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        alert_all_locations_for_click_to_dial_calls (Optional[bool]):

        alert_all_locations_for_group_paging_calls (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    alert_all_locations_for_click_to_dial_calls: Optional[bool] = field(
        default=None, metadata={"alias": "alertAllLocationsForClickToDialCalls"}
    )

    alert_all_locations_for_group_paging_calls: Optional[bool] = field(
        default=None, metadata={"alias": "alertAllLocationsForGroupPagingCalls"}
    )


@dataclass(kw_only=True)
class UserBroadWorksAnywhereModifySelectiveCriteriaRequest(OCIRequest):
    """Modify selective criteria for the user's BroadWorks Anywhere phone number.
        The following elements are only used in AS data mode:
          callToNumbers

        For the callToNumbers in the callToNumberList, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        phone_number (str):

        criteria_name (str):

        new_criteria_name (Optional[str]):

        time_schedule (Optional[Nillable[TimeSchedule]]):

        from_dn_criteria (Optional[CriteriaFromDnModify]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        blacklisted (Optional[bool]):

        call_to_number_list (Optional[Nillable[ReplacementCallToNumberList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    new_criteria_name: Optional[str] = field(
        default=None, metadata={"alias": "newCriteriaName"}
    )

    time_schedule: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    from_dn_criteria: Optional[CriteriaFromDnModify] = field(
        default=None, metadata={"alias": "fromDnCriteria"}
    )

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: Optional[bool] = field(default=None, metadata={"alias": "blacklisted"})

    call_to_number_list: Optional[Nillable[ReplacementCallToNumberList]] = field(
        default=None, metadata={"alias": "callToNumberList"}
    )

    def __post_init__(self):
        nillable_fields = ["time_schedule", "holiday_schedule", "call_to_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserBroadWorksCommunicatorGetRequest(OCIRequest):
    """Request to get the Configuration Server for a specified user.
        The response is either a UserBroadWorksCommunicatorGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserBroadWorksMobilityGetRequest21sp1(OCIRequest):
    """Get the user's BroadWorks Mobility service settings with details for DNs.
        The response is either a UserBroadWorksMobilityGetResponse21sp1 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserBroadWorksMobilityMobileIdentityAddRequest22V2(OCIRequest):
    """Add a mobile identity to the user's list of mobile identities.
        The response is either a SuccessResponse or an ErrorResponse.

        The request fails when the devicesToRing is set to Mobile and the mobileNumberAlerted list is empty.

    Attributes:

        user_id (str):

        mobile_number (str):

        description (Optional[str]):

        is_primary (bool):

        enable_alerting (bool):

        alert_agent_calls (bool):

        alert_click_to_dial_calls (bool):

        alert_group_paging_calls (bool):

        use_mobility_calling_line_id (bool):

        enable_diversion_inhibitor (bool):

        require_answer_confirmation (bool):

        broadworks_call_control (bool):

        use_setting_level (str):

        deny_call_originations (bool):

        deny_call_terminations (bool):

        devices_to_ring (str):

        include_shared_call_appearance (bool):

        include_broadworks_anywhere (bool):

        include_executive_assistant (bool):

        mobile_number_alerted (Optional[List[str]]):

        enable_call_anchoring (bool):

        time_schedule (Optional[ScheduleGlobalKey]):

        holiday_schedule (Optional[ScheduleGlobalKey]):

        access_device_endpoint (Optional[AccessDeviceEndpointAndHotlineAdd]):

        outbound_alternate_number (Optional[str]):

        enable_direct_routing (bool):

        mark_cdr_as_enterprise_group_calls (bool):

        use_mobility_connected_identity (bool):

        network_translation_index (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    mobile_number: str = field(metadata={"alias": "mobileNumber"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    is_primary: bool = field(metadata={"alias": "isPrimary"})

    enable_alerting: bool = field(metadata={"alias": "enableAlerting"})

    alert_agent_calls: bool = field(metadata={"alias": "alertAgentCalls"})

    alert_click_to_dial_calls: bool = field(metadata={"alias": "alertClickToDialCalls"})

    alert_group_paging_calls: bool = field(metadata={"alias": "alertGroupPagingCalls"})

    use_mobility_calling_line_id: bool = field(
        metadata={"alias": "useMobilityCallingLineID"}
    )

    enable_diversion_inhibitor: bool = field(
        metadata={"alias": "enableDiversionInhibitor"}
    )

    require_answer_confirmation: bool = field(
        metadata={"alias": "requireAnswerConfirmation"}
    )

    broadworks_call_control: bool = field(metadata={"alias": "broadworksCallControl"})

    use_setting_level: str = field(metadata={"alias": "useSettingLevel"})

    deny_call_originations: bool = field(metadata={"alias": "denyCallOriginations"})

    deny_call_terminations: bool = field(metadata={"alias": "denyCallTerminations"})

    devices_to_ring: str = field(metadata={"alias": "devicesToRing"})

    include_shared_call_appearance: bool = field(
        metadata={"alias": "includeSharedCallAppearance"}
    )

    include_broadworks_anywhere: bool = field(
        metadata={"alias": "includeBroadworksAnywhere"}
    )

    include_executive_assistant: bool = field(
        metadata={"alias": "includeExecutiveAssistant"}
    )

    mobile_number_alerted: Optional[List[str]] = field(
        default=None, metadata={"alias": "mobileNumberAlerted"}
    )

    enable_call_anchoring: bool = field(metadata={"alias": "enableCallAnchoring"})

    time_schedule: Optional[ScheduleGlobalKey] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[ScheduleGlobalKey] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    access_device_endpoint: Optional[AccessDeviceEndpointAndHotlineAdd] = field(
        default=None, metadata={"alias": "accessDeviceEndpoint"}
    )

    outbound_alternate_number: Optional[str] = field(
        default=None, metadata={"alias": "outboundAlternateNumber"}
    )

    enable_direct_routing: bool = field(metadata={"alias": "enableDirectRouting"})

    mark_cdr_as_enterprise_group_calls: bool = field(
        metadata={"alias": "markCDRAsEnterpriseGroupCalls"}
    )

    use_mobility_connected_identity: bool = field(
        metadata={"alias": "useMobilityConnectedIdentity"}
    )

    network_translation_index: Optional[str] = field(
        default=None, metadata={"alias": "networkTranslationIndex"}
    )


@dataclass(kw_only=True)
class UserBroadWorksMobilityMobileIdentityConsolidatedAddRequest22(OCIRequest):
    """Add a mobile identity to the user's list of mobile identities.
        The response is either a SuccessResponse or an ErrorResponse.

        The request fails when the devicesToRing is set to Mobile and the mobileNumberAlerted list is empty.

    Attributes:

        user_id (str):

        mobile_number (str):

        description (Optional[str]):

        is_primary (bool):

        enable_alerting (bool):

        alert_agent_calls (bool):

        alert_click_to_dial_calls (bool):

        alert_group_paging_calls (bool):

        use_mobility_calling_line_id (bool):

        enable_diversion_inhibitor (bool):

        require_answer_confirmation (bool):

        broadworks_call_control (bool):

        use_setting_level (str):

        deny_call_originations (bool):

        deny_call_terminations (bool):

        devices_to_ring (str):

        include_shared_call_appearance (bool):

        include_broadworks_anywhere (bool):

        include_executive_assistant (bool):

        mobile_number_alerted (Optional[List[str]]):

        enable_call_anchoring (bool):

        time_schedule (Optional[ScheduleGlobalKey]):

        holiday_schedule (Optional[ScheduleGlobalKey]):

        access_device_endpoint (Optional[ConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpointAdd22]):

        outbound_alternate_number (Optional[str]):

        enable_direct_routing (bool):

        mark_cdr_as_enterprise_group_calls (bool):

    """

    user_id: str = field(metadata={"alias": "userId"})

    mobile_number: str = field(metadata={"alias": "mobileNumber"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    is_primary: bool = field(metadata={"alias": "isPrimary"})

    enable_alerting: bool = field(metadata={"alias": "enableAlerting"})

    alert_agent_calls: bool = field(metadata={"alias": "alertAgentCalls"})

    alert_click_to_dial_calls: bool = field(metadata={"alias": "alertClickToDialCalls"})

    alert_group_paging_calls: bool = field(metadata={"alias": "alertGroupPagingCalls"})

    use_mobility_calling_line_id: bool = field(
        metadata={"alias": "useMobilityCallingLineID"}
    )

    enable_diversion_inhibitor: bool = field(
        metadata={"alias": "enableDiversionInhibitor"}
    )

    require_answer_confirmation: bool = field(
        metadata={"alias": "requireAnswerConfirmation"}
    )

    broadworks_call_control: bool = field(metadata={"alias": "broadworksCallControl"})

    use_setting_level: str = field(metadata={"alias": "useSettingLevel"})

    deny_call_originations: bool = field(metadata={"alias": "denyCallOriginations"})

    deny_call_terminations: bool = field(metadata={"alias": "denyCallTerminations"})

    devices_to_ring: str = field(metadata={"alias": "devicesToRing"})

    include_shared_call_appearance: bool = field(
        metadata={"alias": "includeSharedCallAppearance"}
    )

    include_broadworks_anywhere: bool = field(
        metadata={"alias": "includeBroadworksAnywhere"}
    )

    include_executive_assistant: bool = field(
        metadata={"alias": "includeExecutiveAssistant"}
    )

    mobile_number_alerted: Optional[List[str]] = field(
        default=None, metadata={"alias": "mobileNumberAlerted"}
    )

    enable_call_anchoring: bool = field(metadata={"alias": "enableCallAnchoring"})

    time_schedule: Optional[ScheduleGlobalKey] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[ScheduleGlobalKey] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    access_device_endpoint: Optional[
        ConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpointAdd22
    ] = field(default=None, metadata={"alias": "accessDeviceEndpoint"})

    outbound_alternate_number: Optional[str] = field(
        default=None, metadata={"alias": "outboundAlternateNumber"}
    )

    enable_direct_routing: bool = field(metadata={"alias": "enableDirectRouting"})

    mark_cdr_as_enterprise_group_calls: bool = field(
        metadata={"alias": "markCDRAsEnterpriseGroupCalls"}
    )


@dataclass(kw_only=True)
class UserBroadWorksMobilityMobileIdentityConsolidatedDeleteRequest(OCIRequest):
    """Delete a mobile identity from the user's list of mobile identities.
          The response is either a SuccessResponse or an ErrorResponse.

          An ErrorResponse will be returned if any device cannot be deleted because of insufficient privilege.
          When a delete request is attempted on the primary mobile identity, the delete will fail unless it is the last mobile identity in the user's list.

          If deleteExistingDevices is set to true, after the mobile identity is deleted, any device that is only used by the deleted mobile identity prior to the deletion will be deleted if the command is executed with the correct priviledge.
    Group administrator or above running this command can delete any group level devices. Service provider administrator or above can delete any service provider and group devices. Provisioning administrator or above can delete any devices.
    An ErrorResponse with the type warning will be returned if any device cannot be deleted because of insufficient privilege.

      Attributes:

          user_id (str):

          mobile_number (str):

          delete_existing_devices (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    mobile_number: str = field(metadata={"alias": "mobileNumber"})

    delete_existing_devices: Optional[bool] = field(
        default=None, metadata={"alias": "deleteExistingDevices"}
    )


@dataclass(kw_only=True)
class UserBroadWorksMobilityMobileIdentityConsolidatedModifyRequest(OCIRequest):
    """Modify the settings for one of the user's BroadWorks Mobility mobile Identities.
        The response is either a SuccessResponse or an ErrorResponse.
        If deleteExistingDevices is set to true, when the devices for the endpoint are changed, devices with no more endpoint will be deleted if the command is executed with the correct privilege.

        The request fails when enableAlerting or timeSchedule or holidaySchedule are included in the request when the use mobile identity call anchoring controls for the user  is disabled.

        The description, enableAlerting, alertAgentCalls, alertClickToDialCalls, alertGroupPagingCalls, useMobilityCallingLineID, enableDiversionInhibitor, requireAnswerConfirmation, broadworksCallControl, devicesToRing, includeSharedCallAppearance, includeBroadworksAnywhere, includeExecutiveAssistance, mobileNumberAlerted, enableCallAnchoring, timeSchedule and holidaySchedule  parameters require an authorization level of User for modification when the BroadWorks Mobility service is on.
        The isPrimary, useSettingLevel, denyCallOrigination, denyCallTerminations, accessDeviceEndpoint, outboundAlternateNumber, enableDirectRouting, markCDRAsEnterpriseGroupCalls and networkTranslationIndex parameters require an authorization level of Group for modification.

    Attributes:

        user_id (str):

        mobile_number (str):

        delete_existing_devices (Optional[bool]):

        description (Optional[Nillable[str]]):

        is_primary (Optional[bool]):

        enable_alerting (Optional[bool]):

        alert_agent_calls (Optional[bool]):

        alert_click_to_dial_calls (Optional[bool]):

        alert_group_paging_calls (Optional[bool]):

        use_mobility_calling_line_id (Optional[bool]):

        enable_diversion_inhibitor (Optional[bool]):

        require_answer_confirmation (Optional[bool]):

        broadworks_call_control (Optional[bool]):

        use_setting_level (Optional[str]):

        deny_call_originations (Optional[bool]):

        deny_call_terminations (Optional[bool]):

        devices_to_ring (Optional[str]):

        include_shared_call_appearance (Optional[bool]):

        include_broadworks_anywhere (Optional[bool]):

        include_executive_assistant (Optional[bool]):

        mobile_numbers_alerted (Optional[Nillable[BroadWorksMobilityAlertingMobileNumberReplacementList]]):

        enable_call_anchoring (Optional[bool]):

        time_schedule (Optional[Nillable[ScheduleGlobalKey]]):

        holiday_schedule (Optional[Nillable[ScheduleGlobalKey]]):

        access_device_endpoint (Optional[Nillable[ConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpoint]]):

        outbound_alternate_number (Optional[Nillable[str]]):

        enable_direct_routing (Optional[bool]):

        mark_cdr_as_enterprise_group_calls (Optional[bool]):

        use_mobility_connected_identity (Optional[bool]):

        network_translation_index (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    mobile_number: str = field(metadata={"alias": "mobileNumber"})

    delete_existing_devices: Optional[bool] = field(
        default=None, metadata={"alias": "deleteExistingDevices"}
    )

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    is_primary: Optional[bool] = field(default=None, metadata={"alias": "isPrimary"})

    enable_alerting: Optional[bool] = field(
        default=None, metadata={"alias": "enableAlerting"}
    )

    alert_agent_calls: Optional[bool] = field(
        default=None, metadata={"alias": "alertAgentCalls"}
    )

    alert_click_to_dial_calls: Optional[bool] = field(
        default=None, metadata={"alias": "alertClickToDialCalls"}
    )

    alert_group_paging_calls: Optional[bool] = field(
        default=None, metadata={"alias": "alertGroupPagingCalls"}
    )

    use_mobility_calling_line_id: Optional[bool] = field(
        default=None, metadata={"alias": "useMobilityCallingLineID"}
    )

    enable_diversion_inhibitor: Optional[bool] = field(
        default=None, metadata={"alias": "enableDiversionInhibitor"}
    )

    require_answer_confirmation: Optional[bool] = field(
        default=None, metadata={"alias": "requireAnswerConfirmation"}
    )

    broadworks_call_control: Optional[bool] = field(
        default=None, metadata={"alias": "broadworksCallControl"}
    )

    use_setting_level: Optional[str] = field(
        default=None, metadata={"alias": "useSettingLevel"}
    )

    deny_call_originations: Optional[bool] = field(
        default=None, metadata={"alias": "denyCallOriginations"}
    )

    deny_call_terminations: Optional[bool] = field(
        default=None, metadata={"alias": "denyCallTerminations"}
    )

    devices_to_ring: Optional[str] = field(
        default=None, metadata={"alias": "devicesToRing"}
    )

    include_shared_call_appearance: Optional[bool] = field(
        default=None, metadata={"alias": "includeSharedCallAppearance"}
    )

    include_broadworks_anywhere: Optional[bool] = field(
        default=None, metadata={"alias": "includeBroadworksAnywhere"}
    )

    include_executive_assistant: Optional[bool] = field(
        default=None, metadata={"alias": "includeExecutiveAssistant"}
    )

    mobile_numbers_alerted: Optional[
        Nillable[BroadWorksMobilityAlertingMobileNumberReplacementList]
    ] = field(default=None, metadata={"alias": "mobileNumbersAlerted"})

    enable_call_anchoring: Optional[bool] = field(
        default=None, metadata={"alias": "enableCallAnchoring"}
    )

    time_schedule: Optional[Nillable[ScheduleGlobalKey]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[Nillable[ScheduleGlobalKey]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    access_device_endpoint: Optional[
        Nillable[ConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpoint]
    ] = field(default=None, metadata={"alias": "accessDeviceEndpoint"})

    outbound_alternate_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "outboundAlternateNumber"}
    )

    enable_direct_routing: Optional[bool] = field(
        default=None, metadata={"alias": "enableDirectRouting"}
    )

    mark_cdr_as_enterprise_group_calls: Optional[bool] = field(
        default=None, metadata={"alias": "markCDRAsEnterpriseGroupCalls"}
    )

    use_mobility_connected_identity: Optional[bool] = field(
        default=None, metadata={"alias": "useMobilityConnectedIdentity"}
    )

    network_translation_index: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "networkTranslationIndex"}
    )

    def __post_init__(self):
        nillable_fields = [
            "description",
            "mobile_numbers_alerted",
            "time_schedule",
            "holiday_schedule",
            "access_device_endpoint",
            "outbound_alternate_number",
            "network_translation_index",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserBroadWorksMobilityMobileIdentityDeleteRequest(OCIRequest):
    """Delete a mobile identity from the user's list of mobile identities.
        The response is either a SuccessResponse or an ErrorResponse. If another Mobile Identity is set to ring mobile only and only has this mobile identity
        in the alerting list, the identity is deleted and ErrorResponse is returned. The ErrorResponse is info type and  contains the affected mobile numbers
        in the summary.
        When a delete request is attempted on the primary mobile identity, the delete will fail unless it is the last mobile identity in the user's list.

    Attributes:

        user_id (str):

        mobile_number (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    mobile_number: str = field(metadata={"alias": "mobileNumber"})


@dataclass(kw_only=True)
class UserBroadWorksMobilityMobileIdentityGetRequest22V3(OCIRequest):
    """Get the settings for a user's specified mobile identity.
        The response is either a UserBroadWorksMobilityMobileIdentityGetResponse22V3 or an ErrorResponse.

    Attributes:

        user_id (str):

        mobile_number (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    mobile_number: str = field(metadata={"alias": "mobileNumber"})


@dataclass(kw_only=True)
class UserBroadWorksMobilityMobileIdentityModifyRequest(OCIRequest):
    """Modify the settings for one of the user's BroadWorks Mobility mobile Identities.
        The response is either a SuccessResponse or an ErrorResponse.
        The request fails when enableAlerting or timeSchedule or holidaySchedule are included in the request when the user's use mobile identity call anchoring controls is disabled.

        The description, enableAlerting, alertAgentCalls, alertClickToDialCalls, alertGroupPagingCalls, useMobilityCallingLineID, enableDiversionInhibitor, requireAnswerConfirmation, broadworksCallControl, devicesToRing, includeSharedCallAppearance, includeBroadworksAnywhere, includeExecutiveAssistance, mobileNumberAlerted, enableCallAnchoring, timeSchedule, holidaySchedule and useMobilityConnectedIdentity parameters require an authorization level of User for modification when the BroadWorks Mobility service is on.
        The isPrimary, useSettingLevel, denyCallOrigination, denyCallTerminations, accessDeviceEndpoint, outboundAlternateNumber, enableDirectRouting, markCDRAsEnterpriseGroupCalls and networkTranslationIndex  parameters require an authorization level of Group for modification.

    Attributes:

        user_id (str):

        mobile_number (str):

        description (Optional[Nillable[str]]):

        is_primary (Optional[bool]):

        enable_alerting (Optional[bool]):

        alert_agent_calls (Optional[bool]):

        alert_click_to_dial_calls (Optional[bool]):

        alert_group_paging_calls (Optional[bool]):

        use_mobility_calling_line_id (Optional[bool]):

        enable_diversion_inhibitor (Optional[bool]):

        require_answer_confirmation (Optional[bool]):

        broadworks_call_control (Optional[bool]):

        use_setting_level (Optional[str]):

        deny_call_originations (Optional[bool]):

        deny_call_terminations (Optional[bool]):

        devices_to_ring (Optional[str]):

        include_shared_call_appearance (Optional[bool]):

        include_broadworks_anywhere (Optional[bool]):

        include_executive_assistant (Optional[bool]):

        mobile_numbers_alerted (Optional[Nillable[BroadWorksMobilityAlertingMobileNumberReplacementList]]):

        enable_call_anchoring (Optional[bool]):

        time_schedule (Optional[Nillable[ScheduleGlobalKey]]):

        holiday_schedule (Optional[Nillable[ScheduleGlobalKey]]):

        access_device_endpoint (Optional[Nillable[AccessDeviceEndpointAndHotlineModify]]):

        outbound_alternate_number (Optional[Nillable[str]]):

        enable_direct_routing (Optional[bool]):

        mark_cdr_as_enterprise_group_calls (Optional[bool]):

        use_mobility_connected_identity (Optional[bool]):

        network_translation_index (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    mobile_number: str = field(metadata={"alias": "mobileNumber"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    is_primary: Optional[bool] = field(default=None, metadata={"alias": "isPrimary"})

    enable_alerting: Optional[bool] = field(
        default=None, metadata={"alias": "enableAlerting"}
    )

    alert_agent_calls: Optional[bool] = field(
        default=None, metadata={"alias": "alertAgentCalls"}
    )

    alert_click_to_dial_calls: Optional[bool] = field(
        default=None, metadata={"alias": "alertClickToDialCalls"}
    )

    alert_group_paging_calls: Optional[bool] = field(
        default=None, metadata={"alias": "alertGroupPagingCalls"}
    )

    use_mobility_calling_line_id: Optional[bool] = field(
        default=None, metadata={"alias": "useMobilityCallingLineID"}
    )

    enable_diversion_inhibitor: Optional[bool] = field(
        default=None, metadata={"alias": "enableDiversionInhibitor"}
    )

    require_answer_confirmation: Optional[bool] = field(
        default=None, metadata={"alias": "requireAnswerConfirmation"}
    )

    broadworks_call_control: Optional[bool] = field(
        default=None, metadata={"alias": "broadworksCallControl"}
    )

    use_setting_level: Optional[str] = field(
        default=None, metadata={"alias": "useSettingLevel"}
    )

    deny_call_originations: Optional[bool] = field(
        default=None, metadata={"alias": "denyCallOriginations"}
    )

    deny_call_terminations: Optional[bool] = field(
        default=None, metadata={"alias": "denyCallTerminations"}
    )

    devices_to_ring: Optional[str] = field(
        default=None, metadata={"alias": "devicesToRing"}
    )

    include_shared_call_appearance: Optional[bool] = field(
        default=None, metadata={"alias": "includeSharedCallAppearance"}
    )

    include_broadworks_anywhere: Optional[bool] = field(
        default=None, metadata={"alias": "includeBroadworksAnywhere"}
    )

    include_executive_assistant: Optional[bool] = field(
        default=None, metadata={"alias": "includeExecutiveAssistant"}
    )

    mobile_numbers_alerted: Optional[
        Nillable[BroadWorksMobilityAlertingMobileNumberReplacementList]
    ] = field(default=None, metadata={"alias": "mobileNumbersAlerted"})

    enable_call_anchoring: Optional[bool] = field(
        default=None, metadata={"alias": "enableCallAnchoring"}
    )

    time_schedule: Optional[Nillable[ScheduleGlobalKey]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[Nillable[ScheduleGlobalKey]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    access_device_endpoint: Optional[Nillable[AccessDeviceEndpointAndHotlineModify]] = (
        field(default=None, metadata={"alias": "accessDeviceEndpoint"})
    )

    outbound_alternate_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "outboundAlternateNumber"}
    )

    enable_direct_routing: Optional[bool] = field(
        default=None, metadata={"alias": "enableDirectRouting"}
    )

    mark_cdr_as_enterprise_group_calls: Optional[bool] = field(
        default=None, metadata={"alias": "markCDRAsEnterpriseGroupCalls"}
    )

    use_mobility_connected_identity: Optional[bool] = field(
        default=None, metadata={"alias": "useMobilityConnectedIdentity"}
    )

    network_translation_index: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "networkTranslationIndex"}
    )

    def __post_init__(self):
        nillable_fields = [
            "description",
            "mobile_numbers_alerted",
            "time_schedule",
            "holiday_schedule",
            "access_device_endpoint",
            "outbound_alternate_number",
            "network_translation_index",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserBroadWorksMobilityModifyRequest21(OCIRequest):
    """Modify the user's BroadWorks Mobility service settings.
        The response is either a SuccessResponse or an ErrorResponse.

        The isActive, useMobileIdentityCallAnchoring, and preventCallsToOwnMobiles parameters can be modified by users with Group Authorization Level and above.
        The mobileIdentity, profileIdentityDevicesToRing, rofileIdentityIncludeSharedCallAppearance, profileIdentityIncludeBroadworksAnywhere mobileIdentity and profileIdentityMobilityNumbersAlerted parameters can be modified by users with User Authorization Level and above when the BroadWorks Mobility service is turned on.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        use_mobile_identity_call_anchoring (Optional[bool]):

        prevent_calls_to_own_mobiles (Optional[bool]):

        mobile_identity (Optional[List[BroadWorksMobilityUserMobileIdentityModifyEntry]]):

        profile_identity_devices_to_ring (Optional[str]):

        profile_identity_include_shared_call_appearance (Optional[bool]):

        profile_identity_include_broadworks_anywhere (Optional[bool]):

        profile_identity_include_executive_assistant (Optional[bool]):

        profile_identity_mobility_numbers_alerted (Optional[Nillable[BroadWorksMobilityAlertingMobileNumberReplacementList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    use_mobile_identity_call_anchoring: Optional[bool] = field(
        default=None, metadata={"alias": "useMobileIdentityCallAnchoring"}
    )

    prevent_calls_to_own_mobiles: Optional[bool] = field(
        default=None, metadata={"alias": "preventCallsToOwnMobiles"}
    )

    mobile_identity: Optional[List[BroadWorksMobilityUserMobileIdentityModifyEntry]] = (
        field(default=None, metadata={"alias": "mobileIdentity"})
    )

    profile_identity_devices_to_ring: Optional[str] = field(
        default=None, metadata={"alias": "profileIdentityDevicesToRing"}
    )

    profile_identity_include_shared_call_appearance: Optional[bool] = field(
        default=None, metadata={"alias": "profileIdentityIncludeSharedCallAppearance"}
    )

    profile_identity_include_broadworks_anywhere: Optional[bool] = field(
        default=None, metadata={"alias": "profileIdentityIncludeBroadworksAnywhere"}
    )

    profile_identity_include_executive_assistant: Optional[bool] = field(
        default=None, metadata={"alias": "profileIdentityIncludeExecutiveAssistant"}
    )

    profile_identity_mobility_numbers_alerted: Optional[
        Nillable[BroadWorksMobilityAlertingMobileNumberReplacementList]
    ] = field(default=None, metadata={"alias": "profileIdentityMobilityNumbersAlerted"})

    def __post_init__(self):
        nillable_fields = ["profile_identity_mobility_numbers_alerted"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserBroadWorksReceptionistEnterpriseAddUserListRequest(OCIRequest):
    """Add users to the BroadWorks Receptionist - Enterprise monitored user list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        monitored_user_id (List[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    monitored_user_id: List[str] = field(metadata={"alias": "monitoredUserId"})


@dataclass(kw_only=True)
class UserBroadWorksReceptionistEnterpriseDeleteUserListRequest(OCIRequest):
    """Remove selected users from the BroadWorks Receptionist - Enterprise monitored user list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        monitored_user_id (List[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    monitored_user_id: List[str] = field(metadata={"alias": "monitoredUserId"})


@dataclass(kw_only=True)
class UserBroadWorksReceptionistEnterpriseGetAvailableUserListRequest(OCIRequest):
    """Get a list of available users for BroadWorks Receptionist - Enterprise monitoring.
        The response is either UserBroadWorksReceptionistEnterpriseGetAvailableUserListResponse or ErrorResponse.
        The Receptionist Note column is only populated, if the user sending the request is the owner of the
        Receptionist Note and a Note exists.

    Attributes:

        user_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_imp_id (Optional[List[SearchCriteriaImpId]]):

        search_criteria_receptionist_note (Optional[List[SearchCriteriaReceptionistNote]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_imp_id: Optional[List[SearchCriteriaImpId]] = field(
        default=None, metadata={"alias": "searchCriteriaImpId"}
    )

    search_criteria_receptionist_note: Optional[
        List[SearchCriteriaReceptionistNote]
    ] = field(default=None, metadata={"alias": "searchCriteriaReceptionistNote"})


@dataclass(kw_only=True)
class UserBroadWorksReceptionistEnterpriseGetRequest(OCIRequest):
    """Request the monitored users list for the BroadWorks Receptionist - Enterprise service.
        The response is either a UserBroadWorksReceptionistEnterpriseGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserBroadWorksReceptionistEnterpriseModifyRequest(OCIRequest):
    """Replace the BroadWorks Receptionist - Enterprise monitored user list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        monitored_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    monitored_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "monitoredUserIdList"}
    )

    def __post_init__(self):
        nillable_fields = ["monitored_user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserBroadWorksReceptionistEnterpriseNoteGetRequest(OCIRequest):
    """Request the Receptionist notes for the specified Receptionist and Contact User IDs.
        The response is either a UserBroadWorksReceptionistEnterpriseNoteGetResponse or an
        ErrorResponse.  If the user sending the request is the not the owner of the
        Receptionist Note, then an ErrorResponse will be returned.

    Attributes:

        receptionist_user_id (str):

        contact_user_id (Optional[str]):

        von_user (Optional[VirtualOnNetUserKey]):

    """

    receptionist_user_id: str = field(metadata={"alias": "receptionistUserId"})

    contact_user_id: Optional[str] = field(
        default=None, metadata={"alias": "contactUserId"}
    )

    von_user: Optional[VirtualOnNetUserKey] = field(
        default=None, metadata={"alias": "vonUser"}
    )


@dataclass(kw_only=True)
class UserBroadWorksReceptionistEnterpriseNoteModifyListRequest(OCIRequest):
    """Add a list of notes for an existing Receptionist user.
        The response is either a SuccessResponse or an ErrorResponse.
        If some of the users add and some users fail to add, then the
        response will contain a WarningResponse containing only the
        a comma delimited list of users that failed to add. If the user
        sending the request is the not the owner of the Receptionist Note,
        then an ErrorResponse will be returned.

    Attributes:

        receptionist_user_id (str):

        receptionist_user_and_note (List[ReceptionistContactUserAndNote]):

    """

    receptionist_user_id: str = field(metadata={"alias": "receptionistUserId"})

    receptionist_user_and_note: List[ReceptionistContactUserAndNote] = field(
        metadata={"alias": "receptionistUserAndNote"}
    )


@dataclass(kw_only=True)
class UserBroadWorksReceptionistOfficeGetAvailableUserListRequest(OCIRequest):
    """Get the Receptionist Office available user list.
        The response is either UserBroadWorksReceptionistOfficeGetAvailableUserListResponse or ErrorResponse.

    Attributes:

        user_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_imp_id (Optional[List[SearchCriteriaImpId]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_imp_id: Optional[List[SearchCriteriaImpId]] = field(
        default=None, metadata={"alias": "searchCriteriaImpId"}
    )


@dataclass(kw_only=True)
class UserBroadWorksReceptionistOfficeGetRequest(OCIRequest):
    """Request the Receptionist Office parameters.
        The response is either a UserBroadWorksReceptionistOfficeGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserBroadWorksReceptionistOfficeModifyRequest(OCIRequest):
    """Replace the Receptionist Office monitored user list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        monitored_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    monitored_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "monitoredUserIdList"}
    )

    def __post_init__(self):
        nillable_fields = ["monitored_user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserBroadWorksReceptionistSmallBusinessGetAvailableUserListRequest(OCIRequest):
    """Get a list of available users for the Receptionist Small Business service.
        The response is either UserBroadWorksReceptionistSmallBusinessGetAvailableUserListResponse or ErrorResponse.

    Attributes:

        user_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_imp_id (Optional[List[SearchCriteriaImpId]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_imp_id: Optional[List[SearchCriteriaImpId]] = field(
        default=None, metadata={"alias": "searchCriteriaImpId"}
    )


@dataclass(kw_only=True)
class UserBroadWorksReceptionistSmallBusinessGetRequest(OCIRequest):
    """Request the Receptionist Small Business parameters.
        The response is either a UserBroadWorksReceptionistSmallBusinessGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserBroadWorksReceptionistSmallBusinessModifyRequest(OCIRequest):
    """Replace the Receptionist Small Business monitored user list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        monitored_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    monitored_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "monitoredUserIdList"}
    )

    def __post_init__(self):
        nillable_fields = ["monitored_user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserBroadworksMobilityAddMobileIdentityUsingSharedCallAppearanceRequest22(
    OCIRequest
):
    """Adding a new mobile identity using the Share Call Appearance.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          useHotline, use value false in XS data mode
          hotlineContact

        The request fails when the devicesToRing is set to Mobile and the mobileNumberAlerted list is empty.

    Attributes:

        user_id (str):

        access_device_endpoint (AccessDeviceEndpointKey):

        mobile_number (str):

        description (Optional[str]):

        is_primary (bool):

        enable_alerting (bool):

        alert_agent_calls (bool):

        alert_click_to_dial_calls (bool):

        alert_group_paging_calls (bool):

        use_mobility_calling_line_id (bool):

        enable_diversion_inhibitor (bool):

        require_answer_confirmation (bool):

        broadworks_call_control (bool):

        use_setting_level (str):

        deny_call_originations (bool):

        deny_call_terminations (bool):

        devices_to_ring (str):

        include_shared_call_appearance (bool):

        include_broadworks_anywhere (bool):

        include_executive_assistant (bool):

        mobile_number_alerted (Optional[List[str]]):

        enable_call_anchoring (bool):

        time_schedule (Optional[ScheduleGlobalKey]):

        holiday_schedule (Optional[ScheduleGlobalKey]):

        enable_direct_routing (bool):

        mark_cdr_as_enterprise_group_calls (bool):

        use_hotline (bool):

        hotline_contact (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    access_device_endpoint: AccessDeviceEndpointKey = field(
        metadata={"alias": "accessDeviceEndpoint"}
    )

    mobile_number: str = field(metadata={"alias": "mobileNumber"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    is_primary: bool = field(metadata={"alias": "isPrimary"})

    enable_alerting: bool = field(metadata={"alias": "enableAlerting"})

    alert_agent_calls: bool = field(metadata={"alias": "alertAgentCalls"})

    alert_click_to_dial_calls: bool = field(metadata={"alias": "alertClickToDialCalls"})

    alert_group_paging_calls: bool = field(metadata={"alias": "alertGroupPagingCalls"})

    use_mobility_calling_line_id: bool = field(
        metadata={"alias": "useMobilityCallingLineID"}
    )

    enable_diversion_inhibitor: bool = field(
        metadata={"alias": "enableDiversionInhibitor"}
    )

    require_answer_confirmation: bool = field(
        metadata={"alias": "requireAnswerConfirmation"}
    )

    broadworks_call_control: bool = field(metadata={"alias": "broadworksCallControl"})

    use_setting_level: str = field(metadata={"alias": "useSettingLevel"})

    deny_call_originations: bool = field(metadata={"alias": "denyCallOriginations"})

    deny_call_terminations: bool = field(metadata={"alias": "denyCallTerminations"})

    devices_to_ring: str = field(metadata={"alias": "devicesToRing"})

    include_shared_call_appearance: bool = field(
        metadata={"alias": "includeSharedCallAppearance"}
    )

    include_broadworks_anywhere: bool = field(
        metadata={"alias": "includeBroadworksAnywhere"}
    )

    include_executive_assistant: bool = field(
        metadata={"alias": "includeExecutiveAssistant"}
    )

    mobile_number_alerted: Optional[List[str]] = field(
        default=None, metadata={"alias": "mobileNumberAlerted"}
    )

    enable_call_anchoring: bool = field(metadata={"alias": "enableCallAnchoring"})

    time_schedule: Optional[ScheduleGlobalKey] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[ScheduleGlobalKey] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    enable_direct_routing: bool = field(metadata={"alias": "enableDirectRouting"})

    mark_cdr_as_enterprise_group_calls: bool = field(
        metadata={"alias": "markCDRAsEnterpriseGroupCalls"}
    )

    use_hotline: bool = field(metadata={"alias": "useHotline"})

    hotline_contact: Optional[str] = field(
        default=None, metadata={"alias": "hotlineContact"}
    )


@dataclass(kw_only=True)
class UserBusyLampFieldGetAvailableUserListRequest(OCIRequest):
    """Get a list of available users for the busy lamp field service.
        The response is either UserBusyLampFieldGetAvailableUserListResponse or ErrorResponse.

    Attributes:

        user_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_imp_id (Optional[List[SearchCriteriaImpId]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_imp_id: Optional[List[SearchCriteriaImpId]] = field(
        default=None, metadata={"alias": "searchCriteriaImpId"}
    )


@dataclass(kw_only=True)
class UserBusyLampFieldGetRequest16sp2(OCIRequest):
    """Request the settings for the busy lamp field service.
        The response is either a UserBusyLampFieldGetResponse16sp2 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserBusyLampFieldModifyRequest(OCIRequest):
    """Modify the settings for the busy lamp field service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        list_uri (Optional[Nillable[str]]):

        monitored_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

        enable_call_park_notification (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    list_uri: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "listURI"}
    )

    monitored_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "monitoredUserIdList"}
    )

    enable_call_park_notification: Optional[bool] = field(
        default=None, metadata={"alias": "enableCallParkNotification"}
    )

    def __post_init__(self):
        nillable_fields = ["list_uri", "monitored_user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCallCenterAddSupervisedAgentListRequest(OCIRequest):
    """Assign agent(s) to a call center supervisor.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        supervisor_user_id (str):

        service_user_id (str):

        agent_user_id (List[str]):

    """

    supervisor_user_id: str = field(metadata={"alias": "supervisorUserId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    agent_user_id: List[str] = field(metadata={"alias": "agentUserId"})


@dataclass(kw_only=True)
class UserCallCenterAgentDetailsGetRequest(OCIRequest):
    """Request to get the detail information of a Call Center Agent. Administrator, supervisor and agent
        itself can send this command.
        The response is either UserCallCenterAgentDetailsGetResponse or ErrorResponse.

    Attributes:

        agent_user_id (str):

    """

    agent_user_id: str = field(metadata={"alias": "agentUserId"})


@dataclass(kw_only=True)
class UserCallCenterAgentSignOutRequest(OCIRequest):
    """This request signs-out a call center agent. Administrator, supervisor and agent itself can sign-out an agent.
        An empty OCI table in OCI-P response indicates success and the agent has been signed out. This sign-out
        command will fail if the agent is the last signed-in agent of any standard or premium call center to
        which she is currently joined. If the sign-out fails, the OCI-P response will contain a list of
        Call Centers for which the agent is the last signed-in agent.
        If this special logic is not needed, UserCallCenterModifyRequest19 can still be used to change
        the agents ACD state without checking if the agent is the last signed-in agent.
        The response is either a UserCallCenterAgentSignOutResponse or ErrorResponse.

    Attributes:

        agent_user_id (str):

    """

    agent_user_id: str = field(metadata={"alias": "agentUserId"})


@dataclass(kw_only=True)
class UserCallCenterCallDispositionCodeGetAvailableListRequest(OCIRequest):
    """Get the list of available Call Center Call Disposition Codes to be used by a client.
        The response is either UserCallCenterCallDispositionCodeGetAvailableListResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class UserCallCenterDeleteSupervisedAgentListRequest(OCIRequest):
    """Delete agent(s) from a call center supervisor.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        supervisor_user_id (str):

        service_user_id (str):

        agent_user_id (List[str]):

    """

    supervisor_user_id: str = field(metadata={"alias": "supervisorUserId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    agent_user_id: List[str] = field(metadata={"alias": "agentUserId"})


@dataclass(kw_only=True)
class UserCallCenterEnhancedReportingReportTemplateParamInfoGetRequest(OCIRequest):
    """Request to get the input parameter info for a call center report template.
        The response is either a UserCallCenterEnhancedReportingReportTemplateParamInfoGetResponse or an ErrorResponse.

    Attributes:

        report_template (CallCenterReportTemplateKey):

    """

    report_template: CallCenterReportTemplateKey = field(
        metadata={"alias": "reportTemplate"}
    )


@dataclass(kw_only=True)
class UserCallCenterEnhancedReportingScheduledReportDeleteRequest(OCIRequest):
    """Request to delete a call center reporting scheduled report created by a supervisor.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        supervisor_user_id (str):

        name (str):

    """

    supervisor_user_id: str = field(metadata={"alias": "supervisorUserId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class UserCallCenterEnhancedReportingScheduledReportGetRequest(OCIRequest):
    """Request to get a call center reporting scheduled report created by supervisor.
        The response is either a UserCallCenterEnhancedReportingScheduledReportGetResponse or an ErrorResponse.

    Attributes:

        supervisor_user_id (str):

        name (str):

    """

    supervisor_user_id: str = field(metadata={"alias": "supervisorUserId"})

    name: str = field(metadata={"alias": "name"})


@dataclass(kw_only=True)
class UserCallCenterEnhancedReportingScheduledReportModifyRequest(OCIRequest):
    """Request to modify a call center reporting scheduled report created by a supervisor.
        The response is either a SuccessResponse or an ErrorResponse.
        The startDate element is adjusted to the first occurrence of the recurrent schedule that comes at or after startDate.

    Attributes:

        supervisor_user_id (str):

        name (str):

        new_name (Optional[str]):

        description (Optional[Nillable[str]]):

        schedule (Optional[CallCenterReportSchedule]):

        sampling_period (Optional[str]):

        start_day_of_week (Optional[str]):

        report_time_zone (Optional[str]):

        report_date_format (Optional[str]):

        report_time_format (Optional[str]):

        report_interval (Optional[CallCenterReportInterval]):

        report_format (Optional[str]):

        agent (Optional[CallCenterScheduledReportAgentSelection]):

        call_center (Optional[CallCenterScheduledReportCallCenterSelection]):

        dnis (Optional[CallCenterScheduledReportDNISSelection]):

        call_completion_threshold_seconds (Optional[int]):

        short_duration_threshold_seconds (Optional[int]):

        service_level_threshold_seconds (Optional[CallCenterReportServiceLevelThresholdReplacementList]):

        service_level_inclusions (Optional[CallCenterScheduledReportServiceLevelInclusionsModify]):

        service_level_objective_percentage (Optional[Nillable[int]]):

        abandoned_call_threshold_seconds (Optional[CallCenterReportAbandonedCallThresholdReplacementList]):

        email_address (Optional[CallCenterReportReplacementEmailList]):

    """

    supervisor_user_id: str = field(metadata={"alias": "supervisorUserId"})

    name: str = field(metadata={"alias": "name"})

    new_name: Optional[str] = field(default=None, metadata={"alias": "newName"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    schedule: Optional[CallCenterReportSchedule] = field(
        default=None, metadata={"alias": "schedule"}
    )

    sampling_period: Optional[str] = field(
        default=None, metadata={"alias": "samplingPeriod"}
    )

    start_day_of_week: Optional[str] = field(
        default=None, metadata={"alias": "startDayOfWeek"}
    )

    report_time_zone: Optional[str] = field(
        default=None, metadata={"alias": "reportTimeZone"}
    )

    report_date_format: Optional[str] = field(
        default=None, metadata={"alias": "reportDateFormat"}
    )

    report_time_format: Optional[str] = field(
        default=None, metadata={"alias": "reportTimeFormat"}
    )

    report_interval: Optional[CallCenterReportInterval] = field(
        default=None, metadata={"alias": "reportInterval"}
    )

    report_format: Optional[str] = field(
        default=None, metadata={"alias": "reportFormat"}
    )

    agent: Optional[CallCenterScheduledReportAgentSelection] = field(
        default=None, metadata={"alias": "agent"}
    )

    call_center: Optional[CallCenterScheduledReportCallCenterSelection] = field(
        default=None, metadata={"alias": "callCenter"}
    )

    dnis: Optional[CallCenterScheduledReportDNISSelection] = field(
        default=None, metadata={"alias": "dnis"}
    )

    call_completion_threshold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "callCompletionThresholdSeconds"}
    )

    short_duration_threshold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "shortDurationThresholdSeconds"}
    )

    service_level_threshold_seconds: Optional[
        CallCenterReportServiceLevelThresholdReplacementList
    ] = field(default=None, metadata={"alias": "serviceLevelThresholdSeconds"})

    service_level_inclusions: Optional[
        CallCenterScheduledReportServiceLevelInclusionsModify
    ] = field(default=None, metadata={"alias": "serviceLevelInclusions"})

    service_level_objective_percentage: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "serviceLevelObjectivePercentage"}
    )

    abandoned_call_threshold_seconds: Optional[
        CallCenterReportAbandonedCallThresholdReplacementList
    ] = field(default=None, metadata={"alias": "abandonedCallThresholdSeconds"})

    email_address: Optional[CallCenterReportReplacementEmailList] = field(
        default=None, metadata={"alias": "emailAddress"}
    )

    def __post_init__(self):
        nillable_fields = ["description", "service_level_objective_percentage"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCallCenterGetAgentSupervisorListRequest(OCIRequest):
    """Get a list of supervisors for an agent on a given call center.
        The response is either a UserCallCenterGetAgentSupervisorListResponse
        or an ErrorResponse.

    Attributes:

        agent_user_id (str):

        service_user_id (str):

    """

    agent_user_id: str = field(metadata={"alias": "agentUserId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class UserCallCenterGetAvailableCallCenterListRequest(OCIRequest):
    """This request gets a list of all call centers which the user can be assigned to as an agent.
        Some of the call centers may already have the user as an agent.  It is the clients
        responsibility to discard the call centers that the user is already an agent of.
        The response is either a UserCallCenterGetAvailableCallCenterListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallCenterGetAvailableCallCenterPagedSortedListRequest(OCIRequest):
    """This request gets a list of all call centers which the user can be assigned to as an agent.
        Some of the call centers may already have the user as an agent.  It is the clients
        responsibility to discard the call centers that the user is already an agent of.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        It is possible to search by various criteria to restrict the number of rows returned.

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.

        The response is either a UserCallCenterGetAvailableCallCenterPagedSortedListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_by_user_id (Optional[SortByUserId]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_mode_or (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_by_user_id: Optional[SortByUserId] = field(
        default=None, metadata={"alias": "sortByUserId"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class UserCallCenterGetAvailableDNISListRequest(OCIRequest):
    """Request a list of available DNIS for agent to select.
        The response is either UserCallCenterGetAvailableDNISListResponse or ErrorResponse.

    Attributes:

        agent_user_id (str):

    """

    agent_user_id: str = field(metadata={"alias": "agentUserId"})


@dataclass(kw_only=True)
class UserCallCenterGetRequest23(OCIRequest):
    """Get the user's call center settings and the list of call centers the specified user belongs to.
        The response is either a UserCallCenterGetResponse23 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallCenterGetSupervisedAgentListRequest(OCIRequest):
    """Get a list of agents supervised by a supervisor on a given call
        center.
        The response is either a UserCallCenterGetSupervisedAgentListResponse
       or an ErrorResponse.
       The search can be done using multiple criterias.
       If the searchCriteriaModeOr is present, any result matching any one criteria is included in the results. Otherwise, only
       results matching all the search criterias are included in the results.
       If no search criteria is specified, all results are returned.
       In all cases, if a responseSizeLimit is specified and the number of matching results is more than this limit, then an
       ErrorResponse is returned.
       Specifying searchCriteriaModeOr without any search criteria results in an ErrorResponse.

    Attributes:

        supervisor_user_id (str):

        service_user_id (str):

        response_size_limit (Optional[int]):

        search_criteria_mode_or (Optional[bool]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_imp_id (Optional[List[SearchCriteriaImpId]]):

    """

    supervisor_user_id: str = field(metadata={"alias": "supervisorUserId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_imp_id: Optional[List[SearchCriteriaImpId]] = field(
        default=None, metadata={"alias": "searchCriteriaImpId"}
    )


@dataclass(kw_only=True)
class UserCallCenterGetSupervisorCallCenterListRequest(OCIRequest):
    """Get a list of call centers the user is assigned to as a supervisor.
        The response is either a UserCallCenterGetSupervisorCallCenterListResponse or an
        ErrorResponse.

    Attributes:

        supervisor_user_id (str):

    """

    supervisor_user_id: str = field(metadata={"alias": "supervisorUserId"})


@dataclass(kw_only=True)
class UserCallCenterModifyCallCenterListRequest(OCIRequest):
    """Request to modify the call center list for an agent.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        agent_user_id (str):

        service_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    agent_user_id: str = field(metadata={"alias": "agentUserId"})

    service_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "serviceUserIdList"}
    )

    def __post_init__(self):
        nillable_fields = ["service_user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCallCenterModifyRequest19(OCIRequest):
    """Modifies the agents call center settings and the availability for an agent in one or more Call Centers.
        Contains a list specifying the desired availability status of one or more call centers.
        A default unavailable code will be used if the parameter agentUnavailableCode is not active, included or is invalid.
        Changing the agentACDState from unavailable to any other state will automatically clear the unavailable code.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          agentACDState
          agentThresholdProfileName
          agentUnavailableCode
          useSystemDefaultUnavailableSettings
          forceAgentUnavailableOnDNDActivation
          forceAgentUnavailableOnPersonalCalls
          forceAgentUnavailableOnBouncedCallLimit
          numberConsecutiveBouncedCallsToForceAgentUnavailable
          forceAgentUnavailableOnNotReachable
          makeOutgoingCallsAsCallCenter
          outgoingCallDNIS
          useSystemDefaultWrapUpDestination
          wrapUpDestination

    Attributes:

        user_id (str):

        agent_acd_state (Optional[str]):

        agent_threshold_profile_name (Optional[str]):

        agent_unavailable_code (Optional[Nillable[str]]):

        use_default_guard_timer (Optional[bool]):

        enable_guard_timer (Optional[bool]):

        guard_timer_seconds (Optional[int]):

        use_system_default_unavailable_settings (Optional[bool]):

        force_agent_unavailable_on_dnd_activation (Optional[bool]):

        force_agent_unavailable_on_personal_calls (Optional[bool]):

        force_agent_unavailable_on_bounced_call_limit (Optional[bool]):

        number_consecutive_bounced_calls_to_force_agent_unavailable (Optional[int]):

        force_agent_unavailable_on_not_reachable (Optional[bool]):

        make_outgoing_calls_as_call_center (Optional[bool]):

        outgoing_call_dnis (Optional[Nillable[DNISKey]]):

        call_center_agent_settings (Optional[List[CallCenterAgentSettings]]):

        use_system_default_wrap_up_destination (Optional[bool]):

        wrap_up_destination (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    agent_acd_state: Optional[str] = field(
        default=None, metadata={"alias": "agentACDState"}
    )

    agent_threshold_profile_name: Optional[str] = field(
        default=None, metadata={"alias": "agentThresholdProfileName"}
    )

    agent_unavailable_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "agentUnavailableCode"}
    )

    use_default_guard_timer: Optional[bool] = field(
        default=None, metadata={"alias": "useDefaultGuardTimer"}
    )

    enable_guard_timer: Optional[bool] = field(
        default=None, metadata={"alias": "enableGuardTimer"}
    )

    guard_timer_seconds: Optional[int] = field(
        default=None, metadata={"alias": "guardTimerSeconds"}
    )

    use_system_default_unavailable_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemDefaultUnavailableSettings"}
    )

    force_agent_unavailable_on_dnd_activation: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnDNDActivation"}
    )

    force_agent_unavailable_on_personal_calls: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnPersonalCalls"}
    )

    force_agent_unavailable_on_bounced_call_limit: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnBouncedCallLimit"}
    )

    number_consecutive_bounced_calls_to_force_agent_unavailable: Optional[int] = field(
        default=None,
        metadata={"alias": "numberConsecutiveBouncedCallsToForceAgentUnavailable"},
    )

    force_agent_unavailable_on_not_reachable: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnNotReachable"}
    )

    make_outgoing_calls_as_call_center: Optional[bool] = field(
        default=None, metadata={"alias": "makeOutgoingCallsAsCallCenter"}
    )

    outgoing_call_dnis: Optional[Nillable[DNISKey]] = field(
        default=None, metadata={"alias": "outgoingCallDNIS"}
    )

    call_center_agent_settings: Optional[List[CallCenterAgentSettings]] = field(
        default=None, metadata={"alias": "callCenterAgentSettings"}
    )

    use_system_default_wrap_up_destination: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemDefaultWrapUpDestination"}
    )

    wrap_up_destination: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "wrapUpDestination"}
    )

    def __post_init__(self):
        nillable_fields = [
            "agent_unavailable_code",
            "outgoing_call_dnis",
            "wrap_up_destination",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCallCenterModifySupervisedAgentListRequest(OCIRequest):
    """Modifies a list of users to be supervised by a supervisor on a call center.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        supervisor_user_id (str):

        service_user_id (str):

        agent_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    supervisor_user_id: str = field(metadata={"alias": "supervisorUserId"})

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    agent_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "agentUserIdList"}
    )

    def __post_init__(self):
        nillable_fields = ["agent_user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCallCenterMonitoringGetRequest23(OCIRequest):
    """Request the user's Call Center Monitoring settings.
        The response is either a UserCallCenterMonitoringGetResponse23 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallCenterMonitoringModifyRequest(OCIRequest):
    """Modify the user's Call Center Monitoring settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        play_tone_to_agent_for_silent_monitoring (Optional[bool]):

        play_tone_to_agent_for_supervisor_coaching (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    play_tone_to_agent_for_silent_monitoring: Optional[bool] = field(
        default=None, metadata={"alias": "playToneToAgentForSilentMonitoring"}
    )

    play_tone_to_agent_for_supervisor_coaching: Optional[bool] = field(
        default=None, metadata={"alias": "playToneToAgentForSupervisorCoaching"}
    )


@dataclass(kw_only=True)
class UserCallForwardingAlwaysGetRequest(OCIRequest):
    """Request the user level data associated with Call Forwarding Always.
        The response is either a UserCallForwardingAlwaysGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallForwardingAlwaysModifyRequest(OCIRequest):
    """Modify the user level data associated with Call Forwarding Always.
        The response is either a SuccessResponse or an ErrorResponse.
        Engineering Note: This command is used internally by Call Processing.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        forward_to_phone_number (Optional[Nillable[str]]):

        is_ring_splash_active (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    forward_to_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    is_ring_splash_active: Optional[bool] = field(
        default=None, metadata={"alias": "isRingSplashActive"}
    )

    def __post_init__(self):
        nillable_fields = ["forward_to_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCallForwardingAlwaysSecondaryGetRequest(OCIRequest):
    """Request the user level data associated with Call Forwarding Always Secondary service.
        The response is either a UserCallForwardingAlwaysSecondaryGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallForwardingAlwaysSecondaryModifyRequest(OCIRequest):
    """Modify the user level data associated with Call Forwarding Always Secondary service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        forward_to_phone_number (Optional[Nillable[str]]):

        is_ring_splash_active (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    forward_to_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    is_ring_splash_active: Optional[bool] = field(
        default=None, metadata={"alias": "isRingSplashActive"}
    )

    def __post_init__(self):
        nillable_fields = ["forward_to_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCallForwardingBusyGetRequest(OCIRequest):
    """Request the user level data associated with Call Forwarding Busy.
        The response is either a UserCallForwardingBusyGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallForwardingBusyModifyRequest(OCIRequest):
    """Modify the user level data associated with Call Forwarding Busy.
        The response is either a SuccessResponse or an ErrorResponse.
        Engineering Note: This command is used internally by Call Processing.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        forward_to_phone_number (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    forward_to_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    def __post_init__(self):
        nillable_fields = ["forward_to_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCallForwardingNoAnswerGetRequest13mp16(OCIRequest):
    """Request the user level data associated with Call Forwarding No Answer.
        The response is either a UserCallForwardingNoAnswerGetResponse13mp16 or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallForwardingNoAnswerModifyRequest(OCIRequest):
    """Modify the user level data associated with Call Forwarding No Answer.
        The response is either a SuccessResponse or an ErrorResponse.
        Engineering Note: This command is used internally by Call Processing.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        forward_to_phone_number (Optional[Nillable[str]]):

        number_of_rings (Optional[int]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    forward_to_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    number_of_rings: Optional[int] = field(
        default=None, metadata={"alias": "numberOfRings"}
    )

    def __post_init__(self):
        nillable_fields = ["forward_to_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCallForwardingNotReachableGetRequest(OCIRequest):
    """Request the user level data associated with Call Forwarding Not Reachable.
        The response is either a UserCallForwardingNotReachableGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallForwardingNotReachableModifyRequest(OCIRequest):
    """Modify the user level data associated with Call Forwarding Not Reachable.
        The response is either a SuccessResponse or an ErrorResponse.
        Engineering Note: This command is used internally by Call Processing.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        forward_to_phone_number (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    forward_to_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    def __post_init__(self):
        nillable_fields = ["forward_to_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCallForwardingSelectiveAddCriteriaRequest16(OCIRequest):
    """Add a criteria to the user's call forwarding selective service.
        The following elements are only used in AS data mode:
          callToNumber

        For the callToNumber, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        forward_to_number_selection (Optional[str]):

        forward_to_phone_number (Optional[str]):

        from_dn_criteria (CriteriaFromDn):

        call_to_number (Optional[List[CallToNumber]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    forward_to_number_selection: Optional[str] = field(
        default=None, metadata={"alias": "forwardToNumberSelection"}
    )

    forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    from_dn_criteria: CriteriaFromDn = field(metadata={"alias": "fromDnCriteria"})

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class UserCallForwardingSelectiveDeleteCriteriaRequest(OCIRequest):
    """Delete a criteria from the user's call forwarding selective service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserCallForwardingSelectiveGetCriteriaRequest21(OCIRequest):
    """Get a criteria for the user's call forwarding selective service.
        The response is either a UserCallForwardingSelectiveGetCriteriaResponse21 or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserCallForwardingSelectiveGetRequest16(OCIRequest):
    """Get the user's call forwarding selective service setting.
        The response is either a UserCallForwardingSelectiveGetResponse16 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallForwardingSelectiveModifyCriteriaRequest(OCIRequest):
    """Modify a criteria for the user's call forwarding selective service.
        The following elements are only used in AS data mode:
          callToNumber

        For the callToNumbers in the callToNumberList, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        new_criteria_name (Optional[str]):

        time_schedule (Optional[Nillable[TimeSchedule]]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        forward_to_number_selection (Optional[str]):

        forward_to_phone_number (Optional[Nillable[str]]):

        from_dn_criteria (Optional[CriteriaFromDnModify]):

        call_to_number_list (Optional[Nillable[ReplacementCallToNumberList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    new_criteria_name: Optional[str] = field(
        default=None, metadata={"alias": "newCriteriaName"}
    )

    time_schedule: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    forward_to_number_selection: Optional[str] = field(
        default=None, metadata={"alias": "forwardToNumberSelection"}
    )

    forward_to_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    from_dn_criteria: Optional[CriteriaFromDnModify] = field(
        default=None, metadata={"alias": "fromDnCriteria"}
    )

    call_to_number_list: Optional[Nillable[ReplacementCallToNumberList]] = field(
        default=None, metadata={"alias": "callToNumberList"}
    )

    def __post_init__(self):
        nillable_fields = [
            "time_schedule",
            "holiday_schedule",
            "forward_to_phone_number",
            "call_to_number_list",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCallForwardingSelectiveModifyRequest(OCIRequest):
    """Modify the user's call forwarding selective service setting.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        default_forward_to_phone_number (Optional[Nillable[str]]):

        play_ring_reminder (Optional[bool]):

        criteria_activation (Optional[List[CriteriaActivation]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    default_forward_to_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "defaultForwardToPhoneNumber"}
    )

    play_ring_reminder: Optional[bool] = field(
        default=None, metadata={"alias": "playRingReminder"}
    )

    criteria_activation: Optional[List[CriteriaActivation]] = field(
        default=None, metadata={"alias": "criteriaActivation"}
    )

    def __post_init__(self):
        nillable_fields = ["default_forward_to_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCallLogsClearRequest14sp4(OCIRequest):
    """Clear a user's call logs associated with Basic Call Logs and Enhanced
        Call Logs features. The calls logs are deleted from both Basic Call Logs
        and Enhanced Call Logs if both features are assigned.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        delete_all_call_logs (Optional[bool]):

        delete_specified_call_logs (Optional[object]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    delete_all_call_logs: Optional[bool] = field(
        default=None, metadata={"alias": "deleteAllCallLogs"}
    )

    delete_specified_call_logs: Optional[object] = field(
        default=None, metadata={"alias": "deleteSpecifiedCallLogs"}
    )


@dataclass(kw_only=True)
class UserCallMeNowAddCriteriaRequest(OCIRequest):
    """Add a criterion to the user's call me now service.  The criterion added is automatically active.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        reject_call (bool):

        to_dn_criteria (CallMeNowToDnCriteria):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    reject_call: bool = field(metadata={"alias": "rejectCall"})

    to_dn_criteria: CallMeNowToDnCriteria = field(metadata={"alias": "toDnCriteria"})


@dataclass(kw_only=True)
class UserCallMeNowDeleteCriteriaRequest(OCIRequest):
    """Delete a criteria from the user's call me now service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserCallMeNowGetCriteriaRequest(OCIRequest):
    """Get a criteria for the user's call me now service.
        The response is either a UserCallMeNowGetCriteriaResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserCallMeNowGetRequest(OCIRequest):
    """Get the user's call me now service setting.
        The response is either a UserCallMeNowGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallMeNowModifyCriteriaRequest(OCIRequest):
    """Modify a criteria for the user's call me now service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        new_criteria_name (Optional[str]):

        time_schedule (Optional[Nillable[TimeSchedule]]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        reject_call (Optional[bool]):

        to_dn_criteria (Optional[CallMeNowToDnCriteriaModify]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    new_criteria_name: Optional[str] = field(
        default=None, metadata={"alias": "newCriteriaName"}
    )

    time_schedule: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    reject_call: Optional[bool] = field(default=None, metadata={"alias": "rejectCall"})

    to_dn_criteria: Optional[CallMeNowToDnCriteriaModify] = field(
        default=None, metadata={"alias": "toDnCriteria"}
    )

    def __post_init__(self):
        nillable_fields = ["time_schedule", "holiday_schedule"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCallMeNowModifyRequest(OCIRequest):
    """Modify the user's call me now service setting.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        answer_confirmation (Optional[str]):

        criteria_activation (Optional[List[CriteriaActivation]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    answer_confirmation: Optional[str] = field(
        default=None, metadata={"alias": "answerConfirmation"}
    )

    criteria_activation: Optional[List[CriteriaActivation]] = field(
        default=None, metadata={"alias": "criteriaActivation"}
    )


@dataclass(kw_only=True)
class UserCallNotifyAddCriteriaRequest16(OCIRequest):
    """Add a criteria to the user's call notify service.
        The following elements are only used in AS data mode:
          callToNumber

        For the callToNumber, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria (CriteriaFromDn):

        call_to_number (Optional[List[CallToNumber]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria: CriteriaFromDn = field(metadata={"alias": "fromDnCriteria"})

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class UserCallNotifyDeleteCriteriaRequest(OCIRequest):
    """Delete a criteria from the user's call notify service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserCallNotifyGetCriteriaRequest21(OCIRequest):
    """Get a criteria for the user's call notify service.
        The response is either a UserCallNotifyGetCriteriaResponse21 or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserCallNotifyGetRequest(OCIRequest):
    """Get the user's call notify service setting.
        The response is either a UserCallNotifyGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallNotifyModifyCriteriaRequest(OCIRequest):
    """Modify a criteria for the user's call notify service.
        The following elements are only used in AS data mode:
          callToNumber

        For the callToNumbers in the callToNumberList, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        new_criteria_name (Optional[str]):

        time_schedule (Optional[Nillable[TimeSchedule]]):

        from_dn_criteria (Optional[CriteriaFromDnModify]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        blacklisted (Optional[bool]):

        call_to_number_list (Optional[Nillable[ReplacementCallToNumberList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    new_criteria_name: Optional[str] = field(
        default=None, metadata={"alias": "newCriteriaName"}
    )

    time_schedule: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    from_dn_criteria: Optional[CriteriaFromDnModify] = field(
        default=None, metadata={"alias": "fromDnCriteria"}
    )

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: Optional[bool] = field(default=None, metadata={"alias": "blacklisted"})

    call_to_number_list: Optional[Nillable[ReplacementCallToNumberList]] = field(
        default=None, metadata={"alias": "callToNumberList"}
    )

    def __post_init__(self):
        nillable_fields = ["time_schedule", "holiday_schedule", "call_to_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCallNotifyModifyRequest(OCIRequest):
    """Modify the user's call notify service setting.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        call_notify_email_address (Optional[str]):

        criteria_activation (Optional[List[CriteriaActivation]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    call_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "callNotifyEmailAddress"}
    )

    criteria_activation: Optional[List[CriteriaActivation]] = field(
        default=None, metadata={"alias": "criteriaActivation"}
    )


@dataclass(kw_only=True)
class UserCallParkGetRequest(OCIRequest):
    """Identifies which Call Park group the user belongs to if any and the list of users in the group.
        The response is either UserCallParkGetResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallPickupGetRequest(OCIRequest):
    """Gets the details of the Call Pickup group that a user belongs to (if any).
        Any user can only belong to one Call Pickup group.
        The response is either UserCallPickupGetResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallPoliciesGetRequest19sp1(OCIRequest):
    """Request the user level data associated with Call Policies.
        The response is either a UserCallPoliciesGetResponse19sp1
        or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallPoliciesModifyRequest(OCIRequest):
    """Modify the user level data associated with Call Policies.
        The following elements are only used in AS data mode:
          callingLineIdentityForRedirectedCalls

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        redirected_calls_colp_privacy (Optional[str]):

        call_being_forwarded_response_call_type (Optional[str]):

        calling_line_identity_for_redirected_calls (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    redirected_calls_colp_privacy: Optional[str] = field(
        default=None, metadata={"alias": "redirectedCallsCOLPPrivacy"}
    )

    call_being_forwarded_response_call_type: Optional[str] = field(
        default=None, metadata={"alias": "callBeingForwardedResponseCallType"}
    )

    calling_line_identity_for_redirected_calls: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdentityForRedirectedCalls"}
    )


@dataclass(kw_only=True)
class UserCallProcessingGetPolicyRequest23(OCIRequest):
    """Request the user level data associated with Call Processing Policy.
        The response is either a UserCallProcessingGetPolicyResponse23 or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallProcessingModifyPolicyRequest14sp7(OCIRequest):
    """Modify the user level data associated with Call Processing Policy.
          The response is either a SuccessResponse or an ErrorResponse.

          The useUserCLIDSetting attribute controls the CLID settings
          (clidPolicy, emergencyClidPolicy, allowAlternateNumbersForRedirectingIdentity, useGroupName, allowConfigurableCLIDForRedirectingIdentity, allowDepartmentCLIDNameOverride)

          The useUserMediaSetting attribute controls the Media settings
          (medisPolicySelection, supportedMediaSetName)

          The useUserCallLimitsSetting attribute controls the Call Limits setting
          (useMaxSimultaneousCalls, maxSimultaneousCalls, useMaxSimultaneousVideoCalls, maxSimultaneousVideoCalls, useMaxCallTimeForAnsweredCalls,
          maxCallTimeForAnsweredCallsMinutes, useMaxCallTimeForUnansweredCalls, maxCallTimeForUnansweredCallsMinutes, useMaxConcurrentRedirectedCalls,
          useMaxFindMeFollowMeDepth, maxRedirectionDepth, useMaxConcurrentFindMeFollowMeInvocations, maxConcurrentFindMeFollowMeInvocations,
          useMaxConcurrentTerminatingAlertingRequests, maxConcurrentTerminatingAlertingRequests,
          includeRedirectionsInMaximumNumberOfConcurrentCalls)

          The useUserDCLIDSetting controls the Dialable Caller ID settings (enableDialableCallerID)

          The useUserPhoneListLookupSetting controls the Caller ID Lookup settings (enablePhoneListLookup)

          The useUserTranslationRoutingSetting attribute controls the routing and translation settings (routeOverrideDomain, routeOverridePrefix)

          The following elements are only used in AS data mode:
           useUserDCLIDSetting
           enableDialableCallerID
           allowConfigurableCLIDForRedirectingIdentity
           allowDepartmentCLIDNameOverride

          The following elements are only used in AS data mode and ignored in XS data mode:
           useUserPhoneListLookupSetting
           enablePhoneListLookup
           useMaxConcurrentTerminatingAlertingRequests
           maxConcurrentTerminatingAlertingRequests
           includeRedirectionsInMaximumNumberOfConcurrentCalls
           allowMobileDNForRedirectingIdentity
           allowUserSelectionOfExternalCLIDPolicy
           allowUserConfigurableCLIDModification


          The following elements are only used in XS data mode and ignored in AS data mode:
           useUserTranslationRoutingSetting
           routeOverrideDomain
           routeOverridePrefix

    Attributes:

        user_id (str):

        use_user_clid_setting (Optional[bool]):

        use_user_media_setting (Optional[bool]):

        use_user_call_limits_setting (Optional[bool]):

        use_user_dclid_setting (Optional[bool]):

        use_user_translation_routing_setting (Optional[bool]):

        use_max_simultaneous_calls (Optional[bool]):

        max_simultaneous_calls (Optional[int]):

        use_max_simultaneous_video_calls (Optional[bool]):

        max_simultaneous_video_calls (Optional[int]):

        use_max_call_time_for_answered_calls (Optional[bool]):

        max_call_time_for_answered_calls_minutes (Optional[int]):

        use_max_call_time_for_unanswered_calls (Optional[bool]):

        max_call_time_for_unanswered_calls_minutes (Optional[int]):

        media_policy_selection (Optional[str]):

        supported_media_set_name (Optional[Nillable[str]]):

        use_max_concurrent_redirected_calls (Optional[bool]):

        max_concurrent_redirected_calls (Optional[int]):

        use_max_find_me_follow_me_depth (Optional[bool]):

        max_find_me_follow_me_depth (Optional[int]):

        max_redirection_depth (Optional[int]):

        use_max_concurrent_find_me_follow_me_invocations (Optional[bool]):

        max_concurrent_find_me_follow_me_invocations (Optional[int]):

        clid_policy (Optional[str]):

        emergency_clid_policy (Optional[str]):

        allow_alternate_numbers_for_redirecting_identity (Optional[bool]):

        use_group_name (Optional[bool]):

        enable_dialable_caller_id (Optional[bool]):

        block_calling_name_for_external_calls (Optional[bool]):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        allow_department_clid_name_override (Optional[bool]):

        use_user_phone_list_lookup_setting (Optional[bool]):

        enable_phone_list_lookup (Optional[bool]):

        use_max_concurrent_terminating_alerting_requests (Optional[bool]):

        max_concurrent_terminating_alerting_requests (Optional[int]):

        include_redirections_in_maximum_number_of_concurrent_calls (Optional[bool]):

        route_override_domain (Optional[Nillable[str]]):

        route_override_prefix (Optional[Nillable[str]]):

        allow_mobile_dn_for_redirecting_identity (Optional[bool]):

        allow_user_selection_of_external_clid_policy (Optional[bool]):

        allow_user_configurable_clid_modification (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    use_user_clid_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useUserCLIDSetting"}
    )

    use_user_media_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useUserMediaSetting"}
    )

    use_user_call_limits_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useUserCallLimitsSetting"}
    )

    use_user_dclid_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useUserDCLIDSetting"}
    )

    use_user_translation_routing_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useUserTranslationRoutingSetting"}
    )

    use_max_simultaneous_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousCalls"}
    )

    use_max_simultaneous_video_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: Optional[int] = field(
        default=None, metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    media_policy_selection: Optional[str] = field(
        default=None, metadata={"alias": "mediaPolicySelection"}
    )

    supported_media_set_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "supportedMediaSetName"}
    )

    use_max_concurrent_redirected_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_find_me_follow_me_depth: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: Optional[int] = field(
        default=None, metadata={"alias": "maxRedirectionDepth"}
    )

    use_max_concurrent_find_me_follow_me_invocations: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    clid_policy: Optional[str] = field(default=None, metadata={"alias": "clidPolicy"})

    emergency_clid_policy: Optional[str] = field(
        default=None, metadata={"alias": "emergencyClidPolicy"}
    )

    allow_alternate_numbers_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupName"}
    )

    enable_dialable_caller_id: Optional[bool] = field(
        default=None, metadata={"alias": "enableDialableCallerID"}
    )

    block_calling_name_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: Optional[bool] = field(
        default=None, metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    use_user_phone_list_lookup_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useUserPhoneListLookupSetting"}
    )

    enable_phone_list_lookup: Optional[bool] = field(
        default=None, metadata={"alias": "enablePhoneListLookup"}
    )

    use_max_concurrent_terminating_alerting_requests: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxConcurrentTerminatingAlertingRequests"}
    )

    max_concurrent_terminating_alerting_requests: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentTerminatingAlertingRequests"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"},
    )

    route_override_domain: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "routeOverrideDomain"}
    )

    route_override_prefix: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "routeOverridePrefix"}
    )

    allow_mobile_dn_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowMobileDNForRedirectingIdentity"}
    )

    allow_user_selection_of_external_clid_policy: Optional[bool] = field(
        default=None, metadata={"alias": "allowUserSelectionOfExternalCLIDPolicy"}
    )

    allow_user_configurable_clid_modification: Optional[bool] = field(
        default=None, metadata={"alias": "allowUserConfigurableCLIDModification"}
    )

    def __post_init__(self):
        nillable_fields = [
            "supported_media_set_name",
            "route_override_domain",
            "route_override_prefix",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCallRecordingGetRequest23(OCIRequest):
    """Get the Call Recording attributes for a user.
        The response is either a UserCallRecordingGetResponse23 or an ErrorResponse.

        The following parameters are not returned for service instance:
          - pauseResumeNotification
          - enableCallRecordingAnnouncement
          - enableRecordCallRepeatWarningTone
          - recordCallRepeatWarningToneTimerSeconds

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallRecordingModifyRequest(OCIRequest):
    """Modify the Call Recording attributes for a user. The recording options
       \"Always with Pause/Resume\", \"On Demand\", and \"On Demand with User
       Initiated Start\" are not accepted for service instances.

       The response is either a SuccessResponse or an ErrorResponse.

       The following parameters are not accepted for service
       instance:
         - pauseResumeNotification
         - enableCallRecordingAnnouncement
         - enableRecordCallRepeatWarningTone
         - recordCallRepeatWarningToneTimerSeconds

       The enableVoiceMailRecording parameter is only applicable
       if the Voice Messaging User service is assigned to the user.
       This applies to both users and service instances.
       The following elements are only used in AS data mode and ignored in XS data mode:
         mediaStream

    Attributes:

        user_id (str):

        recording_option (Optional[str]):

        pause_resume_notification (Optional[str]):

        enable_call_recording_announcement (Optional[bool]):

        enable_record_call_repeat_warning_tone (Optional[bool]):

        record_call_repeat_warning_tone_timer_seconds (Optional[int]):

        enable_voice_mail_recording (Optional[bool]):

        media_stream (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    recording_option: Optional[str] = field(
        default=None, metadata={"alias": "recordingOption"}
    )

    pause_resume_notification: Optional[str] = field(
        default=None, metadata={"alias": "pauseResumeNotification"}
    )

    enable_call_recording_announcement: Optional[bool] = field(
        default=None, metadata={"alias": "enableCallRecordingAnnouncement"}
    )

    enable_record_call_repeat_warning_tone: Optional[bool] = field(
        default=None, metadata={"alias": "enableRecordCallRepeatWarningTone"}
    )

    record_call_repeat_warning_tone_timer_seconds: Optional[int] = field(
        default=None, metadata={"alias": "recordCallRepeatWarningToneTimerSeconds"}
    )

    enable_voice_mail_recording: Optional[bool] = field(
        default=None, metadata={"alias": "enableVoiceMailRecording"}
    )

    media_stream: Optional[str] = field(default=None, metadata={"alias": "mediaStream"})


@dataclass(kw_only=True)
class UserCallToNumberGetAvailableListRequest(OCIRequest):
    """Request to get the user available Call to Number List information. The response is either a UserCallToNumberGetAvailableListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallTransferGetRequest14sp4(OCIRequest):
    """Request the user level data associated with Call Transfer.
        The response is either a UserCallTransferGetResponse14sp4 or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallTransferModifyRequest(OCIRequest):
    """Modify the user level data associated with Call Transfer.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_recall_active (Optional[bool]):

        recall_number_of_rings (Optional[int]):

        use_diversion_inhibitor_for_blind_transfer (Optional[bool]):

        use_diversion_inhibitor_for_consultative_calls (Optional[bool]):

        enable_busy_camp_on (Optional[bool]):

        busy_camp_on_seconds (Optional[int]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_recall_active: Optional[bool] = field(
        default=None, metadata={"alias": "isRecallActive"}
    )

    recall_number_of_rings: Optional[int] = field(
        default=None, metadata={"alias": "recallNumberOfRings"}
    )

    use_diversion_inhibitor_for_blind_transfer: Optional[bool] = field(
        default=None, metadata={"alias": "useDiversionInhibitorForBlindTransfer"}
    )

    use_diversion_inhibitor_for_consultative_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useDiversionInhibitorForConsultativeCalls"}
    )

    enable_busy_camp_on: Optional[bool] = field(
        default=None, metadata={"alias": "enableBusyCampOn"}
    )

    busy_camp_on_seconds: Optional[int] = field(
        default=None, metadata={"alias": "busyCampOnSeconds"}
    )


@dataclass(kw_only=True)
class UserCallWaitingGetRequest17sp4(OCIRequest):
    """Request the user level data associated with Call Waiting.
        The response is either a UserCallWaitingGetResponse17sp4 or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallWaitingModifyRequest(OCIRequest):
    """Modify the user level data associated with Call Waiting.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode:
          disableCallingLineIdDelivery

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        disable_calling_line_id_delivery (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    disable_calling_line_id_delivery: Optional[bool] = field(
        default=None, metadata={"alias": "disableCallingLineIdDelivery"}
    )


@dataclass(kw_only=True)
class UserCallingLineIDBlockingOverrideGetRequest(OCIRequest):
    """Request the user level data associated with Calling Line ID Blocking Override.
        The response is either a UserCallingLineIDBlockingOverrideGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallingLineIDBlockingOverrideModifyRequest(OCIRequest):
    """Modify the user level data associated with Calling Line ID Blocking Override.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserCallingLineIDDeliveryBlockingGetRequest(OCIRequest):
    """Request the user level data associated with Calling Line ID Delivery Blocking.
        The response is either a UserCallingLineIDDeliveryBlockingGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallingLineIDDeliveryBlockingModifyRequest(OCIRequest):
    """Modify the user level data associated with Calling Line ID Delivery Blocking.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserCallingNameDeliveryGetRequest(OCIRequest):
    """Request the user level data associated with Calling
        Name Delivery. The response is either a
        UserCallingNameDeliveryGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallingNameDeliveryModifyRequest(OCIRequest):
    """Modify the user level data associated with Calling Name Delivery.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active_for_external_calls (Optional[bool]):

        is_active_for_internal_calls (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "isActiveForExternalCalls"}
    )

    is_active_for_internal_calls: Optional[bool] = field(
        default=None, metadata={"alias": "isActiveForInternalCalls"}
    )


@dataclass(kw_only=True)
class UserCallingNameRetrievalGetRequest(OCIRequest):
    """Request the user level data associated with Calling Name Retrieval.
        The response is either a UserCallingNameRetrievalGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallingNameRetrievalModifyRequest(OCIRequest):
    """Modify the user level data associated with Calling Name Retrieval.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        bypass_filtering (Optional[bool]):

        dn_white_list (Optional[Nillable[CallingNameRetrievalWhiteListReplacementList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    bypass_filtering: Optional[bool] = field(
        default=None, metadata={"alias": "bypassFiltering"}
    )

    dn_white_list: Optional[Nillable[CallingNameRetrievalWhiteListReplacementList]] = (
        field(default=None, metadata={"alias": "dnWhiteList"})
    )

    def __post_init__(self):
        nillable_fields = ["dn_white_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCallingNumberDeliveryGetRequest(OCIRequest):
    """Request the user level data associated with Calling
        Name Delivery. The response is either a
        UserCallingNumberDeliveryGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallingNumberDeliveryModifyRequest(OCIRequest):
    """Modify the user level data associated with Calling Number Delivery.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active_for_external_calls (Optional[bool]):

        is_active_for_internal_calls (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active_for_external_calls: Optional[bool] = field(
        default=None, metadata={"alias": "isActiveForExternalCalls"}
    )

    is_active_for_internal_calls: Optional[bool] = field(
        default=None, metadata={"alias": "isActiveForInternalCalls"}
    )


@dataclass(kw_only=True)
class UserCallingPartyCategoryGetRequest16(OCIRequest):
    """Request the user level data associated with Calling Party Category.
        The response is either a UserCallingPartyCategoryGetResponse16 or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCallingPartyCategoryModifyRequest16(OCIRequest):
    """Modify the user level data associated with Calling Party Category.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        category (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    category: Optional[str] = field(default=None, metadata={"alias": "category"})


@dataclass(kw_only=True)
class UserChargeNumberGetRequest14sp9(OCIRequest):
    """Request the user level data associated with Charge Number.
        The response is either a UserChargeNumberGetResponse14sp9 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserChargeNumberModifyRequest(OCIRequest):
    """Modify the user level data associated with Charge Number.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        phone_number (Optional[Nillable[str]]):

        use_charge_number_for_enhanced_translations (Optional[bool]):

        send_charge_number_to_network (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    use_charge_number_for_enhanced_translations: Optional[bool] = field(
        default=None, metadata={"alias": "useChargeNumberForEnhancedTranslations"}
    )

    send_charge_number_to_network: Optional[bool] = field(
        default=None, metadata={"alias": "sendChargeNumberToNetwork"}
    )

    def __post_init__(self):
        nillable_fields = ["phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserClassmarkGetRequest(OCIRequest):
    """Request the Class Mark data associated with User.
        The response is either a UserClassmarkGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserClassmarkModifyRequest(OCIRequest):
    """Modify the user level data associated with Class Mark.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        classmark (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    classmark: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "classmark"}
    )

    def __post_init__(self):
        nillable_fields = ["classmark"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCollaborateBridgeGetRequest20sp1(OCIRequest):
    """Request the collaborate bridged assigned to the user. The user can only be assigned to one collaborate bridge at any given time.
        The response is either UserCollaborateBridgeGetResponse20sp1 or
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCollaborateDeleteRoomRequest(OCIRequest):
    """Request to delete a collaborate room.  The request only applies to project rooms and instant rooms.
        The request fails when deleting a collaborate My Room.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        room_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    room_id: str = field(metadata={"alias": "roomId"})


@dataclass(kw_only=True)
class UserCollaborateInstantRoomAddRequest(OCIRequest):
    """Request to add collaborate instant room.
        The response is either a UserCollaborateInstantRoomAddResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        room_name (Optional[str]):

        use_room_id_as_room_name (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    room_name: Optional[str] = field(default=None, metadata={"alias": "roomName"})

    use_room_id_as_room_name: Optional[bool] = field(
        default=None, metadata={"alias": "useRoomIdAsRoomName"}
    )


@dataclass(kw_only=True)
class UserCollaborateInstantRoomGetRequest(OCIRequest):
    """Request the collaborate room settings for an instant room.
        The request fails when requesting collaborate room settings for My Room or project rooms.
        The response is either UserCollaboratInstantRoomGetResponse or
        ErrorResponse.

    Attributes:

        user_id (str):

        room_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    room_id: str = field(metadata={"alias": "roomId"})


@dataclass(kw_only=True)
class UserCollaborateInstantRoomParametersGetRequest(OCIRequest):
    """Request collaborate instant room settings.
        The response is either UserCollaborateInstantRoomParametersGetResponse or
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCollaborateInstantRoomParametersModifyRequest(OCIRequest):
    """Request to modify collaborate instant room settings.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        attendee_notification (Optional[str]):

        end_collaborate_room_session_on_owner_exit (Optional[bool]):

        owner_required (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    attendee_notification: Optional[str] = field(
        default=None, metadata={"alias": "attendeeNotification"}
    )

    end_collaborate_room_session_on_owner_exit: Optional[bool] = field(
        default=None, metadata={"alias": "endCollaborateRoomSessionOnOwnerExit"}
    )

    owner_required: Optional[bool] = field(
        default=None, metadata={"alias": "ownerRequired"}
    )


@dataclass(kw_only=True)
class UserCollaborateMyRoomGetRequest(OCIRequest):
    """Request collaborate room settings for MyRoom.
        The response is either UserCollaboratMyRoomGetResponse or
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCollaborateMyRoomModifyRequest(OCIRequest):
    """Request to modify collaborate room settings for MyRoom.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        room_name (Optional[str]):

        attendee_notification (Optional[str]):

        end_collaborate_room_session_on_owner_exit (Optional[bool]):

        owner_required (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    room_name: Optional[str] = field(default=None, metadata={"alias": "roomName"})

    attendee_notification: Optional[str] = field(
        default=None, metadata={"alias": "attendeeNotification"}
    )

    end_collaborate_room_session_on_owner_exit: Optional[bool] = field(
        default=None, metadata={"alias": "endCollaborateRoomSessionOnOwnerExit"}
    )

    owner_required: Optional[bool] = field(
        default=None, metadata={"alias": "ownerRequired"}
    )


@dataclass(kw_only=True)
class UserCollaborateProjectRoomAddRequest(OCIRequest):
    """Request to add collaborate project room.
        The response is either a UserCollaborateProjectRoomAddResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        room_name (str):

        attendee_notification (str):

        end_collaborate_room_session_on_owner_exit (bool):

        owner_required (bool):

        room_schedule (CollaborateRoomSchedule):

    """

    user_id: str = field(metadata={"alias": "userId"})

    room_name: str = field(metadata={"alias": "roomName"})

    attendee_notification: str = field(metadata={"alias": "attendeeNotification"})

    end_collaborate_room_session_on_owner_exit: bool = field(
        metadata={"alias": "endCollaborateRoomSessionOnOwnerExit"}
    )

    owner_required: bool = field(metadata={"alias": "ownerRequired"})

    room_schedule: CollaborateRoomSchedule = field(metadata={"alias": "roomSchedule"})


@dataclass(kw_only=True)
class UserCollaborateProjectRoomGetRequest(OCIRequest):
    """Request collaborate room settings for a project room.
        The request fails when requesting collaborate room settings for instant rooms or My Room.
        The response is either UserCollaboratProjectRoomGetResponse or
        ErrorResponse.

    Attributes:

        user_id (str):

        room_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    room_id: str = field(metadata={"alias": "roomId"})


@dataclass(kw_only=True)
class UserCollaborateProjectRoomModifyRequest(OCIRequest):
    """Request to modify collaborate room settings for a project room.
        The request fails when modifying collaborate room settings for instant rooms or My Room.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        room_id (str):

        room_name (Optional[str]):

        attendee_notification (Optional[str]):

        end_collaborate_room_session_on_owner_exit (Optional[bool]):

        owner_required (Optional[bool]):

        room_schedule (Optional[CollaborateRoomSchedule]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    room_id: str = field(metadata={"alias": "roomId"})

    room_name: Optional[str] = field(default=None, metadata={"alias": "roomName"})

    attendee_notification: Optional[str] = field(
        default=None, metadata={"alias": "attendeeNotification"}
    )

    end_collaborate_room_session_on_owner_exit: Optional[bool] = field(
        default=None, metadata={"alias": "endCollaborateRoomSessionOnOwnerExit"}
    )

    owner_required: Optional[bool] = field(
        default=None, metadata={"alias": "ownerRequired"}
    )

    room_schedule: Optional[CollaborateRoomSchedule] = field(
        default=None, metadata={"alias": "roomSchedule"}
    )


@dataclass(kw_only=True)
class UserCollaborateRoomGetRequest(OCIRequest):
    """Request to get the settings for My Room, Instant Room or Project Room.
      The roomType and roomName parameters are returned for all rooms.
      For My room and Project Room, the following parameters are returned:
      attendeeNotification, endRoomSessionOnOwnerExit and ownerRequired.
      In addition, the roomSchedule is returned for Project Room and
      the roomStartTime and roomEndTime are returned for Instant Room.
        The response is either UserCollaboratetRoomGetResponse or
        ErrorResponse.

    Attributes:

        user_id (str):

        room_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    room_id: str = field(metadata={"alias": "roomId"})


@dataclass(kw_only=True)
class UserCollaborateRoomIDRegenerateRequest(OCIRequest):
    """Request to regenerate collaborate room id for MyRoom and project room.
        The request fails when requesting to regenerate room ID for an instant room.
        The response is either a UserCollaborateRoomIDRegenerateResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

        room_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    room_id: str = field(metadata={"alias": "roomId"})


@dataclass(kw_only=True)
class UserCollaborateRoomListGetRequest(OCIRequest):
    """Request the list of collaborate room instances for this specific user.
        The response is either a UserCollaborateRoomListGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCollaborateRoomModifyRequest(OCIRequest):
    """Request to modify room settings for a specific Project Room or My Room.
        Request to modify room settings for a specific Instant Room is responded
        with an ErrorResponse. The roomSchedule parameter is applicable for
        Project Room only. If the roomSchedule parameter is specified in the
        request to modify My Room, the request will be failed.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        room_id (str):

        room_name (Optional[str]):

        attendee_notification (Optional[str]):

        end_collaborate_room_session_on_owner_exit (Optional[bool]):

        owner_required (Optional[bool]):

        room_schedule (Optional[CollaborateRoomSchedule]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    room_id: str = field(metadata={"alias": "roomId"})

    room_name: Optional[str] = field(default=None, metadata={"alias": "roomName"})

    attendee_notification: Optional[str] = field(
        default=None, metadata={"alias": "attendeeNotification"}
    )

    end_collaborate_room_session_on_owner_exit: Optional[bool] = field(
        default=None, metadata={"alias": "endCollaborateRoomSessionOnOwnerExit"}
    )

    owner_required: Optional[bool] = field(
        default=None, metadata={"alias": "ownerRequired"}
    )

    room_schedule: Optional[CollaborateRoomSchedule] = field(
        default=None, metadata={"alias": "roomSchedule"}
    )


@dataclass(kw_only=True)
class UserCommPilotExpressGetRequest(OCIRequest):
    """Get the user's commPilot express service setting.
        The response is either a UserCommPilotExpressGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCommPilotExpressModifyRequest(OCIRequest):
    """Modify the user's commPilot express service setting.
        The response is either a SuccessResponse or an ErrorResponse.
        Engineering Note: This command is used internally by Call Processing.

    Attributes:

        user_id (str):

        profile (Optional[Nillable[str]]):

        available_in_office (Optional[CommPilotExpressAvailableInOfficeModify]):

        available_out_of_office (Optional[CommPilotExpressAvailableOutOfOfficeModify]):

        busy (Optional[CommPilotExpressBusyModify]):

        unavailable (Optional[CommPilotExpressUnavailableModify]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    profile: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "profile"}
    )

    available_in_office: Optional[CommPilotExpressAvailableInOfficeModify] = field(
        default=None, metadata={"alias": "availableInOffice"}
    )

    available_out_of_office: Optional[CommPilotExpressAvailableOutOfOfficeModify] = (
        field(default=None, metadata={"alias": "availableOutOfOffice"})
    )

    busy: Optional[CommPilotExpressBusyModify] = field(
        default=None, metadata={"alias": "busy"}
    )

    unavailable: Optional[CommPilotExpressUnavailableModify] = field(
        default=None, metadata={"alias": "unavailable"}
    )

    def __post_init__(self):
        nillable_fields = ["profile"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCommunicationBarringAuthorizationCodeAddListRequest(OCIRequest):
    """Add a list of Communication Barring Authorization codes to a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        code (List[CommunicationBarringAuthorizationCodeEntry]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    code: List[CommunicationBarringAuthorizationCodeEntry] = field(
        metadata={"alias": "code"}
    )


@dataclass(kw_only=True)
class UserCommunicationBarringAuthorizationCodeDeleteListRequest(OCIRequest):
    """Delete a list of Communication Barring Authorization codes from a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        code (List[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    code: List[str] = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class UserCommunicationBarringAuthorizationCodeGetListRequest(OCIRequest):
    """Get a list of Communication Barring Authorization Code for a user.
        The response is either a UserCommunicationBarringAuthorizationCodeGetListResponse
        or an ErorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCommunicationBarringGetRequest(OCIRequest):
    """Gets the Communication Barring settings for a user.
        The response is either a UserCommunicationBarringGetResponse or an ErrorResponse.
        This command only applies to groups in an Enterprise. This command will fail for groups in a Service Provider.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCommunicationBarringModifyRequest(OCIRequest):
    """Modify the Communication Barring settings for a user. If useDefaultServiceProviderProfile is set to false, a profile name must be present.
        The response is either a SuccessResponse or an ErrorResponse.
        This command only applies to groups in an Enterprise. This command will fail for groups in a Service Provider.

    Attributes:

        user_id (str):

        use_group_setting (Optional[bool]):

        profile_name (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    use_group_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupSetting"}
    )

    profile_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "profileName"}
    )

    def __post_init__(self):
        nillable_fields = ["profile_name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCommunicationBarringUserControlGetRequest(OCIRequest):
    """Lists the Communication Barring profiles available to a user and
        indicates which profile if any is currently active for the user..
        The response is either UserCommunicationBarringUserControlGetResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCommunicationBarringUserControlModifyRequest(OCIRequest):
    """Enabling a profile automatically disables the currently active profile.
        Also allows the passcode for the service to be modified and the lockout to be reset.
        Admins only need to populate the newPasscode field when changing the passcode.
        Users must populate both the oldPasscode and new Passcode fields when changing the passcode.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        enable_profile (Optional[Nillable[int]]):

        old_passcode (Optional[str]):

        new_passcode (Optional[str]):

        reset_lockout (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    enable_profile: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "enableProfile"}
    )

    old_passcode: Optional[str] = field(default=None, metadata={"alias": "oldPasscode"})

    new_passcode: Optional[str] = field(default=None, metadata={"alias": "newPasscode"})

    reset_lockout: Optional[bool] = field(
        default=None, metadata={"alias": "resetLockout"}
    )

    def __post_init__(self):
        nillable_fields = ["enable_profile"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserConnectedLineIdentificationRestrictionGetRequest(OCIRequest):
    """Request the user level data associated with Connected Line ID Restriction.
        The response is either a UserConnectedLineIdentificationRestrictionGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserConnectedLineIdentificationRestrictionModifyRequest(OCIRequest):
    """Modify the user level data associated with Connected Line ID Restriction.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserConsolidatedAddRequest22(OCIRequest):
    """The response is either SuccessResponse or ErrorResponse.

         In AS Data Mode:
           The group user limit will be increased by one if needed.

           The group will be added if it does not exist and if the command is executed by a Service
           Provider level administrator or above. If the group needs to be created, the
           groupProperties element must be set or the request will fail.
           The groupProperties element will be ignored if the group already exists.

           If the domain has not been assigned to the group, it will be added to group if the
           command is executed by a Service provider level administrator or above.
           If the domain has not been assigned to the service provider, it will be added to the
           service provider if the command is executed by a Provisioning level administrator or
           above. The command will fail otherwise.

           If the phoneNumber has not been assigned to the group and addPhoneNumberToGroup is set
           to true, it will be added to group if the command is executed by a service provider
           administrator or above and the number is already assigned to the service provider. The
           command will fail otherwise.

           The password is not required if external authentication is enabled.
           Alternate user ids can be added by a group level administrator or above.

           When sharedCallAppearanceAccessDeviceEndpoint element is included and the Shared Call
           Appearance is not included in the service/service pack of the request or in the
           \"new user template\", the request will fail.

           The userService/servicePack will be authorized to the group if it has not been
           authorized to the group if the command is executed by a Service Provider level
           administrator or above. The command will fail otherwise.
           The authorizedQuantity will be set to unlimited if not present.

           When thirdPartyVoiceMail elements are included and the Third Party Voice Mail Support
           service is not included in the service/service pack of the request or in the
           \"new user template\", the request will fail.

           When sipAuthenticationData element is included and the Authentication service is not
           included in the service/service pack of the request or in the \"new user template\",
           the request will fail.


         In XS data mode:
           only the System level administrator has the authorization level to execute the command.
           The group will be added if it does not exist. If the group needs to be created, the
           groupProperties element must be set or the request will fail.
           The groupProperties element will be ignored if the group already exists.

           If the phoneNumber has not been assigned to the group, it will be added to group and
           service provider if needed.

           When sharedCallAppearanceAccessDeviceEndpoint element is included and the Shared
           Call Appearance is not included in the service/service pack of the request, the request
           will fail.

         The following elements are ignored in XS data mode:
           addPhoneNumberToGroup
           nameDialingName
           alternateUserId
           passcode
           trunkAddressing
           thirdPartyVoiceMailServerSelection
           thirdPartyVoiceMailServerUserServer
           thirdPartyVoiceMailServerMailboxIdType
           thirdPartyVoiceMailMailboxURL
           sipAuthenticationData
           isPlace

    Attributes:

        service_provider_id (Optional[str]):

        group_id (Optional[str]):

        group_external_id (Optional[str]):

        group_properties (Optional[ConsolidatedGroupProperties]):

        user_id (str):

        user_external_id (Optional[str]):

        user_person_id (Optional[str]):

        add_phone_number_to_group (Optional[bool]):

        last_name (str):

        first_name (str):

        calling_line_id_last_name (str):

        calling_line_id_first_name (str):

        name_dialing_name (Optional[NameDialingName]):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

        phone_number (Optional[str]):

        alternate_user_id (Optional[List[AlternateUserIdEntry]]):

        extension (Optional[str]):

        calling_line_id_phone_number (Optional[str]):

        password (Optional[str]):

        passcode (Optional[str]):

        department (Optional[DepartmentKey]):

        language (Optional[str]):

        time_zone (Optional[str]):

        alias (Optional[List[str]]):

        access_device_endpoint (Optional[ConsolidatedAccessDeviceMultipleIdentityEndpointAndContactAdd22]):

        trunk_addressing (Optional[TrunkAddressingMultipleContactAdd]):

        shared_call_appearance_access_device_endpoint (Optional[List[ConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpointAdd22]]):

        title (Optional[str]):

        pager_phone_number (Optional[str]):

        mobile_phone_number (Optional[str]):

        email_address (Optional[str]):

        yahoo_id (Optional[str]):

        address_location (Optional[str]):

        address (Optional[StreetAddress]):

        network_class_of_service (Optional[str]):

        user_service (Optional[List[ConsolidatedUserServiceAssignment]]):

        service_pack (Optional[List[ConsolidatedServicePackAssignment]]):

        third_party_voice_mail_server_selection (Optional[str]):

        third_party_voice_mail_server_user_server (Optional[Nillable[str]]):

        third_party_voice_mail_server_mailbox_id_type (Optional[str]):

        third_party_voice_mail_mailbox_url (Optional[Nillable[str]]):

        sip_authentication_data (Optional[SIPAuthenticationUserNamePassword]):

        is_place (Optional[bool]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    group_external_id: Optional[str] = field(
        default=None, metadata={"alias": "groupExternalId"}
    )

    group_properties: Optional[ConsolidatedGroupProperties] = field(
        default=None, metadata={"alias": "groupProperties"}
    )

    user_id: str = field(metadata={"alias": "userId"})

    user_external_id: Optional[str] = field(
        default=None, metadata={"alias": "userExternalId"}
    )

    user_person_id: Optional[str] = field(
        default=None, metadata={"alias": "userPersonId"}
    )

    add_phone_number_to_group: Optional[bool] = field(
        default=None, metadata={"alias": "addPhoneNumberToGroup"}
    )

    last_name: str = field(metadata={"alias": "lastName"})

    first_name: str = field(metadata={"alias": "firstName"})

    calling_line_id_last_name: str = field(metadata={"alias": "callingLineIdLastName"})

    calling_line_id_first_name: str = field(
        metadata={"alias": "callingLineIdFirstName"}
    )

    name_dialing_name: Optional[NameDialingName] = field(
        default=None, metadata={"alias": "nameDialingName"}
    )

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    alternate_user_id: Optional[List[AlternateUserIdEntry]] = field(
        default=None, metadata={"alias": "alternateUserId"}
    )

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})

    calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    passcode: Optional[str] = field(default=None, metadata={"alias": "passcode"})

    department: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "department"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    alias: Optional[List[str]] = field(default=None, metadata={"alias": "alias"})

    access_device_endpoint: Optional[
        ConsolidatedAccessDeviceMultipleIdentityEndpointAndContactAdd22
    ] = field(default=None, metadata={"alias": "accessDeviceEndpoint"})

    trunk_addressing: Optional[TrunkAddressingMultipleContactAdd] = field(
        default=None, metadata={"alias": "trunkAddressing"}
    )

    shared_call_appearance_access_device_endpoint: Optional[
        List[ConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpointAdd22]
    ] = field(
        default=None, metadata={"alias": "sharedCallAppearanceAccessDeviceEndpoint"}
    )

    title: Optional[str] = field(default=None, metadata={"alias": "title"})

    pager_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "pagerPhoneNumber"}
    )

    mobile_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "mobilePhoneNumber"}
    )

    email_address: Optional[str] = field(
        default=None, metadata={"alias": "emailAddress"}
    )

    yahoo_id: Optional[str] = field(default=None, metadata={"alias": "yahooId"})

    address_location: Optional[str] = field(
        default=None, metadata={"alias": "addressLocation"}
    )

    address: Optional[StreetAddress] = field(
        default=None, metadata={"alias": "address"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    user_service: Optional[List[ConsolidatedUserServiceAssignment]] = field(
        default=None, metadata={"alias": "userService"}
    )

    service_pack: Optional[List[ConsolidatedServicePackAssignment]] = field(
        default=None, metadata={"alias": "servicePack"}
    )

    third_party_voice_mail_server_selection: Optional[str] = field(
        default=None, metadata={"alias": "thirdPartyVoiceMailServerSelection"}
    )

    third_party_voice_mail_server_user_server: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "thirdPartyVoiceMailServerUserServer"}
    )

    third_party_voice_mail_server_mailbox_id_type: Optional[str] = field(
        default=None, metadata={"alias": "thirdPartyVoiceMailServerMailboxIdType"}
    )

    third_party_voice_mail_mailbox_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "thirdPartyVoiceMailMailboxURL"}
    )

    sip_authentication_data: Optional[SIPAuthenticationUserNamePassword] = field(
        default=None, metadata={"alias": "sipAuthenticationData"}
    )

    is_place: Optional[bool] = field(default=None, metadata={"alias": "isPlace"})

    def __post_init__(self):
        nillable_fields = [
            "third_party_voice_mail_server_user_server",
            "third_party_voice_mail_mailbox_url",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserConsolidatedDeleteRequest(OCIRequest):
    """Request to delete a user.

        If deleteExistingDevices is set to true, after the user is deleted, any device that is only used by the deleted user prior to the deletion will be deleted if the command is executed with the correct priviledge.
         Group administrator or above running this command can delete any group level devices. Service provider administrator or above can delete any service provider and group devices. Provisioning administrator or above can delete any devices.
         An ErrorResponse will be returned if any device cannot be deleted because of insufficient privilege.

         If UnassignPhoneNumbersLevel is set to 'Group', the user's primary phone number, fax number and any alternate numbers, will be un-assigned from the group if the command is executed by a service provider administrator or above.
          When set to 'Service Provider', they will be un-assigned from the group and service provider if the command is executed by a provisioning administrator or above.
          When omitted, the number(s) will be left assigned to the group.
         An ErrorResponse will be returned if any number cannot be unassigned because of insufficient privilege.

    Attributes:

        user_id (str):

        delete_existing_devices (Optional[bool]):

        unassign_phone_numbers (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    delete_existing_devices: Optional[bool] = field(
        default=None, metadata={"alias": "deleteExistingDevices"}
    )

    unassign_phone_numbers: Optional[str] = field(
        default=None, metadata={"alias": "unassignPhoneNumbers"}
    )


@dataclass(kw_only=True)
class UserConsolidatedModifyRequest22(OCIRequest):
    """Request to modify a user.

        If deleteExistingDevices is set to true, when the devices for the main endpoint or SCA service are changed, devices with no more endpoint will be deleted if the command is executed with the correct privilege.
        Group administrator or above running this command can delete any group level devices.
        Service provider administrator or above can delete any service provider and group devices.
        Provisioning administrator or above can delete any devices.
        An ErrorResponse will be returned if any device cannot be deleted because of insufficient privilege.

        When phone numbers are un-assigned from the user, the unused numbers may be un-assigned from the group and service provider. If UnassignPhoneNumbersLevel is set to 'Group', the user's primary phone number, fax number and any alternate numbers, will be un-assigned from the group if the command is executed by a service provider administrator or above.
        When set to 'Service Provider', they will be un-assigned from the group and service provider if the command is executed by a provisioning administrator or above.
        When omitted, the number(s) will be left assigned to the group.
        An ErrorResponse will be returned if any number cannot be unassigned because of insufficient privilege.

       If the phoneNumber has not been assigned to the group and addPhoneNumberToGroup is set to true, it will be added to group if needed if the command is executed by a service provider administrator and above. The command will fail otherwise.

        Alternate user ids can be added by a group level administrator or above.

        The password is not required if external authentication is enabled.
        When sharedCallAppearanceAccessDeviceEndpoint element is included and the Shared Call Appearance service is not assigned after this request, the request will fail.

        The userService/servicePackwill be authorized to the group if it has not been authorized to the group and the command is excuted by a service provider administrator. The request will fail otherwise.
        If not present, the authorizedQuantity will be set to unlimited if allowed.

        If any of the third party voice mail elements are included but the service is not assigned after this request, the request will fail.

         If the sip authentication elements are included but the SPI Authentication service is not assigned after this request, the request will fail.

         If the impPassword element is included but the Integrated IMP service is not assigned after this request, the request will fail.


         The following elements are ignored in XS data mode:
          nameDialingName
          alternateUserIdList
          passcode
          trunkAddressing
          thirdPartyVoiceMailServerSelection
          thirdPartyVoiceMailServerUserServer
          thirdPartyVoiceMailServerMailboxIdType
          thirdPartyVoiceMailMailboxURL
          sipAuthenticationData
          newUserExternalId

         The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        delete_existing_devices (Optional[bool]):

        unassign_phone_numbers (Optional[str]):

        add_phone_number_to_group (Optional[bool]):

        new_user_id (Optional[str]):

        last_name (Optional[str]):

        first_name (Optional[str]):

        calling_line_id_last_name (Optional[str]):

        calling_line_id_first_name (Optional[str]):

        name_dialing_name (Optional[Nillable[NameDialingName]]):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

        phone_number (Optional[Nillable[str]]):

        alternate_user_id_list (Optional[Nillable[ReplacementAlternateUserIdEntryList]]):

        extension (Optional[Nillable[str]]):

        calling_line_id_phone_number (Optional[Nillable[str]]):

        old_password (Optional[str]):

        new_password (Optional[Nillable[str]]):

        department (Optional[Nillable[DepartmentKey]]):

        language (Optional[str]):

        time_zone (Optional[str]):

        sip_alias_list (Optional[Nillable[ReplacementSIPAliasList]]):

        endpoint (Optional[Nillable[Union[ConsolidatedAccessDeviceMultipleIdentityEndpointAndContactModify, TrunkAddressingMultipleContactModify]]]):

        shared_call_appearance_access_device_endpoint_list (Optional[Nillable[ReplacementConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpointList22]]):

        title (Optional[Nillable[str]]):

        pager_phone_number (Optional[Nillable[str]]):

        mobile_phone_number (Optional[Nillable[str]]):

        email_address (Optional[Nillable[str]]):

        yahoo_id (Optional[Nillable[str]]):

        address_location (Optional[Nillable[str]]):

        address (Optional[StreetAddress]):

        network_class_of_service (Optional[str]):

        user_service_list (Optional[Nillable[ReplacementConsolidatedUserServiceAssignmentList]]):

        service_pack_list (Optional[Nillable[ReplacementConsolidatedServicePackAssignmentList]]):

        third_party_voice_mail_server_selection (Optional[str]):

        third_party_voice_mail_server_user_server (Optional[Nillable[str]]):

        third_party_voice_mail_server_mailbox_id_type (Optional[str]):

        third_party_voice_mail_mailbox_url (Optional[Nillable[str]]):

        sip_authentication_user_name (Optional[str]):

        new_sip_authentication_password (Optional[str]):

        old_sip_authentication_password (Optional[str]):

        new_passcode (Optional[str]):

        old_passcode (Optional[str]):

        imp_password (Optional[Nillable[str]]):

        new_user_external_id (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    delete_existing_devices: Optional[bool] = field(
        default=None, metadata={"alias": "deleteExistingDevices"}
    )

    unassign_phone_numbers: Optional[str] = field(
        default=None, metadata={"alias": "unassignPhoneNumbers"}
    )

    add_phone_number_to_group: Optional[bool] = field(
        default=None, metadata={"alias": "addPhoneNumberToGroup"}
    )

    new_user_id: Optional[str] = field(default=None, metadata={"alias": "newUserId"})

    last_name: Optional[str] = field(default=None, metadata={"alias": "lastName"})

    first_name: Optional[str] = field(default=None, metadata={"alias": "firstName"})

    calling_line_id_last_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdLastName"}
    )

    calling_line_id_first_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdFirstName"}
    )

    name_dialing_name: Optional[Nillable[NameDialingName]] = field(
        default=None, metadata={"alias": "nameDialingName"}
    )

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )

    phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    alternate_user_id_list: Optional[Nillable[ReplacementAlternateUserIdEntryList]] = (
        field(default=None, metadata={"alias": "alternateUserIdList"})
    )

    extension: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "extension"}
    )

    calling_line_id_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )

    old_password: Optional[str] = field(default=None, metadata={"alias": "oldPassword"})

    new_password: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "newPassword"}
    )

    department: Optional[Nillable[DepartmentKey]] = field(
        default=None, metadata={"alias": "department"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    sip_alias_list: Optional[Nillable[ReplacementSIPAliasList]] = field(
        default=None, metadata={"alias": "sipAliasList"}
    )

    endpoint: Optional[
        Nillable[
            Union[
                ConsolidatedAccessDeviceMultipleIdentityEndpointAndContactModify,
                TrunkAddressingMultipleContactModify,
            ]
        ]
    ] = field(default=None, metadata={"alias": "endpoint"})

    shared_call_appearance_access_device_endpoint_list: Optional[
        Nillable[
            ReplacementConsolidatedSharedCallAppearanceAccessDeviceMultipleIdentityEndpointList22
        ]
    ] = field(
        default=None, metadata={"alias": "sharedCallAppearanceAccessDeviceEndpointList"}
    )

    title: Optional[Nillable[str]] = field(default=None, metadata={"alias": "title"})

    pager_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "pagerPhoneNumber"}
    )

    mobile_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "mobilePhoneNumber"}
    )

    email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "emailAddress"}
    )

    yahoo_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "yahooId"}
    )

    address_location: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "addressLocation"}
    )

    address: Optional[StreetAddress] = field(
        default=None, metadata={"alias": "address"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    user_service_list: Optional[
        Nillable[ReplacementConsolidatedUserServiceAssignmentList]
    ] = field(default=None, metadata={"alias": "userServiceList"})

    service_pack_list: Optional[
        Nillable[ReplacementConsolidatedServicePackAssignmentList]
    ] = field(default=None, metadata={"alias": "servicePackList"})

    third_party_voice_mail_server_selection: Optional[str] = field(
        default=None, metadata={"alias": "thirdPartyVoiceMailServerSelection"}
    )

    third_party_voice_mail_server_user_server: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "thirdPartyVoiceMailServerUserServer"}
    )

    third_party_voice_mail_server_mailbox_id_type: Optional[str] = field(
        default=None, metadata={"alias": "thirdPartyVoiceMailServerMailboxIdType"}
    )

    third_party_voice_mail_mailbox_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "thirdPartyVoiceMailMailboxURL"}
    )

    sip_authentication_user_name: Optional[str] = field(
        default=None, metadata={"alias": "sipAuthenticationUserName"}
    )

    new_sip_authentication_password: Optional[str] = field(
        default=None, metadata={"alias": "newSipAuthenticationPassword"}
    )

    old_sip_authentication_password: Optional[str] = field(
        default=None, metadata={"alias": "OldSipAuthenticationPassword"}
    )

    new_passcode: Optional[str] = field(default=None, metadata={"alias": "newPasscode"})

    old_passcode: Optional[str] = field(default=None, metadata={"alias": "oldPasscode"})

    imp_password: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "impPassword"}
    )

    new_user_external_id: Optional[str] = field(
        default=None, metadata={"alias": "newUserExternalId"}
    )

    def __post_init__(self):
        nillable_fields = [
            "name_dialing_name",
            "phone_number",
            "alternate_user_id_list",
            "extension",
            "calling_line_id_phone_number",
            "new_password",
            "department",
            "sip_alias_list",
            "endpoint",
            "shared_call_appearance_access_device_endpoint_list",
            "title",
            "pager_phone_number",
            "mobile_phone_number",
            "email_address",
            "yahoo_id",
            "address_location",
            "user_service_list",
            "service_pack_list",
            "third_party_voice_mail_server_user_server",
            "third_party_voice_mail_mailbox_url",
            "imp_password",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserCustomRingbackUserAddCriteriaRequest20(OCIRequest):
    """Add a criteria to the user's custom ringback service.
        For the callToNumber, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria (CriteriaFromDn):

        call_to_number (Optional[List[CallToNumber]]):

        audio_selection (str):

        audio_file (Optional[ExtendedMediaFileLevelResource20]):

        video_selection (str):

        video_file (Optional[ExtendedMediaFileLevelResource20]):

        call_waiting_audio_selection (Optional[str]):

        call_waiting_audio_file (Optional[ExtendedMediaFileLevelResource20]):

        call_waiting_video_selection (Optional[str]):

        call_waiting_video_file (Optional[ExtendedMediaFileLevelResource20]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria: CriteriaFromDn = field(metadata={"alias": "fromDnCriteria"})

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )

    audio_selection: str = field(metadata={"alias": "audioSelection"})

    audio_file: Optional[ExtendedMediaFileLevelResource20] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_selection: str = field(metadata={"alias": "videoSelection"})

    video_file: Optional[ExtendedMediaFileLevelResource20] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    call_waiting_audio_selection: Optional[str] = field(
        default=None, metadata={"alias": "callWaitingAudioSelection"}
    )

    call_waiting_audio_file: Optional[ExtendedMediaFileLevelResource20] = field(
        default=None, metadata={"alias": "callWaitingAudioFile"}
    )

    call_waiting_video_selection: Optional[str] = field(
        default=None, metadata={"alias": "callWaitingVideoSelection"}
    )

    call_waiting_video_file: Optional[ExtendedMediaFileLevelResource20] = field(
        default=None, metadata={"alias": "callWaitingVideoFile"}
    )


@dataclass(kw_only=True)
class UserCustomRingbackUserDeleteCriteriaRequest(OCIRequest):
    """Delete a criteria from the user's custom ringback service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserCustomRingbackUserGetCriteriaListRequest(OCIRequest):
    """Get the user's custom ringback service criteria listing.
        The response is either a UserCustomRingbackUserGetCriteriaListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserCustomRingbackUserGetCriteriaRequest21(OCIRequest):
    """Get a criteria for the user's custom ringback service.
        The response is either a UserCustomRingbackUserGetCriteriaResponse21 or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserCustomRingbackUserModifyActiveCriteriaListRequest(OCIRequest):
    """Modify the user's custom ringback service criteria's active setting.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_activation (Optional[List[CriteriaActivation]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_activation: Optional[List[CriteriaActivation]] = field(
        default=None, metadata={"alias": "criteriaActivation"}
    )


@dataclass(kw_only=True)
class UserCustomRingbackUserModifyCriteriaRequest20(OCIRequest):
    """Modify a criteria for the user's custom ringback service.
        For the callToNumbers in the callToNumberList, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        new_criteria_name (Optional[str]):

        time_schedule (Optional[Nillable[TimeSchedule]]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        blacklisted (Optional[bool]):

        from_dn_criteria (Optional[CriteriaFromDnModify]):

        call_to_number_list (Optional[Nillable[ReplacementCallToNumberList]]):

        audio_selection (Optional[str]):

        audio_file (Optional[ExtendedMediaFileLevelResource20]):

        video_selection (Optional[str]):

        video_file (Optional[ExtendedMediaFileLevelResource20]):

        call_waiting_audio_selection (Optional[str]):

        call_waiting_audio_file (Optional[ExtendedMediaFileLevelResource20]):

        call_waiting_video_selection (Optional[str]):

        call_waiting_video_file (Optional[ExtendedMediaFileLevelResource20]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    new_criteria_name: Optional[str] = field(
        default=None, metadata={"alias": "newCriteriaName"}
    )

    time_schedule: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: Optional[bool] = field(default=None, metadata={"alias": "blacklisted"})

    from_dn_criteria: Optional[CriteriaFromDnModify] = field(
        default=None, metadata={"alias": "fromDnCriteria"}
    )

    call_to_number_list: Optional[Nillable[ReplacementCallToNumberList]] = field(
        default=None, metadata={"alias": "callToNumberList"}
    )

    audio_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioSelection"}
    )

    audio_file: Optional[ExtendedMediaFileLevelResource20] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoSelection"}
    )

    video_file: Optional[ExtendedMediaFileLevelResource20] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    call_waiting_audio_selection: Optional[str] = field(
        default=None, metadata={"alias": "callWaitingAudioSelection"}
    )

    call_waiting_audio_file: Optional[ExtendedMediaFileLevelResource20] = field(
        default=None, metadata={"alias": "callWaitingAudioFile"}
    )

    call_waiting_video_selection: Optional[str] = field(
        default=None, metadata={"alias": "callWaitingVideoSelection"}
    )

    call_waiting_video_file: Optional[ExtendedMediaFileLevelResource20] = field(
        default=None, metadata={"alias": "callWaitingVideoFile"}
    )

    def __post_init__(self):
        nillable_fields = ["time_schedule", "holiday_schedule", "call_to_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserDeleteRequest(OCIRequest):
    """Request to delete a user.  The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserDeviceActivationPolicyInEffectGetRequest(OCIRequest):
    """Request the Device Activation policies in effect for the user.
        The response is either a UserDeviceActivationPolicyInEffectGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserDevicePoliciesGetRequest21(OCIRequest):
    """Request the user level data associated with Device Policy.
          The response is either a UserDevicePoliciesGetResponse21 or an
          ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserDevicePoliciesModifyRequest(OCIRequest):
    """Modify the user level data associated with Device Policy. enableDeviceFeatureSynchronization and enableCallDecline can be
          configured by the admin regardless of lineMode, but is ignored by the application server in Multiple User Shared mode.

          enableCallDecline can be modified by the user when the admin has set the mode to ‘Single User Private and Shared Lines mode’.
          This is the only element that the user can modify. In XS data mode,  the lineMode is ignored and enabledCallDecline is the only element that can be configured.

        The following elements are only used in AS data mode and ignored in XS data mode:
          lineMode
          enableDeviceFeatureSynchronization
          enableDnd
          enableCallForwardingAlways
          enableCallForwardingBusy
          enableCallForwardingNoAnswer
          enableAcd
          enableExecutive
          enableExecutiveAssistant
          enableSecurityClassification
          enableCallRecording

          The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        line_mode (Optional[str]):

        enable_device_feature_synchronization (Optional[bool]):

        enable_dnd (Optional[bool]):

        enable_call_forwarding_always (Optional[bool]):

        enable_call_forwarding_busy (Optional[bool]):

        enable_call_forwarding_no_answer (Optional[bool]):

        enable_acd (Optional[bool]):

        enable_executive (Optional[bool]):

        enable_executive_assistant (Optional[bool]):

        enable_security_classification (Optional[bool]):

        enable_call_recording (Optional[bool]):

        enable_call_decline (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    line_mode: Optional[str] = field(default=None, metadata={"alias": "lineMode"})

    enable_device_feature_synchronization: Optional[bool] = field(
        default=None, metadata={"alias": "enableDeviceFeatureSynchronization"}
    )

    enable_dnd: Optional[bool] = field(default=None, metadata={"alias": "enableDnd"})

    enable_call_forwarding_always: Optional[bool] = field(
        default=None, metadata={"alias": "enableCallForwardingAlways"}
    )

    enable_call_forwarding_busy: Optional[bool] = field(
        default=None, metadata={"alias": "enableCallForwardingBusy"}
    )

    enable_call_forwarding_no_answer: Optional[bool] = field(
        default=None, metadata={"alias": "enableCallForwardingNoAnswer"}
    )

    enable_acd: Optional[bool] = field(default=None, metadata={"alias": "enableAcd"})

    enable_executive: Optional[bool] = field(
        default=None, metadata={"alias": "enableExecutive"}
    )

    enable_executive_assistant: Optional[bool] = field(
        default=None, metadata={"alias": "enableExecutiveAssistant"}
    )

    enable_security_classification: Optional[bool] = field(
        default=None, metadata={"alias": "enableSecurityClassification"}
    )

    enable_call_recording: Optional[bool] = field(
        default=None, metadata={"alias": "enableCallRecording"}
    )

    enable_call_decline: Optional[bool] = field(
        default=None, metadata={"alias": "enableCallDecline"}
    )


@dataclass(kw_only=True)
class UserDirectRouteGetRequest(OCIRequest):
    """Get the direct route setting and the list of DTGs/Trunk Identities assigned to a user.
        The response is either UserDirectRouteGetResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserDirectRouteModifyRequest(OCIRequest):
    """Modify the direct route setting and the list of DTGs/Trunk Identities assigned to a user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        outgoing_dtg_policy (Optional[str]):

        outgoing_trunk_identity_policy (Optional[str]):

        direct_route_identity_list (Optional[Nillable[DirectRouteReplacementIdentityList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    outgoing_dtg_policy: Optional[str] = field(
        default=None, metadata={"alias": "outgoingDTGPolicy"}
    )

    outgoing_trunk_identity_policy: Optional[str] = field(
        default=None, metadata={"alias": "outgoingTrunkIdentityPolicy"}
    )

    direct_route_identity_list: Optional[
        Nillable[DirectRouteReplacementIdentityList]
    ] = field(default=None, metadata={"alias": "directRouteIdentityList"})

    def __post_init__(self):
        nillable_fields = ["direct_route_identity_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserDirectedCallPickupWithBargeInGetRequest14sp7(OCIRequest):
    """Request the user level data associated with Directed Call Pickup With Barge In.
        The response is either a UserDirectedCallPickupWithBargeInGetResponse14sp7 or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserDirectedCallPickupWithBargeInModifyRequest(OCIRequest):
    """Modify the user level data associated with Directed Call Pickup With Barge In.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        enable_barge_in_warning_tone (Optional[bool]):

        enable_automatic_target_selection (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    enable_barge_in_warning_tone: Optional[bool] = field(
        default=None, metadata={"alias": "enableBargeInWarningTone"}
    )

    enable_automatic_target_selection: Optional[bool] = field(
        default=None, metadata={"alias": "enableAutomaticTargetSelection"}
    )


@dataclass(kw_only=True)
class UserDnGetActivationListRequest(OCIRequest):
    """Request to get a list of DNs associated with a user and their activation state.
        The response is either UserDnGetActivationListResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserDoNotDisturbGetRequest(OCIRequest):
    """Request the user level data associated with Do Not Disturb.
        The response is either a UserDoNotDisturbGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserDoNotDisturbModifyRequest(OCIRequest):
    """Modify the user level data associated with Do Not Disturb.
        The response is either a SuccessResponse or an ErrorResponse.
        Engineering Note: This command is used internally by Call Processing.
        The following element is only used in AS data mode and ignored in XS data mode: isDoNotDisturbSync

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        ring_splash (Optional[bool]):

        is_do_not_disturb_sync (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    ring_splash: Optional[bool] = field(default=None, metadata={"alias": "ringSplash"})

    is_do_not_disturb_sync: Optional[bool] = field(
        default=None, metadata={"alias": "isDoNotDisturbSync"}
    )


@dataclass(kw_only=True)
class UserEnhancedCallLogsGetListRequest23(OCIRequest):
    """Request user's call logs.
        If the callLogType is not specified, all types of calls logs (placed, received, missed) are returned.
        The filters \"dateTimeRange\", \"numberFilter\", \"redirectedNumberFilter\", \"accountAuthorizationCodeFilter\"
        \"callAuthorizationCodeFilter\" and \"subscriberType\" are ignored if call logs are stored in CDS. When
        \"ReceivedOrMissed\" is specified as \"callLogType\" and call logs are stored in CDS, all call logs including
        placed will be returned.
        It is possible to restrict the number of rows returned using responsePagingControl. If responsePagingControl
        is not specified, the value of Enhanced Call Logs system parameter maxNonPagedResponseSize will control
        the maximum number of call logs can be returned.
        The response is either a UserEnhancedCallLogsGetListResponse23 or an ErrorResponse.
        The following elements are only used in AS data mode and ignored in XS data mode:
          callAuthorizationCodeFilter

    Attributes:

        user_id (str):

        call_log_type (Optional[str]):

        date_time_range (EnhancedCallLogsTimeRange):

        number_filter (Optional[EnhancedCallLogsNumberFilter]):

        redirected_number_filter (Optional[EnhancedCallLogsRedirectedNumberFilter23]):

        account_authorization_code_filter (Optional[EnhancedCallLogsAccountAuthorizationCodeFilter]):

        call_authorization_code_filter (Optional[EnhancedCallLogsCallAuthorizationCodeFilter]):

        subscriber_type (Optional[str]):

        response_paging_control (Optional[ResponsePagingControl]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    call_log_type: Optional[str] = field(
        default=None, metadata={"alias": "callLogType"}
    )

    date_time_range: EnhancedCallLogsTimeRange = field(
        metadata={"alias": "dateTimeRange"}
    )

    number_filter: Optional[EnhancedCallLogsNumberFilter] = field(
        default=None, metadata={"alias": "numberFilter"}
    )

    redirected_number_filter: Optional[EnhancedCallLogsRedirectedNumberFilter23] = (
        field(default=None, metadata={"alias": "redirectedNumberFilter"})
    )

    account_authorization_code_filter: Optional[
        EnhancedCallLogsAccountAuthorizationCodeFilter
    ] = field(default=None, metadata={"alias": "accountAuthorizationCodeFilter"})

    call_authorization_code_filter: Optional[
        EnhancedCallLogsCallAuthorizationCodeFilter
    ] = field(default=None, metadata={"alias": "callAuthorizationCodeFilter"})

    subscriber_type: Optional[str] = field(
        default=None, metadata={"alias": "subscriberType"}
    )

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )


@dataclass(kw_only=True)
class UserEnterpriseCommonPhoneListGetPagedSortedListRequest(OCIRequest):
    """Get an enterprise's common phone list for a user.
                                The response is either a UserEnterpriseCommonPhoneListGetPagedSortedListResponse
                                or an ErrorResponse.
                                The search can be done using multiple criterion.
                                If the searchCriteriaModeOr is present, any result matching any one
                                criteria is included in the results.
                                Otherwise, only results matching all the search criterion are included in the
                                results.
                                If no search criteria is specified, all results are returned.
                                Specifying searchCriteriaModeOr without any search criteria results
                                in an ErrorResponse.
                                The sort can be done on the name or the number in the common phone list.
                                The following elements are only used in AS data mode and ignored in XS data
                                mode:
                                        searchCriteriaEnterpriseCommonMultiPartPhoneListName

    Attributes:

        user_id (str):

        response_paging_control (ResponsePagingControl):

        sort_by_enterprise_common_phone_list_number (Optional[SortByEnterpriseCommonPhoneListNumber]):

        sort_by_enterprise_common_phone_list_name (Optional[SortByEnterpriseCommonPhoneListName]):

        search_criteria_mode_or (Optional[bool]):

        search_criteria_enterprise_common_phone_list_name (Optional[List[SearchCriteriaEnterpriseCommonPhoneListName]]):

        search_criteria_enterprise_common_phone_list_number (Optional[List[SearchCriteriaEnterpriseCommonPhoneListNumber]]):

        search_criteria_enterprise_common_multi_part_phone_list_name (Optional[List[SearchCriteriaEnterpriseCommonMultiPartPhoneListName]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    response_paging_control: ResponsePagingControl = field(
        metadata={"alias": "responsePagingControl"}
    )

    sort_by_enterprise_common_phone_list_number: Optional[
        SortByEnterpriseCommonPhoneListNumber
    ] = field(default=None, metadata={"alias": "sortByEnterpriseCommonPhoneListNumber"})

    sort_by_enterprise_common_phone_list_name: Optional[
        SortByEnterpriseCommonPhoneListName
    ] = field(default=None, metadata={"alias": "sortByEnterpriseCommonPhoneListName"})

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )

    search_criteria_enterprise_common_phone_list_name: Optional[
        List[SearchCriteriaEnterpriseCommonPhoneListName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaEnterpriseCommonPhoneListName"}
    )

    search_criteria_enterprise_common_phone_list_number: Optional[
        List[SearchCriteriaEnterpriseCommonPhoneListNumber]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaEnterpriseCommonPhoneListNumber"},
    )

    search_criteria_enterprise_common_multi_part_phone_list_name: Optional[
        List[SearchCriteriaEnterpriseCommonMultiPartPhoneListName]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaEnterpriseCommonMultiPartPhoneListName"},
    )


@dataclass(kw_only=True)
class UserExecutiveAddFilteringSelectiveCriteriaRequest(OCIRequest):
    """Add a filtering criteria to an executive user.
        Both executive and the executive assistant can run this command.
        For the callToNumber, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        filter (bool):

        from_dn_criteria (ExecutiveCallFilteringCriteriaFromDn):

        call_to_number (Optional[List[CallToNumber]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    filter: bool = field(metadata={"alias": "filter"})

    from_dn_criteria: ExecutiveCallFilteringCriteriaFromDn = field(
        metadata={"alias": "fromDnCriteria"}
    )

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class UserExecutiveAssistantGetRequest(OCIRequest):
    """Get the setting of an executive assistant.
        The response is either UserExecutiveAssistantGetResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserExecutiveAssistantModifyRequest(OCIRequest):
    """Modify the setting for executive assistant.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        enable_divert (Optional[bool]):

        divert_to_phone_number (Optional[Nillable[str]]):

        opt_in_status (Optional[List[ExecutiveAssistantOptInStatus]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    enable_divert: Optional[bool] = field(
        default=None, metadata={"alias": "enableDivert"}
    )

    divert_to_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "divertToPhoneNumber"}
    )

    opt_in_status: Optional[List[ExecutiveAssistantOptInStatus]] = field(
        default=None, metadata={"alias": "optInStatus"}
    )

    def __post_init__(self):
        nillable_fields = ["divert_to_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserExecutiveDeleteFilteringSelectiveCriteriaRequest(OCIRequest):
    """Delete a filtering criteria from an executive user.
        Both executive and the executive assistant can run this command.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserExecutiveGetAssistantRequest(OCIRequest):
    """Get the assistant setting and the list of assistants assigned to an executive.
        The response is either UserExecutiveGetAssistantsResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserExecutiveGetAvailableAssistantListRequest(OCIRequest):
    """Get a list of users that can be assigned to an executive.
        Searching for users by group only makes sense when the executive user is part of an Enterprise.
        The response is either UserExecutiveGetAvailableAssistantListResponse or ErrorResponse.

    Attributes:

        user_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class UserExecutiveGetFilteringRequest(OCIRequest):
    """Get the filtering setting and the list of filtering criteria defined for an executive user.
        Both executive and the executive assistant can run this command.
        The response is either UserExecutiveGetFilteringResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserExecutiveGetFilteringSelectiveCriteriaRequest21(OCIRequest):
    """Get a filtering criteria for an executive user.
        Both executive and the executive assistant can run this command.
        The response is either UserExecutiveGetSelectiveCriteriaResponse21 or ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserExecutiveGetScreeningAlertingRequest(OCIRequest):
    """Get the screening and alerting setting of an executive. Both executive and the executive assistant can run this command.
        The response is either UserExecutiveGetScreeningAlertingResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserExecutiveModifyAssistantRequest(OCIRequest):
    """Request to modify the assistant setting and the list of assistants assigned to an executive user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        allow_opt_in_out (Optional[bool]):

        assistant_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    allow_opt_in_out: Optional[bool] = field(
        default=None, metadata={"alias": "allowOptInOut"}
    )

    assistant_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "assistantUserIdList"}
    )

    def __post_init__(self):
        nillable_fields = ["assistant_user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserExecutiveModifyFilteringExecutionServerRequest(OCIRequest):
    """Modify the filtering setting for an executive user.
        Both executive and the executive assistant can run this command.
        requestingUserId is either executive or executive assistant.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        requesting_user_id (Optional[str]):

        enable_filtering (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    requesting_user_id: Optional[str] = field(
        default=None, metadata={"alias": "requestingUserId"}
    )

    enable_filtering: Optional[bool] = field(
        default=None, metadata={"alias": "enableFiltering"}
    )


@dataclass(kw_only=True)
class UserExecutiveModifyFilteringRequest(OCIRequest):
    """Modify the filtering setting for an executive user.
        Both executive and the executive assistant can run this command.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        enable_filtering (Optional[bool]):

        filtering_mode (Optional[str]):

        simple_filter_type (Optional[str]):

        criteria_activation (Optional[List[CriteriaActivation]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    enable_filtering: Optional[bool] = field(
        default=None, metadata={"alias": "enableFiltering"}
    )

    filtering_mode: Optional[str] = field(
        default=None, metadata={"alias": "filteringMode"}
    )

    simple_filter_type: Optional[str] = field(
        default=None, metadata={"alias": "simpleFilterType"}
    )

    criteria_activation: Optional[List[CriteriaActivation]] = field(
        default=None, metadata={"alias": "criteriaActivation"}
    )


@dataclass(kw_only=True)
class UserExecutiveModifyFilteringSelectiveCriteriaRequest(OCIRequest):
    """Modify a filtering selective criteria for an executive.
        Both executive and the executive assistant can run this command.
        For the callToNumbers in the callToNumberList, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        new_criteria_name (Optional[str]):

        time_schedule (Optional[Nillable[TimeSchedule]]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        filter (Optional[bool]):

        from_dn_criteria (Optional[ExecutiveCallFilteringCriteriaFromDnModify]):

        call_to_number_list (Optional[Nillable[ReplacementCallToNumberList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    new_criteria_name: Optional[str] = field(
        default=None, metadata={"alias": "newCriteriaName"}
    )

    time_schedule: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    filter: Optional[bool] = field(default=None, metadata={"alias": "filter"})

    from_dn_criteria: Optional[ExecutiveCallFilteringCriteriaFromDnModify] = field(
        default=None, metadata={"alias": "fromDnCriteria"}
    )

    call_to_number_list: Optional[Nillable[ReplacementCallToNumberList]] = field(
        default=None, metadata={"alias": "callToNumberList"}
    )

    def __post_init__(self):
        nillable_fields = ["time_schedule", "holiday_schedule", "call_to_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserExecutiveModifyScreeningAlertingRequest(OCIRequest):
    """Modify the screening and alerting setting of an executive.
        Both executive and the executive assistant can run this command.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        enable_screening (Optional[bool]):

        screening_alert_type (Optional[str]):

        alert_broad_works_mobility_location (Optional[bool]):

        alert_broad_works_anywhere_locations (Optional[bool]):

        alert_shared_call_appearance_locations (Optional[bool]):

        alerting_mode (Optional[str]):

        alerting_calling_line_id_name_mode (Optional[str]):

        alerting_custom_calling_line_id_name (Optional[Nillable[str]]):

        unicode_alerting_custom_calling_line_id_name (Optional[Nillable[str]]):

        alerting_calling_line_id_phone_number_mode (Optional[str]):

        alerting_custom_calling_line_id_phone_number (Optional[Nillable[str]]):

        call_push_recall_number_of_rings (Optional[int]):

        next_assistant_number_of_rings (Optional[int]):

        enable_rollover (Optional[bool]):

        rollover_wait_time_seconds (Optional[Nillable[int]]):

        rollover_action (Optional[str]):

        rollover_forward_to_phone_number (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    enable_screening: Optional[bool] = field(
        default=None, metadata={"alias": "enableScreening"}
    )

    screening_alert_type: Optional[str] = field(
        default=None, metadata={"alias": "screeningAlertType"}
    )

    alert_broad_works_mobility_location: Optional[bool] = field(
        default=None, metadata={"alias": "alertBroadWorksMobilityLocation"}
    )

    alert_broad_works_anywhere_locations: Optional[bool] = field(
        default=None, metadata={"alias": "alertBroadWorksAnywhereLocations"}
    )

    alert_shared_call_appearance_locations: Optional[bool] = field(
        default=None, metadata={"alias": "alertSharedCallAppearanceLocations"}
    )

    alerting_mode: Optional[str] = field(
        default=None, metadata={"alias": "alertingMode"}
    )

    alerting_calling_line_id_name_mode: Optional[str] = field(
        default=None, metadata={"alias": "alertingCallingLineIdNameMode"}
    )

    alerting_custom_calling_line_id_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "alertingCustomCallingLineIdName"}
    )

    unicode_alerting_custom_calling_line_id_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "unicodeAlertingCustomCallingLineIdName"}
    )

    alerting_calling_line_id_phone_number_mode: Optional[str] = field(
        default=None, metadata={"alias": "alertingCallingLineIdPhoneNumberMode"}
    )

    alerting_custom_calling_line_id_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "alertingCustomCallingLineIdPhoneNumber"}
    )

    call_push_recall_number_of_rings: Optional[int] = field(
        default=None, metadata={"alias": "callPushRecallNumberOfRings"}
    )

    next_assistant_number_of_rings: Optional[int] = field(
        default=None, metadata={"alias": "nextAssistantNumberOfRings"}
    )

    enable_rollover: Optional[bool] = field(
        default=None, metadata={"alias": "enableRollover"}
    )

    rollover_wait_time_seconds: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "rolloverWaitTimeSeconds"}
    )

    rollover_action: Optional[str] = field(
        default=None, metadata={"alias": "rolloverAction"}
    )

    rollover_forward_to_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "rolloverForwardToPhoneNumber"}
    )

    def __post_init__(self):
        nillable_fields = [
            "alerting_custom_calling_line_id_name",
            "unicode_alerting_custom_calling_line_id_name",
            "alerting_custom_calling_line_id_phone_number",
            "rollover_wait_time_seconds",
            "rollover_forward_to_phone_number",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserExternalCallingLineIDDeliveryGetRequest(OCIRequest):
    """Request the user level data associated with External Calling Line ID Delivery.
        The response is either a UserExternalCallingLineIDDeliveryGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserExternalCallingLineIDDeliveryModifyRequest(OCIRequest):
    """Modify the user level data associated with External Calling Line ID Delivery.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserExternalCustomRingbackGetRequest(OCIRequest):
    """Request the user level data associated with External Custom Ringback.
        The response is either a UserExternalCustomRingbackGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserExternalCustomRingbackModifyRequest(OCIRequest):
    """Modify the user level data associated with External Custom Ringback.
        The user SIP URI, when selected, it replaces the SP address, port and prefix.
        The user SIP URI, if selected, is the Request URI of the SIP INVITE sent
        to the external server.  When the service provider data is used instead,
        the Request URI is constructed using the prefix, address, port and the user DN.
        The timeout value is the only SP configuration used when the user SIP URI is selected.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        use_setting_level (Optional[str]):

        sip_request_uri (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    use_setting_level: Optional[str] = field(
        default=None, metadata={"alias": "useSettingLevel"}
    )

    sip_request_uri: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "sipRequestURI"}
    )

    def __post_init__(self):
        nillable_fields = ["sip_request_uri"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserFaxMessagingGetRequest17sp1(OCIRequest):
    """Request the user level data associated with Fax Messaging.
        The response is either a UserFaxMessagingGetResponse17sp1 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserFaxMessagingModifyRequest(OCIRequest):
    """Modify the user level data associated with Fax Messaging.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        phone_number (Optional[Nillable[str]]):

        extension (Optional[Nillable[str]]):

        sip_alias_list (Optional[Nillable[ReplacementSIPAliasList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    extension: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "extension"}
    )

    sip_alias_list: Optional[Nillable[ReplacementSIPAliasList]] = field(
        default=None, metadata={"alias": "sipAliasList"}
    )

    def __post_init__(self):
        nillable_fields = ["phone_number", "extension", "sip_alias_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserFeatureAccessCodeGetListRequest21(OCIRequest):
    """Get the list of feature access codes for a user.
        The response is either a UserFeatureAccessCodeGetListResponse20 or an ErrorResponse.

        In release 20 the \"Call Recording\" FAC name is changed to
        \"Call Recording Start\".

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserFeatureAccessCodeModifyListRequest(OCIRequest):
    """Enable or disable a list of feature access codes for a user.
          The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        feature_access_code (Optional[List[UserFeatureAccessCodeModifyEntry]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    feature_access_code: Optional[List[UserFeatureAccessCodeModifyEntry]] = field(
        default=None, metadata={"alias": "featureAccessCode"}
    )


@dataclass(kw_only=True)
class UserFlexibleSeatingGuestGetAvailableHostListRequest(OCIRequest):
    """Get a list of hosts that can be assigned to flexible seating guests.
            The response is either UserFlexibleSeatingGuestGetAvailableUserListResponse or ErrorResponse. The response will include active hosts based on the following criteria.
    - host that has the equivalent device type as the guest, host already assigned to another guest and for a guest in a Service Provider host in the user’s group and for a user in an Enterprise a host within the user’s group and host in the user’s enterprise that has the accessLevel set to Enterprise.

        Attributes:

            user_id (str):

            response_size_limit (Optional[int]):

            search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

            search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

            search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

            search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

            search_criteria_dn (Optional[List[SearchCriteriaDn]]):

            search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class UserFlexibleSeatingGuestGetRequest22(OCIRequest):
    """Request the user level data associated with flexible seating guest.
        The response is either a UserFlexibleSeatingGuestGetResponse22 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserFlexibleSeatingGuestModifyRequest22(OCIRequest):
    """Modify the user level data associated with flexible seating guest.
                accessDeviceEndpoint can only be configured by group or a higher level administrator.
                The request fails if isActive is set to false and the guest is associated to a host.
                The request fails when enableAssociationLimit, associationLimitHours, unlockPhonePINCode are changed when the guest is associated to a host.
                The request fails when accessDeviceEndpoint is set in the request when the guest is associated to a host.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        enable_association_limit (Optional[bool]):

        association_limit_hours (Optional[int]):

        unlock_phone_pin_code (Optional[Nillable[str]]):

        access_device_endpoint (Optional[Nillable[AccessDeviceMultipleContactEndpointModify22]]):

        host_user_id (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    enable_association_limit: Optional[bool] = field(
        default=None, metadata={"alias": "enableAssociationLimit"}
    )

    association_limit_hours: Optional[int] = field(
        default=None, metadata={"alias": "associationLimitHours"}
    )

    unlock_phone_pin_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "unlockPhonePINCode"}
    )

    access_device_endpoint: Optional[
        Nillable[AccessDeviceMultipleContactEndpointModify22]
    ] = field(default=None, metadata={"alias": "accessDeviceEndpoint"})

    host_user_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "hostUserId"}
    )

    def __post_init__(self):
        nillable_fields = [
            "unlock_phone_pin_code",
            "access_device_endpoint",
            "host_user_id",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserGetListInGroupPagedSortedListRequest(OCIRequest):
    """Request the list of users in a group.
        The response is either a UserGetListInGroupPagedSortedListResponse or an ErrorResponse.

        If the responsePagingControl element is not provided, the paging startIndex will be set to 1
        by default, and the responsePageSize will be set to the maximum ResponsePageSize by default.
        It is possible to search by various criteria to restrict the number of rows returned.

        If no sortOrder is included the response is sorted by User Id ascending by default.

        A limitation to the search by DN activation exists when the Number Activation mode is set to
        Off. In this case DNs not assigned to users are never returned by queries with the
        \"dnActivationSearchCriteria\" included.

        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option is included.
        Then the search criteria are logically ORed together.


        The following elements are used in AS data mode and ignored in XS data mode:
           groupExternalId

    Attributes:

        service_provider_id (Optional[str]):

        group_id (Optional[str]):

        group_external_id (Optional[str]):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_order (Optional[List[SortOrderUserGetListInGroupPagedSortedList]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_exact_user_in_trunk_group (Optional[SearchCriteriaExactUserInTrunkGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_external_id (Optional[List[SearchCriteriaUserExternalId]]):

        search_criteria_exact_user_person_id (Optional[SearchCriteriaExactUserPersonId]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_dn_activation (Optional[SearchCriteriaExactDnActivation]):

        search_criteria_mode_or (Optional[bool]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    group_external_id: Optional[str] = field(
        default=None, metadata={"alias": "groupExternalId"}
    )

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_order: Optional[List[SortOrderUserGetListInGroupPagedSortedList]] = field(
        default=None, metadata={"alias": "sortOrder"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_exact_user_in_trunk_group: Optional[
        SearchCriteriaExactUserInTrunkGroup
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserInTrunkGroup"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_external_id: Optional[List[SearchCriteriaUserExternalId]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserExternalId"})
    )

    search_criteria_exact_user_person_id: Optional[SearchCriteriaExactUserPersonId] = (
        field(default=None, metadata={"alias": "searchCriteriaExactUserPersonId"})
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_dn_activation: Optional[SearchCriteriaExactDnActivation] = (
        field(default=None, metadata={"alias": "searchCriteriaExactDnActivation"})
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class UserGetListInGroupRequest(OCIRequest):
    """Request the list of users in a group.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        The response is either a UserGetListInGroupResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        group_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_in_trunk_group (Optional[SearchCriteriaExactUserInTrunkGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_external_id (Optional[List[SearchCriteriaUserExternalId]]):

        search_criteria_exact_user_person_id (Optional[SearchCriteriaExactUserPersonId]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "GroupId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_in_trunk_group: Optional[
        SearchCriteriaExactUserInTrunkGroup
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserInTrunkGroup"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_external_id: Optional[List[SearchCriteriaUserExternalId]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserExternalId"})
    )

    search_criteria_exact_user_person_id: Optional[SearchCriteriaExactUserPersonId] = (
        field(default=None, metadata={"alias": "searchCriteriaExactUserPersonId"})
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class UserGetListInServiceProviderRequest(OCIRequest):
    """Request the list of users in a service provider or enterprise.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.

        The following elements are only used in AS data mode and ignored in XS data mode:
           serviceProviderExternalId

        The response is either a UserGetListInServiceProviderResponse or an ErrorResponse.

    Attributes:

        service_provider_id (Optional[str]):

        service_provider_external_id (Optional[str]):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_exact_user_in_trunk_group (Optional[SearchCriteriaExactUserInTrunkGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_external_id (Optional[List[SearchCriteriaUserExternalId]]):

        search_criteria_exact_user_person_id (Optional[SearchCriteriaExactUserPersonId]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

    """

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    service_provider_external_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderExternalId"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_exact_user_in_trunk_group: Optional[
        SearchCriteriaExactUserInTrunkGroup
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserInTrunkGroup"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_external_id: Optional[List[SearchCriteriaUserExternalId]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserExternalId"})
    )

    search_criteria_exact_user_person_id: Optional[SearchCriteriaExactUserPersonId] = (
        field(default=None, metadata={"alias": "searchCriteriaExactUserPersonId"})
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})


@dataclass(kw_only=True)
class UserGetListInSystemRequest(OCIRequest):
    """Request the list of users in the system.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        If reseller administrator sends the request, searchCriteriaResellerId is ignored. All the users
        in the administrator's reseller meeting the search criteria are returned.

        The response is either a UserGetListInSystemResponse or an ErrorResponse.

        The following data elements are only used in AS data mode:
          searchCriteriaResellerId

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_exact_service_provider (Optional[SearchCriteriaExactServiceProvider]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_exact_user_in_trunk_group (Optional[SearchCriteriaExactUserInTrunkGroup]):

        search_criteria_exact_user_network_class_of_service (Optional[SearchCriteriaExactUserNetworkClassOfService]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_external_id (Optional[List[SearchCriteriaUserExternalId]]):

        search_criteria_exact_user_person_id (Optional[SearchCriteriaExactUserPersonId]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_reseller_id (Optional[List[SearchCriteriaResellerId]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_exact_service_provider: Optional[
        SearchCriteriaExactServiceProvider
    ] = field(default=None, metadata={"alias": "searchCriteriaExactServiceProvider"})

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_exact_user_in_trunk_group: Optional[
        SearchCriteriaExactUserInTrunkGroup
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserInTrunkGroup"})

    search_criteria_exact_user_network_class_of_service: Optional[
        SearchCriteriaExactUserNetworkClassOfService
    ] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserNetworkClassOfService"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_external_id: Optional[List[SearchCriteriaUserExternalId]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserExternalId"})
    )

    search_criteria_exact_user_person_id: Optional[SearchCriteriaExactUserPersonId] = (
        field(default=None, metadata={"alias": "searchCriteriaExactUserPersonId"})
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_reseller_id: Optional[List[SearchCriteriaResellerId]] = field(
        default=None, metadata={"alias": "searchCriteriaResellerId"}
    )


@dataclass(kw_only=True)
class UserGetLoginInfoRequestRI(OCIRequest):
    """UserGetLoginInfoRequestRI is used to access login information for a user
        either by a userId, dn or lineport.
        The phone number may be any DN associated with a user.
        The lineport may be any lineport associated with a user.

        The response is a UserGetLoginInfoResponseRI or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode.
          loginRole

    Attributes:

        user_id (Optional[str]):

        login_role (Optional[str]):

        phone_number (Optional[str]):

        line_port (Optional[str]):

    """

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})

    login_role: Optional[str] = field(default=None, metadata={"alias": "loginRole"})

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    line_port: Optional[str] = field(default=None, metadata={"alias": "linePort"})


@dataclass(kw_only=True)
class UserGetRegistrationListRequest(OCIRequest):
    """Request to get a list of registrations for a user.
        The response is either a UserGetRegistrationListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserGetRequest23V2(OCIRequest):
    """Request to get the user information.  The response is either
        UserGetResponse23V2 or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserGetServiceInstanceListInServiceProviderRequest(OCIRequest):
    """Request the list of Service Instances in a service provider or an enterprise.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together. searchCriteriaExactUserDepartment criteria is only applicable for an enterprise and is ignored if set for a service provider.
        The response is either a UserGetServiceInstanceListInServiceProviderResponse or an ErrorResponse.

    Attributes:

        service_provider_id (str):

        response_size_limit (Optional[int]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_exact_service_type (Optional[SearchCriteriaExactServiceType]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "SearchCriteriaGroupId"}
    )

    search_criteria_exact_service_type: Optional[SearchCriteriaExactServiceType] = (
        field(default=None, metadata={"alias": "SearchCriteriaExactServiceType"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})


@dataclass(kw_only=True)
class UserGetServiceInstanceListInSystemRequest(OCIRequest):
    """Request the list of Service Instances in the system.
        It is possible to search by various criteria to restrict the number of rows returned.
        Multiple search criteria are logically ANDed together.
        If reseller administrator sends the request, searchCriteriaResellerId is ignored. All the service
        instances in the administrator's reseller meeting the search criteria are returned.

        The response is either a UserGetServiceInstanceListInSystemResponse or an ErrorResponse.

        The following data elements are only used in AS data mode:
          searchCriteriaResellerId

    Attributes:

        response_size_limit (Optional[int]):

        search_criteria_exact_service_type (Optional[SearchCriteriaExactServiceType]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_group_id (Optional[List[SearchCriteriaGroupId]]):

        search_criteria_exact_service_provider (Optional[SearchCriteriaExactServiceProvider]):

        search_criteria_service_provider_id (Optional[List[SearchCriteriaServiceProviderId]]):

        search_criteria_reseller_id (Optional[List[SearchCriteriaResellerId]]):

    """

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_exact_service_type: Optional[SearchCriteriaExactServiceType] = (
        field(default=None, metadata={"alias": "searchCriteriaExactServiceType"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_group_id: Optional[List[SearchCriteriaGroupId]] = field(
        default=None, metadata={"alias": "searchCriteriaGroupId"}
    )

    search_criteria_exact_service_provider: Optional[
        SearchCriteriaExactServiceProvider
    ] = field(default=None, metadata={"alias": "searchCriteriaExactServiceProvider"})

    search_criteria_service_provider_id: Optional[
        List[SearchCriteriaServiceProviderId]
    ] = field(default=None, metadata={"alias": "searchCriteriaServiceProviderId"})

    search_criteria_reseller_id: Optional[List[SearchCriteriaResellerId]] = field(
        default=None, metadata={"alias": "searchCriteriaResellerId"}
    )


@dataclass(kw_only=True)
class UserGroupCommonPhoneListGetPagedSortedListRequest(OCIRequest):
    """Get a user's group's common phone list.
                                The response is either a UserGroupCommonPhoneListGetPagedSortedListResponse or an
                                ErrorResponse.
                                The search can be done using multiple criterion.
                                If the searchCriteriaModeOr is present, any result matching any one
                                criteria is included in the results.
                                Otherwise, only results matching all the search criterion are included in the
                                results.
                                If no search criteria is specified, all results are returned.
                                Specifying searchCriteriaModeOr without any search criteria results
                                in an ErrorResponse.
                                The sort can be done on the name or the number in the common phone list.
                                The following elements are only used in AS data mode and ignored in XS data
                                mode:
                                searchCriteriaGroupCommonMultiPartPhoneListName

    Attributes:

        user_id (str):

        response_paging_control (ResponsePagingControl):

        sort_by_group_common_phone_list_number (Optional[SortByGroupCommonPhoneListNumber]):

        sort_by_group_common_phone_list_name (Optional[SortByGroupCommonPhoneListName]):

        search_criteria_mode_or (Optional[bool]):

        search_criteria_group_common_phone_list_name (Optional[List[SearchCriteriaGroupCommonPhoneListName]]):

        search_criteria_group_common_phone_list_number (Optional[List[SearchCriteriaGroupCommonPhoneListNumber]]):

        search_criteria_group_common_multi_part_phone_list_name (Optional[List[SearchCriteriaGroupCommonMultiPartPhoneListName]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    response_paging_control: ResponsePagingControl = field(
        metadata={"alias": "responsePagingControl"}
    )

    sort_by_group_common_phone_list_number: Optional[
        SortByGroupCommonPhoneListNumber
    ] = field(default=None, metadata={"alias": "sortByGroupCommonPhoneListNumber"})

    sort_by_group_common_phone_list_name: Optional[SortByGroupCommonPhoneListName] = (
        field(default=None, metadata={"alias": "sortByGroupCommonPhoneListName"})
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )

    search_criteria_group_common_phone_list_name: Optional[
        List[SearchCriteriaGroupCommonPhoneListName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaGroupCommonPhoneListName"}
    )

    search_criteria_group_common_phone_list_number: Optional[
        List[SearchCriteriaGroupCommonPhoneListNumber]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaGroupCommonPhoneListNumber"}
    )

    search_criteria_group_common_multi_part_phone_list_name: Optional[
        List[SearchCriteriaGroupCommonMultiPartPhoneListName]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaGroupCommonMultiPartPhoneListName"},
    )


@dataclass(kw_only=True)
class UserGroupCustomContactDirectoryGetPagedSortedListRequest(OCIRequest):
    """Gets a Custom Contact Directory in a group.
                                The response is either UserGroupCustomContactDirectoryGetPagedSortedListResponse
                                or ErrorResponse.
                                The search can be done using multiple criterion.
                                If the searchCriteriaModeOr is present, any result matching any one
                                criteria is included in the results.
                                Otherwise, only results matching all the search criterion are included in the
                                results.
                                If no search criteria is specified, all results are returned.
                                Specifying searchCriteriaModeOr without any search criteria results
                                in an ErrorResponse.
                                The sort can be done on the user last name, first name, department, or
        contact notes.  The Receptionist Note column is only populated, if the
        user sending the request is a the owner of this Receptionist Note and a Note
        exists.

    Attributes:

        user_id (str):

        name (str):

        response_paging_control (ResponsePagingControl):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_user_department (Optional[SortByUserDepartment]):

        sort_by_receptionist_note (Optional[SortByReceptionistNote]):

        search_criteria_mode_or (Optional[bool]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_mobile_phone_number (Optional[List[SearchCriteriaMobilePhoneNumber]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_imp_id (Optional[List[SearchCriteriaImpId]]):

        search_criteria_title (Optional[List[SearchCriteriaTitle]]):

        search_criteria_receptionist_note (Optional[List[SearchCriteriaReceptionistNote]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    name: str = field(metadata={"alias": "name"})

    response_paging_control: ResponsePagingControl = field(
        metadata={"alias": "responsePagingControl"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_user_department: Optional[SortByUserDepartment] = field(
        default=None, metadata={"alias": "sortByUserDepartment"}
    )

    sort_by_receptionist_note: Optional[SortByReceptionistNote] = field(
        default=None, metadata={"alias": "sortByReceptionistNote"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_mobile_phone_number: Optional[
        List[SearchCriteriaMobilePhoneNumber]
    ] = field(default=None, metadata={"alias": "searchCriteriaMobilePhoneNumber"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_imp_id: Optional[List[SearchCriteriaImpId]] = field(
        default=None, metadata={"alias": "searchCriteriaImpId"}
    )

    search_criteria_title: Optional[List[SearchCriteriaTitle]] = field(
        default=None, metadata={"alias": "searchCriteriaTitle"}
    )

    search_criteria_receptionist_note: Optional[
        List[SearchCriteriaReceptionistNote]
    ] = field(default=None, metadata={"alias": "searchCriteriaReceptionistNote"})


@dataclass(kw_only=True)
class UserGroupNightForwardingGetRequest(OCIRequest):
    """Request to get the Group Night Forwarding user parameters.
        The response is either UserGroupNightForwardingGetResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserGroupNightForwardingModifyRequest(OCIRequest):
    """Request to modify the Group Night Forwarding user parameters.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        night_forwarding (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    night_forwarding: Optional[str] = field(
        default=None, metadata={"alias": "nightForwarding"}
    )


@dataclass(kw_only=True)
class UserGroupPagingGetListRequest(OCIRequest):
    """Get the list of all the Paging Groups a user was assigned as an originator.
        The response is either a UserGroupPagingGetListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserHotelingGuestGetAvailableUserListRequest(OCIRequest):
    """Get a list of users that can be assigned as Hoteling Guests.
        The response is either UserHotelingGuestGetAvailableUserListResponse or ErrorResponse.

    Attributes:

        user_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )


@dataclass(kw_only=True)
class UserHotelingGuestGetRequest14sp4(OCIRequest):
    """Request the user level data associated with Hoteling Guest.
        The response is either a UserHotelingGuestGetResponse14sp4 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserHotelingGuestModifyRequest21(OCIRequest):
    """Modify the user level data associated with Hoteling Guest.
        Provisioning error will be given when setting hostUserId to not nil value while Hoteling Guest feature is not active.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        enable_association_limit (Optional[bool]):

        association_limit_hours (Optional[int]):

        host_user_id (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    enable_association_limit: Optional[bool] = field(
        default=None, metadata={"alias": "enableAssociationLimit"}
    )

    association_limit_hours: Optional[int] = field(
        default=None, metadata={"alias": "associationLimitHours"}
    )

    host_user_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "hostUserId"}
    )

    def __post_init__(self):
        nillable_fields = ["host_user_id"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserHotelingHostGetRequest17(OCIRequest):
    """Request the user level data associated with Hoteling Host.
        The response is either a UserHotelingHostGetResponse17 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserHotelingHostModifyRequest(OCIRequest):
    """Modify the user level data associated with Hoteling Host.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        enforce_association_limit (Optional[bool]):

        association_limit_hours (Optional[int]):

        access_level (Optional[str]):

        remove_guest_association (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    enforce_association_limit: Optional[bool] = field(
        default=None, metadata={"alias": "enforceAssociationLimit"}
    )

    association_limit_hours: Optional[int] = field(
        default=None, metadata={"alias": "associationLimitHours"}
    )

    access_level: Optional[str] = field(default=None, metadata={"alias": "accessLevel"})

    remove_guest_association: Optional[bool] = field(
        default=None, metadata={"alias": "removeGuestAssociation"}
    )


@dataclass(kw_only=True)
class UserINIntegrationGetRequest(OCIRequest):
    """Request to get the user level IN Integration service attributes
        Response is either UserINIntegrationGetResponse or ErrorResponse

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserINIntegrationModifyRequest(OCIRequest):
    """Request to modify the user level IN Integration service attributes
        Response is either SuccessResponse or ErrorResponse

    Attributes:

        user_id (str):

        originating_service_key (Optional[Nillable[int]]):

        terminating_service_key (Optional[Nillable[int]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    originating_service_key: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "originatingServiceKey"}
    )

    terminating_service_key: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "terminatingServiceKey"}
    )

    def __post_init__(self):
        nillable_fields = ["originating_service_key", "terminating_service_key"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserInCallServiceActivationGetRequest(OCIRequest):
    """Request the user level data associated with In-Call Service Activation.
        The response is either a UserInCallServiceActivationGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserInCallServiceActivationModifyRequest(OCIRequest):
    """Modify the user level data associated with In-Call Service Activation.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserIncomingCallingPlanGetRequest(OCIRequest):
    """Request the user's incoming calling plan settings.
        The response is either a UserIncomingCallingPlanGetListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserIncomingCallingPlanModifyRequest(OCIRequest):
    """Change the user's incoming calling plan settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        use_custom_settings (Optional[bool]):

        user_permissions (Optional[IncomingCallingPlanPermissionsModify]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    use_custom_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomSettings"}
    )

    user_permissions: Optional[IncomingCallingPlanPermissionsModify] = field(
        default=None, metadata={"alias": "userPermissions"}
    )


@dataclass(kw_only=True)
class UserIntegratedIMPGeneratePasswordRequest(OCIRequest):
    """Generate a new IMP password for the user. The new generated password is synchronized to BroadCloud/service Messaging Server.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserIntegratedIMPGetRequest21sp1(OCIRequest):
    """Get the Integrated IMP specific service attribute for the user.
        The response is either UserIMPGetResponse21sp1 or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserIntegratedIMPModifyRequest(OCIRequest):
    """Modifies the Integrated IMP specific service attribute for the user.
        The response is either a SuccessResponse or an ErrorResponse.
        If the impId element is set in the request, the impId element does
        not take effect on the service for the user unless the request also
        has the isActive element set to true to turn the service from off
        to on.
        If impId is based on an alternate user ID and the impId and userId
        are identical, isAlternateImpId should be set to true to determine
        that impId is the user's alternate ID.
        The following elements are only used in AS data mode and ignored in
        XS data mode:
          impId
          isAlternateImpId

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        imp_id (Optional[str]):

        is_alternate_imp_id (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    imp_id: Optional[str] = field(default=None, metadata={"alias": "impId"})

    is_alternate_imp_id: Optional[bool] = field(
        default=None, metadata={"alias": "isAlternateImpId"}
    )


@dataclass(kw_only=True)
class UserInterceptUserGetRequest21sp1(OCIRequest):
    """Get the user's intercept user service settings.
        The response is either a UserInterceptUserGetResponse21sp1 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserInterceptUserModifyRequest21sp1(OCIRequest):
    """Modify the user's intercept user service settings.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements are only used in AS data mode and ignored in XS data mode:
          exemptInboundMobilityCalls
          exemptOutboundMobilityCalls
          disableParallelRingingToNetworkLocations

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        announcement_selection (Optional[str]):

        audio_file (Optional[LabeledMediaFileResource]):

        video_file (Optional[LabeledMediaFileResource]):

        inbound_call_mode (Optional[str]):

        alternate_blocking_announcement (Optional[bool]):

        exempt_inbound_mobility_calls (Optional[bool]):

        disable_parallel_ringing_to_network_locations (Optional[bool]):

        route_to_voice_mail (Optional[bool]):

        play_new_phone_number (Optional[bool]):

        new_phone_number (Optional[Nillable[str]]):

        transfer_on_zero_to_phone_number (Optional[bool]):

        transfer_phone_number (Optional[Nillable[str]]):

        outbound_call_mode (Optional[str]):

        exempt_outbound_mobility_calls (Optional[bool]):

        reroute_outbound_calls (Optional[bool]):

        outbound_reroute_phone_number (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    announcement_selection: Optional[str] = field(
        default=None, metadata={"alias": "announcementSelection"}
    )

    audio_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[LabeledMediaFileResource] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    inbound_call_mode: Optional[str] = field(
        default=None, metadata={"alias": "inboundCallMode"}
    )

    alternate_blocking_announcement: Optional[bool] = field(
        default=None, metadata={"alias": "alternateBlockingAnnouncement"}
    )

    exempt_inbound_mobility_calls: Optional[bool] = field(
        default=None, metadata={"alias": "exemptInboundMobilityCalls"}
    )

    disable_parallel_ringing_to_network_locations: Optional[bool] = field(
        default=None, metadata={"alias": "disableParallelRingingToNetworkLocations"}
    )

    route_to_voice_mail: Optional[bool] = field(
        default=None, metadata={"alias": "routeToVoiceMail"}
    )

    play_new_phone_number: Optional[bool] = field(
        default=None, metadata={"alias": "playNewPhoneNumber"}
    )

    new_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "newPhoneNumber"}
    )

    transfer_on_zero_to_phone_number: Optional[bool] = field(
        default=None, metadata={"alias": "transferOnZeroToPhoneNumber"}
    )

    transfer_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    outbound_call_mode: Optional[str] = field(
        default=None, metadata={"alias": "outboundCallMode"}
    )

    exempt_outbound_mobility_calls: Optional[bool] = field(
        default=None, metadata={"alias": "exemptOutboundMobilityCalls"}
    )

    reroute_outbound_calls: Optional[bool] = field(
        default=None, metadata={"alias": "rerouteOutboundCalls"}
    )

    outbound_reroute_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "outboundReroutePhoneNumber"}
    )

    def __post_init__(self):
        nillable_fields = [
            "new_phone_number",
            "transfer_phone_number",
            "outbound_reroute_phone_number",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserInternalCallingLineIDDeliveryGetRequest(OCIRequest):
    """Request the user level data associated with Internal Calling Line ID Delivery.
        The response is either a UserInternalCallingLineIDDeliveryGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserInternalCallingLineIDDeliveryModifyRequest(OCIRequest):
    """Modify the user level data associated with Internal Calling Line ID Delivery.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserLegacyAutomaticCallbackGetRequest(OCIRequest):
    """Request the user level data associated with Legacy Automatic Callback.
        The response is either a UserLegacyAutomaticCallbackGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserLegacyAutomaticCallbackModifyRequest(OCIRequest):
    """Modify the user level data associated with Legacy Automatic Callback.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserLinePortGetListRequest(OCIRequest):
    """Request to get all user's configured line ports.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserMWIDeliveryToMobileEndpointGetRequest23(OCIRequest):
    """Request the user level data associated with MWI Delivery to Mobile Endpoint service.
        The response is either a UserMWIDeliveryToMobileEndpointGetResponse23 or an ErrorResponse.

           The following elements are only used in AS data mode:
           sendMissedCallAlert

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserMWIDeliveryToMobileEndpointModifyRequest(OCIRequest):
    """Request to modify the user level data associated with MWI Delivery to Mobile Endpoint service.
        The response is either a SuccessResponse or an ErrorResponse.

        The following element is only used in AS data mode:
           sendMissedCallAlert

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        mobile_phone_number (Optional[Nillable[str]]):

        send_missed_call_alert (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    mobile_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "mobilePhoneNumber"}
    )

    send_missed_call_alert: Optional[bool] = field(
        default=None, metadata={"alias": "sendMissedCallAlert"}
    )

    def __post_init__(self):
        nillable_fields = ["mobile_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserMaliciousCallTraceGetRequest(OCIRequest):
    """Request the user level data associated with Malicious Call Trace.
        The response is either a UserMaliciousCallTraceGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserMaliciousCallTraceModifyRequest(OCIRequest):
    """Modify the user level data associated with Malicious Call Trace.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        trace_type_selection (Optional[str]):

        trace_for_time_period (Optional[bool]):

        trace_time_period (Optional[Nillable[MaliciousCallTraceTimePeriod]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    trace_type_selection: Optional[str] = field(
        default=None, metadata={"alias": "traceTypeSelection"}
    )

    trace_for_time_period: Optional[bool] = field(
        default=None, metadata={"alias": "traceForTimePeriod"}
    )

    trace_time_period: Optional[Nillable[MaliciousCallTraceTimePeriod]] = field(
        default=None, metadata={"alias": "traceTimePeriod"}
    )

    def __post_init__(self):
        nillable_fields = ["trace_time_period"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserMeetMeConferencingAddConferenceRequest23(OCIRequest):
    """Add a Meet-Me conference.
        The response is either UserMeetMeConferencingAddConferenceResponse23 or ErrorResponse.
        The startTime element is adjusted to the first occurrence of the recurrent schedule that comes at or after the startTime.
        The startTime, endTime and recurrence information for a conferenceSchedule element will be adjusted to the user Host time zone.

    Attributes:

        user_id (str):

        bridge_id (str):

        title (str):

        estimated_participants (Optional[int]):

        restrict_participants (Optional[bool]):

        max_participants (Optional[int]):

        account_code (Optional[str]):

        mute_all_attendees_on_entry (bool):

        end_conference_on_moderator_exit (bool):

        moderator_required (bool):

        require_security_pin (bool):

        allow_unique_identifier (bool):

        attendee_notification (str):

        conference_schedule (MeetMeConferencingConferenceSchedule):

        allow_participant_unmute_in_auto_lecture_mode (bool):

    """

    user_id: str = field(metadata={"alias": "userId"})

    bridge_id: str = field(metadata={"alias": "bridgeId"})

    title: str = field(metadata={"alias": "title"})

    estimated_participants: Optional[int] = field(
        default=None, metadata={"alias": "estimatedParticipants"}
    )

    restrict_participants: Optional[bool] = field(
        default=None, metadata={"alias": "restrictParticipants"}
    )

    max_participants: Optional[int] = field(
        default=None, metadata={"alias": "maxParticipants"}
    )

    account_code: Optional[str] = field(default=None, metadata={"alias": "accountCode"})

    mute_all_attendees_on_entry: bool = field(
        metadata={"alias": "muteAllAttendeesOnEntry"}
    )

    end_conference_on_moderator_exit: bool = field(
        metadata={"alias": "endConferenceOnModeratorExit"}
    )

    moderator_required: bool = field(metadata={"alias": "moderatorRequired"})

    require_security_pin: bool = field(metadata={"alias": "requireSecurityPin"})

    allow_unique_identifier: bool = field(metadata={"alias": "allowUniqueIdentifier"})

    attendee_notification: str = field(metadata={"alias": "attendeeNotification"})

    conference_schedule: MeetMeConferencingConferenceSchedule = field(
        metadata={"alias": "conferenceSchedule"}
    )

    allow_participant_unmute_in_auto_lecture_mode: bool = field(
        metadata={"alias": "allowParticipantUnmuteInAutoLectureMode"}
    )


@dataclass(kw_only=True)
class UserMeetMeConferencingDeleteConferenceListRequest(OCIRequest):
    """Request to delete one or more conferences which are owned by the user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        conference_key (List[MeetMeConferencingConferenceKey]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    conference_key: List[MeetMeConferencingConferenceKey] = field(
        metadata={"alias": "conferenceKey"}
    )


@dataclass(kw_only=True)
class UserMeetMeConferencingDeleteConferenceRecordingListRequest(OCIRequest):
    """Request to delete one or more conference recordings owned by the user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        recording_key (List[MeetMeConferencingConferenceRecordingKey]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    recording_key: List[MeetMeConferencingConferenceRecordingKey] = field(
        metadata={"alias": "recordingKey"}
    )


@dataclass(kw_only=True)
class UserMeetMeConferencingGetAvailableDelegateListRequest(OCIRequest):
    """Get a list of users that can be assigned as a delegate to a Meet-Me Conference.
        Searching for users, who are host on a Meet-Me Conferencing bridge.
        The response is either UserMeetMeConferencingGetAvailableDelegateListResponse or ErrorResponse.

    Attributes:

        user_id (str):

        conference_key (MeetMeConferencingConferenceKey):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    conference_key: MeetMeConferencingConferenceKey = field(
        metadata={"alias": "conferenceKey"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})


@dataclass(kw_only=True)
class UserMeetMeConferencingGetBridgeListRequest(OCIRequest):
    """Get the list of Meet-Me Conferencing bridges for which the user is a host.
        The response is either UserMeetMeConferencingGetBridgeListResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserMeetMeConferencingGetConferenceDelegateListRequest(OCIRequest):
    """Get the conference delegates for this conference.
        The response is either UserMeetMeConferencingGetConferenceDelegateListResponse or ErrorResponse.

    Attributes:

        user_id (str):

        conference_key (MeetMeConferencingConferenceKey):

    """

    user_id: str = field(metadata={"alias": "userId"})

    conference_key: MeetMeConferencingConferenceKey = field(
        metadata={"alias": "conferenceKey"}
    )


@dataclass(kw_only=True)
class UserMeetMeConferencingGetConferenceGreetingRequest20(OCIRequest):
    """Get the information of a conference custom greeting.
        The response is either UserMeetMeConferencingGetConferenceGreetingResponse20 or ErrorResponse.

    Attributes:

        user_id (str):

        conference_key (MeetMeConferencingConferenceKey):

    """

    user_id: str = field(metadata={"alias": "userId"})

    conference_key: MeetMeConferencingConferenceKey = field(
        metadata={"alias": "conferenceKey"}
    )


@dataclass(kw_only=True)
class UserMeetMeConferencingGetConferenceListRequest(OCIRequest):
    """Get the list of all conferences for which user is a host or a delegate.
        The response is either UserMeetMeConferencingGetConferenceListResponse or ErrorResponse.

    Attributes:

        user_id (str):

        bridge_id (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    bridge_id: Optional[str] = field(default=None, metadata={"alias": "bridgeId"})


@dataclass(kw_only=True)
class UserMeetMeConferencingGetConferenceRecordingListRequest(OCIRequest):
    """Get the list of recordings of the conferences owned by the host.
        The response is either UserMeetMeConferencingGetConferenceRecordingListResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserMeetMeConferencingGetConferenceRequest23(OCIRequest):
    """Get the information of a conference owned by the user.
        The response is either UserMeetMeConferencingGetConferenceResponse23 or ErrorResponse.

    Attributes:

        user_id (str):

        conference_key (MeetMeConferencingConferenceKey):

    """

    user_id: str = field(metadata={"alias": "userId"})

    conference_key: MeetMeConferencingConferenceKey = field(
        metadata={"alias": "conferenceKey"}
    )


@dataclass(kw_only=True)
class UserMeetMeConferencingModifyConferenceDelegateListRequest(OCIRequest):
    """Modify the existing conference delegates list.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        conference_key (MeetMeConferencingConferenceKey):

        conference_delegate_user_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    conference_key: MeetMeConferencingConferenceKey = field(
        metadata={"alias": "conferenceKey"}
    )

    conference_delegate_user_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "conferenceDelegateUserList"}
    )

    def __post_init__(self):
        nillable_fields = ["conference_delegate_user_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserMeetMeConferencingModifyConferenceGreetingExecutionServerRequest(OCIRequest):
    """Modify an existing custom greeting audio file.
        The response is either SuccessResponse or ErrorResponse.
        Engineering Note: This command can only be executed from the Execution Server

    Attributes:

        user_id (str):

        conference_key (MeetMeConferencingConferenceKey):

        play_entrance_greeting (Optional[bool]):

        entrance_greeting_file (Optional[LabeledFileNameResource]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    conference_key: MeetMeConferencingConferenceKey = field(
        metadata={"alias": "conferenceKey"}
    )

    play_entrance_greeting: Optional[bool] = field(
        default=None, metadata={"alias": "playEntranceGreeting"}
    )

    entrance_greeting_file: Optional[LabeledFileNameResource] = field(
        default=None, metadata={"alias": "entranceGreetingFile"}
    )


@dataclass(kw_only=True)
class UserMeetMeConferencingModifyConferenceGreetingRequest20(OCIRequest):
    """Modify an existing custom greeting audio file.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        conference_key (MeetMeConferencingConferenceKey):

        play_entrance_greeting (Optional[bool]):

        entrance_greeting_file (Optional[Nillable[AnnouncementFileKey]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    conference_key: MeetMeConferencingConferenceKey = field(
        metadata={"alias": "conferenceKey"}
    )

    play_entrance_greeting: Optional[bool] = field(
        default=None, metadata={"alias": "playEntranceGreeting"}
    )

    entrance_greeting_file: Optional[Nillable[AnnouncementFileKey]] = field(
        default=None, metadata={"alias": "entranceGreetingFile"}
    )

    def __post_init__(self):
        nillable_fields = ["entrance_greeting_file"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserMeetMeConferencingModifyConferenceRequest(OCIRequest):
    """Modify an existing conference.
        The response is either SuccessResponse or ErrorResponse.
        The startTime element is adjusted to the first occurrence of the recurrent schedule that comes at or after the startTime.
        The startTime, endTime and recurrence information for a conferenceSchedule element will be adjusted to the user Host time zone.

    Attributes:

        user_id (str):

        conference_key (MeetMeConferencingConferenceKey):

        title (Optional[str]):

        estimated_participants (Optional[Nillable[int]]):

        restrict_participants (Optional[bool]):

        max_participants (Optional[int]):

        account_code (Optional[Nillable[str]]):

        mute_all_attendees_on_entry (Optional[bool]):

        end_conference_on_moderator_exit (Optional[bool]):

        moderator_required (Optional[bool]):

        require_security_pin (Optional[bool]):

        allow_unique_identifier (Optional[bool]):

        attendee_notification (Optional[str]):

        conference_schedule (Optional[MeetMeConferencingConferenceSchedule]):

        allow_participant_unmute_in_auto_lecture_mode (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    conference_key: MeetMeConferencingConferenceKey = field(
        metadata={"alias": "conferenceKey"}
    )

    title: Optional[str] = field(default=None, metadata={"alias": "title"})

    estimated_participants: Optional[Nillable[int]] = field(
        default=None, metadata={"alias": "estimatedParticipants"}
    )

    restrict_participants: Optional[bool] = field(
        default=None, metadata={"alias": "restrictParticipants"}
    )

    max_participants: Optional[int] = field(
        default=None, metadata={"alias": "maxParticipants"}
    )

    account_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "accountCode"}
    )

    mute_all_attendees_on_entry: Optional[bool] = field(
        default=None, metadata={"alias": "muteAllAttendeesOnEntry"}
    )

    end_conference_on_moderator_exit: Optional[bool] = field(
        default=None, metadata={"alias": "endConferenceOnModeratorExit"}
    )

    moderator_required: Optional[bool] = field(
        default=None, metadata={"alias": "moderatorRequired"}
    )

    require_security_pin: Optional[bool] = field(
        default=None, metadata={"alias": "requireSecurityPin"}
    )

    allow_unique_identifier: Optional[bool] = field(
        default=None, metadata={"alias": "allowUniqueIdentifier"}
    )

    attendee_notification: Optional[str] = field(
        default=None, metadata={"alias": "attendeeNotification"}
    )

    conference_schedule: Optional[MeetMeConferencingConferenceSchedule] = field(
        default=None, metadata={"alias": "conferenceSchedule"}
    )

    allow_participant_unmute_in_auto_lecture_mode: Optional[bool] = field(
        default=None, metadata={"alias": "allowParticipantUnmuteInAutoLectureMode"}
    )

    def __post_init__(self):
        nillable_fields = ["estimated_participants", "account_code"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserModifyGroupIdRequest(OCIRequest):
    """Move the user from one group to another group within the same enterprise.
          If evaluateOnly is specified, no actual move will happen. The command only tests the move and reports the impacts or possible conditions preventing the move.
          The response is either UserModifyGroupIdResponse or ErrorResponse.

    Attributes:

        user_id (str):

        new_group_id (str):

        evaluate_only (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    new_group_id: str = field(metadata={"alias": "newGroupId"})

    evaluate_only: Optional[bool] = field(
        default=None, metadata={"alias": "evaluateOnly"}
    )


@dataclass(kw_only=True)
class UserModifyRequest22(OCIRequest):
    """The following data elements are only used in AS data mode:
          contact[2]-contact[5]
        The following elements are only used in AS data mode and will fail in XS data mode:
          trunkAddressing
          newUserExternalId
        The following elements are only used in AS data mode and ignored in XS data mode:
          nameDialingName
          alternateUserIdList
          newUserExternalId

        The following elements are only used in XS data mode and ignored in AS data mode:
          allowVideo

        The allowVideo element can only be used by a system administrator.

        The impId and impPassword are accepted when the Third-Party IMP service is assigned to the user;
        when Integrated IMP service is assigned to the user and active, only the impPassword is accepted;
        all other cases, the request fails if either field is changed.

    Attributes:

        user_id (str):

        last_name (Optional[str]):

        first_name (Optional[str]):

        calling_line_id_last_name (Optional[str]):

        calling_line_id_first_name (Optional[str]):

        name_dialing_name (Optional[Nillable[NameDialingName]]):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

        phone_number (Optional[Nillable[str]]):

        extension (Optional[Nillable[str]]):

        calling_line_id_phone_number (Optional[Nillable[str]]):

        old_password (Optional[str]):

        new_password (Optional[Nillable[str]]):

        department (Optional[Nillable[DepartmentKey]]):

        language (Optional[str]):

        time_zone (Optional[str]):

        sip_alias_list (Optional[Nillable[ReplacementSIPAliasList]]):

        endpoint (Optional[Nillable[Union[AccessDeviceMultipleIdentityAndContactEndpointModify22, TrunkAddressingMultipleContactModify22]]]):

        title (Optional[Nillable[str]]):

        pager_phone_number (Optional[Nillable[str]]):

        mobile_phone_number (Optional[Nillable[str]]):

        email_address (Optional[Nillable[str]]):

        yahoo_id (Optional[Nillable[str]]):

        address_location (Optional[Nillable[str]]):

        address (Optional[StreetAddress]):

        network_class_of_service (Optional[str]):

        office_zone_name (Optional[str]):

        primary_zone_name (Optional[str]):

        imp_id (Optional[Nillable[str]]):

        imp_password (Optional[Nillable[str]]):

        alternate_user_id_list (Optional[Nillable[ReplacementAlternateUserIdEntryList]]):

        allow_video (Optional[bool]):

        new_user_external_id (Optional[Nillable[str]]):

        new_user_person_id (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    last_name: Optional[str] = field(default=None, metadata={"alias": "lastName"})

    first_name: Optional[str] = field(default=None, metadata={"alias": "firstName"})

    calling_line_id_last_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdLastName"}
    )

    calling_line_id_first_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdFirstName"}
    )

    name_dialing_name: Optional[Nillable[NameDialingName]] = field(
        default=None, metadata={"alias": "nameDialingName"}
    )

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )

    phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    extension: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "extension"}
    )

    calling_line_id_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )

    old_password: Optional[str] = field(default=None, metadata={"alias": "oldPassword"})

    new_password: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "newPassword"}
    )

    department: Optional[Nillable[DepartmentKey]] = field(
        default=None, metadata={"alias": "department"}
    )

    language: Optional[str] = field(default=None, metadata={"alias": "language"})

    time_zone: Optional[str] = field(default=None, metadata={"alias": "timeZone"})

    sip_alias_list: Optional[Nillable[ReplacementSIPAliasList]] = field(
        default=None, metadata={"alias": "sipAliasList"}
    )

    endpoint: Optional[
        Nillable[
            Union[
                AccessDeviceMultipleIdentityAndContactEndpointModify22,
                TrunkAddressingMultipleContactModify22,
            ]
        ]
    ] = field(default=None, metadata={"alias": "endpoint"})

    title: Optional[Nillable[str]] = field(default=None, metadata={"alias": "title"})

    pager_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "pagerPhoneNumber"}
    )

    mobile_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "mobilePhoneNumber"}
    )

    email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "emailAddress"}
    )

    yahoo_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "yahooId"}
    )

    address_location: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "addressLocation"}
    )

    address: Optional[StreetAddress] = field(
        default=None, metadata={"alias": "address"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    office_zone_name: Optional[str] = field(
        default=None, metadata={"alias": "officeZoneName"}
    )

    primary_zone_name: Optional[str] = field(
        default=None, metadata={"alias": "primaryZoneName"}
    )

    imp_id: Optional[Nillable[str]] = field(default=None, metadata={"alias": "impId"})

    imp_password: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "impPassword"}
    )

    alternate_user_id_list: Optional[Nillable[ReplacementAlternateUserIdEntryList]] = (
        field(default=None, metadata={"alias": "alternateUserIdList"})
    )

    allow_video: Optional[bool] = field(default=None, metadata={"alias": "allowVideo"})

    new_user_external_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "newUserExternalId"}
    )

    new_user_person_id: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "newUserPersonId"}
    )

    def __post_init__(self):
        nillable_fields = [
            "name_dialing_name",
            "phone_number",
            "extension",
            "calling_line_id_phone_number",
            "new_password",
            "department",
            "sip_alias_list",
            "endpoint",
            "title",
            "pager_phone_number",
            "mobile_phone_number",
            "email_address",
            "yahoo_id",
            "address_location",
            "imp_id",
            "imp_password",
            "alternate_user_id_list",
            "new_user_external_id",
            "new_user_person_id",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserModifyUserIdRequest(OCIRequest):
    """Modify the user id of a real or virtual user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        new_user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    new_user_id: str = field(metadata={"alias": "newUserId"})


@dataclass(kw_only=True)
class UserMusicOnHoldGetRequest(OCIRequest):
    """Request the user level data associated with Music On Hold.
        The response is either a UserMusicOnHoldGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserMusicOnHoldModifyRequest(OCIRequest):
    """Modify the user level data associated with Music On Hold.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserMusicOnHoldUserGetRequest20(OCIRequest):
    """Request the user level data associated with Music On Hold User.
        The response is either a UserMusicOnHoldUserGetResponse20 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserMusicOnHoldUserModifyRequest20(OCIRequest):
    """Modify data for Music On Hold User.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        source (Optional[MusicOnHoldUserSourceModify20]):

        use_alternate_source_for_internal_calls (Optional[bool]):

        internal_source (Optional[MusicOnHoldUserSourceModify20]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    source: Optional[MusicOnHoldUserSourceModify20] = field(
        default=None, metadata={"alias": "source"}
    )

    use_alternate_source_for_internal_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useAlternateSourceForInternalCalls"}
    )

    internal_source: Optional[MusicOnHoldUserSourceModify20] = field(
        default=None, metadata={"alias": "internalSource"}
    )


@dataclass(kw_only=True)
class UserNetworkConferencingGetRequest(OCIRequest):
    """Request the Network-Based Conferencing data for a specified user.
        The response is either a UserNetworkConferencingGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserNumberPortabilityAnnouncementGetRequest(OCIRequest):
    """Get the Number Portability Announcement attributes for the user.
        The response is either UserNumberPortabilityAnnouncementGetResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserNumberPortabilityAnnouncementModifyRequest(OCIRequest):
    """Modify the Number Portability Announcement attributes for the user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        enable (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    enable: Optional[bool] = field(default=None, metadata={"alias": "enable"})


@dataclass(kw_only=True)
class UserOCICallControlApplicationGetListRequest(OCIRequest):
    """Get the OCI call control application list that can be used by the user.
        The response is either UserOCICallControlApplicationGetListResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserOCICallControlApplicationModifyRequest(OCIRequest):
    """Modify which OCI Call Control Applications are enabled on a user
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        application_id_list (Optional[Nillable[ReplacementOCICallControlApplicationIdList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    application_id_list: Optional[
        Nillable[ReplacementOCICallControlApplicationIdList]
    ] = field(default=None, metadata={"alias": "applicationIdList"})

    def __post_init__(self):
        nillable_fields = ["application_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserOutgoingCallingPlanAuthorizationCodeAddListRequest(OCIRequest):
    """Add a list of authorization codes to a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        code_entry (List[OutgoingCallingPlanAuthorizationCodeEntry]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    code_entry: List[OutgoingCallingPlanAuthorizationCodeEntry] = field(
        metadata={"alias": "codeEntry"}
    )


@dataclass(kw_only=True)
class UserOutgoingCallingPlanAuthorizationCodeDeleteListRequest(OCIRequest):
    """Delete a list of authorization codes from a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        code (List[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    code: List[str] = field(metadata={"alias": "code"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanAuthorizationCodeGetListRequest(OCIRequest):
    """Request the list of authorization codes for a user.
        The response is either a UserOutgoingCallingPlanAuthorizationCodeGetListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanAuthorizationCodeGetRequest(OCIRequest):
    """Request the authorization code setting for a user.
        The response is either a UserOutgoingCallingPlanAuthorizationCodeGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanAuthorizationCodeModifyRequest(OCIRequest):
    """Modify the authorization setting for a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        use_custom_settings (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    use_custom_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomSettings"}
    )


@dataclass(kw_only=True)
class UserOutgoingCallingPlanCallMeNowGetRequest(OCIRequest):
    """Request the Call Me Now call permissions for a user.
        The response is either a UserOutgoingCallingPlanCallMeNowGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanCallMeNowModifyRequest(OCIRequest):
    """Modify the Call Me Now call permissions for a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        use_custom_settings (Optional[bool]):

        user_permissions (Optional[OutgoingCallingPlanCallMeNowPermissionsModify]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    use_custom_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomSettings"}
    )

    user_permissions: Optional[OutgoingCallingPlanCallMeNowPermissionsModify] = field(
        default=None, metadata={"alias": "userPermissions"}
    )


@dataclass(kw_only=True)
class UserOutgoingCallingPlanDigitPlanCallMeNowGetRequest(OCIRequest):
    """Request the Call Me Now call permissions for digit patterns for a user.
        The response is either a UserOutgoingCallingPlanDigitPlanCallMeNowGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanDigitPlanCallMeNowModifyRequest(OCIRequest):
    """Modify the Call Me Now call permissions for digit patterns for a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        use_custom_settings (Optional[bool]):

        user_permissions (Optional[OutgoingCallingPlanDigitPatternCallMeNowPermissions]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    use_custom_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomSettings"}
    )

    user_permissions: Optional[OutgoingCallingPlanDigitPatternCallMeNowPermissions] = (
        field(default=None, metadata={"alias": "userPermissions"})
    )


@dataclass(kw_only=True)
class UserOutgoingCallingPlanDigitPlanOriginatingGetRequest(OCIRequest):
    """Request the originating permissions for digit patterns for a user.
        The response is either a UserOutgoingCallingPlanDigitPlanOriginatingGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanDigitPlanOriginatingModifyRequest(OCIRequest):
    """Modify the originating permissions for digit patterns for a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        use_custom_settings (Optional[bool]):

        user_permissions (Optional[OutgoingCallingPlanDigitPatternOriginatingPermissions]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    use_custom_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomSettings"}
    )

    user_permissions: Optional[
        OutgoingCallingPlanDigitPatternOriginatingPermissions
    ] = field(default=None, metadata={"alias": "userPermissions"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanDigitPlanRedirectingGetRequest(OCIRequest):
    """Request the redirecting permissions for digit patterns for a user.
        The response is either a UserOutgoingCallingPlanDigitPlanRedirectingGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanDigitPlanRedirectingModifyRequest(OCIRequest):
    """Modify the redirecting permissions for digit patterns for a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        use_custom_settings (Optional[bool]):

        user_permissions (Optional[OutgoingCallingPlanDigitPatternRedirectingPermissions]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    use_custom_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomSettings"}
    )

    user_permissions: Optional[
        OutgoingCallingPlanDigitPatternRedirectingPermissions
    ] = field(default=None, metadata={"alias": "userPermissions"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanOriginatingGetRequest(OCIRequest):
    """Request the originating permissions for a user.
        The response is either a UserOutgoingCallingPlanOriginatingGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanOriginatingModifyRequest(OCIRequest):
    """Modify the originating permissions for a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        use_custom_settings (Optional[bool]):

        user_permissions (Optional[OutgoingCallingPlanOriginatingPermissionsModify]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    use_custom_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomSettings"}
    )

    user_permissions: Optional[OutgoingCallingPlanOriginatingPermissionsModify] = field(
        default=None, metadata={"alias": "userPermissions"}
    )


@dataclass(kw_only=True)
class UserOutgoingCallingPlanPinholeDigitPlanCallMeNowGetRequest(OCIRequest):
    """Request the Call Me Now permissions for Pinhole digit patterns for a user.
        The response is either a UserOutgoingCallingPlanPinholeDigitPlanCallMeNowgGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanPinholeDigitPlanCallMeNowModifyRequest(OCIRequest):
    """Modify the Call Me Now permissions for Pinhole digit patterns for a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        use_custom_settings (Optional[bool]):

        user_permissions (Optional[OutgoingPinholeDigitPlanDigitPatternCallMeNowPermissions]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    use_custom_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomSettings"}
    )

    user_permissions: Optional[
        OutgoingPinholeDigitPlanDigitPatternCallMeNowPermissions
    ] = field(default=None, metadata={"alias": "userPermissions"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanPinholeDigitPlanOriginatingGetRequest(OCIRequest):
    """Request the originating permissions for Pinhole digit patterns for a user.
        The response is either a UserOutgoingCallingPlanPinholeDigitPlanOriginatingGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanPinholeDigitPlanOriginatingModifyRequest(OCIRequest):
    """Modify the originating permissions for Pinhole digit patterns for a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        use_custom_settings (Optional[bool]):

        user_permissions (Optional[OutgoingPinholeDigitPlanDigitPatternOriginatingPermissions]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    use_custom_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomSettings"}
    )

    user_permissions: Optional[
        OutgoingPinholeDigitPlanDigitPatternOriginatingPermissions
    ] = field(default=None, metadata={"alias": "userPermissions"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanPinholeDigitPlanRedirectingGetRequest(OCIRequest):
    """Request the redirecting permissions for Pinhole digit patterns for a user.
        The response is either a UserOutgoingCallingPlanPinholeDigitPlanRedirectingGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanPinholeDigitPlanRedirectingModifyRequest(OCIRequest):
    """Modify the redirecting permissions for Pinhole digit patterns for a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        use_custom_settings (Optional[bool]):

        user_permissions (Optional[OutgoingPinholeDigitPlanDigitPatternRedirectingPermissions]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    use_custom_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomSettings"}
    )

    user_permissions: Optional[
        OutgoingPinholeDigitPlanDigitPatternRedirectingPermissions
    ] = field(default=None, metadata={"alias": "userPermissions"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanRedirectedGetRequest(OCIRequest):
    """Request the call forwarded/transferred permissions for a user.
        The response is either a UserOutgoingCallingPlanRedirectedGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanRedirectedModifyRequest(OCIRequest):
    """Modify the call forwarded/transferred permissions for a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        use_custom_settings (Optional[bool]):

        user_permissions (Optional[OutgoingCallingPlanRedirectedPermissionsModify]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    use_custom_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomSettings"}
    )

    user_permissions: Optional[OutgoingCallingPlanRedirectedPermissionsModify] = field(
        default=None, metadata={"alias": "userPermissions"}
    )


@dataclass(kw_only=True)
class UserOutgoingCallingPlanRedirectingGetRequest(OCIRequest):
    """Request the initiating call forwards/transfer permissions for a user.
        The response is either a UserOutgoingCallingPlanRedirectingGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanRedirectingModifyRequest(OCIRequest):
    """Modify the initiating call forwards/transfer permissions for a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        use_custom_settings (Optional[bool]):

        user_permissions (Optional[OutgoingCallingPlanRedirectingPermissionsModify]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    use_custom_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomSettings"}
    )

    user_permissions: Optional[OutgoingCallingPlanRedirectingPermissionsModify] = field(
        default=None, metadata={"alias": "userPermissions"}
    )


@dataclass(kw_only=True)
class UserOutgoingCallingPlanSustainedAuthorizationCodeGetRequest(OCIRequest):
    """Request the sustained authorization code setting for a user.
        The response is either a UserOutgoingCallingPlanSustainedAuthorizationCodeGetResponse or an ErrorResponse.
        Engineering Note: This command is used internally by Call Processing.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanSustainedAuthorizationCodeModifyRequest(OCIRequest):
    """Modify or clear the sustained authorization code for a user.
        The response is either a SuccessResponse or an ErrorResponse.
        Engineering Note: This command is used internally by Call Processing.

    Attributes:

        user_id (str):

        code (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    code: Optional[Nillable[str]] = field(default=None, metadata={"alias": "code"})

    def __post_init__(self):
        nillable_fields = ["code"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserOutgoingCallingPlanTransferNumbersGetRequest(OCIRequest):
    """Request the transfer numbers for a user.
        The response is either a UserOutgoingCallingPlanTransferNumbersGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanTransferNumbersModifyRequest(OCIRequest):
    """Modify the transfer numbers for a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        use_custom_settings (Optional[bool]):

        user_numbers (Optional[OutgoingCallingPlanTransferNumbersModify]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    use_custom_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomSettings"}
    )

    user_numbers: Optional[OutgoingCallingPlanTransferNumbersModify] = field(
        default=None, metadata={"alias": "userNumbers"}
    )


@dataclass(kw_only=True)
class UserPBXIntegrationGetRequest(OCIRequest):
    """Request the user level data associated with PBX Integration service.
        The response is either a UserPBXIntegrationGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserPBXIntegrationModifyRequest(OCIRequest):
    """Modify the user level data associated with PBX Integration service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        proxy_to_header_from_network (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    proxy_to_header_from_network: Optional[bool] = field(
        default=None, metadata={"alias": "proxyToHeaderFromNetwork"}
    )


@dataclass(kw_only=True)
class UserPasswordInfoGetRequest22(OCIRequest):
    """Request the user's Web password information.
        The response is either a UserPasswordInfoGetResponse22 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserPersonalAssistantAddCriteriaRequest(OCIRequest):
    """Adds a User Personal Assistant Schedule Selective Criteria Entry.
        The response is either a SuccessResponse or an ErrorResponse.

        The following elements will take the defined default value if they are not set:
          enableTransferToAttendant will be set to false.
          enableRingSplash will be set to false.
          alertMeFirst will be set to false.
          alertMeFirstNumberOfRings will be set to the user Personal Assistant Number of rings setting.

    Attributes:

        user_id (str):

        criteria_name (str):

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        presence (Optional[str]):

        enable_transfer_to_attendant (Optional[bool]):

        attendant_number (Optional[str]):

        enable_ring_splash (Optional[bool]):

        alert_me_first (Optional[bool]):

        alert_me_first_number_of_rings (Optional[int]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    presence: Optional[str] = field(default=None, metadata={"alias": "presence"})

    enable_transfer_to_attendant: Optional[bool] = field(
        default=None, metadata={"alias": "enableTransferToAttendant"}
    )

    attendant_number: Optional[str] = field(
        default=None, metadata={"alias": "attendantNumber"}
    )

    enable_ring_splash: Optional[bool] = field(
        default=None, metadata={"alias": "enableRingSplash"}
    )

    alert_me_first: Optional[bool] = field(
        default=None, metadata={"alias": "alertMeFirst"}
    )

    alert_me_first_number_of_rings: Optional[int] = field(
        default=None, metadata={"alias": "alertMeFirstNumberOfRings"}
    )


@dataclass(kw_only=True)
class UserPersonalAssistantCallToNumberGetListRequest(OCIRequest):
    """Request to get the user assigned Call to Number List information. The response is either a UserPersonalAssistantCallToNumberGetListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserPersonalAssistantCallToNumberModifyListRequest(OCIRequest):
    """Request to modify the user assigned Call to Number List information.
        The response is either a SuccessResponse or an ErrorResponse.
        For the callToNumbers in the callToNumberList, the extension element
        is not used and the number element is only used when the type is BroadWorks Mobility.

    Attributes:

        user_id (str):

        call_to_number_list (Optional[Nillable[ReplacementCallToNumberList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    call_to_number_list: Optional[Nillable[ReplacementCallToNumberList]] = field(
        default=None, metadata={"alias": "callToNumberList"}
    )

    def __post_init__(self):
        nillable_fields = ["call_to_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserPersonalAssistantDeleteCriteriaRequest(OCIRequest):
    """Deletes a User Personal Assistant Schedule Selective Criteria Entry.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserPersonalAssistantExclusionNumberAddRequest(OCIRequest):
    """Add a User Personal Assistant Exclusion Number.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        exclusion_number (str):

        description (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    exclusion_number: str = field(metadata={"alias": "exclusionNumber"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class UserPersonalAssistantExclusionNumberDeleteListRequest(OCIRequest):
    """Delete a list of User Personal Assistant Exclusion Number.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        exclusion_number (List[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    exclusion_number: List[str] = field(metadata={"alias": "exclusionNumber"})


@dataclass(kw_only=True)
class UserPersonalAssistantExclusionNumberGetListRequest(OCIRequest):
    """Request to get the User Personal Assistant Exclusion Number List information.
        The response is either a userPersonalAssistantExclusionNumberGetListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        search_criteria_personal_assistant_exclusion_number (Optional[List[SearchCriteriaPersonalAssistantExclusionNumber]]):

        search_criteria_personal_assistant_exclusion_number_description (Optional[List[SearchCriteriaPersonalAssistantExclusionNumberDescription]]):

        response_size_limit (Optional[int]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    search_criteria_personal_assistant_exclusion_number: Optional[
        List[SearchCriteriaPersonalAssistantExclusionNumber]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaPersonalAssistantExclusionNumber"},
    )

    search_criteria_personal_assistant_exclusion_number_description: Optional[
        List[SearchCriteriaPersonalAssistantExclusionNumberDescription]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaPersonalAssistantExclusionNumberDescription"},
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )


@dataclass(kw_only=True)
class UserPersonalAssistantExclusionNumberGetRequest(OCIRequest):
    """Get a Personal Assistant Exclusion Number.
        The response is either UserPersonalAssistantExclusionNumberGetResponse or ErrorResponse.

    Attributes:

        user_id (str):

        exclusion_number (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    exclusion_number: str = field(metadata={"alias": "exclusionNumber"})


@dataclass(kw_only=True)
class UserPersonalAssistantExclusionNumberModifyRequest(OCIRequest):
    """Modify an existing User Personal Assistant Exclusion Number description.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        exclusion_number (str):

        description (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    exclusion_number: str = field(metadata={"alias": "exclusionNumber"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserPersonalAssistantGetCriteriaRequest(OCIRequest):
    """Gets a User Personal Assistant Schedule Selective Criteria Entry.
        The response is either UserPersonalAssistantGetCriteriaResponse or ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserPersonalAssistantGetRequest24(OCIRequest):
    """Request to get the User Personal Assistant information.
        The response is either a UserPersonalAssistantGetResponse24 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserPersonalAssistantModifyCriteriaRequest(OCIRequest):
    """Modifies a User Personal Assistant Schedule Selective Criteria Entry.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        new_criteria_name (Optional[str]):

        time_schedule (Optional[Nillable[TimeSchedule]]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        presence (Optional[str]):

        enable_transfer_to_attendant (Optional[bool]):

        attendant_number (Optional[Nillable[str]]):

        enable_ring_splash (Optional[bool]):

        alert_me_first (Optional[bool]):

        alert_me_first_number_of_rings (Optional[int]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    new_criteria_name: Optional[str] = field(
        default=None, metadata={"alias": "newCriteriaName"}
    )

    time_schedule: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    presence: Optional[str] = field(default=None, metadata={"alias": "presence"})

    enable_transfer_to_attendant: Optional[bool] = field(
        default=None, metadata={"alias": "enableTransferToAttendant"}
    )

    attendant_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "attendantNumber"}
    )

    enable_ring_splash: Optional[bool] = field(
        default=None, metadata={"alias": "enableRingSplash"}
    )

    alert_me_first: Optional[bool] = field(
        default=None, metadata={"alias": "alertMeFirst"}
    )

    alert_me_first_number_of_rings: Optional[int] = field(
        default=None, metadata={"alias": "alertMeFirstNumberOfRings"}
    )

    def __post_init__(self):
        nillable_fields = ["time_schedule", "holiday_schedule", "attendant_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserPersonalAssistantModifyRequest(OCIRequest):
    """Modify the User Personal Assistant information.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        presence (Optional[str]):

        enable_transfer_to_attendant (Optional[bool]):

        attendant_number (Optional[Nillable[str]]):

        enable_ring_splash (Optional[bool]):

        enable_expiration_time (Optional[bool]):

        expiration_time (Optional[Nillable[str]]):

        alert_me_first (Optional[bool]):

        alert_me_first_number_of_rings (Optional[int]):

        criteria_activation (Optional[List[CriteriaActivation]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    presence: Optional[str] = field(default=None, metadata={"alias": "presence"})

    enable_transfer_to_attendant: Optional[bool] = field(
        default=None, metadata={"alias": "enableTransferToAttendant"}
    )

    attendant_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "attendantNumber"}
    )

    enable_ring_splash: Optional[bool] = field(
        default=None, metadata={"alias": "enableRingSplash"}
    )

    enable_expiration_time: Optional[bool] = field(
        default=None, metadata={"alias": "enableExpirationTime"}
    )

    expiration_time: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "expirationTime"}
    )

    alert_me_first: Optional[bool] = field(
        default=None, metadata={"alias": "alertMeFirst"}
    )

    alert_me_first_number_of_rings: Optional[int] = field(
        default=None, metadata={"alias": "alertMeFirstNumberOfRings"}
    )

    criteria_activation: Optional[List[CriteriaActivation]] = field(
        default=None, metadata={"alias": "criteriaActivation"}
    )

    def __post_init__(self):
        nillable_fields = ["attendant_number", "expiration_time"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserPersonalAssistantReorderCriteriaRequest(OCIRequest):
    """Reorders only the Schedule Selective Criteria entries.
        Criteria entries received in the orderedCriteriaList element are set at the top of the ordered criteria list.
        Existing criteria not received in orderedCriteriaList are moved down to a lower priority.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        ordered_criteria_list (OrderedCriteriaList):

    """

    user_id: str = field(metadata={"alias": "userId"})

    ordered_criteria_list: OrderedCriteriaList = field(
        metadata={"alias": "orderedCriteriaList"}
    )


@dataclass(kw_only=True)
class UserPersonalPhoneListAddListRequest(OCIRequest):
    """Add one or more entries to a user's personal phone list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        entry (List[PhoneListEntry]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    entry: List[PhoneListEntry] = field(metadata={"alias": "entry"})


@dataclass(kw_only=True)
class UserPersonalPhoneListDeleteListRequest(OCIRequest):
    """Delete one or more entries from a user's personal phone list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        entry_name (List[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    entry_name: List[str] = field(metadata={"alias": "entryName"})


@dataclass(kw_only=True)
class UserPersonalPhoneListGetListRequest(OCIRequest):
    """Get a user's personal phone list.
        The response is either a UserPersonalPhoneListGetListResponse or an ErrorResponse.
        The search can be done using multiple criterion.
        If the searchCriteriaModeOr is present, any result matching any one criteria is included in the results.
        Otherwise, only results matching all the search criterion are included in the results.
        If no search criteria is specified, all results are returned.
        Specifying searchCriteriaModeOr without any search criteria results in an ErrorResponse.
        In all cases, if a responseSizeLimit is specified and the number of matching results is more than this limit, then an
        ErrorResponse is returned.

    Attributes:

        user_id (str):

        response_size_limit (Optional[int]):

        search_criteria_mode_or (Optional[bool]):

        search_criteria_user_personal_phone_list_name (Optional[List[SearchCriteriaUserPersonalPhoneListName]]):

        search_criteria_user_personal_phone_list_number (Optional[List[SearchCriteriaUserPersonalPhoneListNumber]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )

    search_criteria_user_personal_phone_list_name: Optional[
        List[SearchCriteriaUserPersonalPhoneListName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaUserPersonalPhoneListName"}
    )

    search_criteria_user_personal_phone_list_number: Optional[
        List[SearchCriteriaUserPersonalPhoneListNumber]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaUserPersonalPhoneListNumber"}
    )


@dataclass(kw_only=True)
class UserPersonalPhoneListGetPagedSortedListRequest(OCIRequest):
    """Get a user's personal phone list.
                                The response is either a UserPersonalPhoneListGetPagedSortedListResponse or an
                                ErrorResponse.
                                The search can be done using multiple criterion.
                                If the searchCriteriaModeOr is present, any result matching any one
                                criteria is included in the results.
                                Otherwise, only results matching all the search criterion are included in the
                                results.
                                If no search criteria is specified, all results are returned.
                                Specifying searchCriteriaModeOr without any search criteria results
                                in an ErrorResponse.
                                The sort can done by the personal phone list number or name.
                                The following elements are only used in AS data mode and ignored in XS data
                                mode:
                                searchCriteriaUserPersonalMultiPartPhoneListName

    Attributes:

        user_id (str):

        response_paging_control (ResponsePagingControl):

        sort_by_user_personal_phone_list_number (Optional[SortByUserPersonalPhoneListNumber]):

        sort_by_user_personal_phone_list_name (Optional[SortByUserPersonalPhoneListName]):

        search_criteria_mode_or (Optional[bool]):

        search_criteria_user_personal_phone_list_name (Optional[List[SearchCriteriaUserPersonalPhoneListName]]):

        search_criteria_user_personal_phone_list_number (Optional[List[SearchCriteriaUserPersonalPhoneListNumber]]):

        search_criteria_user_personal_multi_part_phone_list_name (Optional[List[SearchCriteriaUserPersonalMultiPartPhoneListName]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    response_paging_control: ResponsePagingControl = field(
        metadata={"alias": "responsePagingControl"}
    )

    sort_by_user_personal_phone_list_number: Optional[
        SortByUserPersonalPhoneListNumber
    ] = field(default=None, metadata={"alias": "sortByUserPersonalPhoneListNumber"})

    sort_by_user_personal_phone_list_name: Optional[SortByUserPersonalPhoneListName] = (
        field(default=None, metadata={"alias": "sortByUserPersonalPhoneListName"})
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )

    search_criteria_user_personal_phone_list_name: Optional[
        List[SearchCriteriaUserPersonalPhoneListName]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaUserPersonalPhoneListName"}
    )

    search_criteria_user_personal_phone_list_number: Optional[
        List[SearchCriteriaUserPersonalPhoneListNumber]
    ] = field(
        default=None, metadata={"alias": "searchCriteriaUserPersonalPhoneListNumber"}
    )

    search_criteria_user_personal_multi_part_phone_list_name: Optional[
        List[SearchCriteriaUserPersonalMultiPartPhoneListName]
    ] = field(
        default=None,
        metadata={"alias": "searchCriteriaUserPersonalMultiPartPhoneListName"},
    )


@dataclass(kw_only=True)
class UserPersonalPhoneListModifyRequest(OCIRequest):
    """Modify an entry in a user's personal phone list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        entry_name (str):

        new_entry_name (Optional[str]):

        phone_number (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    entry_name: str = field(metadata={"alias": "entryName"})

    new_entry_name: Optional[str] = field(
        default=None, metadata={"alias": "newEntryName"}
    )

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class UserPhoneDirectoryGetListRequest(OCIRequest):
    """Request a table containing the phone directory for a user's group.
        If the user's group is part of an enterprise, the directory includes all users in the enterprise
        and all entries in the enterprise common phone list and the common phone list of the specified
        group  (if includeCommonPhoneList is set to true).
        If the user's group is part of a service provider, the directory includes all users in the group
        and all entries in the common phone list (if includeCommonPhoneList is set to true) of the
        specified group.
        The response is either UserPhoneDirectoryGetListResponse or ErrorResponse.
        If the searchCriteriaModeOr is present, any result matching any one criteria is included in the results. Otherwise, only
        results matching all the search criteria are included in the results.
        If no search criteria is specified, all results are returned.
        In all cases, if a responseSizeLimit is specified and the number of matching results is more than this limit, then an
        ErrorResponse is returned.
        Specifying searchCriteriaModeOr without any search criteria results in an ErrorResponse.

    Attributes:

        user_id (str):

        include_common_phone_list (bool):

        response_size_limit (Optional[int]):

        search_criteria_mode_or (Optional[bool]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_mobile_phone_number (Optional[List[SearchCriteriaMobilePhoneNumber]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_exact_custom_contact_directory (Optional[SearchCriteriaExactCustomContactDirectory]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_imp_id (Optional[List[SearchCriteriaImpId]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    include_common_phone_list: bool = field(
        metadata={"alias": "includeCommonPhoneList"}
    )

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_mobile_phone_number: Optional[
        List[SearchCriteriaMobilePhoneNumber]
    ] = field(default=None, metadata={"alias": "searchCriteriaMobilePhoneNumber"})

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_exact_custom_contact_directory: Optional[
        SearchCriteriaExactCustomContactDirectory
    ] = field(
        default=None, metadata={"alias": "searchCriteriaExactCustomContactDirectory"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_imp_id: Optional[List[SearchCriteriaImpId]] = field(
        default=None, metadata={"alias": "searchCriteriaImpId"}
    )


@dataclass(kw_only=True)
class UserPhoneDirectoryGetPagedListRequest(OCIRequest):
    """Request a table containing the phone directory for a user.
        Setting isEnterpriseRequested to true will return enterprise directory
        members in the response if the user is in an enterprise. Otherwise,
        just the group directory members for a user are returned in the response.
        The response is either UserPhoneDirectoryGetPagedListResponse or
        ErrorResponse.
        The search can be done using multiple criteria.
        If the searchCriteriaModeOr is present, any result matching any one criteria is included in
        the results. Otherwise, only results matching all the search criteria are included in the results.
        If no search criteria is specified, all results are returned.
        In all cases, if a responseSizeLimit is specified and the number of matching results is more than
        this limit, then an ErrorResponse is returned.
        Specifying searchCriteriaModeOr without any search criteria results in an ErrorResponse.
        The boolean sortByFirstName is optional. If it is not specified, the response is
        sorted by Last Name.  The Receptionist Note column is only populated, if the user sending
        the request is the owner of the Receptionist Note and a Note exists.

    Attributes:

        user_id (str):

        is_enterprise_info_requested (bool):

        response_paging_control (ResponsePagingControl):

        search_criteria_mode_or (Optional[bool]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_group_location_code (Optional[List[SearchCriteriaGroupLocationCode]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_mobile_phone_number (Optional[List[SearchCriteriaMobilePhoneNumber]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_yahoo_id (Optional[List[SearchCriteriaYahooId]]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_imp_id (Optional[List[SearchCriteriaImpId]]):

        sort_by_first_name (Optional[bool]):

        search_criteria_title (Optional[List[SearchCriteriaTitle]]):

        search_criteria_receptionist_note (Optional[List[SearchCriteriaReceptionistNote]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_enterprise_info_requested: bool = field(
        metadata={"alias": "isEnterpriseInfoRequested"}
    )

    response_paging_control: ResponsePagingControl = field(
        metadata={"alias": "responsePagingControl"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_group_location_code: Optional[
        List[SearchCriteriaGroupLocationCode]
    ] = field(default=None, metadata={"alias": "searchCriteriaGroupLocationCode"})

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_mobile_phone_number: Optional[
        List[SearchCriteriaMobilePhoneNumber]
    ] = field(default=None, metadata={"alias": "searchCriteriaMobilePhoneNumber"})

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_yahoo_id: Optional[List[SearchCriteriaYahooId]] = field(
        default=None, metadata={"alias": "searchCriteriaYahooId"}
    )

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_imp_id: Optional[List[SearchCriteriaImpId]] = field(
        default=None, metadata={"alias": "searchCriteriaImpId"}
    )

    sort_by_first_name: Optional[bool] = field(
        default=None, metadata={"alias": "sortByFirstName"}
    )

    search_criteria_title: Optional[List[SearchCriteriaTitle]] = field(
        default=None, metadata={"alias": "searchCriteriaTitle"}
    )

    search_criteria_receptionist_note: Optional[
        List[SearchCriteriaReceptionistNote]
    ] = field(default=None, metadata={"alias": "searchCriteriaReceptionistNote"})


@dataclass(kw_only=True)
class UserPhoneDirectoryGetPagedSortedListRequest(OCIRequest):
    """Request a table containing the phone directory for a user.
            Setting isEnterpriseRequested to true will return enterprise directory
            members in the response if the user is in an enterprise.  Otherwise,
            just the group directory members for a user are returned in the
            response.
      The response is either UserPhoneDirectoryGetPagedSortedListResponse or ErrorResponse.
      The search can be done using multiple criteria.  If the searchCriteriaModeOr is present,
      any result matching any one criteria is included in the results. Otherwise, only results
      matching all the search criteria are included in the results.  If no search criteria is
      specified, all results are returned.  Specifying searchCriteriaModeOr
      without any search criteria results in an ErrorResponse.  The sort can be
      performed on user last name, first name, department, or receptionist note.
      The Receptionist Note column is only populated, if the user sending the request
      is the owner of the Receptionist Note and a Note exists.
      The following elements are only used in AS data mode and ignored in XS data
        mode:
        searchCriteriaMultiPartName

    Attributes:

        user_id (str):

        is_enterprise_info_requested (bool):

        response_paging_control (ResponsePagingControl):

        sort_by_user_last_name (Optional[SortByUserLastName]):

        sort_by_user_first_name (Optional[SortByUserFirstName]):

        sort_by_user_department (Optional[SortByUserDepartment]):

        sort_by_receptionist_note (Optional[SortByReceptionistNote]):

        search_criteria_mode_or (Optional[bool]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_user_name (Optional[List[SearchCriteriaUserName]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_group_location_code (Optional[List[SearchCriteriaGroupLocationCode]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_mobile_phone_number (Optional[List[SearchCriteriaMobilePhoneNumber]]):

        search_criteria_email_address (Optional[List[SearchCriteriaEmailAddress]]):

        search_criteria_yahoo_id (Optional[List[SearchCriteriaYahooId]]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_department_name (Optional[List[SearchCriteriaDepartmentName]]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_imp_id (Optional[List[SearchCriteriaImpId]]):

        search_criteria_title (Optional[List[SearchCriteriaTitle]]):

        search_criteria_receptionist_note (Optional[List[SearchCriteriaReceptionistNote]]):

        search_criteria_multi_part_name (Optional[List[SearchCriteriaMultiPartUserName]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_enterprise_info_requested: bool = field(
        metadata={"alias": "isEnterpriseInfoRequested"}
    )

    response_paging_control: ResponsePagingControl = field(
        metadata={"alias": "responsePagingControl"}
    )

    sort_by_user_last_name: Optional[SortByUserLastName] = field(
        default=None, metadata={"alias": "sortByUserLastName"}
    )

    sort_by_user_first_name: Optional[SortByUserFirstName] = field(
        default=None, metadata={"alias": "sortByUserFirstName"}
    )

    sort_by_user_department: Optional[SortByUserDepartment] = field(
        default=None, metadata={"alias": "sortByUserDepartment"}
    )

    sort_by_receptionist_note: Optional[SortByReceptionistNote] = field(
        default=None, metadata={"alias": "sortByReceptionistNote"}
    )

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_user_name: Optional[List[SearchCriteriaUserName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserName"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_group_location_code: Optional[
        List[SearchCriteriaGroupLocationCode]
    ] = field(default=None, metadata={"alias": "searchCriteriaGroupLocationCode"})

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_mobile_phone_number: Optional[
        List[SearchCriteriaMobilePhoneNumber]
    ] = field(default=None, metadata={"alias": "searchCriteriaMobilePhoneNumber"})

    search_criteria_email_address: Optional[List[SearchCriteriaEmailAddress]] = field(
        default=None, metadata={"alias": "searchCriteriaEmailAddress"}
    )

    search_criteria_yahoo_id: Optional[List[SearchCriteriaYahooId]] = field(
        default=None, metadata={"alias": "searchCriteriaYahooId"}
    )

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_department_name: Optional[List[SearchCriteriaDepartmentName]] = (
        field(default=None, metadata={"alias": "searchCriteriaDepartmentName"})
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_imp_id: Optional[List[SearchCriteriaImpId]] = field(
        default=None, metadata={"alias": "searchCriteriaImpId"}
    )

    search_criteria_title: Optional[List[SearchCriteriaTitle]] = field(
        default=None, metadata={"alias": "searchCriteriaTitle"}
    )

    search_criteria_receptionist_note: Optional[
        List[SearchCriteriaReceptionistNote]
    ] = field(default=None, metadata={"alias": "searchCriteriaReceptionistNote"})

    search_criteria_multi_part_name: Optional[List[SearchCriteriaMultiPartUserName]] = (
        field(default=None, metadata={"alias": "searchCriteriaMultiPartName"})
    )


@dataclass(kw_only=True)
class UserPhoneDirectoryGetSearchedListRequest(OCIRequest):
    """Request a table containing the phone directory for a user.
        If the specified user is part of an enterprise, the directory includes all users in the enterprise
        and all entries in the enterprise common phone list and the common phone list of the specified user's group.
        If the specified user is part of a service provider, the directory includes all users in the user's group
        and all entries in the common phone list of the specified user's group.
        It is possible to search the directory for names containing a specified search string. The search includes
        matches on first name or last name or common phone list names.
        The response is either UserPhoneDirectoryGetSearchedListResponse or ErrorResponse.

    Attributes:

        user_id (str):

        name_search_string (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    name_search_string: Optional[str] = field(
        default=None, metadata={"alias": "nameSearchString"}
    )


@dataclass(kw_only=True)
class UserPhysicalLocationGetRequest(OCIRequest):
    """Request the user level data associated with Physical Location.
        The response is either a UserPhysicalLocationGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserPhysicalLocationModifyRequest(OCIRequest):
    """Modify the user level data associated with Physical Location.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserPolycomPhoneServicesGetPrimaryEndpointListRequest(OCIRequest):
    """Request the user's list of device profiles on which the user is the primary user.
        The response is either a UserPolycomPhoneServicesGetPrimaryEndpointListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserPolycomPhoneServicesGetRequest(OCIRequest):
    """Request the user's Polycom Phone Services attributes.
        The response is either a UserPolycomPhoneServicesGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        access_device (AccessDevice):

    """

    user_id: str = field(metadata={"alias": "userId"})

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})


@dataclass(kw_only=True)
class UserPolycomPhoneServicesModifyRequest(OCIRequest):
    """Modify the user's Polycom Phone Services attributes.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        access_device (AccessDevice):

        integrate_phone_directory_with_broad_works (Optional[bool]):

        include_user_personal_phone_list_in_directory (Optional[bool]):

        include_group_custom_contact_directory_in_directory (Optional[bool]):

        group_custom_contact_directory (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    access_device: AccessDevice = field(metadata={"alias": "accessDevice"})

    integrate_phone_directory_with_broad_works: Optional[bool] = field(
        default=None, metadata={"alias": "integratePhoneDirectoryWithBroadWorks"}
    )

    include_user_personal_phone_list_in_directory: Optional[bool] = field(
        default=None, metadata={"alias": "includeUserPersonalPhoneListInDirectory"}
    )

    include_group_custom_contact_directory_in_directory: Optional[bool] = field(
        default=None,
        metadata={"alias": "includeGroupCustomContactDirectoryInDirectory"},
    )

    group_custom_contact_directory: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "groupCustomContactDirectory"}
    )

    def __post_init__(self):
        nillable_fields = ["group_custom_contact_directory"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserPortalPasscodeGetInfoRequest(OCIRequest):
    """Request the user's portal passcode information.
        The response is either a UserPortalPasscodeGetInfoResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserPortalPasscodeModifyRequest(OCIRequest):
    """Modify the user's Portal passcode
        The response is either a SuccessResponse or an ErrorResponse.
        The following elements are only used in XS data mode and ignored in AS data mode:
          oldPasscode

    Attributes:

        user_id (str):

        old_passcode (Optional[str]):

        new_passcode (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    old_passcode: Optional[str] = field(default=None, metadata={"alias": "oldPasscode"})

    new_passcode: str = field(metadata={"alias": "newPasscode"})


@dataclass(kw_only=True)
class UserPortalPasscodeRulesGetRequest(OCIRequest):
    """Requests the effective passcode rules setting for a user.
        The response is either UserPortalPasscodeRulesGetResponse or ErrorResponse.

    Attributes:

        user_id (Optional[str]):

        service_provider_id (Optional[str]):

        group_id (Optional[str]):

    """

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})


@dataclass(kw_only=True)
class UserPreAlertingAnnouncementAddCriteriaRequest(OCIRequest):
    """Add a criteria to the user's pre-alerting service.
        The following elements are only used in AS data mode:
          callToNumber

        For the callToNumber, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria (CriteriaFromDn):

        call_to_number (Optional[List[CallToNumber]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria: CriteriaFromDn = field(metadata={"alias": "fromDnCriteria"})

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class UserPreAlertingAnnouncementDeleteCriteriaRequest(OCIRequest):
    """Delete a criteria from the user's pre-alerting service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserPreAlertingAnnouncementGetCriteriaRequest21(OCIRequest):
    """Get a criteria for the user's pre-alerting service.
        The response is either a UserPreAlertingAnnouncementGetCriteriaResponse21 or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserPreAlertingAnnouncementGetRequest20(OCIRequest):
    """Get the user's pre-alerting service setting.
        The response is either a UserPreAlertingAnnouncementGetResponse20 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserPreAlertingAnnouncementModifyCriteriaRequest(OCIRequest):
    """Modify a criteria for the user's pre-alerting service.
        The following elements are only used in AS data mode:
          callToNumber

        For the callToNumbers in the callToNumberList, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        new_criteria_name (Optional[str]):

        time_schedule (Optional[Nillable[TimeSchedule]]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        blacklisted (Optional[bool]):

        from_dn_criteria (Optional[CriteriaFromDnModify]):

        call_to_number_list (Optional[Nillable[ReplacementCallToNumberList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    new_criteria_name: Optional[str] = field(
        default=None, metadata={"alias": "newCriteriaName"}
    )

    time_schedule: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: Optional[bool] = field(default=None, metadata={"alias": "blacklisted"})

    from_dn_criteria: Optional[CriteriaFromDnModify] = field(
        default=None, metadata={"alias": "fromDnCriteria"}
    )

    call_to_number_list: Optional[Nillable[ReplacementCallToNumberList]] = field(
        default=None, metadata={"alias": "callToNumberList"}
    )

    def __post_init__(self):
        nillable_fields = ["time_schedule", "holiday_schedule", "call_to_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserPreAlertingAnnouncementModifyRequest20(OCIRequest):
    """Modify the user's pre-alerting service setting.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        audio_selection (Optional[str]):

        audio_file (Optional[ExtendedMediaFileLevelResource20]):

        video_selection (Optional[str]):

        video_file (Optional[ExtendedMediaFileLevelResource20]):

        criteria_activation (Optional[List[CriteriaActivation]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    audio_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioSelection"}
    )

    audio_file: Optional[ExtendedMediaFileLevelResource20] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoSelection"}
    )

    video_file: Optional[ExtendedMediaFileLevelResource20] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    criteria_activation: Optional[List[CriteriaActivation]] = field(
        default=None, metadata={"alias": "criteriaActivation"}
    )


@dataclass(kw_only=True)
class UserPreferredAnswerEndpointGetListRequest(OCIRequest):
    """Requests the list of device endpoints of a user that can be configured
        as Preferred Answer Endpoint for Auto-Answer and Forced Answer.
        If onlyDisplayPreferredAnswerEndpoint is specified, only the
        Preferred Answer Endpoint of user is returned in the response.

        The response is either UserPreferredAnswerEndpointGetListResponse or ErrorResponse.

    Attributes:

        user_id (str):

        only_display_preferred_answer_endpoint (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    only_display_preferred_answer_endpoint: Optional[bool] = field(
        default=None, metadata={"alias": "onlyDisplayPreferredAnswerEndpoint"}
    )


@dataclass(kw_only=True)
class UserPreferredAnswerEndpointModifyRequest(OCIRequest):
    """Request to configure a user's Preferred Answer Endpoint for Auto-Answer and Forced Answer.
        Setting preferredAnswerEndpoint to nil will clear the user's configured Preferred Answer Endpoint.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        preferred_answer_endpoint (Optional[Nillable[AccessDeviceEndpointKey]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    preferred_answer_endpoint: Optional[Nillable[AccessDeviceEndpointKey]] = field(
        default=None, metadata={"alias": "preferredAnswerEndpoint"}
    )

    def __post_init__(self):
        nillable_fields = ["preferred_answer_endpoint"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserPreferredCarrierUserGetRequest(OCIRequest):
    """Requests the currently configured preferred carriers for a user.
        The response is either a UserPreferredCarrierUserGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserPreferredCarrierUserModifyRequest(OCIRequest):
    """Modifies the currently configured preferred carriers for a user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        intra_lata_carrier (Optional[UserPreferredCarrierNameModify]):

        inter_lata_carrier (Optional[UserPreferredCarrierNameModify]):

        international_carrier (Optional[UserPreferredCarrierNameModify]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    intra_lata_carrier: Optional[UserPreferredCarrierNameModify] = field(
        default=None, metadata={"alias": "intraLataCarrier"}
    )

    inter_lata_carrier: Optional[UserPreferredCarrierNameModify] = field(
        default=None, metadata={"alias": "interLataCarrier"}
    )

    international_carrier: Optional[UserPreferredCarrierNameModify] = field(
        default=None, metadata={"alias": "internationalCarrier"}
    )


@dataclass(kw_only=True)
class UserPrepaidGetRequest(OCIRequest):
    """Request the user level data associated with Prepaid.
        The response is either a UserPrepaidGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserPrepaidModifyRequest(OCIRequest):
    """Modify the user level data associated with Prepaid.
        The response is either a SuccessResponse or an ErrorResponse.
        Engineering Note: This command is used internally by Call Processing.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserPrimaryEndpointAdvancedSettingGetRequest(OCIRequest):
    """Get the Users Primary Endpoint setting.
        The response is either a UserPrimaryEndpointAdvancedSettingGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserPrimaryEndpointAdvancedSettingModifyRequest(OCIRequest):
    """Modify the Users Primary Endpoint line control settings.
          The response is either a SuccessResponse or an ErrorResponse.
          The following elements are only used in XS data mode and ignored in AS data mode:
                allowVideo

    Attributes:

        user_id (str):

        allow_origination (Optional[bool]):

        allow_termination (Optional[bool]):

        allow_video (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    allow_origination: Optional[bool] = field(
        default=None, metadata={"alias": "allowOrigination"}
    )

    allow_termination: Optional[bool] = field(
        default=None, metadata={"alias": "allowTermination"}
    )

    allow_video: Optional[bool] = field(default=None, metadata={"alias": "allowVideo"})


@dataclass(kw_only=True)
class UserPriorityAlertAddCriteriaRequest16(OCIRequest):
    """Add a criteria to the user's priority alert service.
        The following elements are only used in AS data mode:
          callToNumber

        For the callToNumber, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria (PriorityAlertCriteriaFromDn):

        call_to_number (Optional[List[CallToNumber]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria: PriorityAlertCriteriaFromDn = field(
        metadata={"alias": "fromDnCriteria"}
    )

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class UserPriorityAlertDeleteCriteriaRequest(OCIRequest):
    """Delete a criteria from the user's priority alert service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserPriorityAlertGetCriteriaListRequest(OCIRequest):
    """Get the user's priority alert criteria listing.
        The response is either a UserPriorityAlertGetCriteriaListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserPriorityAlertGetCriteriaRequest21(OCIRequest):
    """Get a criteria for the user's priority alert service.
        The response is either a UserPriorityAlertGetCriteriaResponse21 or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserPriorityAlertModifyActiveCriteriaListRequest(OCIRequest):
    """Activate the user's priority alert criteria list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_activation (Optional[List[CriteriaActivation]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_activation: Optional[List[CriteriaActivation]] = field(
        default=None, metadata={"alias": "criteriaActivation"}
    )


@dataclass(kw_only=True)
class UserPriorityAlertModifyCriteriaRequest(OCIRequest):
    """Modify a criteria for the user's priority alert service.
        The following elements are only used in AS data mode:
          callToNumberList

        For the callToNumbers in the callToNumberList, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        new_criteria_name (Optional[str]):

        time_schedule (Optional[Nillable[TimeSchedule]]):

        from_dn_criteria (Optional[PriorityAlertCriteriaFromDnModify]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        blacklisted (Optional[bool]):

        call_to_number_list (Optional[Nillable[ReplacementCallToNumberList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    new_criteria_name: Optional[str] = field(
        default=None, metadata={"alias": "newCriteriaName"}
    )

    time_schedule: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    from_dn_criteria: Optional[PriorityAlertCriteriaFromDnModify] = field(
        default=None, metadata={"alias": "fromDnCriteria"}
    )

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: Optional[bool] = field(default=None, metadata={"alias": "blacklisted"})

    call_to_number_list: Optional[Nillable[ReplacementCallToNumberList]] = field(
        default=None, metadata={"alias": "callToNumberList"}
    )

    def __post_init__(self):
        nillable_fields = ["time_schedule", "holiday_schedule", "call_to_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserPrivacyGetAvailableMonitorsUserListRequest(OCIRequest):
    """Retrieves a list of users in the enterprise or group available
        for phone status monitoring the user specified in the userId
        element.  The response is either
        UserPrivacyGetAvailableMonitorsUserListResponse or ErrorResponse.

    Attributes:

        user_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_imp_id (Optional[List[SearchCriteriaImpId]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_imp_id: Optional[List[SearchCriteriaImpId]] = field(
        default=None, metadata={"alias": "searchCriteriaImpId"}
    )


@dataclass(kw_only=True)
class UserPrivacyGetRequest13mp17(OCIRequest):
    """Request the user level data associated with Privacy.
        This command is supported for regular users only.
        The response is either a UserPrivacyGetResponse13mp17
        or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserPrivacyModifyRequest(OCIRequest):
    """Modify the user level data associated with Privacy.
        This command is supported for regular users only.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        enable_directory_privacy (Optional[bool]):

        enable_auto_attendant_extension_dialing_privacy (Optional[bool]):

        enable_auto_attendant_name_dialing_privacy (Optional[bool]):

        enable_phone_status_privacy (Optional[bool]):

        permitted_monitor_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    enable_directory_privacy: Optional[bool] = field(
        default=None, metadata={"alias": "enableDirectoryPrivacy"}
    )

    enable_auto_attendant_extension_dialing_privacy: Optional[bool] = field(
        default=None, metadata={"alias": "enableAutoAttendantExtensionDialingPrivacy"}
    )

    enable_auto_attendant_name_dialing_privacy: Optional[bool] = field(
        default=None, metadata={"alias": "enableAutoAttendantNameDialingPrivacy"}
    )

    enable_phone_status_privacy: Optional[bool] = field(
        default=None, metadata={"alias": "enablePhoneStatusPrivacy"}
    )

    permitted_monitor_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "permittedMonitorUserIdList"}
    )

    def __post_init__(self):
        nillable_fields = ["permitted_monitor_user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserPushNotificationGetRequest24(OCIRequest):
    """Get the push notification settings for a user.
        The response is either UserPushNotificationGetResponse24 or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserPushNotificationModifyRequest(OCIRequest):
    """Modify the push notification settings for a user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        send_push_notification_for_click_to_dial (Optional[bool]):

        send_push_notification_for_group_paging (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    send_push_notification_for_click_to_dial: Optional[bool] = field(
        default=None, metadata={"alias": "sendPushNotificationForClickToDial"}
    )

    send_push_notification_for_group_paging: Optional[bool] = field(
        default=None, metadata={"alias": "sendPushNotificationForGroupPaging"}
    )


@dataclass(kw_only=True)
class UserPushNotificationRegistrationDeleteRequest(OCIRequest):
    """Request to remove a push notification registration.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        registration_id (str):

    """

    registration_id: str = field(metadata={"alias": "registrationId"})


@dataclass(kw_only=True)
class UserPushNotificationRegistrationGetListRequest23(OCIRequest):
    """Request a list of all of the push notification registrations for a user by
        either registration id or user id.
        The response is either UserPushNotificationRegistrationGetListResponse23 or ErrorResponse.

    Attributes:

        registration_id (Optional[str]):

        user_id (Optional[str]):

    """

    registration_id: Optional[str] = field(
        default=None, metadata={"alias": "registrationId"}
    )

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserPushToTalkGetAvailableUserListRequest(OCIRequest):
    """Get a list of available users for the push to talk service.
        The response is either UserPushToTalkGetAvailableUserListResponse or ErrorResponse.

    Attributes:

        user_id (str):

        response_size_limit (Optional[int]):

        search_criteria_user_last_name (Optional[List[SearchCriteriaUserLastName]]):

        search_criteria_user_first_name (Optional[List[SearchCriteriaUserFirstName]]):

        search_criteria_exact_user_department (Optional[SearchCriteriaExactUserDepartment]):

        search_criteria_exact_user_group (Optional[SearchCriteriaExactUserGroup]):

        search_criteria_user_id (Optional[List[SearchCriteriaUserId]]):

        search_criteria_dn (Optional[List[SearchCriteriaDn]]):

        search_criteria_extension (Optional[List[SearchCriteriaExtension]]):

        search_criteria_imp_id (Optional[List[SearchCriteriaImpId]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    response_size_limit: Optional[int] = field(
        default=None, metadata={"alias": "responseSizeLimit"}
    )

    search_criteria_user_last_name: Optional[List[SearchCriteriaUserLastName]] = field(
        default=None, metadata={"alias": "searchCriteriaUserLastName"}
    )

    search_criteria_user_first_name: Optional[List[SearchCriteriaUserFirstName]] = (
        field(default=None, metadata={"alias": "searchCriteriaUserFirstName"})
    )

    search_criteria_exact_user_department: Optional[
        SearchCriteriaExactUserDepartment
    ] = field(default=None, metadata={"alias": "searchCriteriaExactUserDepartment"})

    search_criteria_exact_user_group: Optional[SearchCriteriaExactUserGroup] = field(
        default=None, metadata={"alias": "searchCriteriaExactUserGroup"}
    )

    search_criteria_user_id: Optional[List[SearchCriteriaUserId]] = field(
        default=None, metadata={"alias": "searchCriteriaUserId"}
    )

    search_criteria_dn: Optional[List[SearchCriteriaDn]] = field(
        default=None, metadata={"alias": "searchCriteriaDn"}
    )

    search_criteria_extension: Optional[List[SearchCriteriaExtension]] = field(
        default=None, metadata={"alias": "searchCriteriaExtension"}
    )

    search_criteria_imp_id: Optional[List[SearchCriteriaImpId]] = field(
        default=None, metadata={"alias": "searchCriteriaImpId"}
    )


@dataclass(kw_only=True)
class UserPushToTalkGetRequest(OCIRequest):
    """Request the push to talk service setting.
        The response is either a UserPushToTalkGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserPushToTalkModifyRequest(OCIRequest):
    """Change the push to talk service settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        allow_auto_answer (Optional[bool]):

        outgoing_connection_selection (Optional[str]):

        access_list_selection (Optional[str]):

        selected_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    allow_auto_answer: Optional[bool] = field(
        default=None, metadata={"alias": "allowAutoAnswer"}
    )

    outgoing_connection_selection: Optional[str] = field(
        default=None, metadata={"alias": "outgoingConnectionSelection"}
    )

    access_list_selection: Optional[str] = field(
        default=None, metadata={"alias": "accessListSelection"}
    )

    selected_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "selectedUserIdList"}
    )

    def __post_init__(self):
        nillable_fields = ["selected_user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserRemoteOfficeGetRequest(OCIRequest):
    """Request the user level data associated with Remote Office.
        The response is either a UserRemoteOfficeGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserRemoteOfficeModifyRequest(OCIRequest):
    """Modify the user level data associated with Remote Office.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        remote_office_phone_number (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    remote_office_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "remoteOfficePhoneNumber"}
    )

    def __post_init__(self):
        nillable_fields = ["remote_office_phone_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserResourcePriorityGetRequest(OCIRequest):
    """Get the Resource Priority settings of a user.
        The response is either UserResourcePriorityGetResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserResourcePriorityModifyRequest(OCIRequest):
    """Modify the Resource Priority settings of a user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        use_default_resource_priority (Optional[bool]):

        user_resource_priority (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    use_default_resource_priority: Optional[bool] = field(
        default=None, metadata={"alias": "useDefaultResourcePriority"}
    )

    user_resource_priority: Optional[str] = field(
        default=None, metadata={"alias": "userResourcePriority"}
    )


@dataclass(kw_only=True)
class UserRouteListGetRequest24(OCIRequest):
    """Get the route list setting and the list of number ranges assigned to a user.
        The response is either UserRouteListGetResponse24 or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserRouteListModifyRequest(OCIRequest):
    """Modify the route list setting and the list of number ranges and number prefixes assigned to a user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        treat_originations_and_pbx_redirections_as_screened (Optional[bool]):

        use_route_list_identity_for_non_emergency_calls (Optional[bool]):

        use_route_list_identity_for_emergency_calls (Optional[bool]):

        ignore_calling_name_for_call_processing (Optional[bool]):

        assigned_number_range_start_list (Optional[Nillable[ReplacementDNList]]):

        assigned_number_prefix_list (Optional[Nillable[EnterpriseTrunkReplacementNumberPrefixList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    treat_originations_and_pbx_redirections_as_screened: Optional[bool] = field(
        default=None,
        metadata={"alias": "treatOriginationsAndPBXRedirectionsAsScreened"},
    )

    use_route_list_identity_for_non_emergency_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useRouteListIdentityForNonEmergencyCalls"}
    )

    use_route_list_identity_for_emergency_calls: Optional[bool] = field(
        default=None, metadata={"alias": "useRouteListIdentityForEmergencyCalls"}
    )

    ignore_calling_name_for_call_processing: Optional[bool] = field(
        default=None, metadata={"alias": "ignoreCallingNameForCallProcessing"}
    )

    assigned_number_range_start_list: Optional[Nillable[ReplacementDNList]] = field(
        default=None, metadata={"alias": "assignedNumberRangeStartList"}
    )

    assigned_number_prefix_list: Optional[
        Nillable[EnterpriseTrunkReplacementNumberPrefixList]
    ] = field(default=None, metadata={"alias": "assignedNumberPrefixList"})

    def __post_init__(self):
        nillable_fields = [
            "assigned_number_range_start_list",
            "assigned_number_prefix_list",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserRoutePointCallDispositionCodeGetAvailableListRequest(OCIRequest):
    """Get the list of available Route Point Call Disposition Codes to be used by a client.
        The response is either UserRoutePointCallDispositionCodeGetAvailableListResponse or ErrorResponse.

    Attributes:

        service_user_id (str):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})


@dataclass(kw_only=True)
class UserRoutePointSupervisorGetListRequest(OCIRequest):
    """Get a list of Route Point supervisors assigned to a user.
        The response is either a
        UserRoutePointSupervisorGetListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserRoutePointSupervisorModifyListRequest(OCIRequest):
    """Request to modify the Route Point supervisor list for a user.
        The response is either SuccessResponse or ErrorResponse.

    Attributes:

        user_id (str):

        supervisor_user_id_list (Optional[Nillable[ReplacementUserIdList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    supervisor_user_id_list: Optional[Nillable[ReplacementUserIdList]] = field(
        default=None, metadata={"alias": "supervisorUserIdList"}
    )

    def __post_init__(self):
        nillable_fields = ["supervisor_user_id_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserSMDIMessageDeskAddServerRequest(OCIRequest):
    """Request to add a SMDI Server for a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        device_name (str):

        net_address (str):

        port (int):

    """

    user_id: str = field(metadata={"alias": "userId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    net_address: str = field(metadata={"alias": "netAddress"})

    port: int = field(metadata={"alias": "port"})


@dataclass(kw_only=True)
class UserSMDIMessageDeskDeleteServerListRequest(OCIRequest):
    """Request to delete a list of SMDI Servers for a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        device_name (List[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    device_name: List[str] = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class UserSMDIMessageDeskGetRequest(OCIRequest):
    """Get the user's SMDI Message Desk service personal setting.
        The response is either a UserSMDIMessageDeskGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserSMDIMessageDeskGetServerListRequest(OCIRequest):
    """Request to get a list of SMDI Servers defined for a user.
        The response is either a UserSMDIMessageDeskGetServerListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserSMDIMessageDeskModifyRequest(OCIRequest):
    """Modify the user's SMDI Message Desk service setting.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        message_desk_number (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    message_desk_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "messageDeskNumber"}
    )

    def __post_init__(self):
        nillable_fields = ["message_desk_number"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserScheduleAddEventRequest(OCIRequest):
    """Add an event to user schedule.
        The response is either a SuccessResponse or an ErrorResponse.
        The startDate element is adjusted to the first occurrence of the recurrent schedule that comes at or after the startDate.
        The endDate element is set to the sum of the adjusted starDate element value and the event duration.

    Attributes:

        user_id (str):

        schedule_key (ScheduleKey):

        event_name (str):

        start_date (int):

        all_day_event (Optional[bool]):

        start_time (Optional[HourMinute]):

        end_time (Optional[HourMinute]):

        end_date (int):

        recurrence (Optional[Recurrence]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    event_name: str = field(metadata={"alias": "eventName"})

    start_date: int = field(metadata={"alias": "startDate"})

    all_day_event: Optional[bool] = field(
        default=None, metadata={"alias": "allDayEvent"}
    )

    start_time: Optional[HourMinute] = field(
        default=None, metadata={"alias": "startTime"}
    )

    end_time: Optional[HourMinute] = field(default=None, metadata={"alias": "endTime"})

    end_date: int = field(metadata={"alias": "endDate"})

    recurrence: Optional[Recurrence] = field(
        default=None, metadata={"alias": "recurrence"}
    )


@dataclass(kw_only=True)
class UserScheduleAddRequest(OCIRequest):
    """Add a user schedule.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        schedule_name (str):

        schedule_type (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    schedule_name: str = field(metadata={"alias": "scheduleName"})

    schedule_type: str = field(metadata={"alias": "scheduleType"})


@dataclass(kw_only=True)
class UserScheduleDeleteEventListRequest(OCIRequest):
    """Delete a list of events from a user schedule.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        schedule_key (ScheduleKey):

        event_name (List[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    event_name: List[str] = field(metadata={"alias": "eventName"})


@dataclass(kw_only=True)
class UserScheduleDeleteListRequest(OCIRequest):
    """Delete a list of user schedule.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        schedule_key (List[ScheduleKey]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    schedule_key: List[ScheduleKey] = field(metadata={"alias": "scheduleKey"})


@dataclass(kw_only=True)
class UserScheduleGetEventDetailListRequest(OCIRequest):
    """Request the list of schedules viewable by a User. The list can be filtered by schedule type.
        The response is either a UserScheduleGetEventListForGroupResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        schedule_global_key (ScheduleGlobalKey):

    """

    user_id: str = field(metadata={"alias": "userId"})

    schedule_global_key: ScheduleGlobalKey = field(
        metadata={"alias": "scheduleGlobalKey"}
    )


@dataclass(kw_only=True)
class UserScheduleGetEventListRequest(OCIRequest):
    """Get the list of events of a user schedule.
        The response is either a UserScheduleGetEventListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        schedule_key (ScheduleKey):

    """

    user_id: str = field(metadata={"alias": "userId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})


@dataclass(kw_only=True)
class UserScheduleGetEventRequest(OCIRequest):
    """Get an event from a user schedule.
        The response is either a UserScheduleGetEventResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        schedule_key (ScheduleKey):

        event_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    event_name: str = field(metadata={"alias": "eventName"})


@dataclass(kw_only=True)
class UserScheduleGetListRequest17sp1(OCIRequest):
    """Get the list of schedules viewable by a User. The list can be filtered by schedule type.
        The response is either a UserScheduleGetListResponse17sp1 or an ErrorResponse.
        This command is authorized to user who is Executive-Assistant of the Executive.

    Attributes:

        user_id (str):

        schedule_type (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    schedule_type: Optional[str] = field(
        default=None, metadata={"alias": "scheduleType"}
    )


@dataclass(kw_only=True)
class UserScheduleGetPagedSortedListRequest(OCIRequest):
    """Get the list of schedules viewable by a User. The list can be filtered by schedule name,
        schedule type, and schedule level.
        The response is either a UserScheduleGetPagedSortedListResponse or an ErrorResponse.
        This command is authorized to user who is Executive-Assistant of the Executive.
        If no sortOrder is included, the response is sorted by Name ascending by default.
        If the responsePagingControl element is not provided, the paging startIndex will be
        set to 1 by default, and the responsePageSize will be set to the maximum
        responsePageSize by default.
        Multiple search criteria are logically ANDed together unless the searchCriteriaModeOr option
        is included. Then the search criteria are logically ORed together.

    Attributes:

        user_id (str):

        response_paging_control (Optional[ResponsePagingControl]):

        sort_by_schedule_name (Optional[SortByScheduleName]):

        search_criteria_schedule_name (Optional[List[SearchCriteriaScheduleName]]):

        search_criteria_exact_schedule_type (Optional[List[SearchCriteriaExactScheduleType]]):

        search_criteria_exact_schedule_level (Optional[List[SearchCriteriaExactScheduleLevel]]):

        search_criteria_mode_or (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    response_paging_control: Optional[ResponsePagingControl] = field(
        default=None, metadata={"alias": "responsePagingControl"}
    )

    sort_by_schedule_name: Optional[SortByScheduleName] = field(
        default=None, metadata={"alias": "sortByScheduleName"}
    )

    search_criteria_schedule_name: Optional[List[SearchCriteriaScheduleName]] = field(
        default=None, metadata={"alias": "searchCriteriaScheduleName"}
    )

    search_criteria_exact_schedule_type: Optional[
        List[SearchCriteriaExactScheduleType]
    ] = field(default=None, metadata={"alias": "searchCriteriaExactScheduleType"})

    search_criteria_exact_schedule_level: Optional[
        List[SearchCriteriaExactScheduleLevel]
    ] = field(default=None, metadata={"alias": "searchCriteriaExactScheduleLevel"})

    search_criteria_mode_or: Optional[bool] = field(
        default=None, metadata={"alias": "searchCriteriaModeOr"}
    )


@dataclass(kw_only=True)
class UserScheduleModifyEventRequest(OCIRequest):
    """Modify an event of a user schedule.
        The response is either a SuccessResponse or an ErrorResponse.
        The startDate element is adjusted to the first occurrence of the recurrent schedule that comes at or after the startDate.
        The endDate element is set to the sum of the adjusted starDate element value and the event duration.

    Attributes:

        user_id (str):

        schedule_key (ScheduleKey):

        event_name (str):

        new_event_name (Optional[str]):

        start_date (Optional[int]):

        all_day_event (Optional[bool]):

        start_time (Optional[HourMinute]):

        end_time (Optional[HourMinute]):

        end_date (Optional[int]):

        recurrence (Optional[Nillable[Recurrence]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    event_name: str = field(metadata={"alias": "eventName"})

    new_event_name: Optional[str] = field(
        default=None, metadata={"alias": "newEventName"}
    )

    start_date: Optional[int] = field(default=None, metadata={"alias": "startDate"})

    all_day_event: Optional[bool] = field(
        default=None, metadata={"alias": "allDayEvent"}
    )

    start_time: Optional[HourMinute] = field(
        default=None, metadata={"alias": "startTime"}
    )

    end_time: Optional[HourMinute] = field(default=None, metadata={"alias": "endTime"})

    end_date: Optional[int] = field(default=None, metadata={"alias": "endDate"})

    recurrence: Optional[Nillable[Recurrence]] = field(
        default=None, metadata={"alias": "recurrence"}
    )

    def __post_init__(self):
        nillable_fields = ["recurrence"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserScheduleModifyRequest(OCIRequest):
    """Modify a user schedule.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        schedule_key (ScheduleKey):

        new_schedule_name (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    schedule_key: ScheduleKey = field(metadata={"alias": "scheduleKey"})

    new_schedule_name: Optional[str] = field(
        default=None, metadata={"alias": "newScheduleName"}
    )


@dataclass(kw_only=True)
class UserSecurityClassificationGetRequest22(OCIRequest):
    """Get a user's Security Classifications configuration.
        The response is either UserSecurityClassificationGetResponse22 or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserSecurityClassificationModifyRequest(OCIRequest):
    """Modify a user's Security Classification configuration
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        security_classification (Nillable[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    security_classification: Nillable[str] = field(
        metadata={"alias": "securityClassification"}
    )

    def __post_init__(self):
        nillable_fields = ["security_classification"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserSelectiveCallAcceptanceAddCriteriaRequest16(OCIRequest):
    """Add a criteria to the user's selective call acceptance service.
        The following elements are only used in AS data mode:
          callToNumber

        For the callToNumber, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria (CriteriaFromDn):

        call_to_number (Optional[List[CallToNumber]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria: CriteriaFromDn = field(metadata={"alias": "fromDnCriteria"})

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class UserSelectiveCallAcceptanceDeleteCriteriaRequest(OCIRequest):
    """Delete a criteria from the user's selective call acceptance service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserSelectiveCallAcceptanceGetCriteriaListRequest(OCIRequest):
    """Get the user's selective call acceptance criteria listing.
        The response is either a UserSelectiveCallAcceptanceGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserSelectiveCallAcceptanceGetCriteriaRequest21(OCIRequest):
    """Get a criteria for the user's selective call acceptance service.
        The response is either a UserSelectiveCallAcceptanceGetCriteriaResponse21 or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserSelectiveCallAcceptanceModifyActiveCriteriaListRequest(OCIRequest):
    """Activate the user's selective call acceptance criteria list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_activation (Optional[List[CriteriaActivation]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_activation: Optional[List[CriteriaActivation]] = field(
        default=None, metadata={"alias": "criteriaActivation"}
    )


@dataclass(kw_only=True)
class UserSelectiveCallAcceptanceModifyCriteriaRequest(OCIRequest):
    """Modify a criteria for the user's selective call acceptance service.
        The following elements are only used in AS data mode:
          callToNumberList

        For the callToNumbers in the callToNumberList, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        new_criteria_name (Optional[str]):

        time_schedule (Optional[Nillable[TimeSchedule]]):

        from_dn_criteria (Optional[CriteriaFromDnModify]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        blacklisted (Optional[bool]):

        call_to_number_list (Optional[Nillable[ReplacementCallToNumberList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    new_criteria_name: Optional[str] = field(
        default=None, metadata={"alias": "newCriteriaName"}
    )

    time_schedule: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    from_dn_criteria: Optional[CriteriaFromDnModify] = field(
        default=None, metadata={"alias": "fromDnCriteria"}
    )

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: Optional[bool] = field(default=None, metadata={"alias": "blacklisted"})

    call_to_number_list: Optional[Nillable[ReplacementCallToNumberList]] = field(
        default=None, metadata={"alias": "callToNumberList"}
    )

    def __post_init__(self):
        nillable_fields = ["time_schedule", "holiday_schedule", "call_to_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserSelectiveCallRejectionAddCriteriaRequest16(OCIRequest):
    """Add a criteria to the user's selective call rejection service.
        The following elements are only used in AS data mode:
          callToNumber

        For the callToNumber, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        time_schedule (Optional[TimeSchedule]):

        from_dn_criteria (SelectiveCallRejectionCriteriaCallType):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        call_to_number (Optional[List[CallToNumber]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    from_dn_criteria: SelectiveCallRejectionCriteriaCallType = field(
        metadata={"alias": "fromDnCriteria"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class UserSelectiveCallRejectionDeleteCriteriaRequest(OCIRequest):
    """Delete a criteria from the user's selective call rejection service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserSelectiveCallRejectionGetCriteriaListRequest(OCIRequest):
    """Get the user's selective call rejection criteria listing.
        The response is either a UserSelectiveCallRejectionGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserSelectiveCallRejectionGetCriteriaRequest21(OCIRequest):
    """Get a criteria for the user's selective call rejection service.
        The response is either a UserSelectiveCallRejectionGetCriteriaResponse21 or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserSelectiveCallRejectionModifyActiveCriteriaListRequest(OCIRequest):
    """Activate the user's selective call rejection criteria list.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_activation (Optional[List[CriteriaActivation]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_activation: Optional[List[CriteriaActivation]] = field(
        default=None, metadata={"alias": "criteriaActivation"}
    )


@dataclass(kw_only=True)
class UserSelectiveCallRejectionModifyCriteriaRequest16(OCIRequest):
    """Modify a criteria for the user's selective call rejection service.
        The following elements are only used in AS data mode:
          callToNumberList

        For the callToNumbers in the callToNumberList, the extension element is not used and the number element is only used when the type is BroadWorks Mobility.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        new_criteria_name (Optional[str]):

        time_schedule (Optional[Nillable[TimeSchedule]]):

        from_dn_criteria (Optional[SelectiveCallRejectionCriteriaCallTypeModify]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        blacklisted (Optional[bool]):

        call_to_number_list (Optional[Nillable[ReplacementCallToNumberList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    new_criteria_name: Optional[str] = field(
        default=None, metadata={"alias": "newCriteriaName"}
    )

    time_schedule: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    from_dn_criteria: Optional[SelectiveCallRejectionCriteriaCallTypeModify] = field(
        default=None, metadata={"alias": "fromDnCriteria"}
    )

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: Optional[bool] = field(default=None, metadata={"alias": "blacklisted"})

    call_to_number_list: Optional[Nillable[ReplacementCallToNumberList]] = field(
        default=None, metadata={"alias": "callToNumberList"}
    )

    def __post_init__(self):
        nillable_fields = ["time_schedule", "holiday_schedule", "call_to_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserSequentialRingAddCriteriaRequest23(OCIRequest):
    """Add a criteria to the user's sequential ring service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria23 (CriteriaFromDn23):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria23: CriteriaFromDn23 = field(metadata={"alias": "fromDnCriteria23"})


@dataclass(kw_only=True)
class UserSequentialRingDeleteCriteriaRequest(OCIRequest):
    """Delete a criteria from the user's sequential ring service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserSequentialRingGetCriteriaRequest23(OCIRequest):
    """Get a criteria for the user's sequential ring service.
        The response is either a UserSequentialRingGetCriteriaResponse23 or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserSequentialRingGetRequest14sp4(OCIRequest):
    """Get the user's sequential ring service setting.
        The response is either a UserSequentialRingGetResponse14sp4 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserSequentialRingModifyCriteriaRequest23(OCIRequest):
    """Modify a criteria for the user's sequential ring service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        new_criteria_name (Optional[str]):

        time_schedule (Optional[Nillable[TimeSchedule]]):

        from_dn_criteria23 (Optional[CriteriaFromDnModify23]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        blacklisted (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    new_criteria_name: Optional[str] = field(
        default=None, metadata={"alias": "newCriteriaName"}
    )

    time_schedule: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    from_dn_criteria23: Optional[CriteriaFromDnModify23] = field(
        default=None, metadata={"alias": "fromDnCriteria23"}
    )

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: Optional[bool] = field(default=None, metadata={"alias": "blacklisted"})

    def __post_init__(self):
        nillable_fields = ["time_schedule", "holiday_schedule"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserSequentialRingModifyRequest(OCIRequest):
    """Modify the user's sequential ring service setting.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        ring_base_location_first (Optional[bool]):

        base_location_number_of_rings (Optional[int]):

        continue_if_base_location_is_busy (Optional[bool]):

        caller_may_stop_search (Optional[bool]):

        location01 (Optional[SequentialRingLocationModify]):

        location02 (Optional[SequentialRingLocationModify]):

        location03 (Optional[SequentialRingLocationModify]):

        location04 (Optional[SequentialRingLocationModify]):

        location05 (Optional[SequentialRingLocationModify]):

        criteria_activation (Optional[List[CriteriaActivation]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    ring_base_location_first: Optional[bool] = field(
        default=None, metadata={"alias": "ringBaseLocationFirst"}
    )

    base_location_number_of_rings: Optional[int] = field(
        default=None, metadata={"alias": "baseLocationNumberOfRings"}
    )

    continue_if_base_location_is_busy: Optional[bool] = field(
        default=None, metadata={"alias": "continueIfBaseLocationIsBusy"}
    )

    caller_may_stop_search: Optional[bool] = field(
        default=None, metadata={"alias": "callerMayStopSearch"}
    )

    location01: Optional[SequentialRingLocationModify] = field(
        default=None, metadata={"alias": "Location01"}
    )

    location02: Optional[SequentialRingLocationModify] = field(
        default=None, metadata={"alias": "Location02"}
    )

    location03: Optional[SequentialRingLocationModify] = field(
        default=None, metadata={"alias": "Location03"}
    )

    location04: Optional[SequentialRingLocationModify] = field(
        default=None, metadata={"alias": "Location04"}
    )

    location05: Optional[SequentialRingLocationModify] = field(
        default=None, metadata={"alias": "Location05"}
    )

    criteria_activation: Optional[List[CriteriaActivation]] = field(
        default=None, metadata={"alias": "criteriaActivation"}
    )


@dataclass(kw_only=True)
class UserSeriesCompletionGetRequest(OCIRequest):
    """Gets the details of the Series Completion group that a user belongs to (if any).
        Any user can only belong to one Series Completion group.
        The response is either UserSeriesCompletionGetResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserServiceAssignListRequest(OCIRequest):
    """Request to assign the user services and service packs for a user.
        The response is either a SuccessResponse or an ErrorResponse.
        In AS data mode, a Warning ErrorResponse is sent when the transaction is partially successful
        while an Error ErrorResponse is sent when the transaction fails for all the services.
        In XS data mode, a Warning ErrorResponse is always sent when there is at least one error.

    Attributes:

        user_id (str):

        service_name (Optional[List[str]]):

        service_pack_name (Optional[List[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    service_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "serviceName"}
    )

    service_pack_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "servicePackName"}
    )


@dataclass(kw_only=True)
class UserServiceGetAssignmentListRequest(OCIRequest):
    """Requests the user's service and service pack assignment list with status.
        The response is either UserServiceGetAssignmentListResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserServiceIsAssignedRequest(OCIRequest):
    """Request to determine if a UserService or service pack is assigned to the user.

    Attributes:

        user_id (str):

        service_name (Optional[str]):

        service_pack_name (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    service_name: Optional[str] = field(default=None, metadata={"alias": "serviceName"})

    service_pack_name: Optional[str] = field(
        default=None, metadata={"alias": "servicePackName"}
    )


@dataclass(kw_only=True)
class UserServiceUnassignListRequest(OCIRequest):
    """Requests to unassign the user services and service packs for a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        service_name (Optional[List[str]]):

        service_pack_name (Optional[List[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    service_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "serviceName"}
    )

    service_pack_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "servicePackName"}
    )


@dataclass(kw_only=True)
class UserShInterfaceGetPublicIdDataRequest21sp1(OCIRequest):
    """Returns the Sh non-transparent data stored against a Public User Identity (a SIP URI
        or TEL URI).
        The response is either a UserShInterfaceGetPublicIdDataResponse21sp1 or an ErrorResponse.

    Attributes:

        public_user_identity (PublicUserIdentity):

    """

    public_user_identity: PublicUserIdentity = field(
        metadata={"alias": "publicUserIdentity"}
    )


@dataclass(kw_only=True)
class UserShInterfaceGetUserIdDataRequest21sp1(OCIRequest):
    """Returns the Sh non-transparent data stored against a userId.
        The response is either a UserShInterfaceGetUserIdDataResponse21sp1 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserShInterfaceModifyRequest(OCIRequest):
    """Modifies the Sh Interface non-transparent data associated with a Public User Identity.
        The response is a SuccessResponse or ErrorResponse.

    Attributes:

        public_user_identity (PublicUserIdentity):

        scscf_name (Optional[Nillable[str]]):

        ims_user_state (Optional[str]):

    """

    public_user_identity: PublicUserIdentity = field(
        metadata={"alias": "publicUserIdentity"}
    )

    scscf_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "SCSCFName"}
    )

    ims_user_state: Optional[str] = field(
        default=None, metadata={"alias": "IMSUserState"}
    )

    def __post_init__(self):
        nillable_fields = ["scscf_name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserShInterfacePublicIdentityRefreshTaskStartRequest(OCIRequest):
    """Dispatches a Public Identity refresh task on the local Application Server node for the specified public identity.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        public_user_identity (PublicUserIdentity):

    """

    public_user_identity: PublicUserIdentity = field(
        metadata={"alias": "publicUserIdentity"}
    )


@dataclass(kw_only=True)
class UserSharedCallAppearanceAddEndpointRequest22(OCIRequest):
    """Associate an access device instance to the user's Shared Call Appearance.

        The following elements are ignored in XS data mode:
          allowVideo, useValue true in AS data mode

        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        access_device_endpoint (AccessDeviceEndpointAndHotlineAdd):

        is_active (bool):

        allow_origination (bool):

        allow_termination (bool):

        allow_video (bool):

    """

    user_id: str = field(metadata={"alias": "userId"})

    access_device_endpoint: AccessDeviceEndpointAndHotlineAdd = field(
        metadata={"alias": "accessDeviceEndpoint"}
    )

    is_active: bool = field(metadata={"alias": "isActive"})

    allow_origination: bool = field(metadata={"alias": "allowOrigination"})

    allow_termination: bool = field(metadata={"alias": "allowTermination"})

    allow_video: bool = field(metadata={"alias": "allowVideo"})


@dataclass(kw_only=True)
class UserSharedCallAppearanceDeleteEndpointListRequest14(OCIRequest):
    """Disassociate one or more of a user's Shared Call Appearance endpoints.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        access_device_endpoint (List[AccessDeviceEndpointKey]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    access_device_endpoint: List[AccessDeviceEndpointKey] = field(
        metadata={"alias": "accessDeviceEndpoint"}
    )


@dataclass(kw_only=True)
class UserSharedCallAppearanceGetEndpointRequest22(OCIRequest):
    """Get the user's Shared Call Appearance endpoint setting.
        The response is either a UserSharedCallAppearanceGetEndpointResponse22 or an ErrorResponse.

    Attributes:

        user_id (str):

        access_device_endpoint (AccessDeviceEndpointKey):

    """

    user_id: str = field(metadata={"alias": "userId"})

    access_device_endpoint: AccessDeviceEndpointKey = field(
        metadata={"alias": "accessDeviceEndpoint"}
    )


@dataclass(kw_only=True)
class UserSharedCallAppearanceGetRequest21sp1(OCIRequest):
    """Get the user's Shared Call Appearance service setting.
        The response is either a UserSharedCallAppearanceGetResponse21sp1 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserSharedCallAppearanceModifyEndpointRequest(OCIRequest):
    """Associate/Disassociate an access device instance to the user's Shared Call Appearance.

        The following elements are only used in AS data mode and ignored in XS data mode:
          useHotline
          hotlineContact

         The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        access_device_endpoint (AccessDeviceEndpointKey):

        is_active (Optional[bool]):

        allow_origination (Optional[bool]):

        allow_termination (Optional[bool]):

        use_hotline (Optional[bool]):

        hotline_contact (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    access_device_endpoint: AccessDeviceEndpointKey = field(
        metadata={"alias": "accessDeviceEndpoint"}
    )

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    allow_origination: Optional[bool] = field(
        default=None, metadata={"alias": "allowOrigination"}
    )

    allow_termination: Optional[bool] = field(
        default=None, metadata={"alias": "allowTermination"}
    )

    use_hotline: Optional[bool] = field(default=None, metadata={"alias": "useHotline"})

    hotline_contact: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "hotlineContact"}
    )

    def __post_init__(self):
        nillable_fields = ["hotline_contact"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserSharedCallAppearanceModifyRequest(OCIRequest):
    """Modify the user's Shared Call Appearance service setting.
         The response is either a SuccessResponse or an ErrorResponse.

         The following elements are only used in XS data mode and ignored in AS data mode:
           useUserPrimaryWithAlternateCallsSetting
           allowSimultaneousPrimaryAndAlternate
           restrictCallRetrieveOfPrimary
           restrictCallBridgingOfPrimary

    Attributes:

        user_id (str):

        alert_all_appearances_for_click_to_dial_calls (Optional[bool]):

        alert_all_appearances_for_group_paging_calls (Optional[bool]):

        allow_sca_call_retrieve (Optional[bool]):

        multiple_call_arrangement_is_active (Optional[bool]):

        allow_bridging_between_locations (Optional[bool]):

        bridge_warning_tone (Optional[str]):

        enable_call_park_notification (Optional[bool]):

        use_user_primary_with_alternate_calls_setting (Optional[bool]):

        allow_simultaneous_primary_and_alternate_calls (Optional[bool]):

        restrict_call_retrieve_of_primary_call (Optional[bool]):

        restrict_call_bridging_of_primary_call (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    alert_all_appearances_for_click_to_dial_calls: Optional[bool] = field(
        default=None, metadata={"alias": "alertAllAppearancesForClickToDialCalls"}
    )

    alert_all_appearances_for_group_paging_calls: Optional[bool] = field(
        default=None, metadata={"alias": "alertAllAppearancesForGroupPagingCalls"}
    )

    allow_sca_call_retrieve: Optional[bool] = field(
        default=None, metadata={"alias": "allowSCACallRetrieve"}
    )

    multiple_call_arrangement_is_active: Optional[bool] = field(
        default=None, metadata={"alias": "multipleCallArrangementIsActive"}
    )

    allow_bridging_between_locations: Optional[bool] = field(
        default=None, metadata={"alias": "allowBridgingBetweenLocations"}
    )

    bridge_warning_tone: Optional[str] = field(
        default=None, metadata={"alias": "bridgeWarningTone"}
    )

    enable_call_park_notification: Optional[bool] = field(
        default=None, metadata={"alias": "enableCallParkNotification"}
    )

    use_user_primary_with_alternate_calls_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useUserPrimaryWithAlternateCallsSetting"}
    )

    allow_simultaneous_primary_and_alternate_calls: Optional[bool] = field(
        default=None, metadata={"alias": "allowSimultaneousPrimaryAndAlternateCalls"}
    )

    restrict_call_retrieve_of_primary_call: Optional[bool] = field(
        default=None, metadata={"alias": "restrictCallRetrieveOfPrimaryCall"}
    )

    restrict_call_bridging_of_primary_call: Optional[bool] = field(
        default=None, metadata={"alias": "restrictCallBridgingOfPrimaryCall"}
    )


@dataclass(kw_only=True)
class UserSilentAlertingGetRequest(OCIRequest):
    """Request the user level data associated with Silent Alerting service.
        The response is either a UserSilentAlertingGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserSilentAlertingModifyRequest(OCIRequest):
    """Modify the user level data associated with Silent Alerting service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserSimultaneousRingFamilyAddCriteriaRequest(OCIRequest):
    """Add a criteria to the user's simultaneous ring family service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria (CriteriaFromDn):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria: CriteriaFromDn = field(metadata={"alias": "fromDnCriteria"})


@dataclass(kw_only=True)
class UserSimultaneousRingFamilyDeleteCriteriaRequest(OCIRequest):
    """Delete a criteria from the user's simultaneous ring family service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserSimultaneousRingFamilyGetCriteriaRequest(OCIRequest):
    """Get a criteria for the user's simultaneous ring family service.
        The response is either a UserSimultaneousRingFamilyGetCriteriaResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserSimultaneousRingFamilyGetRequest17(OCIRequest):
    """Get the user's simultaneous ring family service setting.
        The response is either a UserSimultaneousRingFamilyGetResponse17 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserSimultaneousRingFamilyModifyCriteriaRequest(OCIRequest):
    """Modify a criteria for the user's simultaneous ring family service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        new_criteria_name (Optional[str]):

        time_schedule (Optional[Nillable[TimeSchedule]]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        blacklisted (Optional[bool]):

        from_dn_criteria (Optional[CriteriaFromDnModify]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    new_criteria_name: Optional[str] = field(
        default=None, metadata={"alias": "newCriteriaName"}
    )

    time_schedule: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: Optional[bool] = field(default=None, metadata={"alias": "blacklisted"})

    from_dn_criteria: Optional[CriteriaFromDnModify] = field(
        default=None, metadata={"alias": "fromDnCriteria"}
    )

    def __post_init__(self):
        nillable_fields = ["time_schedule", "holiday_schedule"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserSimultaneousRingFamilyModifyRequest17(OCIRequest):
    """Modify the user's simultaneous ring family service setting.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        do_not_ring_if_on_call (Optional[bool]):

        simultaneous_ring_number_list (Optional[Nillable[SimultaneousRingReplacementNumberList]]):

        criteria_activation (Optional[List[CriteriaActivation]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    do_not_ring_if_on_call: Optional[bool] = field(
        default=None, metadata={"alias": "doNotRingIfOnCall"}
    )

    simultaneous_ring_number_list: Optional[
        Nillable[SimultaneousRingReplacementNumberList]
    ] = field(default=None, metadata={"alias": "simultaneousRingNumberList"})

    criteria_activation: Optional[List[CriteriaActivation]] = field(
        default=None, metadata={"alias": "criteriaActivation"}
    )

    def __post_init__(self):
        nillable_fields = ["simultaneous_ring_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserSimultaneousRingPersonalAddCriteriaRequest(OCIRequest):
    """Add a criteria to the user's simultaneous ring personal service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria (CriteriaFromDn):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria: CriteriaFromDn = field(metadata={"alias": "fromDnCriteria"})


@dataclass(kw_only=True)
class UserSimultaneousRingPersonalDeleteCriteriaRequest(OCIRequest):
    """Delete a criteria from the user's simultaneous ring personal service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserSimultaneousRingPersonalGetCriteriaRequest(OCIRequest):
    """Get a criteria for the user's simultaneous ring personal service.
        The response is either a UserSimultaneousRingPersonalGetCriteriaResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})


@dataclass(kw_only=True)
class UserSimultaneousRingPersonalGetRequest17(OCIRequest):
    """Get the user's simultaneous ring personal service setting.
        The response is either a UserSimultaneousRingPersonalGetResponse17 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserSimultaneousRingPersonalModifyCriteriaRequest(OCIRequest):
    """Modify a criteria for the user's simultaneous ring personal service.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        criteria_name (str):

        new_criteria_name (Optional[str]):

        time_schedule (Optional[Nillable[TimeSchedule]]):

        holiday_schedule (Optional[Nillable[HolidaySchedule]]):

        blacklisted (Optional[bool]):

        from_dn_criteria (Optional[CriteriaFromDnModify]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    criteria_name: str = field(metadata={"alias": "criteriaName"})

    new_criteria_name: Optional[str] = field(
        default=None, metadata={"alias": "newCriteriaName"}
    )

    time_schedule: Optional[Nillable[TimeSchedule]] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[Nillable[HolidaySchedule]] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: Optional[bool] = field(default=None, metadata={"alias": "blacklisted"})

    from_dn_criteria: Optional[CriteriaFromDnModify] = field(
        default=None, metadata={"alias": "fromDnCriteria"}
    )

    def __post_init__(self):
        nillable_fields = ["time_schedule", "holiday_schedule"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserSimultaneousRingPersonalModifyRequest17(OCIRequest):
    """Modify the user's simultaneous ring personal service setting.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        do_not_ring_if_on_call (Optional[bool]):

        simultaneous_ring_number_list (Optional[Nillable[SimultaneousRingReplacementNumberList]]):

        criteria_activation (Optional[List[CriteriaActivation]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    do_not_ring_if_on_call: Optional[bool] = field(
        default=None, metadata={"alias": "doNotRingIfOnCall"}
    )

    simultaneous_ring_number_list: Optional[
        Nillable[SimultaneousRingReplacementNumberList]
    ] = field(default=None, metadata={"alias": "simultaneousRingNumberList"})

    criteria_activation: Optional[List[CriteriaActivation]] = field(
        default=None, metadata={"alias": "criteriaActivation"}
    )

    def __post_init__(self):
        nillable_fields = ["simultaneous_ring_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserSingleSignOnCreateDeviceTokenRequest(OCIRequest):
    """This command allows a BroadWorks or Third-Party Client Application to
        create a Single Sign-On token for a device of a user.
        The token is created only if:
        1. the specified user is the owner of a lineport on the specified device
           (including a trunk user on a trunk device).
        2. and, the specified device is not in locked state.
        3. and, the device type of the device does support Device Management.
        The response is either UserSingleSignOnCreateDeviceTokenResponse
        or ErrorResponse.

    Attributes:

        user_id (str):

        device_level (str):

        device_name (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    device_level: str = field(metadata={"alias": "deviceLevel"})

    device_name: str = field(metadata={"alias": "deviceName"})


@dataclass(kw_only=True)
class UserSpeedDial100AddListRequest(OCIRequest):
    """Add one or more speed dial 100 settings for a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        speed_dial_entry (List[SpeedDial100Entry]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    speed_dial_entry: List[SpeedDial100Entry] = field(
        metadata={"alias": "speedDialEntry"}
    )


@dataclass(kw_only=True)
class UserSpeedDial100DeleteListRequest(OCIRequest):
    """Delete one or more speed dial 100 settings for a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        speed_code (Optional[List[int]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    speed_code: Optional[List[int]] = field(
        default=None, metadata={"alias": "speedCode"}
    )


@dataclass(kw_only=True)
class UserSpeedDial100GetListRequest17sp1(OCIRequest):
    """Get the speed dial 100 settings for a user.
        The response is either a UserSpeedDial100GetListResponse17sp1 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserSpeedDial100GetRequest(OCIRequest):
    """Get speed dial 100 settings for a speed code.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        speed_code (int):

    """

    user_id: str = field(metadata={"alias": "userId"})

    speed_code: int = field(metadata={"alias": "speedCode"})


@dataclass(kw_only=True)
class UserSpeedDial100ModifyListRequest(OCIRequest):
    """Modify the speed dial 100 settings for a user.
        The response is either a SuccessResponse or an ErrorResponse.
        Engineering Note: This command is used internally by Call Processing.

    Attributes:

        user_id (str):

        speed_dial_entry (Optional[List[SpeedDial100EntryModify]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    speed_dial_entry: Optional[List[SpeedDial100EntryModify]] = field(
        default=None, metadata={"alias": "speedDialEntry"}
    )


@dataclass(kw_only=True)
class UserSpeedDial8GetListRequest(OCIRequest):
    """Get the speed dial 8 settings for a user.
        The response is either a UserSpeedDial8GetListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserSpeedDial8ModifyListRequest(OCIRequest):
    """Modify the speed dial 8 settings for a user.
        The response is either a SuccessResponse or an ErrorResponse.
        Engineering Note: This command is used internally by Call Processing.

    Attributes:

        user_id (str):

        speed_dial_entry (Optional[List[SpeedDial8Entry]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    speed_dial_entry: Optional[List[SpeedDial8Entry]] = field(
        default=None, metadata={"alias": "speedDialEntry"}
    )


@dataclass(kw_only=True)
class UserTerminatingAlternateTrunkIdentityGetRequest(OCIRequest):
    """Request the user level data associated with Terminating Alternate Trunk Identity.
      The response is either a UserTerminatingAlternateTrunkIdentityGetResponse or an
      ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserTerminatingAlternateTrunkIdentityModifyRequest(OCIRequest):
    """Modify the user level data associated with Terminating Alternate Trunk Identity.
      The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        terminating_trunk_identity (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    terminating_trunk_identity: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "terminatingTrunkIdentity"}
    )

    def __post_init__(self):
        nillable_fields = ["terminating_trunk_identity"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserTerminatingClosedUserGroupGetRequest(OCIRequest):
    """Get user Terminating CUG service settings.
        The response is either UserTerminatingClosedUserGroupGetResponse or ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserTerminatingClosedUserGroupModifyRequest(OCIRequest):
    """Modify user Terminating CUG service settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        user_interlock_code (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    user_interlock_code: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "userInterlockCode"}
    )

    def __post_init__(self):
        nillable_fields = ["user_interlock_code"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserThirdPartyVoiceMailSupportGetRequest17(OCIRequest):
    """Request the user level data associated with Third-Party Voice Mail Support.
        The response is either a UserThirdPartyVoiceMailSupportGetResponse17 or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserThirdPartyVoiceMailSupportModifyRequest(OCIRequest):
    """Modify the Third Party Voice Mail Support settings for a user.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        busy_redirect_to_voice_mail (Optional[bool]):

        no_answer_redirect_to_voice_mail (Optional[bool]):

        server_selection (Optional[str]):

        user_server (Optional[Nillable[str]]):

        mailbox_id_type (Optional[str]):

        mailbox_url (Optional[Nillable[str]]):

        no_answer_number_of_rings (Optional[int]):

        always_redirect_to_voice_mail (Optional[bool]):

        out_of_primary_zone_redirect_to_voice_mail (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    busy_redirect_to_voice_mail: Optional[bool] = field(
        default=None, metadata={"alias": "busyRedirectToVoiceMail"}
    )

    no_answer_redirect_to_voice_mail: Optional[bool] = field(
        default=None, metadata={"alias": "noAnswerRedirectToVoiceMail"}
    )

    server_selection: Optional[str] = field(
        default=None, metadata={"alias": "serverSelection"}
    )

    user_server: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "userServer"}
    )

    mailbox_id_type: Optional[str] = field(
        default=None, metadata={"alias": "mailboxIdType"}
    )

    mailbox_url: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "mailboxURL"}
    )

    no_answer_number_of_rings: Optional[int] = field(
        default=None, metadata={"alias": "noAnswerNumberOfRings"}
    )

    always_redirect_to_voice_mail: Optional[bool] = field(
        default=None, metadata={"alias": "alwaysRedirectToVoiceMail"}
    )

    out_of_primary_zone_redirect_to_voice_mail: Optional[bool] = field(
        default=None, metadata={"alias": "outOfPrimaryZoneRedirectToVoiceMail"}
    )

    def __post_init__(self):
        nillable_fields = ["user_server", "mailbox_url"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserTwoStageDialingGetRequest13Mp20(OCIRequest):
    """Request the user level data associated with Two Stage Dialing.
          The response is either a UserTwoStageDialingGetResponse13Mp20 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserTwoStageDialingModifyRequest(OCIRequest):
    """Modify the user level data associated with Two Stage Dialing.
          The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        allow_activation_with_user_addresses (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    allow_activation_with_user_addresses: Optional[bool] = field(
        default=None, metadata={"alias": "allowActivationWithUserAddresses"}
    )


@dataclass(kw_only=True)
class UserVideoAddOnGetRequest22(OCIRequest):
    """Get the user's Video Add-On service setting.
        The response is either a UserVideoAddOnGetResponse22 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserVideoAddOnModifyRequest14(OCIRequest):
    """Modify the user's Video Add-On service setting.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        max_originating_call_delay_seconds (Optional[int]):

        access_device_endpoint (Optional[Nillable[AccessDeviceEndpointModify]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    max_originating_call_delay_seconds: Optional[int] = field(
        default=None, metadata={"alias": "maxOriginatingCallDelaySeconds"}
    )

    access_device_endpoint: Optional[Nillable[AccessDeviceEndpointModify]] = field(
        default=None, metadata={"alias": "accessDeviceEndpoint"}
    )

    def __post_init__(self):
        nillable_fields = ["access_device_endpoint"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserVoiceMessagingUserAddAliasListRequest(OCIRequest):
    """Add one or more voice mail aliases to a users voice message.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        phone_number (List[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    phone_number: List[str] = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class UserVoiceMessagingUserDeleteAliasListRequest(OCIRequest):
    """Delete one or more voice mail aliases from a users voice message.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        phone_number (List[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    phone_number: List[str] = field(metadata={"alias": "phoneNumber"})


@dataclass(kw_only=True)
class UserVoiceMessagingUserGetAdvancedVoiceManagementRequest14sp3(OCIRequest):
    """Get the user's voice messaging advanced voice management service setting.
        The response is either a UserVoiceMessagingUserGetAdvancedVoiceManagementResponse14sp3 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserVoiceMessagingUserGetAliasListRequest(OCIRequest):
    """Get the voice mail aliases for a users voice message.
        The response is either a UserVoiceMessagingUserGetAliasListResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserVoiceMessagingUserGetDistributionListRequest(OCIRequest):
    """Get a voice mail distribution list for a users voice message.
        The response is either UserVoiceMessagingUserGetDistributionListResponse or ErrorResponse.

    Attributes:

        user_id (str):

        list_id (int):

    """

    user_id: str = field(metadata={"alias": "userId"})

    list_id: int = field(metadata={"alias": "listId"})


@dataclass(kw_only=True)
class UserVoiceMessagingUserGetGreetingRequest20(OCIRequest):
    """Get the user's voice messaging greeting information.
        The response is either a UserVoiceMessagingUserGetGreetingResponse20 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserVoiceMessagingUserGetOutgoingSMDIMWIRequest(OCIRequest):
    """Get the user's voice messaging outgoing SMDI message waiting indicator service setting.
        The response is either a UserVoiceMessagingUserGetOutgoingSMDIMWIResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserVoiceMessagingUserGetVoiceManagementRequest23(OCIRequest):
    """Get the user's voice messaging voice management service settings.
        The response is either a UserVoiceMessagingUserGetVoiceManagementResponse23 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserVoiceMessagingUserGetVoicePortalRequest20(OCIRequest):
    """Get the user's voice messaging voice portal settings.
        The response is either a UserVoiceMessagingUserGetVoicePortalResponse20 or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserVoiceMessagingUserModifyAdvancedVoiceManagementRequest(OCIRequest):
    """Modify the user's voice messaging advanced voice management service setting.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        mail_server_selection (Optional[str]):

        group_mail_server_email_address (Optional[str]):

        group_mail_server_user_id (Optional[str]):

        group_mail_server_password (Optional[str]):

        use_group_default_mail_server_full_mailbox_limit (Optional[bool]):

        group_mail_server_full_mailbox_limit (Optional[int]):

        personal_mail_server_net_address (Optional[str]):

        personal_mail_server_protocol (Optional[str]):

        personal_mail_server_real_delete_for_imap (Optional[bool]):

        personal_mail_server_email_address (Optional[str]):

        personal_mail_server_user_id (Optional[str]):

        personal_mail_server_password (Optional[str]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    mail_server_selection: Optional[str] = field(
        default=None, metadata={"alias": "mailServerSelection"}
    )

    group_mail_server_email_address: Optional[str] = field(
        default=None, metadata={"alias": "groupMailServerEmailAddress"}
    )

    group_mail_server_user_id: Optional[str] = field(
        default=None, metadata={"alias": "groupMailServerUserId"}
    )

    group_mail_server_password: Optional[str] = field(
        default=None, metadata={"alias": "groupMailServerPassword"}
    )

    use_group_default_mail_server_full_mailbox_limit: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupDefaultMailServerFullMailboxLimit"}
    )

    group_mail_server_full_mailbox_limit: Optional[int] = field(
        default=None, metadata={"alias": "groupMailServerFullMailboxLimit"}
    )

    personal_mail_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "personalMailServerNetAddress"}
    )

    personal_mail_server_protocol: Optional[str] = field(
        default=None, metadata={"alias": "personalMailServerProtocol"}
    )

    personal_mail_server_real_delete_for_imap: Optional[bool] = field(
        default=None, metadata={"alias": "personalMailServerRealDeleteForImap"}
    )

    personal_mail_server_email_address: Optional[str] = field(
        default=None, metadata={"alias": "personalMailServerEmailAddress"}
    )

    personal_mail_server_user_id: Optional[str] = field(
        default=None, metadata={"alias": "personalMailServerUserId"}
    )

    personal_mail_server_password: Optional[str] = field(
        default=None, metadata={"alias": "personalMailServerPassword"}
    )


@dataclass(kw_only=True)
class UserVoiceMessagingUserModifyDistributionListRequest(OCIRequest):
    """Modify a voice mail distribution list for a users voice message.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        list_id (int):

        description (Optional[Nillable[str]]):

        phone_number_list (Optional[Nillable[ReplacementOutgoingDNorSIPURIList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    list_id: int = field(metadata={"alias": "listId"})

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    phone_number_list: Optional[Nillable[ReplacementOutgoingDNorSIPURIList]] = field(
        default=None, metadata={"alias": "phoneNumberList"}
    )

    def __post_init__(self):
        nillable_fields = ["description", "phone_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserVoiceMessagingUserModifyGreetingExecutionServerRequest(OCIRequest):
    """Modify the user's voice messaging greeting.
        The response is either a SuccessResponse or an ErrorResponse.
        Engineering Note: This command can only be executed from the Execution Server

    Attributes:

        user_id (str):

        busy_announcement_selection (Optional[str]):

        busy_personal_audio_file (Optional[LabeledFileNameResource]):

        busy_personal_video_file (Optional[LabeledFileNameResource]):

        no_answer_announcement_selection (Optional[str]):

        no_answer_personal_audio_file (Optional[LabeledFileNameResource]):

        no_answer_personal_video_file (Optional[LabeledFileNameResource]):

        no_answer_number_of_rings (Optional[int]):

        extended_away_enabled (Optional[bool]):

        extended_away_disable_message_deposit (Optional[bool]):

        extended_away_audio_file (Optional[LabeledFileNameResource]):

        extended_away_video_file (Optional[LabeledFileNameResource]):

        disable_message_deposit (Optional[bool]):

        disable_message_deposit_action (Optional[str]):

        greeting_only_forward_destination (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    busy_announcement_selection: Optional[str] = field(
        default=None, metadata={"alias": "busyAnnouncementSelection"}
    )

    busy_personal_audio_file: Optional[LabeledFileNameResource] = field(
        default=None, metadata={"alias": "busyPersonalAudioFile"}
    )

    busy_personal_video_file: Optional[LabeledFileNameResource] = field(
        default=None, metadata={"alias": "busyPersonalVideoFile"}
    )

    no_answer_announcement_selection: Optional[str] = field(
        default=None, metadata={"alias": "noAnswerAnnouncementSelection"}
    )

    no_answer_personal_audio_file: Optional[LabeledFileNameResource] = field(
        default=None, metadata={"alias": "noAnswerPersonalAudioFile"}
    )

    no_answer_personal_video_file: Optional[LabeledFileNameResource] = field(
        default=None, metadata={"alias": "noAnswerPersonalVideoFile"}
    )

    no_answer_number_of_rings: Optional[int] = field(
        default=None, metadata={"alias": "noAnswerNumberOfRings"}
    )

    extended_away_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "extendedAwayEnabled"}
    )

    extended_away_disable_message_deposit: Optional[bool] = field(
        default=None, metadata={"alias": "extendedAwayDisableMessageDeposit"}
    )

    extended_away_audio_file: Optional[LabeledFileNameResource] = field(
        default=None, metadata={"alias": "extendedAwayAudioFile"}
    )

    extended_away_video_file: Optional[LabeledFileNameResource] = field(
        default=None, metadata={"alias": "extendedAwayVideoFile"}
    )

    disable_message_deposit: Optional[bool] = field(
        default=None, metadata={"alias": "disableMessageDeposit"}
    )

    disable_message_deposit_action: Optional[str] = field(
        default=None, metadata={"alias": "disableMessageDepositAction"}
    )

    greeting_only_forward_destination: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "greetingOnlyForwardDestination"}
    )

    def __post_init__(self):
        nillable_fields = ["greeting_only_forward_destination"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserVoiceMessagingUserModifyGreetingRequest20(OCIRequest):
    """Modify the user's voice messaging greeting.
        The response is either a SuccessResponse or an ErrorResponse.
        Engineering Note: This command is used internally by Call Processing.
        The following elements are only used in AS data mode:
          disableMessageDeposit
          disableMessageDepositAction
          greetingOnlyForwardDestination

    Attributes:

        user_id (str):

        busy_announcement_selection (Optional[str]):

        busy_personal_audio_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        busy_personal_video_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        no_answer_announcement_selection (Optional[str]):

        no_answer_personal_audio_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        no_answer_personal_video_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        no_answer_alternate_greeting01 (Optional[VoiceMessagingAlternateNoAnswerGreetingModify20]):

        no_answer_alternate_greeting02 (Optional[VoiceMessagingAlternateNoAnswerGreetingModify20]):

        no_answer_alternate_greeting03 (Optional[VoiceMessagingAlternateNoAnswerGreetingModify20]):

        extended_away_enabled (Optional[bool]):

        extended_away_disable_message_deposit (Optional[bool]):

        extended_away_audio_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        extended_away_video_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        no_answer_number_of_rings (Optional[int]):

        disable_message_deposit (Optional[bool]):

        disable_message_deposit_action (Optional[str]):

        greeting_only_forward_destination (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    busy_announcement_selection: Optional[str] = field(
        default=None, metadata={"alias": "busyAnnouncementSelection"}
    )

    busy_personal_audio_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "busyPersonalAudioFile"}
    )

    busy_personal_video_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "busyPersonalVideoFile"}
    )

    no_answer_announcement_selection: Optional[str] = field(
        default=None, metadata={"alias": "noAnswerAnnouncementSelection"}
    )

    no_answer_personal_audio_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "noAnswerPersonalAudioFile"}
    )

    no_answer_personal_video_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "noAnswerPersonalVideoFile"}
    )

    no_answer_alternate_greeting01: Optional[
        VoiceMessagingAlternateNoAnswerGreetingModify20
    ] = field(default=None, metadata={"alias": "noAnswerAlternateGreeting01"})

    no_answer_alternate_greeting02: Optional[
        VoiceMessagingAlternateNoAnswerGreetingModify20
    ] = field(default=None, metadata={"alias": "noAnswerAlternateGreeting02"})

    no_answer_alternate_greeting03: Optional[
        VoiceMessagingAlternateNoAnswerGreetingModify20
    ] = field(default=None, metadata={"alias": "noAnswerAlternateGreeting03"})

    extended_away_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "extendedAwayEnabled"}
    )

    extended_away_disable_message_deposit: Optional[bool] = field(
        default=None, metadata={"alias": "extendedAwayDisableMessageDeposit"}
    )

    extended_away_audio_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "extendedAwayAudioFile"}
    )

    extended_away_video_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "extendedAwayVideoFile"}
    )

    no_answer_number_of_rings: Optional[int] = field(
        default=None, metadata={"alias": "noAnswerNumberOfRings"}
    )

    disable_message_deposit: Optional[bool] = field(
        default=None, metadata={"alias": "disableMessageDeposit"}
    )

    disable_message_deposit_action: Optional[str] = field(
        default=None, metadata={"alias": "disableMessageDepositAction"}
    )

    greeting_only_forward_destination: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "greetingOnlyForwardDestination"}
    )

    def __post_init__(self):
        nillable_fields = [
            "busy_personal_audio_file",
            "busy_personal_video_file",
            "no_answer_personal_audio_file",
            "no_answer_personal_video_file",
            "extended_away_audio_file",
            "extended_away_video_file",
            "greeting_only_forward_destination",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserVoiceMessagingUserModifyOutgoingSMDIMWIRequest(OCIRequest):
    """Modify the user's voice messaging outgoing message waiting indicator service setting.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        outgoing_smdimwi_phone_number_list (Optional[Nillable[ReplacementOutgoingDNList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    outgoing_smdimwi_phone_number_list: Optional[
        Nillable[ReplacementOutgoingDNList]
    ] = field(default=None, metadata={"alias": "outgoingSMDIMWIPhoneNumberList"})

    def __post_init__(self):
        nillable_fields = ["outgoing_smdimwi_phone_number_list"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserVoiceMessagingUserModifyRequest23V2(OCIRequest):
    """Modify the user's voice messaging advanced voice management service setting.
        Modify a voice mail distribution list for a users voice message.
        Modify the user's voice messaging greeting.
        Modify the user's voice messaging outgoing message waiting indicator service setting.
        Modify the user's voice messaging voice portal settings.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        mail_server_selection (Optional[str]):

        group_mail_server_email_address (Optional[str]):

        group_mail_server_user_id (Optional[str]):

        group_mail_server_password (Optional[str]):

        use_group_default_mail_server_full_mailbox_limit (Optional[bool]):

        group_mail_server_full_mailbox_limit (Optional[int]):

        personal_mail_server_net_address (Optional[str]):

        personal_mail_server_protocol (Optional[str]):

        personal_mail_server_real_delete_for_imap (Optional[bool]):

        personal_mail_server_email_address (Optional[str]):

        personal_mail_server_user_id (Optional[str]):

        personal_mail_server_password (Optional[str]):

        voice_messaging_distribution_list (Optional[List[VoiceMessagingDistributionListModify]]):

        busy_announcement_selection (Optional[str]):

        busy_personal_audio_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        busy_personal_video_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        no_answer_announcement_selection (Optional[str]):

        no_answer_personal_audio_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        no_answer_personal_video_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        no_answer_alternate_greeting01 (Optional[VoiceMessagingAlternateNoAnswerGreetingModify20]):

        no_answer_alternate_greeting02 (Optional[VoiceMessagingAlternateNoAnswerGreetingModify20]):

        no_answer_alternate_greeting03 (Optional[VoiceMessagingAlternateNoAnswerGreetingModify20]):

        extended_away_enabled (Optional[bool]):

        extended_away_disable_message_deposit (Optional[bool]):

        extended_away_audio_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        extended_away_video_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        no_answer_number_of_rings (Optional[int]):

        disable_message_deposit (Optional[bool]):

        disable_message_deposit_action (Optional[str]):

        greeting_only_forward_destination (Optional[Nillable[str]]):

        outgoing_smdimw_iis_active (Optional[bool]):

        outgoing_smdimwi_phone_number_list (Optional[Nillable[ReplacementOutgoingDNList]]):

        voice_managementis_active (Optional[bool]):

        processing (Optional[str]):

        voice_message_delivery_email_address (Optional[Nillable[EmailAddressList]]):

        use_phone_message_waiting_indicator (Optional[bool]):

        send_voice_message_notify_email (Optional[bool]):

        voice_message_notify_email_address (Optional[Nillable[str]]):

        send_carbon_copy_voice_message (Optional[bool]):

        voice_message_carbon_copy_email_address (Optional[Nillable[str]]):

        transfer_on_zero_to_phone_number (Optional[bool]):

        transfer_phone_number (Optional[Nillable[str]]):

        always_redirect_to_voice_mail (Optional[bool]):

        busy_redirect_to_voice_mail (Optional[bool]):

        no_answer_redirect_to_voice_mail (Optional[bool]):

        out_of_primary_zone_redirect_to_voice_mail (Optional[bool]):

        use_personalized_name (Optional[bool]):

        voice_portal_auto_login (Optional[bool]):

        personalized_name_audio_file (Optional[Nillable[AnnouncementFileLevelKey]]):

        user_messaging_alias_list (Optional[Nillable[VoiceMessagingAliasReplacementList]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    mail_server_selection: Optional[str] = field(
        default=None, metadata={"alias": "mailServerSelection"}
    )

    group_mail_server_email_address: Optional[str] = field(
        default=None, metadata={"alias": "groupMailServerEmailAddress"}
    )

    group_mail_server_user_id: Optional[str] = field(
        default=None, metadata={"alias": "groupMailServerUserId"}
    )

    group_mail_server_password: Optional[str] = field(
        default=None, metadata={"alias": "groupMailServerPassword"}
    )

    use_group_default_mail_server_full_mailbox_limit: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupDefaultMailServerFullMailboxLimit"}
    )

    group_mail_server_full_mailbox_limit: Optional[int] = field(
        default=None, metadata={"alias": "groupMailServerFullMailboxLimit"}
    )

    personal_mail_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "personalMailServerNetAddress"}
    )

    personal_mail_server_protocol: Optional[str] = field(
        default=None, metadata={"alias": "personalMailServerProtocol"}
    )

    personal_mail_server_real_delete_for_imap: Optional[bool] = field(
        default=None, metadata={"alias": "personalMailServerRealDeleteForImap"}
    )

    personal_mail_server_email_address: Optional[str] = field(
        default=None, metadata={"alias": "personalMailServerEmailAddress"}
    )

    personal_mail_server_user_id: Optional[str] = field(
        default=None, metadata={"alias": "personalMailServerUserId"}
    )

    personal_mail_server_password: Optional[str] = field(
        default=None, metadata={"alias": "personalMailServerPassword"}
    )

    voice_messaging_distribution_list: Optional[
        List[VoiceMessagingDistributionListModify]
    ] = field(default=None, metadata={"alias": "voiceMessagingDistributionList"})

    busy_announcement_selection: Optional[str] = field(
        default=None, metadata={"alias": "busyAnnouncementSelection"}
    )

    busy_personal_audio_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "busyPersonalAudioFile"}
    )

    busy_personal_video_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "busyPersonalVideoFile"}
    )

    no_answer_announcement_selection: Optional[str] = field(
        default=None, metadata={"alias": "noAnswerAnnouncementSelection"}
    )

    no_answer_personal_audio_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "noAnswerPersonalAudioFile"}
    )

    no_answer_personal_video_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "noAnswerPersonalVideoFile"}
    )

    no_answer_alternate_greeting01: Optional[
        VoiceMessagingAlternateNoAnswerGreetingModify20
    ] = field(default=None, metadata={"alias": "noAnswerAlternateGreeting01"})

    no_answer_alternate_greeting02: Optional[
        VoiceMessagingAlternateNoAnswerGreetingModify20
    ] = field(default=None, metadata={"alias": "noAnswerAlternateGreeting02"})

    no_answer_alternate_greeting03: Optional[
        VoiceMessagingAlternateNoAnswerGreetingModify20
    ] = field(default=None, metadata={"alias": "noAnswerAlternateGreeting03"})

    extended_away_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "extendedAwayEnabled"}
    )

    extended_away_disable_message_deposit: Optional[bool] = field(
        default=None, metadata={"alias": "extendedAwayDisableMessageDeposit"}
    )

    extended_away_audio_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "extendedAwayAudioFile"}
    )

    extended_away_video_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "extendedAwayVideoFile"}
    )

    no_answer_number_of_rings: Optional[int] = field(
        default=None, metadata={"alias": "noAnswerNumberOfRings"}
    )

    disable_message_deposit: Optional[bool] = field(
        default=None, metadata={"alias": "disableMessageDeposit"}
    )

    disable_message_deposit_action: Optional[str] = field(
        default=None, metadata={"alias": "disableMessageDepositAction"}
    )

    greeting_only_forward_destination: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "greetingOnlyForwardDestination"}
    )

    outgoing_smdimw_iis_active: Optional[bool] = field(
        default=None, metadata={"alias": "outgoingSMDIMWIisActive"}
    )

    outgoing_smdimwi_phone_number_list: Optional[
        Nillable[ReplacementOutgoingDNList]
    ] = field(default=None, metadata={"alias": "outgoingSMDIMWIPhoneNumberList"})

    voice_managementis_active: Optional[bool] = field(
        default=None, metadata={"alias": "voiceManagementisActive"}
    )

    processing: Optional[str] = field(default=None, metadata={"alias": "processing"})

    voice_message_delivery_email_address: Optional[Nillable[EmailAddressList]] = field(
        default=None, metadata={"alias": "voiceMessageDeliveryEmailAddress"}
    )

    use_phone_message_waiting_indicator: Optional[bool] = field(
        default=None, metadata={"alias": "usePhoneMessageWaitingIndicator"}
    )

    send_voice_message_notify_email: Optional[bool] = field(
        default=None, metadata={"alias": "sendVoiceMessageNotifyEmail"}
    )

    voice_message_notify_email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "voiceMessageNotifyEmailAddress"}
    )

    send_carbon_copy_voice_message: Optional[bool] = field(
        default=None, metadata={"alias": "sendCarbonCopyVoiceMessage"}
    )

    voice_message_carbon_copy_email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "voiceMessageCarbonCopyEmailAddress"}
    )

    transfer_on_zero_to_phone_number: Optional[bool] = field(
        default=None, metadata={"alias": "transferOnZeroToPhoneNumber"}
    )

    transfer_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    always_redirect_to_voice_mail: Optional[bool] = field(
        default=None, metadata={"alias": "alwaysRedirectToVoiceMail"}
    )

    busy_redirect_to_voice_mail: Optional[bool] = field(
        default=None, metadata={"alias": "busyRedirectToVoiceMail"}
    )

    no_answer_redirect_to_voice_mail: Optional[bool] = field(
        default=None, metadata={"alias": "noAnswerRedirectToVoiceMail"}
    )

    out_of_primary_zone_redirect_to_voice_mail: Optional[bool] = field(
        default=None, metadata={"alias": "outOfPrimaryZoneRedirectToVoiceMail"}
    )

    use_personalized_name: Optional[bool] = field(
        default=None, metadata={"alias": "usePersonalizedName"}
    )

    voice_portal_auto_login: Optional[bool] = field(
        default=None, metadata={"alias": "voicePortalAutoLogin"}
    )

    personalized_name_audio_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "personalizedNameAudioFile"}
    )

    user_messaging_alias_list: Optional[
        Nillable[VoiceMessagingAliasReplacementList]
    ] = field(default=None, metadata={"alias": "userMessagingAliasList"})

    def __post_init__(self):
        nillable_fields = [
            "busy_personal_audio_file",
            "busy_personal_video_file",
            "no_answer_personal_audio_file",
            "no_answer_personal_video_file",
            "extended_away_audio_file",
            "extended_away_video_file",
            "greeting_only_forward_destination",
            "outgoing_smdimwi_phone_number_list",
            "voice_message_delivery_email_address",
            "voice_message_notify_email_address",
            "voice_message_carbon_copy_email_address",
            "transfer_phone_number",
            "personalized_name_audio_file",
            "user_messaging_alias_list",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserVoiceMessagingUserModifyVoiceManagementRequest23(OCIRequest):
    """Modify the user's voice messaging voice management service setting.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

        processing (Optional[str]):

        voice_message_delivery_email_address (Optional[Nillable[EmailAddressList]]):

        use_phone_message_waiting_indicator (Optional[bool]):

        send_voice_message_notify_email (Optional[bool]):

        voice_message_notify_email_address (Optional[Nillable[str]]):

        send_carbon_copy_voice_message (Optional[bool]):

        voice_message_carbon_copy_email_address (Optional[Nillable[str]]):

        transfer_on_zero_to_phone_number (Optional[bool]):

        transfer_phone_number (Optional[Nillable[str]]):

        always_redirect_to_voice_mail (Optional[bool]):

        busy_redirect_to_voice_mail (Optional[bool]):

        no_answer_redirect_to_voice_mail (Optional[bool]):

        out_of_primary_zone_redirect_to_voice_mail (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})

    processing: Optional[str] = field(default=None, metadata={"alias": "processing"})

    voice_message_delivery_email_address: Optional[Nillable[EmailAddressList]] = field(
        default=None, metadata={"alias": "voiceMessageDeliveryEmailAddress"}
    )

    use_phone_message_waiting_indicator: Optional[bool] = field(
        default=None, metadata={"alias": "usePhoneMessageWaitingIndicator"}
    )

    send_voice_message_notify_email: Optional[bool] = field(
        default=None, metadata={"alias": "sendVoiceMessageNotifyEmail"}
    )

    voice_message_notify_email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "voiceMessageNotifyEmailAddress"}
    )

    send_carbon_copy_voice_message: Optional[bool] = field(
        default=None, metadata={"alias": "sendCarbonCopyVoiceMessage"}
    )

    voice_message_carbon_copy_email_address: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "voiceMessageCarbonCopyEmailAddress"}
    )

    transfer_on_zero_to_phone_number: Optional[bool] = field(
        default=None, metadata={"alias": "transferOnZeroToPhoneNumber"}
    )

    transfer_phone_number: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    always_redirect_to_voice_mail: Optional[bool] = field(
        default=None, metadata={"alias": "alwaysRedirectToVoiceMail"}
    )

    busy_redirect_to_voice_mail: Optional[bool] = field(
        default=None, metadata={"alias": "busyRedirectToVoiceMail"}
    )

    no_answer_redirect_to_voice_mail: Optional[bool] = field(
        default=None, metadata={"alias": "noAnswerRedirectToVoiceMail"}
    )

    out_of_primary_zone_redirect_to_voice_mail: Optional[bool] = field(
        default=None, metadata={"alias": "outOfPrimaryZoneRedirectToVoiceMail"}
    )

    def __post_init__(self):
        nillable_fields = [
            "voice_message_delivery_email_address",
            "voice_message_notify_email_address",
            "voice_message_carbon_copy_email_address",
            "transfer_phone_number",
        ]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserVoiceMessagingUserModifyVoicePortalExecutionServerRequest(OCIRequest):
    """Modify the user's voice messaging voice portal settings.
        The response is either a SuccessResponse or an ErrorResponse.
        Engineering Note: This command can only be executed from the Execution
        Server

    Attributes:

        user_id (str):

        use_personalized_name (Optional[bool]):

        personalized_name_audio_file (Optional[LabeledFileNameResource]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    use_personalized_name: Optional[bool] = field(
        default=None, metadata={"alias": "usePersonalizedName"}
    )

    personalized_name_audio_file: Optional[LabeledFileNameResource] = field(
        default=None, metadata={"alias": "personalizedNameAudioFile"}
    )


@dataclass(kw_only=True)
class UserVoiceMessagingUserModifyVoicePortalRequest20(OCIRequest):
    """Modify the user's voice messaging voice portal settings.
        The response is either a SuccessResponse or an ErrorResponse.
        Engineering Note: This command is used internally by Call Processing.

    Attributes:

        user_id (str):

        use_personalized_name (Optional[bool]):

        voice_portal_auto_login (Optional[bool]):

        personalized_name_audio_file (Optional[Nillable[AnnouncementFileLevelKey]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    use_personalized_name: Optional[bool] = field(
        default=None, metadata={"alias": "usePersonalizedName"}
    )

    voice_portal_auto_login: Optional[bool] = field(
        default=None, metadata={"alias": "voicePortalAutoLogin"}
    )

    personalized_name_audio_file: Optional[Nillable[AnnouncementFileLevelKey]] = field(
        default=None, metadata={"alias": "personalizedNameAudioFile"}
    )

    def __post_init__(self):
        nillable_fields = ["personalized_name_audio_file"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserVoicePortalCallingGetRequest(OCIRequest):
    """Request the user level data associated with Voice Portal Calling.
        The response is either a UserVoicePortalCallingGetResponse or an
        ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserVoicePortalCallingModifyRequest(OCIRequest):
    """Modify the user level data associated with Voice Portal Calling.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        is_active (Optional[bool]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    is_active: Optional[bool] = field(default=None, metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserXsiPolicyProfileGetRequest(OCIRequest):
    """Get the user Xsi policy profile.
        The response is either a UserXsiPolicyProfileGetResponse
        or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserXsiPolicyProfileModifyRequest(OCIRequest):
    """Modifies the default Xsi policy profile for a group.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        xsi_policy_profile (Optional[XsiPolicyProfileKey]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    xsi_policy_profile: Optional[XsiPolicyProfileKey] = field(
        default=None, metadata={"alias": "xsiPolicyProfile"}
    )


@dataclass(kw_only=True)
class UserZoneCallingRestrictionsGetRequest(OCIRequest):
    """Gets the home zone for a user
        The response is either a UserZoneCallingRestrictionsGetResponse or an ErrorResponse.

    Attributes:

        user_id (str):

    """

    user_id: str = field(metadata={"alias": "userId"})


@dataclass(kw_only=True)
class UserZoneCallingRestrictionsModifyRequest(OCIRequest):
    """Modify the home zone for a user
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

        user_id (str):

        home_zone_name (Optional[Nillable[str]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    home_zone_name: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "homeZoneName"}
    )

    def __post_init__(self):
        nillable_fields = ["home_zone_name"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class VerifySessionIsValidRequest(OCIRequest):
    """Query the provisioning server to verify the session is authorized. Most
        applications should not need this command, because the provisioning server
        verifies the session is authorized for all commands.
        The response is either a SuccessResponse or an ErrorResponse.

    Attributes:

    """


@dataclass(kw_only=True)
class AuthenticationVerifyResponse22V4(OCIDataResponse):
    """Response to AuthenticationVerifyRequest22V4

        The following data elements are only returned in AS data mode:
          resellerId

        If a phoneNumber is returned, it will be the primary DN of the user.

        The parameter tokenRevocationTime is represented in the number of milliseconds
        since January 1, 1970, 00:00:00 GMT, and it is set to the more current time between
        the system level token revocation time and user level token revocation time.

    Attributes:

        login_type (str):

        locale (str):

        encoding (str):

        group_id (Optional[str]):

        service_provider_id (Optional[str]):

        is_enterprise (bool):

        password_expires_days (Optional[int]):

        last_name (Optional[str]):

        first_name (Optional[str]):

        user_id (str):

        phone_number (Optional[str]):

        reseller_id (Optional[str]):

        token_revocation_time (Optional[int]):

    """

    login_type: str = field(metadata={"alias": "loginType"})

    locale: str = field(metadata={"alias": "locale"})

    encoding: str = field(metadata={"alias": "encoding"})

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    is_enterprise: bool = field(metadata={"alias": "isEnterprise"})

    password_expires_days: Optional[int] = field(
        default=None, metadata={"alias": "passwordExpiresDays"}
    )

    last_name: Optional[str] = field(default=None, metadata={"alias": "lastName"})

    first_name: Optional[str] = field(default=None, metadata={"alias": "firstName"})

    user_id: str = field(metadata={"alias": "userId"})

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    token_revocation_time: Optional[int] = field(
        default=None, metadata={"alias": "tokenRevocationTime"}
    )


@dataclass(kw_only=True)
class DeviceManagementFileAuthLocationGetResponse22V4(OCIDataResponse):
    """This is a response to DeviceManagementFileAuthLocationGetRequest22V4.
        Return the address and credentials of the File Repository hosting the requested access device file.
        Also return the file name and path on the File Repository.
        Also returns the status of the file authentication.

    Attributes:

        status (Optional[str]):

        file_repository_user_name (Optional[str]):

        file_repository_password (Optional[str]):

        file_repos_access_token (Optional[str]):

        net_address (str):

        remote_file_format (str):

        port_number (Optional[int]):

        root_directory (Optional[str]):

        cpe_file_directory (Optional[str]):

        secure (Optional[bool]):

        mac_in_non_request_uri (Optional[bool]):

        mac_in_cert (Optional[bool]):

        mac_format_in_non_request_uri (Optional[str]):

        use_http_digest_authentication (Optional[bool]):

        mac_based_file_authentication (Optional[bool]):

        user_name_password_file_authentication (Optional[bool]):

        completion_notification (Optional[bool]):

        file_category (Optional[str]):

        enable_caching (Optional[bool]):

        notify_file_upload (Optional[bool]):

    """

    status: Optional[str] = field(default=None, metadata={"alias": "status"})

    file_repository_user_name: Optional[str] = field(
        default=None, metadata={"alias": "fileRepositoryUserName"}
    )

    file_repository_password: Optional[str] = field(
        default=None, metadata={"alias": "fileRepositoryPassword"}
    )

    file_repos_access_token: Optional[str] = field(
        default=None, metadata={"alias": "fileReposAccessToken"}
    )

    net_address: str = field(metadata={"alias": "netAddress"})

    remote_file_format: str = field(metadata={"alias": "remoteFileFormat"})

    port_number: Optional[int] = field(default=None, metadata={"alias": "portNumber"})

    root_directory: Optional[str] = field(
        default=None, metadata={"alias": "rootDirectory"}
    )

    cpe_file_directory: Optional[str] = field(
        default=None, metadata={"alias": "cpeFileDirectory"}
    )

    secure: Optional[bool] = field(default=None, metadata={"alias": "secure"})

    mac_in_non_request_uri: Optional[bool] = field(
        default=None, metadata={"alias": "macInNonRequestURI"}
    )

    mac_in_cert: Optional[bool] = field(default=None, metadata={"alias": "macInCert"})

    mac_format_in_non_request_uri: Optional[str] = field(
        default=None, metadata={"alias": "macFormatInNonRequestURI"}
    )

    use_http_digest_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "useHttpDigestAuthentication"}
    )

    mac_based_file_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "macBasedFileAuthentication"}
    )

    user_name_password_file_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "userNamePasswordFileAuthentication"}
    )

    completion_notification: Optional[bool] = field(
        default=None, metadata={"alias": "completionNotification"}
    )

    file_category: Optional[str] = field(
        default=None, metadata={"alias": "fileCategory"}
    )

    enable_caching: Optional[bool] = field(
        default=None, metadata={"alias": "enableCaching"}
    )

    notify_file_upload: Optional[bool] = field(
        default=None, metadata={"alias": "notifyFileUpload"}
    )


@dataclass(kw_only=True)
class EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentListResponse(
    OCIDataResponse
):
    """Response to EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentListRequest.
        The response contains a table with columns: \"Mobile Number\", \"User Id\",
        \"Last Name\", \"First Name\",\"Phone Number\",\"Extension\", \"Group Id\", \"Department\" and \"Mobile Network\".
        The \"Mobile Number\" column contains a single DN.
        The \"User Id\", \"Last Name\" and \"First Name\" columns contains the corresponding attributes of the user possessing the DN(s).
        The \"Phone Number\" column contains a single DN.
        The \"Group Id\"   column contains the Group Id of the user.
        The \"Department\" column contains the department of the user if it is part of a department.
        The \"Mobile Network\" column contains the Mobile Network the number belongs to.

    Attributes:

        mobile_subscriber_directory_numbers_assignment_table (OCITable):

    """

    mobile_subscriber_directory_numbers_assignment_table: OCITable = field(
        metadata={"alias": "mobileSubscriberDirectoryNumbersAssignmentTable"}
    )


@dataclass(kw_only=True)
class EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentPagedSortedListResponse22(
    OCIDataResponse
):
    """Response to EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentPagedSortedListRequest22.
        The response contains the number of entries that would be returned if the response was not page size restricted.
        Contains a table with columns: \"Mobile Number\", \"User Id\", \"Last Name\", \"First Name\", \"Phone Number\", \"Extension\",
        \"Group Id\", \"Department\", \"Department Type\", \"Parent Department\", \"Parent Department Type\", \"Mobile Network\", \"Country Code\",
        \"National Prefix\", \"Available\", \"Mobile Country Code\", \"Mobile National Prefix\".
        The \"Mobile Number\" column contains a single DN.
        The \"User Id\", \"Last Name\" and \"First Name\" columns contains the corresponding attributes of the user possessing the DN(s).
        The \"Phone Number\" column contains a single DN.
        The \"Group Id\" column contains the Group Id of the user.
        The \"Group Name\" column contains the Group Name of the user.
        The \"Department\" column contains the department of the user if it is part of a department.
        The \"Parent Department\" column contains the parent department of the user if it is part of a department.
        The \"Department Type\" and \"Parent Department Type\" columns will contain the values \"Enterprise\" or \"Group\".
        The \"Mobile Network\" column contains the Mobile Network the number belongs to.
        The \"Country Code\" column indicates the dialing prefix for the phone number.
        The \"National Prefix\" column indicates the digit sequence to be dialed before the telephone number.
        The \"Available\" column indicates if the Mobile Number is available.
        The \"Mobile Country Code\" column indicates the dialing prefix for the mobile number.
        The \"Mobile National Prefix\" column indicates the digit sequence to be dialed before the mobile number.

    Attributes:

        total_number_of_rows (Optional[int]):

        mobile_subscriber_directory_numbers_assignment_table (OCITable):

    """

    total_number_of_rows: Optional[int] = field(
        default=None, metadata={"alias": "totalNumberOfRows"}
    )

    mobile_subscriber_directory_numbers_assignment_table: OCITable = field(
        metadata={"alias": "mobileSubscriberDirectoryNumbersAssignmentTable"}
    )


@dataclass(kw_only=True)
class EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailableListResponse22(
    OCIDataResponse
):
    """Response to EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailableListRequest22.
        The response contains a table with columns: \"Phone Number\", \"E164 Phone Number\".

        The \"Phone Number\" column contains Mobile Subscriber DNs not yet assigned to any user.
        The \"E164 Phone Number\" column contains Mobile Subscriber DNs not yet assigned to any user in E.164 format.

    Attributes:

        available_mobile_subscriber_directory_number_table (OCITable):

    """

    available_mobile_subscriber_directory_number_table: OCITable = field(
        metadata={"alias": "availableMobileSubscriberDirectoryNumberTable"}
    )


@dataclass(kw_only=True)
class EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailablePagedSortedListResponse22(
    OCIDataResponse
):
    """Response to EnterpriseBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailablePagedSortedListRequest22.
        The response contains the number of entries that would be returned if the response was not page size restricted.
        Contains a table with columns: \"Mobile Number\", \"Mobile Network\", \"Mobile Country Code\", \"Mobile National Prefix\".
        The \"Mobile Number\" column contains a single DN.
        The \"Mobile Network\" column contains the Mobile Network the number belongs to.
        The \"Mobile Country Code\" column indicates the dialing prefix for the mobile number.
        The \"Mobile National Prefix\" column indicates the digit sequence to be dialed before the mobile number.

    Attributes:

        total_number_of_rows (Optional[int]):

        available_mobile_subscriber_directory_number_table (OCITable):

    """

    total_number_of_rows: Optional[int] = field(
        default=None, metadata={"alias": "totalNumberOfRows"}
    )

    available_mobile_subscriber_directory_number_table: OCITable = field(
        metadata={"alias": "availableMobileSubscriberDirectoryNumberTable"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentThresholdDefaultProfileGetResponse(OCIDataResponse):
    """Response to the EnterpriseCallCenterAgentThresholdDefaultProfileGetRequest.
        The agent table contains the agents assigned to the profile and
        has column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\";

    Attributes:

        profile_name (str):

        profile_description (Optional[str]):

        threshold_current_call_state_idle_time_yellow (Optional[int]):

        threshold_current_call_state_idle_time_red (Optional[int]):

        threshold_current_call_state_on_call_time_yellow (Optional[int]):

        threshold_current_call_state_on_call_time_red (Optional[int]):

        threshold_current_agent_state_unavailable_time_yellow (Optional[int]):

        threshold_current_agent_state_unavailable_time_red (Optional[int]):

        threshold_average_busy_in_time_yellow (Optional[int]):

        threshold_average_busy_in_time_red (Optional[int]):

        threshold_average_busy_out_time_yellow (Optional[int]):

        threshold_average_busy_out_time_red (Optional[int]):

        threshold_average_wrap_up_time_yellow (Optional[int]):

        threshold_average_wrap_up_time_red (Optional[int]):

        enable_notification_email (bool):

        notification_email_address (Optional[List[str]]):

        agent_table (Optional[OCITable]):

    """

    profile_name: str = field(metadata={"alias": "profileName"})

    profile_description: Optional[str] = field(
        default=None, metadata={"alias": "profileDescription"}
    )

    threshold_current_call_state_idle_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeYellow"}
    )

    threshold_current_call_state_idle_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeRed"}
    )

    threshold_current_call_state_on_call_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeYellow"}
    )

    threshold_current_call_state_on_call_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeRed"}
    )

    threshold_current_agent_state_unavailable_time_yellow: Optional[int] = field(
        default=None,
        metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeYellow"},
    )

    threshold_current_agent_state_unavailable_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeRed"}
    )

    threshold_average_busy_in_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeYellow"}
    )

    threshold_average_busy_in_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeRed"}
    )

    threshold_average_busy_out_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeYellow"}
    )

    threshold_average_busy_out_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeRed"}
    )

    threshold_average_wrap_up_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeYellow"}
    )

    threshold_average_wrap_up_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeRed"}
    )

    enable_notification_email: bool = field(
        metadata={"alias": "enableNotificationEmail"}
    )

    notification_email_address: Optional[List[str]] = field(
        default=None, metadata={"alias": "notificationEmailAddress"}
    )

    agent_table: Optional[OCITable] = field(
        default=None, metadata={"alias": "agentTable"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentThresholdProfileGetAvailableAgentListResponse(
    OCIDataResponse
):
    """Response to the EnterpriseCallCenterAgentThresholdProfileGetAvailableAgentListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\", \"Agent Threshold Profile\";

    Attributes:

        agent_table (OCITable):

    """

    agent_table: OCITable = field(metadata={"alias": "agentTable"})


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentThresholdProfileGetAvailableAgentPagedSortedListResponse(
    OCIDataResponse
):
    """Response to the EnterpriseCallCenterAgentThresholdProfileGetAvailableAgentPagedSortedListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\", \"Agent Threshold Profile\";

    Attributes:

        agent_table (OCITable):

    """

    agent_table: OCITable = field(metadata={"alias": "agentTable"})


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentThresholdProfileGetListResponse(OCIDataResponse):
    """Response to the EnterpriseCallCenterAgentThresholdProfileGetListRequest.
        Contains a table with all the  Call Center Agent Threshold Profiles in the Enterprise.
        The column headings are: \"Default\", \"Name\", \"Description\".

    Attributes:

        profiles_table (OCITable):

    """

    profiles_table: OCITable = field(metadata={"alias": "profilesTable"})


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentThresholdProfileGetPagedSortedResponse(OCIDataResponse):
    """Response to the EnterpriseCallCenterAgentThresholdProfileGetPagedSortedRequest.
        The agentTable contains the agents assigned to the profile and has the column headings:
        \"User Id\", \"Group Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\";

    Attributes:

        profile_description (Optional[str]):

        threshold_current_call_state_idle_time_yellow (Optional[int]):

        threshold_current_call_state_idle_time_red (Optional[int]):

        threshold_current_call_state_on_call_time_yellow (Optional[int]):

        threshold_current_call_state_on_call_time_red (Optional[int]):

        threshold_current_agent_state_unavailable_time_yellow (Optional[int]):

        threshold_current_agent_state_unavailable_time_red (Optional[int]):

        threshold_average_busy_in_time_yellow (Optional[int]):

        threshold_average_busy_in_time_red (Optional[int]):

        threshold_average_busy_out_time_yellow (Optional[int]):

        threshold_average_busy_out_time_red (Optional[int]):

        threshold_average_wrap_up_time_yellow (Optional[int]):

        threshold_average_wrap_up_time_red (Optional[int]):

        enable_notification_email (bool):

        notification_email_address (Optional[List[str]]):

        agent_table (OCITable):

    """

    profile_description: Optional[str] = field(
        default=None, metadata={"alias": "profileDescription"}
    )

    threshold_current_call_state_idle_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeYellow"}
    )

    threshold_current_call_state_idle_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeRed"}
    )

    threshold_current_call_state_on_call_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeYellow"}
    )

    threshold_current_call_state_on_call_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeRed"}
    )

    threshold_current_agent_state_unavailable_time_yellow: Optional[int] = field(
        default=None,
        metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeYellow"},
    )

    threshold_current_agent_state_unavailable_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeRed"}
    )

    threshold_average_busy_in_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeYellow"}
    )

    threshold_average_busy_in_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeRed"}
    )

    threshold_average_busy_out_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeYellow"}
    )

    threshold_average_busy_out_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeRed"}
    )

    threshold_average_wrap_up_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeYellow"}
    )

    threshold_average_wrap_up_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeRed"}
    )

    enable_notification_email: bool = field(
        metadata={"alias": "enableNotificationEmail"}
    )

    notification_email_address: Optional[List[str]] = field(
        default=None, metadata={"alias": "notificationEmailAddress"}
    )

    agent_table: OCITable = field(metadata={"alias": "agentTable"})


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentThresholdProfileGetResponse(OCIDataResponse):
    """Response to the EnterpriseCallCenterAgentThresholdProfileGetRequest.
        The agentTable contains the agents assigned to the profile and has the column headings:
        \"User Id\", \"Group Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\";

    Attributes:

        profile_description (Optional[str]):

        threshold_current_call_state_idle_time_yellow (Optional[int]):

        threshold_current_call_state_idle_time_red (Optional[int]):

        threshold_current_call_state_on_call_time_yellow (Optional[int]):

        threshold_current_call_state_on_call_time_red (Optional[int]):

        threshold_current_agent_state_unavailable_time_yellow (Optional[int]):

        threshold_current_agent_state_unavailable_time_red (Optional[int]):

        threshold_average_busy_in_time_yellow (Optional[int]):

        threshold_average_busy_in_time_red (Optional[int]):

        threshold_average_busy_out_time_yellow (Optional[int]):

        threshold_average_busy_out_time_red (Optional[int]):

        threshold_average_wrap_up_time_yellow (Optional[int]):

        threshold_average_wrap_up_time_red (Optional[int]):

        enable_notification_email (bool):

        notification_email_address (Optional[List[str]]):

        agent_table (OCITable):

    """

    profile_description: Optional[str] = field(
        default=None, metadata={"alias": "profileDescription"}
    )

    threshold_current_call_state_idle_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeYellow"}
    )

    threshold_current_call_state_idle_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeRed"}
    )

    threshold_current_call_state_on_call_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeYellow"}
    )

    threshold_current_call_state_on_call_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeRed"}
    )

    threshold_current_agent_state_unavailable_time_yellow: Optional[int] = field(
        default=None,
        metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeYellow"},
    )

    threshold_current_agent_state_unavailable_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeRed"}
    )

    threshold_average_busy_in_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeYellow"}
    )

    threshold_average_busy_in_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeRed"}
    )

    threshold_average_busy_out_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeYellow"}
    )

    threshold_average_busy_out_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeRed"}
    )

    threshold_average_wrap_up_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeYellow"}
    )

    threshold_average_wrap_up_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeRed"}
    )

    enable_notification_email: bool = field(
        metadata={"alias": "enableNotificationEmail"}
    )

    notification_email_address: Optional[List[str]] = field(
        default=None, metadata={"alias": "notificationEmailAddress"}
    )

    agent_table: OCITable = field(metadata={"alias": "agentTable"})


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentUnavailableCodeGetListResponse(OCIDataResponse):
    """Response to the EnterpriseCallCenterAgentUnavailableCodeGetListRequest.
        Contains a table with column headings: \"Is Active\", \"Code\", \"Description\".

    Attributes:

        unavailable_codes_table (OCITable):

    """

    unavailable_codes_table: OCITable = field(
        metadata={"alias": "unavailableCodesTable"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentUnavailableCodeGetResponse(OCIDataResponse):
    """Response to the EnterpriseCallCenterAgentUnavailableCodeGetRequest

    Attributes:

        is_active (bool):

        description (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class EnterpriseCallCenterAgentUnavailableCodeSettingsGetResponse17sp4(OCIDataResponse):
    """Response to EnterpriseCallCenterAgentUnavailableCodeSettingsGetRequest17sp4.

    Attributes:

        enable_agent_unavailable_codes (bool):

        default_agent_unavailable_code_on_dnd (Optional[str]):

        default_agent_unavailable_code_on_personal_calls (Optional[str]):

        default_agent_unavailable_code_on_consecutive_bounces (Optional[str]):

        default_agent_unavailable_code_on_not_reachable (Optional[str]):

        force_use_of_agent_unavailable_codes (bool):

        default_agent_unavailable_code (Optional[str]):

    """

    enable_agent_unavailable_codes: bool = field(
        metadata={"alias": "enableAgentUnavailableCodes"}
    )

    default_agent_unavailable_code_on_dnd: Optional[str] = field(
        default=None, metadata={"alias": "defaultAgentUnavailableCodeOnDND"}
    )

    default_agent_unavailable_code_on_personal_calls: Optional[str] = field(
        default=None, metadata={"alias": "defaultAgentUnavailableCodeOnPersonalCalls"}
    )

    default_agent_unavailable_code_on_consecutive_bounces: Optional[str] = field(
        default=None,
        metadata={"alias": "defaultAgentUnavailableCodeOnConsecutiveBounces"},
    )

    default_agent_unavailable_code_on_not_reachable: Optional[str] = field(
        default=None, metadata={"alias": "defaultAgentUnavailableCodeOnNotReachable"}
    )

    force_use_of_agent_unavailable_codes: bool = field(
        metadata={"alias": "forceUseOfAgentUnavailableCodes"}
    )

    default_agent_unavailable_code: Optional[str] = field(
        default=None, metadata={"alias": "defaultAgentUnavailableCode"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterCallDispositionCodeGetListResponse(OCIDataResponse):
    """Response to the EnterpriseCallCenterCallDispositionCodeGetListRequest.
        Contains a table with column headings: \"Is Active\", \"Code\", \"Description\".

    Attributes:

        disposition_codes_table (OCITable):

    """

    disposition_codes_table: OCITable = field(
        metadata={"alias": "dispositionCodesTable"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterCallDispositionCodeGetResponse(OCIDataResponse):
    """Response to the EnterpriseCallCenterCallDispositionCodeGetRequest

    Attributes:

        is_active (bool):

        description (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class EnterpriseCallCenterCallDispositionCodeGetUsageListResponse(OCIDataResponse):
    """Response to the EnterpriseCallCenterCallDispositionCodeGetUsageListRequest.
        The Type column contains either \"Call Center\" or \"Route Point\".
        Contains a table with column headings: \"Group Id\", \"Id\", \"Name\" and \"Type\".

    Attributes:

        call_center_table (OCITable):

    """

    call_center_table: OCITable = field(metadata={"alias": "callCenterTable"})


@dataclass(kw_only=True)
class EnterpriseCallCenterCurrentAndPastAgentGetListResponse(OCIDataResponse):
    """Response to the EnterpriseCallCenterCurrentAndPastAgentGetListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        agent_user_table (OCITable):

        deleted_agent_user_table (OCITable):

    """

    agent_user_table: OCITable = field(metadata={"alias": "agentUserTable"})

    deleted_agent_user_table: OCITable = field(
        metadata={"alias": "deletedAgentUserTable"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterCurrentAndPastCallCenterGetListResponse(OCIDataResponse):
    """Response to the EnterpriseCallCenterCurrentAndPastCallCenterGetListRequest.

    Attributes:

        service_user_id (Optional[List[str]]):

        deleted_service_user_id (Optional[List[str]]):

    """

    service_user_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "serviceUserId"}
    )

    deleted_service_user_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "deletedServiceUserId"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterCurrentAndPastDNISGetListResponse(OCIDataResponse):
    """Response to the EnterpriseCallCenterCurrentAndPastDNISGetListRequest.

    Attributes:

        name (Optional[List[str]]):

        deleted_name (Optional[List[str]]):

    """

    name: Optional[List[str]] = field(default=None, metadata={"alias": "name"})

    deleted_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "deletedName"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingBrandingGetResponse(OCIDataResponse):
    """Response to the EnterpriseCallCenterEnhancedReportingBrandingGetRequest.

    Attributes:

        branding_choice (str):

        branding_file_description (Optional[str]):

    """

    branding_choice: str = field(metadata={"alias": "brandingChoice"})

    branding_file_description: Optional[str] = field(
        default=None, metadata={"alias": "brandingFileDescription"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingGetAvailableReportTemplateListResponse(
    OCIDataResponse
):
    """Response to EnterpriseCallCenterEnhancedReportingGetAvailableReportTemplateListRequest.
        Contains a table with column headings: \"Name\", \"Description\" and \"Level\", \"Is Agent Required\",
        \"Is Call Center Required\", \"Is Call Center Dnis Required\", \"Is Real Time Report\", \"Is Sampling Period Required\",
        \"Call Completion Threshold Parameter\", \"Short Duration Threshold Parameter\",
        \"Service Level Threshold Parameter\", \"Service Level Inclusions Parameter\", \"Service Level Objective Threshold Parameter\",
        \"Abandoned Call Threshold Parameter\", \"Service Level Threshold Parameter Number\",
        \"Abandoned Call Threshold Parameter Number\" and \"Scope\".
        The possible values for \"Level\" are \"System\" and \"Enterprise\".
        The possible values for \"Is Agent Required\", \"Is Call Center Required\", \"Is Call Center Dnis Required\", \"Is Real Time Report\" and
        \"Is Sampling Period Required\" are \"true\" and \"false\".
        The possible values for \"Call Completion Threshold Parameter\", \"Short Duration Threshold Parameter\",
        \"Service Level Threshold Parameter\", \"Service Level Inclusions Parameter\", \"Service Level Objective Threshold Parameter\"
        and \"Abandoned Call Threshold Parameter\" are \"Required\", \"Hidden\" and \"Does Not Apply\".
        The possible values for \"Scope\" are \"Supervisor Only\" and \"Supervisor and Agent\".

    Attributes:

        report_template_table (OCITable):

    """

    report_template_table: OCITable = field(metadata={"alias": "reportTemplateTable"})


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingGetResponse19(OCIDataResponse):
    """Response to EnterpriseCallCenterEnhancedReportingGetRequest19.

    Attributes:

        reporting_server (str):

    """

    reporting_server: str = field(metadata={"alias": "reportingServer"})


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingReportTemplateGetListResponse(
    OCIDataResponse
):
    """Response to EnterpriseCallCenterEnhancedReportingReportTemplateGetListRequest.
        Contains a table with column headings: \"Name\", \"Description\", \"Type\" and \"Enabled\".

    Attributes:

        report_template_table (OCITable):

    """

    report_template_table: OCITable = field(metadata={"alias": "reportTemplateTable"})


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingReportTemplateGetResponse(OCIDataResponse):
    """Response to EnterpriseCallCenterEnhancedReportingReportTemplateGetRequest.

    Attributes:

        description (Optional[str]):

        data_template (str):

        filter_number (Optional[int]):

        xslt_template_description (str):

        scope (str):

        is_enabled (bool):

        is_realtime_report (Optional[bool]):

        call_completion_threshold_param (Optional[str]):

        short_duration_threshold_param (Optional[str]):

        service_level_threshold_param (Optional[str]):

        service_level_inclusions_param (Optional[str]):

        service_level_objective_threshold_param (Optional[str]):

        abandoned_call_threshold_param (Optional[str]):

        service_level_threshold_param_number (Optional[int]):

        abandoned_call_threshold_param_number (Optional[int]):

        filter_value (Optional[List[str]]):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    data_template: str = field(metadata={"alias": "dataTemplate"})

    filter_number: Optional[int] = field(
        default=None, metadata={"alias": "filterNumber"}
    )

    xslt_template_description: str = field(
        metadata={"alias": "xsltTemplateDescription"}
    )

    scope: str = field(metadata={"alias": "scope"})

    is_enabled: bool = field(metadata={"alias": "isEnabled"})

    is_realtime_report: Optional[bool] = field(
        default=None, metadata={"alias": "isRealtimeReport"}
    )

    call_completion_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "callCompletionThresholdParam"}
    )

    short_duration_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "shortDurationThresholdParam"}
    )

    service_level_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelThresholdParam"}
    )

    service_level_inclusions_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelInclusionsParam"}
    )

    service_level_objective_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelObjectiveThresholdParam"}
    )

    abandoned_call_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "abandonedCallThresholdParam"}
    )

    service_level_threshold_param_number: Optional[int] = field(
        default=None, metadata={"alias": "serviceLevelThresholdParamNumber"}
    )

    abandoned_call_threshold_param_number: Optional[int] = field(
        default=None, metadata={"alias": "abandonedCallThresholdParamNumber"}
    )

    filter_value: Optional[List[str]] = field(
        default=None, metadata={"alias": "filterValue"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingScheduledReportGetActiveListResponse(
    OCIDataResponse
):
    """Response to EnterpriseCallCenterEnhancedReportingScheduledReportGetActiveListRequest.
        Contains a table with column headings : \"Schedule Name\", \"Description\", \"Created By\",
        \"Is Supervisor Report\", \"Report Template Name\", \"Report Template Level\" and \"Recurring\".
        The \"Created By\" can be either \"Administrator\" or user id if created by supervisor.
        The possible values for \"Recurring\" are \"None\", \"Daily\", \"Weekly\", \"Monthly\" and \"Yearly\".
        The possible values for \"Report Level\" are \"System\" and \"Enterprise\".

    Attributes:

        scheduled_report_table (OCITable):

    """

    scheduled_report_table: OCITable = field(metadata={"alias": "scheduledReportTable"})


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingScheduledReportGetCompletedListResponse(
    OCIDataResponse
):
    """Response to EnterpriseCallCenterEnhancedReportingScheduledReportGetCompletedListRequest
        Contains a table with column headings : \"Schedule Name\", \"Description\", \"Created By\",
        \"Is Supervisor Report\", \"Report Template Name\", \"Report Template Level\" and \"Recurring\".
        The \"Created By\" can be either \"Administrator\" or user id if created by supervisor.
        The possible values for \"Recurring\" are \"None\", \"Daily\", \"Weekly\", \"Monthly\" and \"Yearly\".
        The possible values for \"Report Level\" are \"System\" and \"Enterprise\".

    Attributes:

        scheduled_report_table (OCITable):

    """

    scheduled_report_table: OCITable = field(metadata={"alias": "scheduledReportTable"})


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingScheduledReportGetListResponse(
    OCIDataResponse
):
    """Response to EnterpriseCallCenterEnhancedReportingScheduledReportGetListRequest.
        Contains a table with column headings : \"Schedule Name\", \"Description\", \"Created By\",
        \"Is Supervisor Report\", \"Status\", \"Report Template Name\", \"Report Template Level\" and \"Recurring\".
        The \"Created By\" can be either \"Administrator\" or user id if created by supervisor.
        The possible values for \"Status\" are \"Active\", and \"Completed\".
        The possible values for \"Recurring\" are \"None\", \"Daily\", \"Weekly\", \"Monthly\" and \"Yearly\".
        The possible values for \"Report Level\" are \"System\" and \"Enterprise\".

    Attributes:

        scheduled_report_table (OCITable):

    """

    scheduled_report_table: OCITable = field(metadata={"alias": "scheduledReportTable"})


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingScheduledReportGetReportTemplateUsageListResponse(
    OCIDataResponse
):
    """Response to EnterpriseCallCenterEnhancedReportingScheduledReportGetReportTemplateUsageListRequest.
        Contains a table with column headings: \"Schedule Name\", \"Created By\", \"Created By Supervisor\", and
        \"Is Active\".
        The \"Created By\" can be either \"Administrator\" or user id if created by supervisor.

    Attributes:

        schedule_report_table (OCITable):

    """

    schedule_report_table: OCITable = field(metadata={"alias": "scheduleReportTable"})


@dataclass(kw_only=True)
class EnterpriseCallCenterEnhancedReportingScheduledReportGetResponse(OCIDataResponse):
    """Response to EnterpriseCallCenterEnhancedReportingScheduledReportGetRequest.

    Attributes:

        description (Optional[str]):

        report_template (CallCenterReportTemplateKey):

        schedule (CallCenterReportSchedule):

        sampling_period (Optional[str]):

        start_day_of_week (Optional[str]):

        report_time_zone (str):

        report_date_format (str):

        report_time_format (str):

        report_interval (CallCenterReportInterval):

        report_format (str):

        agent (Optional[CallCenterScheduledReportAgentSelectionAdminRead]):

        call_center (Optional[CallCenterScheduledReportCallCenterSelectionRead]):

        dnis (Optional[CallCenterScheduledReportDNISSelectionRead]):

        call_completion_threshold_seconds (Optional[int]):

        short_duration_threshold_seconds (Optional[int]):

        service_level_threshold_seconds (Optional[List[int]]):

        service_level_inclusions (Optional[CallCenterScheduledReportServiceLevelInclusions]):

        service_level_objective_percentage (Optional[int]):

        abandoned_call_threshold_seconds (Optional[List[int]]):

        email_address (List[str]):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    report_template: CallCenterReportTemplateKey = field(
        metadata={"alias": "reportTemplate"}
    )

    schedule: CallCenterReportSchedule = field(metadata={"alias": "schedule"})

    sampling_period: Optional[str] = field(
        default=None, metadata={"alias": "samplingPeriod"}
    )

    start_day_of_week: Optional[str] = field(
        default=None, metadata={"alias": "startDayOfWeek"}
    )

    report_time_zone: str = field(metadata={"alias": "reportTimeZone"})

    report_date_format: str = field(metadata={"alias": "reportDateFormat"})

    report_time_format: str = field(metadata={"alias": "reportTimeFormat"})

    report_interval: CallCenterReportInterval = field(
        metadata={"alias": "reportInterval"}
    )

    report_format: str = field(metadata={"alias": "reportFormat"})

    agent: Optional[CallCenterScheduledReportAgentSelectionAdminRead] = field(
        default=None, metadata={"alias": "agent"}
    )

    call_center: Optional[CallCenterScheduledReportCallCenterSelectionRead] = field(
        default=None, metadata={"alias": "callCenter"}
    )

    dnis: Optional[CallCenterScheduledReportDNISSelectionRead] = field(
        default=None, metadata={"alias": "dnis"}
    )

    call_completion_threshold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "callCompletionThresholdSeconds"}
    )

    short_duration_threshold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "shortDurationThresholdSeconds"}
    )

    service_level_threshold_seconds: Optional[List[int]] = field(
        default=None, metadata={"alias": "serviceLevelThresholdSeconds"}
    )

    service_level_inclusions: Optional[
        CallCenterScheduledReportServiceLevelInclusions
    ] = field(default=None, metadata={"alias": "serviceLevelInclusions"})

    service_level_objective_percentage: Optional[int] = field(
        default=None, metadata={"alias": "serviceLevelObjectivePercentage"}
    )

    abandoned_call_threshold_seconds: Optional[List[int]] = field(
        default=None, metadata={"alias": "abandonedCallThresholdSeconds"}
    )

    email_address: List[str] = field(metadata={"alias": "emailAddress"})


@dataclass(kw_only=True)
class EnterpriseCallCenterGetResponse23(OCIDataResponse):
    """Response to EnterpriseCallCenterGetRequest23.

        The following elements are only used in AS data mode and not returned in XS data mode:
          useSystemDefaultUnavailableSettings
          forceAgentUnavailableOnDNDActivation
          forceAgentUnavailableOnPersonalCalls
          forceAgentUnavailableOnBouncedCallLimit
          numberConsecutiveBouncedCallsToForceAgentUnavailable
          forceAgentUnavailableOnNotReachable
          wrapUpDestination

    Attributes:

        use_system_default_guard_timer (bool):

        enable_guard_timer (bool):

        guard_timer_seconds (int):

        use_system_default_unavailable_settings (Optional[bool]):

        force_agent_unavailable_on_dnd_activation (Optional[bool]):

        force_agent_unavailable_on_personal_calls (Optional[bool]):

        force_agent_unavailable_on_bounced_call_limit (Optional[bool]):

        number_consecutive_bounced_calls_to_force_agent_unavailable (Optional[int]):

        force_agent_unavailable_on_not_reachable (Optional[bool]):

        wrap_up_destination (Optional[str]):

    """

    use_system_default_guard_timer: bool = field(
        metadata={"alias": "useSystemDefaultGuardTimer"}
    )

    enable_guard_timer: bool = field(metadata={"alias": "enableGuardTimer"})

    guard_timer_seconds: int = field(metadata={"alias": "guardTimerSeconds"})

    use_system_default_unavailable_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemDefaultUnavailableSettings"}
    )

    force_agent_unavailable_on_dnd_activation: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnDNDActivation"}
    )

    force_agent_unavailable_on_personal_calls: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnPersonalCalls"}
    )

    force_agent_unavailable_on_bounced_call_limit: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnBouncedCallLimit"}
    )

    number_consecutive_bounced_calls_to_force_agent_unavailable: Optional[int] = field(
        default=None,
        metadata={"alias": "numberConsecutiveBouncedCallsToForceAgentUnavailable"},
    )

    force_agent_unavailable_on_not_reachable: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnNotReachable"}
    )

    wrap_up_destination: Optional[str] = field(
        default=None, metadata={"alias": "wrapUpDestination"}
    )


@dataclass(kw_only=True)
class EnterpriseCallCenterGetRoutingPolicyResponse(OCIDataResponse):
    """Response to EnterpriseCallCenterGetRoutingPolicyRequest.
        Contains a table with column headings: \"Service User Id\", \"Name\" and
        \"Priority\".

    Attributes:

        routing_policy (str):

        call_center_table (OCITable):

    """

    routing_policy: str = field(metadata={"alias": "routingPolicy"})

    call_center_table: OCITable = field(metadata={"alias": "callCenterTable"})


@dataclass(kw_only=True)
class EnterpriseCallCenterMonitoringGetResponse23(OCIDataResponse):
    """Response to EnterpriseCallCenterMonitoringGetRequest23.

    Attributes:

        enable_supervisor_coaching (bool):

        bypass_enforcement_of_supervisor_agent_relationship (Optional[bool]):

    """

    enable_supervisor_coaching: bool = field(
        metadata={"alias": "enableSupervisorCoaching"}
    )

    bypass_enforcement_of_supervisor_agent_relationship: Optional[bool] = field(
        default=None,
        metadata={"alias": "bypassEnforcementOfSupervisorAgentRelationship"},
    )


@dataclass(kw_only=True)
class EnterpriseCallRecordingGetResponse(OCIDataResponse):
    """Response to the EnterpriseCallRecordingGetRequest.
         The response contains the enterprise's Call Recording attributes.

    Attributes:

        use_cloud_pbx (bool):

        use_enterprise_setting (Optional[bool]):

        fqdn (Optional[str]):

    """

    use_cloud_pbx: bool = field(metadata={"alias": "useCloudPBX"})

    use_enterprise_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useEnterpriseSetting"}
    )

    fqdn: Optional[str] = field(default=None, metadata={"alias": "FQDN"})


@dataclass(kw_only=True)
class EnterpriseCommonPhoneListGetListResponse(OCIDataResponse):
    """Response to the EnterpriseCommonPhoneListGetListRequest.
        The response contains the enterprise's common phone list.

    Attributes:

        entry (Optional[List[PhoneListEntry]]):

    """

    entry: Optional[List[PhoneListEntry]] = field(
        default=None, metadata={"alias": "entry"}
    )


@dataclass(kw_only=True)
class EnterpriseCommunicationBarringAuthorizationCodeGetListResponse(OCIDataResponse):
    """Response to the EnterpriseCommunicationBarringAuthorizationCodeGetListRequest.
        Contains a list of Communication Barring Authorization Codes assigned to a group.

    Attributes:

        code (Optional[List[CommunicationBarringAuthorizationCodeConfiguration]]):

    """

    code: Optional[List[CommunicationBarringAuthorizationCodeConfiguration]] = field(
        default=None, metadata={"alias": "code"}
    )


@dataclass(kw_only=True)
class EnterpriseCommunicationBarringAuthorizationCodeGetResponse(OCIDataResponse):
    """Response to EntepriseCommunicationBarringAuthorizationCodeGetRequest.

    Attributes:

        description (Optional[str]):

        network_class_of_service (Optional[str]):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class EnterpriseDepartmentGetAvailableParentListResponse(OCIDataResponse):
    """Response to EnterpriseDepartmentGetAvailableParentListRequest.
        The response includes two parallel arrays of department keys and department display names.

    Attributes:

        department_key (Optional[List[DepartmentKey]]):

        full_path_name (Optional[List[str]]):

    """

    department_key: Optional[List[DepartmentKey]] = field(
        default=None, metadata={"alias": "departmentKey"}
    )

    full_path_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "fullPathName"}
    )


@dataclass(kw_only=True)
class EnterpriseDepartmentGetListResponse(OCIDataResponse):
    """Response to EnterpriseDepartmentGetListRequest.
        The response includes two parallel arrays of department keys and department display names.

    Attributes:

        department_key (Optional[List[DepartmentKey]]):

        full_path_name (Optional[List[str]]):

    """

    department_key: Optional[List[DepartmentKey]] = field(
        default=None, metadata={"alias": "departmentKey"}
    )

    full_path_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "fullPathName"}
    )


@dataclass(kw_only=True)
class EnterpriseEnterpriseTrunkGetAvailableTrunkGroupListResponse(OCIDataResponse):
    """Response to EnterpriseEnterpriseTrunkGetAvailableTrunkGroupListRequest.

    Attributes:

        trunk_group (Optional[List[EnterpriseTrunkTrunkGroupKey]]):

    """

    trunk_group: Optional[List[EnterpriseTrunkTrunkGroupKey]] = field(
        default=None, metadata={"alias": "trunkGroup"}
    )


@dataclass(kw_only=True)
class EnterpriseEnterpriseTrunkGetAvailableUserListResponse(OCIDataResponse):
    """Response to EnterpriseEnterpriseTrunkGetAvailableUserListRequest.
        The column headings for the enterpriseTrunkUserTable are: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class EnterpriseEnterpriseTrunkGetListResponse(OCIDataResponse):
    """Response to EnterpriseEnterpriseTrunkGetListRequest.
        Contains a table of enterprise trunks defined in the enterprise
        The column headings are: \"Enterprise Trunk Name\", \"Routing Type\"

    Attributes:

        enterprise_trunk_table (OCITable):

    """

    enterprise_trunk_table: OCITable = field(metadata={"alias": "enterpriseTrunkTable"})


@dataclass(kw_only=True)
class EnterpriseEnterpriseTrunkGetResponse22(OCIDataResponse):
    """Response to EnterpriseEnterpriseTrunkGetRequest22.

    Attributes:

        maximum_reroute_attempts (int):

        route_exhaustion_action (str):

        route_exhaustion_forward_address (Optional[str]):

        ordered_routing (Optional[object]):

        priority_weighted_routing (Optional[object]):

        enable_capacity_management (bool):

        max_active_calls (Optional[int]):

        capacity_exceeded_trap_initial_calls (Optional[int]):

        capacity_exceeded_trap_offset_calls (Optional[int]):

        maximum_active_incoming_calls_allowed (Optional[int]):

        maximum_active_outgoing_calls_allowed (Optional[int]):

        minimum_active_calls_reserved (Optional[int]):

    """

    maximum_reroute_attempts: int = field(metadata={"alias": "maximumRerouteAttempts"})

    route_exhaustion_action: str = field(metadata={"alias": "routeExhaustionAction"})

    route_exhaustion_forward_address: Optional[str] = field(
        default=None, metadata={"alias": "routeExhaustionForwardAddress"}
    )

    ordered_routing: Optional[object] = field(
        default=None, metadata={"alias": "orderedRouting"}
    )

    priority_weighted_routing: Optional[object] = field(
        default=None, metadata={"alias": "priorityWeightedRouting"}
    )

    enable_capacity_management: bool = field(
        metadata={"alias": "enableCapacityManagement"}
    )

    max_active_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxActiveCalls"}
    )

    capacity_exceeded_trap_initial_calls: Optional[int] = field(
        default=None, metadata={"alias": "capacityExceededTrapInitialCalls"}
    )

    capacity_exceeded_trap_offset_calls: Optional[int] = field(
        default=None, metadata={"alias": "capacityExceededTrapOffsetCalls"}
    )

    maximum_active_incoming_calls_allowed: Optional[int] = field(
        default=None, metadata={"alias": "maximumActiveIncomingCallsAllowed"}
    )

    maximum_active_outgoing_calls_allowed: Optional[int] = field(
        default=None, metadata={"alias": "maximumActiveOutgoingCallsAllowed"}
    )

    minimum_active_calls_reserved: Optional[int] = field(
        default=None, metadata={"alias": "minimumActiveCallsReserved"}
    )


@dataclass(kw_only=True)
class EnterpriseEnterpriseTrunkGetUserListResponse(OCIDataResponse):
    """Response to EnterpriseEnterpriseTrunkGetUserListRequest.
        The column headings for the enterpriseTrunkUserTable are: \"Group Id\", \"User Id\", \"Last Name\", \"First Name\", \"Phone Number\", \"Alternate Trunk Identity\", \"Hiragana Last Name\", \"Hiragana First Name\",
         \"Extension\", \"Department\", \"Email Address\" and \"Route List Assigned\".

    Attributes:

        enterprise_trunk_user_table (OCITable):

    """

    enterprise_trunk_user_table: OCITable = field(
        metadata={"alias": "enterpriseTrunkUserTable"}
    )


@dataclass(kw_only=True)
class EnterpriseLocalGatewayGetPagedSortedListResponse(OCIDataResponse):
    """Response to EnterpriseLocalGatewayGetPagedSortedListRequest.
        Contains a table with column headings \"Name\", \"Device Name\", \"Device Level\", \"Group Id\", \"Group Name\"  and \"Group External Id\".
        The \"Device Level\" column contains one of the AccessDeviceLevel enumerated constants.
        The following columns are only populated in AS data mode
        \"Group External Id\"

    Attributes:

        local_gateway_table (OCITable):

    """

    local_gateway_table: OCITable = field(metadata={"alias": "localGatewayTable"})


@dataclass(kw_only=True)
class EnterpriseLocalGatewayGetUsageResponse(OCIDataResponse):
    """Response to EnterpriseLocalGatewayGetUsageRequest.
        Returns the group ID and group name where the local gateway belongs to, a boolean value to indicate if the local gateway is
        used in the enterprise call processing policy.
        It also returns an OCITable containing the groups using the given local gateway.
        Column headings are: \"Group Id\", \"Group Name\" and \"Group External Id\".
        The following columns are only populated in AS data mode
        \"Group External Id\"

    Attributes:

        gateway_group_id (str):

        gateway_group_name (Optional[str]):

        used_by_enterprise (bool):

        group_table (OCITable):

    """

    gateway_group_id: str = field(metadata={"alias": "gatewayGroupId"})

    gateway_group_name: Optional[str] = field(
        default=None, metadata={"alias": "gatewayGroupName"}
    )

    used_by_enterprise: bool = field(metadata={"alias": "usedByEnterprise"})

    group_table: OCITable = field(metadata={"alias": "groupTable"})


@dataclass(kw_only=True)
class EnterprisePhoneDirectoryGetPagedSortedListResponse(OCIDataResponse):
    """Response to EnterprisePhoneDirectoryGetPagedSortedListRequest.
        Contains a table with  a row for each phone number and column headings :
        \"Name\", \"Number\", \"Extension\", \"Mobile\", \"Email Address\",
        \"Department\", \"Hiragana Name\", \"Group Id\", \"Yahoo Id\", \"User Id\", \"IMP Id\", \"Is Virtual On-Net User\".
        If extended directory information is requested, the following columns are also included:
        \"First Name\", \"Last Name\", \"Pager\", \"Title\", \"Time Zone\",
        \"Location\", \"Address Line 1\", \"Address Line 2\",
        \"City\", \"State\", \"Zip\", \"Country\", \"Service Name\".
        The Service Name represents the localized service name for service instances. The localized values are taken from the BroadworksLabel.properties file.
        Service Name is currently supporting:
        AutoAttendant, AutoAttendantStandard, AutoAttendantVideo, CallCenter, CallCenterStandard, CallCenterPremium
        HuntGroup, InstantGroupCall, VoiceMessagingGroup, RoutePoint, BroadWorksAnywhere, GroupPaging, FindmeFollowme,
        VoiceXML, FlexibleSeatingGuest, CollaborateAudio, MeetMeConferencing.
        For a Regular User or a Virtual On Network Enterprise Extensions, the Service Name is empty.

        The following columns are populated in AS data mode only:
          \"IMP Id\"

    Attributes:

        total_number_of_rows (int):

        directory_table (OCITable):

    """

    total_number_of_rows: int = field(metadata={"alias": "totalNumberOfRows"})

    directory_table: OCITable = field(metadata={"alias": "directoryTable"})


@dataclass(kw_only=True)
class EnterprisePreAlertingAnnouncementGetResponse(OCIDataResponse):
    """Get the Enterprise level pre-alerting service settings.
        The response is either a EnterprisePreAlertingAnnouncementGetResponse or an ErrorResponse.

    Attributes:

        announcement_interruption (str):

        interruption_digit_sequence (Optional[str]):

        audio_selection (str):

        audio_file_description (Optional[str]):

        audio_media_type (Optional[str]):

        audio_file_url (Optional[str]):

        video_selection (str):

        video_file_description (Optional[str]):

        video_media_type (Optional[str]):

        video_file_url (Optional[str]):

    """

    announcement_interruption: str = field(
        metadata={"alias": "announcementInterruption"}
    )

    interruption_digit_sequence: Optional[str] = field(
        default=None, metadata={"alias": "interruptionDigitSequence"}
    )

    audio_selection: str = field(metadata={"alias": "audioSelection"})

    audio_file_description: Optional[str] = field(
        default=None, metadata={"alias": "audioFileDescription"}
    )

    audio_media_type: Optional[str] = field(
        default=None, metadata={"alias": "audioMediaType"}
    )

    audio_file_url: Optional[str] = field(
        default=None, metadata={"alias": "audioFileUrl"}
    )

    video_selection: str = field(metadata={"alias": "videoSelection"})

    video_file_description: Optional[str] = field(
        default=None, metadata={"alias": "videoFileDescription"}
    )

    video_media_type: Optional[str] = field(
        default=None, metadata={"alias": "videoMediaType"}
    )

    video_file_url: Optional[str] = field(
        default=None, metadata={"alias": "videoFileUrl"}
    )


@dataclass(kw_only=True)
class EnterpriseRouteListEnterpriseTrunkNumberPrefixGetAvailableListResponse(
    OCIDataResponse
):
    """Response to EnterpriseRouteListEnterpriseTrunkNumberPrefixGetAvailableListRequest.
        Contains a list of number prefixes that are assigned to an enterprise and still available for assignment to users within the enterprise.
        The column headings are \"Number Prefix\" \",\"Is Active\", \"Extension Range Start\" and \"Extension Range End\".

    Attributes:

        available_number_prefix_table (OCITable):

    """

    available_number_prefix_table: OCITable = field(
        metadata={"alias": "availableNumberPrefixTable"}
    )


@dataclass(kw_only=True)
class EnterpriseRouteListEnterpriseTrunkNumberPrefixGetSummaryListResponse(
    OCIDataResponse
):
    """Response to EnterpriseRouteListEnterpriseTrunkNumberPrefixGetSummaryListRequest.
        The response contains a table with columns: \"Number Prefix\", \"Group Id\", \"User Id\",
        \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\", \"Phone Number\", \"Extension\", \"Department\",
        \"Email Address\", \"Enterprise Trunk\"\",\"Is Active\", \"Extension Range Start\" and \"Extension Range End\".
        The \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\", \"Phone Number\",
        \"Extension\", \"Department\" and \"Email Address\" columns contains the corresponding attributes of the user possessing the number range.
        The \"Enterprise Trunk\" column contains the enterprise trunk the user possessing the number range belongs to.
        The \"Is Active\" column indicates if the number range has been activated.
        The \"Extension Range Start\" column indicates the start for an extension range.
        The \"Extension Range End\" column indicates the end for an extension range.

    Attributes:

        prefix_summary_table (OCITable):

    """

    prefix_summary_table: OCITable = field(metadata={"alias": "prefixSummaryTable"})


@dataclass(kw_only=True)
class EnterpriseRouteListEnterpriseTrunkNumberRangeGetAvailableListResponse(
    OCIDataResponse
):
    """Response to EnterpriseRouteListEnterpriseTrunkNumberRangeGetAvailableListRequest.
        Contains a list of number ranges that are assigned to an enterprise and still available for assignment to users within the enterprise.
        The column headings are \"Number Range Start\", \"Number Range End\" ,\"Is Active\" and \"Extension Length\"..

    Attributes:

        available_number_range_table (OCITable):

    """

    available_number_range_table: OCITable = field(
        metadata={"alias": "availableNumberRangeTable"}
    )


@dataclass(kw_only=True)
class EnterpriseRouteListEnterpriseTrunkNumberRangeGetSummaryListResponse(
    OCIDataResponse
):
    """Response to EnterpriseRouteListEnterpriseTrunkNumberRangeGetSummaryListRequest.
        The response contains a table with columns: \"Number Range Start\", \"Number Range End\", \"Group Id\", \"User Id\",
        \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\", \"Phone Number\", \"Extension\", \"Department\",
        \"Email Address\", \"Enterprise Trunk\", \"Is Active\" and \"Extension Length\".
        The \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\", \"Phone Number\",
        \"Extension\", \"Department\" and \"Email Address\" columns contains the corresponding attributes of the user possessing the number range.
        The \"Enterprise Trunk\" column contains the enterprise trunk the user possessing the number range belongs to.
        The \"Is Active\" column indicates if the number range has been activated.
        The \"Extension Length\" column indicates the length of the extension for the enterpris trunk number range.

    Attributes:

        number_range_summary_table (OCITable):

    """

    number_range_summary_table: OCITable = field(
        metadata={"alias": "numberRangeSummaryTable"}
    )


@dataclass(kw_only=True)
class EnterpriseSecurityClassificationCustomizationGetAvailableListResponse(
    OCIDataResponse
):
    """Response to EnterpriseSecurityClassificationCustomizationGetAvailableListRequest.
        Returns the available group security classifications.
        Contains a table with column headings:
        \"SystemSecurityClassification\", \"CustomizedSecurityClassification\"

    Attributes:

        security_classification_name_table (OCITable):

    """

    security_classification_name_table: OCITable = field(
        metadata={"alias": "securityClassificationNameTable"}
    )


@dataclass(kw_only=True)
class EnterpriseSessionAdmissionControlGetAvailableDeviceListResponse(OCIDataResponse):
    """Response to EnterpriseSessionAdmissionControlGetAvailableDeviceListRequest.
        Contains a table of devices can be assigned to session admission control group in the enterprise.

    Attributes:

        access_device (Optional[List[EnterpriseAccessDevice]]):

    """

    access_device: Optional[List[EnterpriseAccessDevice]] = field(
        default=None, metadata={"alias": "accessDevice"}
    )


@dataclass(kw_only=True)
class EnterpriseSessionAdmissionControlGroupGetListResponse(OCIDataResponse):
    """Response to EnterpriseSessionAdmissionControlGroupGetListRequest.
        Contains a table of session admission control group configured in the enterprise.
        The column headings are: \"Name\", \"Is Default\", \"Maximum Sessions\", \"Maximum Originating Sessions\", \"Maximum Terminating Sessions\"..

    Attributes:

        session_admission_control_group_table (OCITable):

    """

    session_admission_control_group_table: OCITable = field(
        metadata={"alias": "sessionAdmissionControlGroupTable"}
    )


@dataclass(kw_only=True)
class EnterpriseSessionAdmissionControlGroupGetResponse21sp1V2(OCIDataResponse):
    """Response to EnterpriseSessionAdmissionControlGroupGetRequest21sp1V2.
        Returns the profile information for the session admission control group.

    Attributes:

        max_session (int):

        max_user_originating_sessions (Optional[int]):

        max_user_terminating_sessions (Optional[int]):

        reserved_session (int):

        reserved_user_originating_sessions (Optional[int]):

        reserved_user_terminating_sessions (Optional[int]):

        default_group (bool):

        count_intra_sac_group_sessions (bool):

        devices (Optional[List[EnterpriseAccessDevice]]):

        block_emergency_and_repair_calls_due_to_sac_limits (bool):

        media_group_name (Optional[str]):

        access_info_pattern (Optional[str]):

    """

    max_session: int = field(metadata={"alias": "maxSession"})

    max_user_originating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "maxUserOriginatingSessions"}
    )

    max_user_terminating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "maxUserTerminatingSessions"}
    )

    reserved_session: int = field(metadata={"alias": "reservedSession"})

    reserved_user_originating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "reservedUserOriginatingSessions"}
    )

    reserved_user_terminating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "reservedUserTerminatingSessions"}
    )

    default_group: bool = field(metadata={"alias": "defaultGroup"})

    count_intra_sac_group_sessions: bool = field(
        metadata={"alias": "countIntraSACGroupSessions"}
    )

    devices: Optional[List[EnterpriseAccessDevice]] = field(
        default=None, metadata={"alias": "devices"}
    )

    block_emergency_and_repair_calls_due_to_sac_limits: bool = field(
        metadata={"alias": "blockEmergencyAndRepairCallsDueToSACLimits"}
    )

    media_group_name: Optional[str] = field(
        default=None, metadata={"alias": "mediaGroupName"}
    )

    access_info_pattern: Optional[str] = field(
        default=None, metadata={"alias": "accessInfoPattern"}
    )


@dataclass(kw_only=True)
class EnterpriseUserCallForwardingSettingsGetListResponse(OCIDataResponse):
    """Response to the EnterpriseUserCallForwardingSettingsGetListRequest.
        Contains a table with column headings: \"Group Id\", \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", and \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"In Trunk Group\",
        \"Email Address\", \"Is Active\", \"Forwarding Address\".
        \"Is Active\" is \"true\" or \"false\".
        The \"Forwarding Address\" is the Call Forwarding service's forwarding address.
        If the service is Call Forwarding Selective, the default forwarding address is returned.
        \"Phone Number\" field is presented in the E164 format.

    Attributes:

        user_call_forwarding_table (OCITable):

    """

    user_call_forwarding_table: OCITable = field(
        metadata={"alias": "userCallForwardingTable"}
    )


@dataclass(kw_only=True)
class EnterpriseUserCallWaitingSettingsGetListResponse(OCIDataResponse):
    """Response to the EnterpriseUserCallWaitingSettingsGetListRequest.
        Contains a table with column headings: \"Group Id\", \"User Id\", \"Last Name\", \"First Name\",
        \"Hiragana Last Name\", and \"Hiragana First Name\", \"Phone Number\", \"Extension\", \"Department\",
        \"In Trunk Group\", \"Email Address\", \"Is Active\".
        \"Is Active\" is \"true\" or \"false\".
        \"Phone Number\" is presented in the E164 format.

    Attributes:

        user_call_waiting_table (OCITable):

    """

    user_call_waiting_table: OCITable = field(
        metadata={"alias": "userCallWaitingTable"}
    )


@dataclass(kw_only=True)
class EnterpriseUserCallingPlanSettingsGetListResponse(OCIDataResponse):
    """Response to the EnterpriseUserCallingPlanSettingsGetListRequest.
        Contains a table with column headings: \"Group Id\", \"User Id\", \"Last Name\", \"First
        Name\", \"Hiragana Last Name\", and \"Hiragana First Name\", \"Phone
        Number\", \"Extension\", \"Department\", \"In Trunk Group\", \"Email Address\",
        \"Use Custom Settings\".
        \"Use Custom Settings\" is \"true\" or \"false\".
        \"Phone Number\" is presented in the E164 format.

    Attributes:

        user_calling_plan_table (OCITable):

    """

    user_calling_plan_table: OCITable = field(
        metadata={"alias": "userCallingPlanTable"}
    )


@dataclass(kw_only=True)
class EnterpriseUserHotelingGuestSettingsGetListResponse(OCIDataResponse):
    """Response to the EnterpriseUserHotelingGuestSettingsGetListRequest.
        Contains a table with column headings: \"Group Id\", \"User Id\", \"Last Name\", \"First
        Name\", \"Hiragana Last Name\", and \"Hiragana First Name\", \"Phone
        Number\", \"Extension\", \"Department\", \"In Trunk Group\", \"Email Address\",
        \"Is Active\".
        \"Is Active\" is \"true\" or \"false\".
        \"Phone Number\" is presented in the E164 format.

    Attributes:

        user_hoteling_guest_table (OCITable):

    """

    user_hoteling_guest_table: OCITable = field(
        metadata={"alias": "userHotelingGuestTable"}
    )


@dataclass(kw_only=True)
class EnterpriseVirtualOnNetEnterpriseExtensionsGetUserListResponse(OCIDataResponse):
    """Response to   EnterpriseVirtualOnNetEnterpriseExtensionsGetUserListRequest.
        Contains a table with column headings : \"Group Id\", \"Last Name\", \"First Name\", \"Phone Number\", \"Extension\",
        \"Virtual On-Net Call Type\" in a row for each user.

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class EnterpriseVoiceVPNGetDefaultResponse(OCIDataResponse):
    """Response to EnterpriseVoiceVPNGetDefaultResponse.

    Attributes:

        policy_selection (List[str]):

        digit_manipulation_operation (List[str]):

        route_group_id (Optional[List[str]]):

        treatment (Optional[List[EnterpriseVoiceVPNTreatmentEntry]]):

    """

    policy_selection: List[str] = field(metadata={"alias": "policySelection"})

    digit_manipulation_operation: List[str] = field(
        metadata={"alias": "digitManipulationOperation"}
    )

    route_group_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "routeGroupId"}
    )

    treatment: Optional[List[EnterpriseVoiceVPNTreatmentEntry]] = field(
        default=None, metadata={"alias": "treatment"}
    )


@dataclass(kw_only=True)
class EnterpriseVoiceVPNGetPolicyListResponse(OCIDataResponse):
    """Response to EnterpriseVoiceVPNGetListResponse.
        Returns a 4 column table with column headings:
          \"Location Code\", \"Min Extension Length\", \"Max Extension Length\", \"Location Selection\".

    Attributes:

        location_list (OCITable):

    """

    location_list: OCITable = field(metadata={"alias": "locationList"})


@dataclass(kw_only=True)
class EnterpriseVoiceVPNGetPolicyResponse(OCIDataResponse):
    """Response to EnterpriseVoiceVPNGetPolicyRequest.

    Attributes:

        min_extension_length (int):

        max_extension_length (int):

        description (Optional[str]):

        route_group_id (Optional[str]):

        policy_selection (str):

        digit_manipulation (Optional[List[EnterpriseVoiceVPNDigitManipulation]]):

        treatment_id (Optional[str]):

    """

    min_extension_length: int = field(metadata={"alias": "minExtensionLength"})

    max_extension_length: int = field(metadata={"alias": "maxExtensionLength"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    route_group_id: Optional[str] = field(
        default=None, metadata={"alias": "routeGroupId"}
    )

    policy_selection: str = field(metadata={"alias": "policySelection"})

    digit_manipulation: Optional[List[EnterpriseVoiceVPNDigitManipulation]] = field(
        default=None, metadata={"alias": "digitManipulation"}
    )

    treatment_id: Optional[str] = field(default=None, metadata={"alias": "treatmentId"})


@dataclass(kw_only=True)
class EnterpriseVoiceVPNGetResponse14sp3(OCIDataResponse):
    """Response to EnterpriseVoiceVPNGetRequest14sp3.

    Attributes:

        is_active (bool):

        default_selection (str):

        e164_selection (str):

        use_phone_context (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    default_selection: str = field(metadata={"alias": "defaultSelection"})

    e164_selection: str = field(metadata={"alias": "e164Selection"})

    use_phone_context: bool = field(metadata={"alias": "usePhoneContext"})


@dataclass(kw_only=True)
class ExternalAuthenticationCreateLoginTokenResponse(OCIDataResponse):
    """Response to ExternalAuthenticationCreateLoginTokenRequest.

    Attributes:

        login_token (str):

    """

    login_token: str = field(metadata={"alias": "loginToken"})


@dataclass(kw_only=True)
class GroupAccessDeviceAvailablePortGetListResponse(OCIDataResponse):
    """Response to GroupAccessDeviceAvailablePortGetListRequest.
        Contains a list of available ports in a device using static mode. The list is empty in case the device is using dynamic mode.

    Attributes:

        port_number (Optional[List[int]]):

    """

    port_number: Optional[List[int]] = field(
        default=None, metadata={"alias": "portNumber"}
    )


@dataclass(kw_only=True)
class GroupAccessDeviceCustomTagGetListResponse(OCIDataResponse):
    """Response to GroupAccessDeviceCustomTagGetListRequest.
        Contains a table of custom configuration tags managed by the Device Management System on a per-device profile basis.
        In AS data mode, the column headings are:
          \"Tag Name\", \"Tag Value\", \"Actual Tag Value\".
        In XS data mode, the column headings are:
          \"Tag Name\", \"Tag Value\", \"Actual Tag Value\" if request is invoked by an admin without system privileges.
          \"Tag Name\", \"Tag Value\", \"Is Encrypted\", \"Actual Tag Value\" if request is invoked by an admin with system privileges.

    Attributes:

        device_custom_tags_table (OCITable):

    """

    device_custom_tags_table: OCITable = field(
        metadata={"alias": "deviceCustomTagsTable"}
    )


@dataclass(kw_only=True)
class GroupAccessDeviceDeviceActivationGetResponse(OCIDataResponse):
    """Response to GroupAccessDeviceDeviceActivationGetRequest.
        The response contains the activation code (if available), the expiry time (if available) and the activation state.
        The expiryTime is represented as a timestamp, i.e. the number of milliseconds
        since January 1, 1970, 00:00:00 GMT.

    Attributes:

        activation_code (Optional[str]):

        expiry_time (Optional[int]):

        activation_state (str):

    """

    activation_code: Optional[str] = field(
        default=None, metadata={"alias": "activationCode"}
    )

    expiry_time: Optional[int] = field(default=None, metadata={"alias": "expiryTime"})

    activation_state: str = field(metadata={"alias": "activationState"})


@dataclass(kw_only=True)
class GroupAccessDeviceFileGetListResponse14sp8(OCIDataResponse):
    """Response to GroupAccessDeviceFileGetListRequest14sp8.
        Contains a table of device files managed by the Device Management System on a per-device profile basis.
        The column headings are: \"File Format\", \"Is Authenticated\", \"Access URL\", \"Repository URL\", \"Template URL\", \"Extended Capture URL\", \"Is File Linked\".

        The following column is only populated in AS data mode for leaf devices.
          \"Is File Linked\"

    Attributes:

        device_files_table (OCITable):

    """

    device_files_table: OCITable = field(metadata={"alias": "deviceFilesTable"})


@dataclass(kw_only=True)
class GroupAccessDeviceFileGetResponse20(OCIDataResponse):
    """Response to GroupAccessDeviceFileGetRequest20.

    Attributes:

        file_source (str):

        configuration_file_name (Optional[str]):

        access_url (str):

        repository_url (Optional[str]):

        template_url (Optional[str]):

        extended_capture_enabled (Optional[bool]):

        extended_capture_url (Optional[str]):

    """

    file_source: str = field(metadata={"alias": "fileSource"})

    configuration_file_name: Optional[str] = field(
        default=None, metadata={"alias": "configurationFileName"}
    )

    access_url: str = field(metadata={"alias": "accessUrl"})

    repository_url: Optional[str] = field(
        default=None, metadata={"alias": "repositoryUrl"}
    )

    template_url: Optional[str] = field(default=None, metadata={"alias": "templateUrl"})

    extended_capture_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "extendedCaptureEnabled"}
    )

    extended_capture_url: Optional[str] = field(
        default=None, metadata={"alias": "extendedCaptureURL"}
    )


@dataclass(kw_only=True)
class GroupAccessDeviceGetAvailableCustomTagListResponse(OCIDataResponse):
    """Response to GroupAccessDeviceGetAvailableCustomTagListRequest.
        Contains a table of all available custom tags managed by the Device Management System on a per-device profile basis.

        In AS data mode, the column headings are: \"Tag Name\", \"Tag Value\", \"Tag Level\", \"Tag Set Name\", \"Region Name\".

        In XS data mode:
          the column headings are: \"Tag Name\", \"Tag Value\", \"Tag Level\", \"Tag Set Name\", \"Is Encrypted\" if request is invoked by a System administrator or by an administrator with higher priviledges, otherwise the column headings are: \"Tag Name\", \"Tag Value\", \"Tag Level\", \"Tag Source\", \"Tag Set Name\".

        \"Tag Level\" can take the value: \"System Default\", \"System\", \"Service Provider\", \"Group\" or \"Device Profile\".

    Attributes:

        device_available_custom_tags_table (OCITable):

    """

    device_available_custom_tags_table: OCITable = field(
        metadata={"alias": "deviceAvailableCustomTagsTable"}
    )


@dataclass(kw_only=True)
class GroupAccessDeviceGetAvailableDetailListResponse19(OCIDataResponse):
    """Response to GroupAccessDeviceGetAvailableDetailListRequest19.

    Attributes:

        available_access_device (Optional[List[object]]):

    """

    available_access_device: Optional[List[object]] = field(
        default=None, metadata={"alias": "availableAccessDevice"}
    )


@dataclass(kw_only=True)
class GroupAccessDeviceGetEnhancedConfigurationTypeListResponse(OCIDataResponse):
    """Response to GroupAccessDeviceGetEnhancedConfigurationTypeListRequest.

    Attributes:

        device_type (Optional[List[str]]):

    """

    device_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "deviceType"}
    )


@dataclass(kw_only=True)
class GroupAccessDeviceGetEnhancedConfigurationTypeResponse14(OCIDataResponse):
    """Response to GroupAccessDeviceGetEnhancedConfigurationTypeRequest14.

    Attributes:

        supports_enhanced_configuration (bool):

        supports_reset (bool):

        configuration_type (Optional[str]):

        configuration_file_name (Optional[str]):

    """

    supports_enhanced_configuration: bool = field(
        metadata={"alias": "supportsEnhancedConfiguration"}
    )

    supports_reset: bool = field(metadata={"alias": "supportsReset"})

    configuration_type: Optional[str] = field(
        default=None, metadata={"alias": "configurationType"}
    )

    configuration_file_name: Optional[str] = field(
        default=None, metadata={"alias": "configurationFileName"}
    )


@dataclass(kw_only=True)
class GroupAccessDeviceGetLinkedLeafDeviceListResponse22(OCIDataResponse):
    """Response to GroupAccessDeviceGetLinkedLeafDeviceListRequest22.

    Attributes:

        tree_device_link_id (str):

        leaf_device_key (Optional[List[AccessDeviceKey]]):

        support_links (Optional[List[str]]):

    """

    tree_device_link_id: str = field(metadata={"alias": "treeDeviceLinkId"})

    leaf_device_key: Optional[List[AccessDeviceKey]] = field(
        default=None, metadata={"alias": "leafDeviceKey"}
    )

    support_links: Optional[List[str]] = field(
        default=None, metadata={"alias": "supportLinks"}
    )


@dataclass(kw_only=True)
class GroupAccessDeviceGetLinkedTreeDeviceResponse(OCIDataResponse):
    """Response to GroupAccessDeviceGetLinkedTreeDeviceRequest.

    Attributes:

        tree_device_info (Optional[TreeDeviceInfo]):

    """

    tree_device_info: Optional[TreeDeviceInfo] = field(
        default=None, metadata={"alias": "treeDeviceInfo"}
    )


@dataclass(kw_only=True)
class GroupAccessDeviceGetListResponse(OCIDataResponse):
    """Response to GroupAccessDeviceGetListRequest.
        Contains a table of devices configured in the group.
        The column headings are: \"Device Name\", \"Device Type\", \"Available Ports\", \"Net Address\", \"MAC Address\", \"Status\", \"Version\",
        and \"Access Device External Id\".

        The following columns are only populated in AS data mode:
          \"Access Device External Id\"

    Attributes:

        access_device_table (OCITable):

    """

    access_device_table: OCITable = field(metadata={"alias": "accessDeviceTable"})


@dataclass(kw_only=True)
class GroupAccessDeviceGetNativeTagsWithLogicListResponse(OCIDataResponse):
    """Response to GroupAccessDeviceGetNativeTagsWithLogicListRequest.
        Contains a table of all native tags with logic managed by the Device Management System on a per-device profile basis.

        The column headings are: \"Tag Name\", \"Tag Value\".

    Attributes:

        device_native_tags_with_logic_table (OCITable):

    """

    device_native_tags_with_logic_table: OCITable = field(
        metadata={"alias": "deviceNativeTagsWithLogicTable"}
    )


@dataclass(kw_only=True)
class GroupAccessDeviceGetPagedSortedListResponse22(OCIDataResponse):
    """Response to GroupAccessDeviceGetPagedSortedListRequest22.
        Contains a table of devices configured in the group.
        The column headings are: \"Device Name\", \"Device Type\", \"Available Ports\", \"Net Address\", \"MAC Address\", \"Status\", \"Version\", and \"Support Visual Device Management API\".
        When CloudPBX is not licensed, the column \"Support Visual Device Management API\" values are not returned.

    Attributes:

        total_number_of_rows (Optional[int]):

        access_device_table (OCITable):

    """

    total_number_of_rows: Optional[int] = field(
        default=None, metadata={"alias": "totalNumberOfRows"}
    )

    access_device_table: OCITable = field(metadata={"alias": "accessDeviceTable"})


@dataclass(kw_only=True)
class GroupAccessDeviceGetResponse24V3(OCIDataResponse):
    """Response to GroupAccessDeviceGetRequest24V3.

        The following elements are only used in AS data mode:
           serviceProviderId
           groupId
           deviceName
           deviceExternalId
           deviceCode
           deviceIPEI
           deviceIndex
           useDeviceCode
           authBearerSubject

    Attributes:

        device_type (str):

        protocol (Optional[str]):

        net_address (Optional[str]):

        port (Optional[int]):

        outbound_proxy_server_net_address (Optional[str]):

        stun_server_net_address (Optional[str]):

        mac_address (Optional[str]):

        serial_number (Optional[str]):

        description (Optional[str]):

        number_of_ports (UnboundedPositiveInt):

        number_of_assigned_ports (int):

        status (str):

        configuration_mode (Optional[str]):

        configuration_file_name (Optional[str]):

        physical_location (Optional[str]):

        transport_protocol (Optional[str]):

        use_custom_user_name_password (Optional[bool]):

        user_name (Optional[str]):

        version (Optional[str]):

        service_provider_id (str):

        group_id (str):

        device_name (str):

        device_external_id (Optional[str]):

        device_code (Optional[str]):

        device_ipei (Optional[str]):

        device_index (Optional[int]):

        use_device_code (Optional[bool]):

        auth_bearer_subject (Optional[str]):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    protocol: Optional[str] = field(default=None, metadata={"alias": "protocol"})

    net_address: Optional[str] = field(default=None, metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    outbound_proxy_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "outboundProxyServerNetAddress"}
    )

    stun_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "stunServerNetAddress"}
    )

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})

    serial_number: Optional[str] = field(
        default=None, metadata={"alias": "serialNumber"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    number_of_ports: UnboundedPositiveInt = field(metadata={"alias": "numberOfPorts"})

    number_of_assigned_ports: int = field(metadata={"alias": "numberOfAssignedPorts"})

    status: str = field(metadata={"alias": "status"})

    configuration_mode: Optional[str] = field(
        default=None, metadata={"alias": "configurationMode"}
    )

    configuration_file_name: Optional[str] = field(
        default=None, metadata={"alias": "configurationFileName"}
    )

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    use_custom_user_name_password: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomUserNamePassword"}
    )

    user_name: Optional[str] = field(default=None, metadata={"alias": "userName"})

    version: Optional[str] = field(default=None, metadata={"alias": "version"})

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    device_external_id: Optional[str] = field(
        default=None, metadata={"alias": "deviceExternalId"}
    )

    device_code: Optional[str] = field(default=None, metadata={"alias": "deviceCode"})

    device_ipei: Optional[str] = field(default=None, metadata={"alias": "deviceIPEI"})

    device_index: Optional[int] = field(default=None, metadata={"alias": "deviceIndex"})

    use_device_code: Optional[bool] = field(
        default=None, metadata={"alias": "useDeviceCode"}
    )

    auth_bearer_subject: Optional[str] = field(
        default=None, metadata={"alias": "authBearerSubject"}
    )


@dataclass(kw_only=True)
class GroupAccessDeviceGetUserListResponse21sp1(OCIDataResponse):
    """Response to GroupAccessDeviceGetUserListRequest21sp1.
        The column headings for the deviceUserTable are: \"Line/Port\", \"Last Name\",
        \"First Name\", \"Phone Number\", \"User Id\", \"User Type\", \"Endpoint Type\", \"Order\", \"Primary Line/Port\", \"Extension\", \"Department\", \"Email Address\", \"Private Identity\".
        In IMS mode, the table will contain a row for each TEL-URI in the Phone Number column.
        In Standalone mode, rows for the alternate numbers are not included.
        The User Type column contains one of the enumerated UserType values.
        The Endpoint Type column contains one of the enumerated EndpointType21sp1 values.
        The value Mobility in Endpoint Type column is only applicable in AS data mode.
        The Private Identity column is empty is AS mode.

    Attributes:

        device_user_table (OCITable):

    """

    device_user_table: OCITable = field(metadata={"alias": "deviceUserTable"})


@dataclass(kw_only=True)
class GroupAccessDeviceTagSetGetResponse(OCIDataResponse):
    """Response to GroupAccessDeviceTagSetGetRequest.
        The response includes a tag set name defined in the access device.

    Attributes:

        tag_set_name (Optional[str]):

    """

    tag_set_name: Optional[str] = field(default=None, metadata={"alias": "tagSetName"})


@dataclass(kw_only=True)
class GroupAccountAuthorizationCodesGetAvailableUserListResponse(OCIDataResponse):
    """Response to the GroupAccountAuthorizationCodesGetAvailableUserListRequest.
        The column headings are: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\" and
        \"Hiragana First Name\", \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupAccountAuthorizationCodesGetListResponse(OCIDataResponse):
    """Response to GroupAccountAuthorizationCodesGetListRequest.

    Attributes:

        code_entry (Optional[List[AccountAuthorizationCodeEntry]]):

    """

    code_entry: Optional[List[AccountAuthorizationCodeEntry]] = field(
        default=None, metadata={"alias": "codeEntry"}
    )


@dataclass(kw_only=True)
class GroupAccountAuthorizationCodesGetResponse(OCIDataResponse):
    """Response to GroupAccountAuthorizationCodesGetRequest.
        The tables has the following column headings:
        \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        type (str):

        number_of_digits (int):

        allow_local_and_toll_free_calls (bool):

        mandatory_usage_user_table (OCITable):

        optional_usage_user_table (OCITable):

    """

    type: str = field(metadata={"alias": "type"})

    number_of_digits: int = field(metadata={"alias": "numberOfDigits"})

    allow_local_and_toll_free_calls: bool = field(
        metadata={"alias": "allowLocalAndTollFreeCalls"}
    )

    mandatory_usage_user_table: OCITable = field(
        metadata={"alias": "mandatoryUsageUserTable"}
    )

    optional_usage_user_table: OCITable = field(
        metadata={"alias": "optionalUsageUserTable"}
    )


@dataclass(kw_only=True)
class GroupAdminAlternateIdGetListResponse(OCIDataResponse):
    """Response to GroupAdminAlternateIdGetListRequest.
        Contains a table of the main admin user id and the alternate admin user ids, the column headings are: \"User Id\", \"Description\", \"Alternate\".
        The possible values for \"Alternate\" are \"true\" and \"false\".
        The \"Description\" is only present for alternate admin user Ids.

    Attributes:

        admin_user_id_table (OCITable):

    """

    admin_user_id_table: OCITable = field(metadata={"alias": "adminUserIdTable"})


@dataclass(kw_only=True)
class GroupAdminGetListResponse(OCIDataResponse):
    """Response to GroupAdminGetListRequest.
        Contains a 7 column table with column headings \"Administrator ID\",
        \"Last Name\", \"First Name\", \"Department\", \"Language\", \"Locale\" and \"Encoding\".

        The following columns are only returned in AS data mode:
          \"Locale\" and \"Encoding\"

    Attributes:

        group_admin_table (OCITable):

    """

    group_admin_table: OCITable = field(metadata={"alias": "groupAdminTable"})


@dataclass(kw_only=True)
class GroupAdminGetPagedSortedListResponse(OCIDataResponse):
    """Response to GroupAdminGetPagedSortedListRequest.
        Contains a 8 column table with column headings \"Administrator ID\",
        \"Last Name\", \"First Name\", \"Administrator Type\", \"Department\",
        \"Language\", \"Locale\" and \"Encoding\".
        The following columns are only returned in AS data mode:
        \"Locale\" and \"Encoding\".

    Attributes:

        group_admin_table (OCITable):

    """

    group_admin_table: OCITable = field(metadata={"alias": "groupAdminTable"})


@dataclass(kw_only=True)
class GroupAdminGetPolicyResponse20(OCIDataResponse):
    """Response to GroupAdminGetPolicyRequest20.
        Contains the policy settings for the group administrator.
        The following elements are only used in AS data mode:
            dialableCallerIDAccess
            verifyTranslationAndroutingAccess, value \"None\" is returned in XS data mode

        The following elements are only used in AS data mode and not returned in XS data mode:
            communicationBarringUserProfileAccess (This element is only returned for groups in an enterprise)

    Attributes:

        profile_access (str):

        user_access (str):

        admin_access (str):

        department_access (str):

        access_device_access (str):

        enhanced_service_instance_access (str):

        feature_access_code_access (str):

        phone_number_extension_access (str):

        calling_line_id_number_access (str):

        service_access (str):

        trunk_group_access (str):

        session_admission_control_access (str):

        office_zone_access (str):

        number_activation_access (str):

        dialable_caller_id_access (str):

        verify_translation_and_routing_access (str):

        communication_barring_user_profile_access (Optional[str]):

    """

    profile_access: str = field(metadata={"alias": "profileAccess"})

    user_access: str = field(metadata={"alias": "userAccess"})

    admin_access: str = field(metadata={"alias": "adminAccess"})

    department_access: str = field(metadata={"alias": "departmentAccess"})

    access_device_access: str = field(metadata={"alias": "accessDeviceAccess"})

    enhanced_service_instance_access: str = field(
        metadata={"alias": "enhancedServiceInstanceAccess"}
    )

    feature_access_code_access: str = field(
        metadata={"alias": "featureAccessCodeAccess"}
    )

    phone_number_extension_access: str = field(
        metadata={"alias": "phoneNumberExtensionAccess"}
    )

    calling_line_id_number_access: str = field(
        metadata={"alias": "callingLineIdNumberAccess"}
    )

    service_access: str = field(metadata={"alias": "serviceAccess"})

    trunk_group_access: str = field(metadata={"alias": "trunkGroupAccess"})

    session_admission_control_access: str = field(
        metadata={"alias": "sessionAdmissionControlAccess"}
    )

    office_zone_access: str = field(metadata={"alias": "officeZoneAccess"})

    number_activation_access: str = field(metadata={"alias": "numberActivationAccess"})

    dialable_caller_id_access: str = field(metadata={"alias": "dialableCallerIDAccess"})

    verify_translation_and_routing_access: str = field(
        metadata={"alias": "verifyTranslationAndRoutingAccess"}
    )

    communication_barring_user_profile_access: Optional[str] = field(
        default=None, metadata={"alias": "communicationBarringUserProfileAccess"}
    )


@dataclass(kw_only=True)
class GroupAdminGetResponse22V3(OCIDataResponse):
    """Response to the GroupAdminGetRequest22V3.
        The response contains the group administrators  profile information.

        The following elements are only used in AS data mode and ignored in XS data mode.
        accountDisabled
        lastAuthenticatedDate
        hasPassword

    Attributes:

        service_provider_id (str):

        group_id (str):

        first_name (Optional[str]):

        last_name (Optional[str]):

        language (str):

        locale (str):

        encoding (str):

        account_disabled (bool):

        last_authenticated_date (str):

        has_password (bool):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    first_name: Optional[str] = field(default=None, metadata={"alias": "firstName"})

    last_name: Optional[str] = field(default=None, metadata={"alias": "lastName"})

    language: str = field(metadata={"alias": "language"})

    locale: str = field(metadata={"alias": "locale"})

    encoding: str = field(metadata={"alias": "encoding"})

    account_disabled: bool = field(metadata={"alias": "accountDisabled"})

    last_authenticated_date: str = field(metadata={"alias": "lastAuthenticatedDate"})

    has_password: bool = field(metadata={"alias": "hasPassword"})


@dataclass(kw_only=True)
class GroupAdministratorPasswordRulesGetResponse(OCIDataResponse):
    """Response to GroupAdministratorPasswordRulesGetRequest.

    Attributes:

        use_external_authentication (Optional[bool]):

        allow_web_add_external_authentication_users (Optional[bool]):

        disallow_user_id (Optional[bool]):

        disallow_old_password (Optional[bool]):

        disallow_reversed_old_password (Optional[bool]):

        restrict_min_digits (Optional[bool]):

        min_digits (Optional[int]):

        restrict_min_upper_case_letters (Optional[bool]):

        min_upper_case_letters (Optional[int]):

        restrict_min_lower_case_letters (Optional[bool]):

        min_lower_case_letters (Optional[int]):

        restrict_min_non_alphanumeric_characters (Optional[bool]):

        min_non_alphanumeric_characters (Optional[int]):

        min_length (Optional[int]):

        max_failed_login_attempts (Optional[int]):

        password_expires_days (Optional[int]):

        send_login_disabled_notify_email (Optional[bool]):

        login_disabled_notify_email_address (Optional[str]):

        disallow_previous_passwords (Optional[bool]):

        number_of_previous_passwords (Optional[int]):

    """

    use_external_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "useExternalAuthentication"}
    )

    allow_web_add_external_authentication_users: Optional[bool] = field(
        default=None, metadata={"alias": "allowWebAddExternalAuthenticationUsers"}
    )

    disallow_user_id: Optional[bool] = field(
        default=None, metadata={"alias": "disallowUserId"}
    )

    disallow_old_password: Optional[bool] = field(
        default=None, metadata={"alias": "disallowOldPassword"}
    )

    disallow_reversed_old_password: Optional[bool] = field(
        default=None, metadata={"alias": "disallowReversedOldPassword"}
    )

    restrict_min_digits: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinDigits"}
    )

    min_digits: Optional[int] = field(default=None, metadata={"alias": "minDigits"})

    restrict_min_upper_case_letters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinUpperCaseLetters"}
    )

    min_upper_case_letters: Optional[int] = field(
        default=None, metadata={"alias": "minUpperCaseLetters"}
    )

    restrict_min_lower_case_letters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinLowerCaseLetters"}
    )

    min_lower_case_letters: Optional[int] = field(
        default=None, metadata={"alias": "minLowerCaseLetters"}
    )

    restrict_min_non_alphanumeric_characters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinNonAlphanumericCharacters"}
    )

    min_non_alphanumeric_characters: Optional[int] = field(
        default=None, metadata={"alias": "minNonAlphanumericCharacters"}
    )

    min_length: Optional[int] = field(default=None, metadata={"alias": "minLength"})

    max_failed_login_attempts: Optional[int] = field(
        default=None, metadata={"alias": "maxFailedLoginAttempts"}
    )

    password_expires_days: Optional[int] = field(
        default=None, metadata={"alias": "passwordExpiresDays"}
    )

    send_login_disabled_notify_email: Optional[bool] = field(
        default=None, metadata={"alias": "sendLoginDisabledNotifyEmail"}
    )

    login_disabled_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "loginDisabledNotifyEmailAddress"}
    )

    disallow_previous_passwords: Optional[bool] = field(
        default=None, metadata={"alias": "disallowPreviousPasswords"}
    )

    number_of_previous_passwords: Optional[int] = field(
        default=None, metadata={"alias": "numberOfPreviousPasswords"}
    )


@dataclass(kw_only=True)
class GroupAdviceOfChargeGetResponse(OCIDataResponse):
    """Response to GroupAdviceOfChargeGetRequest.
        Contains a list of Advice of Charge group parameters.

    Attributes:

        use_group_level_ao_c_settings (bool):

        delay_between_notification_seconds (int):

    """

    use_group_level_ao_c_settings: bool = field(
        metadata={"alias": "useGroupLevelAoCSettings"}
    )

    delay_between_notification_seconds: int = field(
        metadata={"alias": "delayBetweenNotificationSeconds"}
    )


@dataclass(kw_only=True)
class GroupAlternateUserIdGetListResponse(OCIDataResponse):
    """Response to GroupAlternateUserIdGetListRequest.
        The \"User Type\" column contains the corresponding enumerated UserType value.
        Contains a table of alternate user ids, the column headings are:
          \"User Id\", \"Alternate User Id\" and \"User Type\".

    Attributes:

        alternate_user_id_table (OCITable):

    """

    alternate_user_id_table: OCITable = field(
        metadata={"alias": "alternateUserIdTable"}
    )


@dataclass(kw_only=True)
class GroupAnnouncementFileGetListResponse(OCIDataResponse):
    """Response to GroupAnnouncementFileGetListRequest.
        When requested, the response contains a table with columns: \"Name\", \"Media Type\", \"File Size\", \"Announcement File External Id\".
        The \"Name\" column contains the name of the announcement file.
        The \"Media Type\" column contains the media type of the announcement
        File with the possible values:
                WMA - Windows Media Audio file
                WAV - A WAV file
                3GP - A 3GP file
                MOV - A MOV file using a H.263 or H.264 codec.
        The \"File Size\" column contains the file size (KB) of the announcement file.
        The \"Announcement File External Id\" column contains the External ID of the announcement file.
        The response also contains the current total file size (KB) for the group across
        all media types and the maximum total file size (MB) allowed for the group.

        The following columns are populated in AS data mode only:
          \"Announcement File External Id\"

    Attributes:

        announcement_table (Optional[OCITable]):

        total_file_size (int):

        max_file_size (int):

    """

    announcement_table: Optional[OCITable] = field(
        default=None, metadata={"alias": "announcementTable"}
    )

    total_file_size: int = field(metadata={"alias": "totalFileSize"})

    max_file_size: int = field(metadata={"alias": "maxFileSize"})


@dataclass(kw_only=True)
class GroupAnnouncementFileGetPagedSortedListResponse(OCIDataResponse):
    """Response to GroupAnnouncementFileGetPagedSortedListRequest.
        The response contains a table with columns: \"Name\", \"Media Type\", \"File Size\", and \"Announcement File External Id\".
        The \"Name\" column contains the name of the announcement file.
        The \"Media Type\" column contains the media type of the announcement
        File with the possible values:
                WMA - Windows Media Audio file
                WAV - A WAV file
                3GP - A 3GP file
                MOV - A MOV file using a H.263 or H.264 codec.
        The \"File Size\" column contains the file size (KB) of the announcement file.

        The following columns are populated in AS data mode only:
          \"Announcement File External Id\"

    Attributes:

        announcement_table (Optional[OCITable]):

    """

    announcement_table: Optional[OCITable] = field(
        default=None, metadata={"alias": "announcementTable"}
    )


@dataclass(kw_only=True)
class GroupAnnouncementFileGetResponse22(OCIDataResponse):
    """Response to GroupAnnouncementFileGetRequest22.
        The response contains the file size, uploaded timestamp, description and usage for
        an announcement file in the user announcement repository.
        The usage table has columns \"Service Name\", and \"Instance Name\".
        The Service Name values correspond to string values of the GroupService and UserService data types.
        With the exception of the string \"Voice Portal\" which is returned when the announcement is being used by Voice Portal Personalized Name.

        The following data elements are only used in AS data mode:
          announcementFileExternalId

    Attributes:

        description (str):

        filesize (int):

        last_uploaded (str):

        service_provider_id (str):

        group_id (str):

        announcement_file_key (AnnouncementFileKey):

        announcement_file_external_id (Optional[str]):

        usage_table (OCITable):

    """

    description: str = field(metadata={"alias": "description"})

    filesize: int = field(metadata={"alias": "filesize"})

    last_uploaded: str = field(metadata={"alias": "lastUploaded"})

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    announcement_file_key: AnnouncementFileKey = field(
        metadata={"alias": "announcementFileKey"}
    )

    announcement_file_external_id: Optional[str] = field(
        default=None, metadata={"alias": "announcementFileExternalId"}
    )

    usage_table: OCITable = field(metadata={"alias": "usageTable"})


@dataclass(kw_only=True)
class GroupAnnouncementRepositoryGetSettingsResponse(OCIDataResponse):
    """Response to GroupAnnouncementFileGetSettingsRequest.
        The response contains the current total file size (KB) for the group across
        all media types and the maximum total file size (MB) allowed for the group.
        It also indicates the maximum file size for individual audio and video files.

    Attributes:

        total_file_size (int):

        max_audio_file_size (int):

        max_video_file_size (int):

        max_file_size (int):

    """

    total_file_size: int = field(metadata={"alias": "totalFileSize"})

    max_audio_file_size: int = field(metadata={"alias": "maxAudioFileSize"})

    max_video_file_size: int = field(metadata={"alias": "maxVideoFileSize"})

    max_file_size: int = field(metadata={"alias": "maxFileSize"})


@dataclass(kw_only=True)
class GroupApplicationServerSetGetResponse(OCIDataResponse):
    """Response to the GroupApplicationServerSetGetRequest.
        The response contains the group's Application Server set information.

    Attributes:

        application_server_set_name (Optional[str]):

    """

    application_server_set_name: Optional[str] = field(
        default=None, metadata={"alias": "applicationServerSetName"}
    )


@dataclass(kw_only=True)
class GroupAutoAttendantGetInstanceListResponse(OCIDataResponse):
    """Response to the GroupAutoAttendantGetInstanceListRequest.
        Contains a table with column headings:
        \"Service User Id\", \"Name\", \"Video\", \"Phone Number\", \"Extension\", \"Department\", \"Is Active\", \"Type\".
        The column values for \"Video\" and \"Is Active\" can either be true, or false.
        The column values for \"Type\" can either be Basic or Standard.

        In XS Mode the value for the \"Type\" column will always be populated with Basic.

    Attributes:

        auto_attendant_table (OCITable):

    """

    auto_attendant_table: OCITable = field(metadata={"alias": "autoAttendantTable"})


@dataclass(kw_only=True)
class GroupAutoAttendantGetInstancePagedSortedListResponse(OCIDataResponse):
    """Response to the GroupAutoAttendantGetInstancePagedSortedListRequest.
        The response contains a table with columns:
        \"Service User Id\", \"Name\", \"Phone Number\", \"Is Phone Number Activated\", \"Country Code\",
        \"National Prefix\", \"Extension\", \"Department\", \"Department Type\", \"Parent Department\",
        \"Parent Department Type\", \"Is Active\", \"Type\".
        The column values for \"Is Active\" can either be true, or false.
        The column values for \"Type\" can either be Basic or Standard.
        The \"Department Type\" and \"Parent Department Type\" columns will contain the values \"Enterprise\" or \"Group\".

        In XS Mode the value for the \"Type\" column will always be populated with Basic.

    Attributes:

        auto_attendant_table (OCITable):

    """

    auto_attendant_table: OCITable = field(metadata={"alias": "autoAttendantTable"})


@dataclass(kw_only=True)
class GroupAutoAttendantGetInstanceResponse24(OCIDataResponse):
    """Response to GroupAutoAttendantGetInstanceRequest24.
        Contains the service profile information.

        The following elements are only used in AS data mode and not returned in XS
        datamode:
        transferToOperatorAudioFile,
        transferToOperatorVideoFile,
        type (use AutoAttendantType.BASIC in XS mode),
        holidayMenu.

        The following element is only used in AS data mode:
        transferToOperatorAnnouncementSelection, value \"Default\" is returned in XS data
        mode.

        The following elements are only valid for Standard Auto
        Attendants:
          holidayMenu

    Attributes:

        service_instance_profile (ServiceInstanceReadProfile19sp1):

        type (str):

        first_digit_timeout_seconds (int):

        transfer_to_operator_announcement_selection (str):

        transfer_to_operator_audio_file (Optional[AnnouncementFileLevelKey]):

        transfer_to_operator_video_file (Optional[AnnouncementFileLevelKey]):

        enable_video (bool):

        business_hours (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        extension_dialing_scope (str):

        name_dialing_scope (str):

        name_dialing_entries (str):

        business_hours_menu (AutoAttendantReadMenu20):

        after_hours_menu (AutoAttendantReadMenu20):

        holiday_menu (Optional[AutoAttendantReadMenu20]):

        network_class_of_service (Optional[str]):

    """

    service_instance_profile: ServiceInstanceReadProfile19sp1 = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    type: str = field(metadata={"alias": "type"})

    first_digit_timeout_seconds: int = field(
        metadata={"alias": "firstDigitTimeoutSeconds"}
    )

    transfer_to_operator_announcement_selection: str = field(
        metadata={"alias": "transferToOperatorAnnouncementSelection"}
    )

    transfer_to_operator_audio_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "transferToOperatorAudioFile"}
    )

    transfer_to_operator_video_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "transferToOperatorVideoFile"}
    )

    enable_video: bool = field(metadata={"alias": "enableVideo"})

    business_hours: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "businessHours"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    extension_dialing_scope: str = field(metadata={"alias": "extensionDialingScope"})

    name_dialing_scope: str = field(metadata={"alias": "nameDialingScope"})

    name_dialing_entries: str = field(metadata={"alias": "nameDialingEntries"})

    business_hours_menu: AutoAttendantReadMenu20 = field(
        metadata={"alias": "businessHoursMenu"}
    )

    after_hours_menu: AutoAttendantReadMenu20 = field(
        metadata={"alias": "afterHoursMenu"}
    )

    holiday_menu: Optional[AutoAttendantReadMenu20] = field(
        default=None, metadata={"alias": "holidayMenu"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupAutoAttendantSubmenuGetListResponse(OCIDataResponse):
    """Response to the GroupAutoAttendantSubmenuGetListRequest.
        Contains a table with column headings:
        \"Submenu Id\" \"Is Used\".
        The column values for \"Is Used\" can either be true, or false.

    Attributes:

        submenu_table (OCITable):

    """

    submenu_table: OCITable = field(metadata={"alias": "submenuTable"})


@dataclass(kw_only=True)
class GroupAutoAttendantSubmenuGetResponse20(OCIDataResponse):
    """Response to GroupAutoAttendantSubmenuGetRequest20.
        Contains AutoAttendant submenu information.

    Attributes:

        announcement_selection (str):

        audio_file (Optional[AnnouncementFileLevelKey]):

        video_file (Optional[AnnouncementFileLevelKey]):

        enable_level_extension_dialing (bool):

        key_configuration (Optional[List[AutoAttendantKeyReadConfiguration20]]):

    """

    announcement_selection: str = field(metadata={"alias": "announcementSelection"})

    audio_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    video_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    enable_level_extension_dialing: bool = field(
        metadata={"alias": "enableLevelExtensionDialing"}
    )

    key_configuration: Optional[List[AutoAttendantKeyReadConfiguration20]] = field(
        default=None, metadata={"alias": "keyConfiguration"}
    )


@dataclass(kw_only=True)
class GroupAutoAttendantSubmenuGetUsageListResponse(OCIDataResponse):
    """Response to the GroupAutoAttendantSubmenuGetUsageListRequest.
        Contains a table with column headings:
        \"Type\" and \"Submenu ID\".

        The \"Type\" Column will contain one of the following: Business Hours Menu,
        After Hours Menu, Holiday Menu or Submenu.

        The \"Submenu ID\" Column will be left blank when the \"Type\" Column contains one
        of the base menu types (Business Hours Menu, After Hours Menu or Holiday Menu),
        and will contain the Submenu ID when the \"Type\" Column contains type Submenu.

    Attributes:

        submenu_table (OCITable):

    """

    submenu_table: OCITable = field(metadata={"alias": "submenuTable"})


@dataclass(kw_only=True)
class GroupBroadWorksAnywhereGetInstanceListResponse(OCIDataResponse):
    """Response to the GroupBroadWorksAnywhereGetInstanceListRequest.
        Contains a table with column headings:
        \"Service User Id\", \"Name\", \"Phone Number\", \"Extension\", \"Department\", \"Is Active\".
        The column value for \"Is Active\" can either be true, or false.

    Attributes:

        broad_works_anywhere_table (OCITable):

    """

    broad_works_anywhere_table: OCITable = field(
        metadata={"alias": "broadWorksAnywhereTable"}
    )


@dataclass(kw_only=True)
class GroupBroadWorksAnywhereGetInstanceResponse19sp1(OCIDataResponse):
    """Response to GroupBroadWorksAnywhereGetInstanceRequest19sp1.
        Contains the service profile information.

    Attributes:

        service_instance_profile (ServiceInstanceReadProfile19sp1):

        broad_works_anywhere_scope (str):

        prompt_for_clid (str):

        silent_prompt_mode (bool):

        prompt_for_passcode (bool):

        network_class_of_service (Optional[str]):

    """

    service_instance_profile: ServiceInstanceReadProfile19sp1 = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    broad_works_anywhere_scope: str = field(
        metadata={"alias": "broadWorksAnywhereScope"}
    )

    prompt_for_clid: str = field(metadata={"alias": "promptForCLID"})

    silent_prompt_mode: bool = field(metadata={"alias": "silentPromptMode"})

    prompt_for_passcode: bool = field(metadata={"alias": "promptForPasscode"})

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupBroadWorksMobilityGetResponse22V4(OCIDataResponse):
    """The response to a GroupBroadWorksMobilityGetRequest22V4.

    Attributes:

        use_setting_level (str):

        enable_location_services (bool):

        enable_msrn_lookup (bool):

        enable_mobile_state_checking (bool):

        deny_call_originations (bool):

        deny_call_terminations (bool):

        enable_announcement_suppression (bool):

        enable_internal_clid_delivery (bool):

        enable_internal_clid_delivery_access_locations (bool):

        enable_enhanced_unreachable_state_checking (bool):

        enable_network_call_barring_status_check (bool):

        network_translation_index (Optional[str]):

        enable_pbx_route_policy (bool):

        pbx_route_identity (Optional[TrunkGroupKey]):

    """

    use_setting_level: str = field(metadata={"alias": "useSettingLevel"})

    enable_location_services: bool = field(metadata={"alias": "enableLocationServices"})

    enable_msrn_lookup: bool = field(metadata={"alias": "enableMSRNLookup"})

    enable_mobile_state_checking: bool = field(
        metadata={"alias": "enableMobileStateChecking"}
    )

    deny_call_originations: bool = field(metadata={"alias": "denyCallOriginations"})

    deny_call_terminations: bool = field(metadata={"alias": "denyCallTerminations"})

    enable_announcement_suppression: bool = field(
        metadata={"alias": "enableAnnouncementSuppression"}
    )

    enable_internal_clid_delivery: bool = field(
        metadata={"alias": "enableInternalCLIDDelivery"}
    )

    enable_internal_clid_delivery_access_locations: bool = field(
        metadata={"alias": "enableInternalCLIDDeliveryAccessLocations"}
    )

    enable_enhanced_unreachable_state_checking: bool = field(
        metadata={"alias": "enableEnhancedUnreachableStateChecking"}
    )

    enable_network_call_barring_status_check: bool = field(
        metadata={"alias": "enableNetworkCallBarringStatusCheck"}
    )

    network_translation_index: Optional[str] = field(
        default=None, metadata={"alias": "networkTranslationIndex"}
    )

    enable_pbx_route_policy: bool = field(metadata={"alias": "enablePBXRoutePolicy"})

    pbx_route_identity: Optional[TrunkGroupKey] = field(
        default=None, metadata={"alias": "pbxRouteIdentity"}
    )


@dataclass(kw_only=True)
class GroupBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentListResponse(
    OCIDataResponse
):
    """Response to the GroupBroadWorksMobilityMobileSubscriberDirectoryNumberGetAssignmentListRequest.
        The response contains a table with columns: \"Mobile Number\", \"User Id\",
        \"Last Name\", \"First Name\",\"Phone Number\", \"Extension\", \"Department\",.
        The \"Mobile Number\" column contains a single DN.
        The \"User Id\", \"Last Name\" and \"First Name\" columns contains the corresponding attributes of the user possessing the DN(s).
        The \"Phone Number\" column contains a single DN.
        The \"Department\" column contains the department of the user if it is part of a department.

    Attributes:

        mobile_subscriber_directory_number_table (OCITable):

    """

    mobile_subscriber_directory_number_table: OCITable = field(
        metadata={"alias": "mobileSubscriberDirectoryNumberTable"}
    )


@dataclass(kw_only=True)
class GroupBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailableListResponse(
    OCIDataResponse
):
    """Response to GroupBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailableListRequest.
        Contains a list of available Mobile Subscriber Directory Numbers not yet assigned to any user.

    Attributes:

        mobile_subscriber_directory_number (Optional[List[str]]):

    """

    mobile_subscriber_directory_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "mobileSubscriberDirectoryNumber"}
    )


@dataclass(kw_only=True)
class GroupCallCapacityManagementGetAvailableUserListResponse(OCIDataResponse):
    """Response to the GroupCallCapacityManagementGetAvailableUserListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupCallCapacityManagementGetInstanceListResponse(OCIDataResponse):
    """Response to the GroupCallCapacityManagementGetInstanceListRequest.
        Contains a table with column headings: \"Name\", \"Is Default\", \"Maximum Calls\", \"Maximum Incoming Calls\", \"Maximum Outgoing Calls\".

    Attributes:

        call_capacity_group_table (OCITable):

    """

    call_capacity_group_table: OCITable = field(
        metadata={"alias": "callCapacityGroupTable"}
    )


@dataclass(kw_only=True)
class GroupCallCapacityManagementGetInstanceResponse(OCIDataResponse):
    """Response to the GroupCallCapacityManagementGetInstanceRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        name (str):

        max_active_calls_allowed (int):

        max_incoming_active_calls_allowed (Optional[int]):

        max_outgoing_active_calls_allowed (Optional[int]):

        default_group_for_new_users (bool):

        user_table (OCITable):

    """

    name: str = field(metadata={"alias": "name"})

    max_active_calls_allowed: int = field(metadata={"alias": "maxActiveCallsAllowed"})

    max_incoming_active_calls_allowed: Optional[int] = field(
        default=None, metadata={"alias": "maxIncomingActiveCallsAllowed"}
    )

    max_outgoing_active_calls_allowed: Optional[int] = field(
        default=None, metadata={"alias": "maxOutgoingActiveCallsAllowed"}
    )

    default_group_for_new_users: bool = field(
        metadata={"alias": "defaultGroupForNewUsers"}
    )

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupCallCenterAgentThresholdDefaultProfileGetResponse(OCIDataResponse):
    """Response to the GroupCallCenterAgentThresholdDefaultProfileGetRequest.
        The agent table contains the agents assigned to the profile and
        has column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\";

    Attributes:

        profile_name (str):

        profile_description (Optional[str]):

        threshold_current_call_state_idle_time_yellow (Optional[int]):

        threshold_current_call_state_idle_time_red (Optional[int]):

        threshold_current_call_state_on_call_time_yellow (Optional[int]):

        threshold_current_call_state_on_call_time_red (Optional[int]):

        threshold_current_agent_state_unavailable_time_yellow (Optional[int]):

        threshold_current_agent_state_unavailable_time_red (Optional[int]):

        threshold_average_busy_in_time_yellow (Optional[int]):

        threshold_average_busy_in_time_red (Optional[int]):

        threshold_average_busy_out_time_yellow (Optional[int]):

        threshold_average_busy_out_time_red (Optional[int]):

        threshold_average_wrap_up_time_yellow (Optional[int]):

        threshold_average_wrap_up_time_red (Optional[int]):

        enable_notification_email (bool):

        notification_email_address (Optional[List[str]]):

        agent_table (Optional[OCITable]):

    """

    profile_name: str = field(metadata={"alias": "profileName"})

    profile_description: Optional[str] = field(
        default=None, metadata={"alias": "profileDescription"}
    )

    threshold_current_call_state_idle_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeYellow"}
    )

    threshold_current_call_state_idle_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeRed"}
    )

    threshold_current_call_state_on_call_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeYellow"}
    )

    threshold_current_call_state_on_call_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeRed"}
    )

    threshold_current_agent_state_unavailable_time_yellow: Optional[int] = field(
        default=None,
        metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeYellow"},
    )

    threshold_current_agent_state_unavailable_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeRed"}
    )

    threshold_average_busy_in_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeYellow"}
    )

    threshold_average_busy_in_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeRed"}
    )

    threshold_average_busy_out_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeYellow"}
    )

    threshold_average_busy_out_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeRed"}
    )

    threshold_average_wrap_up_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeYellow"}
    )

    threshold_average_wrap_up_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeRed"}
    )

    enable_notification_email: bool = field(
        metadata={"alias": "enableNotificationEmail"}
    )

    notification_email_address: Optional[List[str]] = field(
        default=None, metadata={"alias": "notificationEmailAddress"}
    )

    agent_table: Optional[OCITable] = field(
        default=None, metadata={"alias": "agentTable"}
    )


@dataclass(kw_only=True)
class GroupCallCenterAgentThresholdProfileGetAvailableAgentListResponse(
    OCIDataResponse
):
    """Response to the GroupCallCenterAgentThresholdProfileGetAvailableAgentListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\", \"Agent Threshold Profile\";

    Attributes:

        agent_table (OCITable):

    """

    agent_table: OCITable = field(metadata={"alias": "agentTable"})


@dataclass(kw_only=True)
class GroupCallCenterAgentThresholdProfileGetAvailableAgentPagedSortedListResponse(
    OCIDataResponse
):
    """Response to the GroupCallCenterAgentThresholdProfileGetAvailableAgentPagedSortedListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\", \"Agent Threshold Profile\";

    Attributes:

        agent_table (OCITable):

    """

    agent_table: OCITable = field(metadata={"alias": "agentTable"})


@dataclass(kw_only=True)
class GroupCallCenterAgentThresholdProfileGetListResponse(OCIDataResponse):
    """Response to the GroupCallCenterAgentThresholdProfileGetListRequest.
        Contains a table with all the  Call Center Agent Threshold Profiles in the Group.
        The column headings are: \"Default\", \"Name\", \"Description\".

    Attributes:

        profiles_table (OCITable):

    """

    profiles_table: OCITable = field(metadata={"alias": "profilesTable"})


@dataclass(kw_only=True)
class GroupCallCenterAgentThresholdProfileGetPagedSortedResponse(OCIDataResponse):
    """Response to the GroupCallCenterAgentThresholdProfileGetPagedSortedRequest.
        The agentTable contains the agents assigned to the profile and has the column headings:
        \"User Id\", \"Group Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\";

    Attributes:

        profile_description (Optional[str]):

        threshold_current_call_state_idle_time_yellow (Optional[int]):

        threshold_current_call_state_idle_time_red (Optional[int]):

        threshold_current_call_state_on_call_time_yellow (Optional[int]):

        threshold_current_call_state_on_call_time_red (Optional[int]):

        threshold_current_agent_state_unavailable_time_yellow (Optional[int]):

        threshold_current_agent_state_unavailable_time_red (Optional[int]):

        threshold_average_busy_in_time_yellow (Optional[int]):

        threshold_average_busy_in_time_red (Optional[int]):

        threshold_average_busy_out_time_yellow (Optional[int]):

        threshold_average_busy_out_time_red (Optional[int]):

        threshold_average_wrap_up_time_yellow (Optional[int]):

        threshold_average_wrap_up_time_red (Optional[int]):

        enable_notification_email (bool):

        notification_email_address (Optional[List[str]]):

        agent_table (OCITable):

    """

    profile_description: Optional[str] = field(
        default=None, metadata={"alias": "profileDescription"}
    )

    threshold_current_call_state_idle_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeYellow"}
    )

    threshold_current_call_state_idle_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeRed"}
    )

    threshold_current_call_state_on_call_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeYellow"}
    )

    threshold_current_call_state_on_call_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeRed"}
    )

    threshold_current_agent_state_unavailable_time_yellow: Optional[int] = field(
        default=None,
        metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeYellow"},
    )

    threshold_current_agent_state_unavailable_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeRed"}
    )

    threshold_average_busy_in_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeYellow"}
    )

    threshold_average_busy_in_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeRed"}
    )

    threshold_average_busy_out_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeYellow"}
    )

    threshold_average_busy_out_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeRed"}
    )

    threshold_average_wrap_up_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeYellow"}
    )

    threshold_average_wrap_up_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeRed"}
    )

    enable_notification_email: bool = field(
        metadata={"alias": "enableNotificationEmail"}
    )

    notification_email_address: Optional[List[str]] = field(
        default=None, metadata={"alias": "notificationEmailAddress"}
    )

    agent_table: OCITable = field(metadata={"alias": "agentTable"})


@dataclass(kw_only=True)
class GroupCallCenterAgentThresholdProfileGetResponse(OCIDataResponse):
    """Response to the GroupCallCenterAgentThresholdProfileGetRequest.
        The agentTable contains the agents assigned to the profile and has the column headings:
        \"User Id\", \"Group Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\";

    Attributes:

        profile_description (Optional[str]):

        threshold_current_call_state_idle_time_yellow (Optional[int]):

        threshold_current_call_state_idle_time_red (Optional[int]):

        threshold_current_call_state_on_call_time_yellow (Optional[int]):

        threshold_current_call_state_on_call_time_red (Optional[int]):

        threshold_current_agent_state_unavailable_time_yellow (Optional[int]):

        threshold_current_agent_state_unavailable_time_red (Optional[int]):

        threshold_average_busy_in_time_yellow (Optional[int]):

        threshold_average_busy_in_time_red (Optional[int]):

        threshold_average_busy_out_time_yellow (Optional[int]):

        threshold_average_busy_out_time_red (Optional[int]):

        threshold_average_wrap_up_time_yellow (Optional[int]):

        threshold_average_wrap_up_time_red (Optional[int]):

        enable_notification_email (bool):

        notification_email_address (Optional[List[str]]):

        agent_table (OCITable):

    """

    profile_description: Optional[str] = field(
        default=None, metadata={"alias": "profileDescription"}
    )

    threshold_current_call_state_idle_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeYellow"}
    )

    threshold_current_call_state_idle_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateIdleTimeRed"}
    )

    threshold_current_call_state_on_call_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeYellow"}
    )

    threshold_current_call_state_on_call_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallStateOnCallTimeRed"}
    )

    threshold_current_agent_state_unavailable_time_yellow: Optional[int] = field(
        default=None,
        metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeYellow"},
    )

    threshold_current_agent_state_unavailable_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentAgentStateUnavailableTimeRed"}
    )

    threshold_average_busy_in_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeYellow"}
    )

    threshold_average_busy_in_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyInTimeRed"}
    )

    threshold_average_busy_out_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeYellow"}
    )

    threshold_average_busy_out_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageBusyOutTimeRed"}
    )

    threshold_average_wrap_up_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeYellow"}
    )

    threshold_average_wrap_up_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageWrapUpTimeRed"}
    )

    enable_notification_email: bool = field(
        metadata={"alias": "enableNotificationEmail"}
    )

    notification_email_address: Optional[List[str]] = field(
        default=None, metadata={"alias": "notificationEmailAddress"}
    )

    agent_table: OCITable = field(metadata={"alias": "agentTable"})


@dataclass(kw_only=True)
class GroupCallCenterAgentUnavailableCodeGetListResponse(OCIDataResponse):
    """Response to the GroupCallCenterAgentUnavailableCodeGetListRequest.
        Contains a table with column headings: \"Is Active\", \"Code\", \"Description\".

    Attributes:

        unavailable_codes_table (OCITable):

    """

    unavailable_codes_table: OCITable = field(
        metadata={"alias": "unavailableCodesTable"}
    )


@dataclass(kw_only=True)
class GroupCallCenterAgentUnavailableCodeGetResponse(OCIDataResponse):
    """Response to the GroupCallCenterAgentUnavailableCodeGetRequest

    Attributes:

        is_active (bool):

        description (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class GroupCallCenterAgentUnavailableCodeSettingsGetResponse17sp4(OCIDataResponse):
    """Response to GroupCallCenterAgentUnavailableCodeSettingsGetRequest17sp4.

    Attributes:

        enable_agent_unavailable_codes (bool):

        default_agent_unavailable_code_on_dnd (Optional[str]):

        default_agent_unavailable_code_on_personal_calls (Optional[str]):

        default_agent_unavailable_code_on_consecutive_bounces (Optional[str]):

        default_agent_unavailable_code_on_not_reachable (Optional[str]):

        force_use_of_agent_unavailable_codes (bool):

        default_agent_unavailable_code (Optional[str]):

    """

    enable_agent_unavailable_codes: bool = field(
        metadata={"alias": "enableAgentUnavailableCodes"}
    )

    default_agent_unavailable_code_on_dnd: Optional[str] = field(
        default=None, metadata={"alias": "defaultAgentUnavailableCodeOnDND"}
    )

    default_agent_unavailable_code_on_personal_calls: Optional[str] = field(
        default=None, metadata={"alias": "defaultAgentUnavailableCodeOnPersonalCalls"}
    )

    default_agent_unavailable_code_on_consecutive_bounces: Optional[str] = field(
        default=None,
        metadata={"alias": "defaultAgentUnavailableCodeOnConsecutiveBounces"},
    )

    default_agent_unavailable_code_on_not_reachable: Optional[str] = field(
        default=None, metadata={"alias": "defaultAgentUnavailableCodeOnNotReachable"}
    )

    force_use_of_agent_unavailable_codes: bool = field(
        metadata={"alias": "forceUseOfAgentUnavailableCodes"}
    )

    default_agent_unavailable_code: Optional[str] = field(
        default=None, metadata={"alias": "defaultAgentUnavailableCode"}
    )


@dataclass(kw_only=True)
class GroupCallCenterBouncedCallGetResponse17(OCIDataResponse):
    """Response to the GroupCallCenterBouncedCallGetRequest17.

        The following elements are only used in AS data mode and not returned in XS data mode:
          enableTransfer
          transferPhoneNumber
          bounceCallWhenAgentUnavailable
          alertCallCenterCallOnHold
          alertCallCenterCallOnHoldSeconds
          bounceCallCenterCallOnHold
          bounceCallCenterCallOnHoldSeconds

    Attributes:

        is_active (bool):

        number_of_rings_before_bouncing_call (int):

        enable_transfer (Optional[bool]):

        transfer_phone_number (Optional[str]):

        bounce_call_when_agent_unavailable (Optional[bool]):

        alert_call_center_call_on_hold (Optional[bool]):

        alert_call_center_call_on_hold_seconds (Optional[int]):

        bounce_call_center_call_on_hold (Optional[bool]):

        bounce_call_center_call_on_hold_seconds (Optional[int]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    number_of_rings_before_bouncing_call: int = field(
        metadata={"alias": "numberOfRingsBeforeBouncingCall"}
    )

    enable_transfer: Optional[bool] = field(
        default=None, metadata={"alias": "enableTransfer"}
    )

    transfer_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    bounce_call_when_agent_unavailable: Optional[bool] = field(
        default=None, metadata={"alias": "bounceCallWhenAgentUnavailable"}
    )

    alert_call_center_call_on_hold: Optional[bool] = field(
        default=None, metadata={"alias": "alertCallCenterCallOnHold"}
    )

    alert_call_center_call_on_hold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "alertCallCenterCallOnHoldSeconds"}
    )

    bounce_call_center_call_on_hold: Optional[bool] = field(
        default=None, metadata={"alias": "bounceCallCenterCallOnHold"}
    )

    bounce_call_center_call_on_hold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "bounceCallCenterCallOnHoldSeconds"}
    )


@dataclass(kw_only=True)
class GroupCallCenterCallDispositionCodeGetListResponse(OCIDataResponse):
    """Response to the GroupCallCenterCallDispositionCodeGetListRequest.
        Contains a table with column headings: \"Is Active\", \"Code\", \"Description\".

    Attributes:

        disposition_codes_table (OCITable):

    """

    disposition_codes_table: OCITable = field(
        metadata={"alias": "dispositionCodesTable"}
    )


@dataclass(kw_only=True)
class GroupCallCenterCallDispositionCodeGetResponse(OCIDataResponse):
    """Response to the GroupCallCenterCallDispositionCodeGetRequest

    Attributes:

        is_active (bool):

        description (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class GroupCallCenterCallDispositionCodeGetUsageListResponse(OCIDataResponse):
    """Response to the GroupCallCenterCallDispositionCodeGetUsageListRequest.
        The Type column contains either \"Call Center\" or \"Route Point\".
        Contains a table with column headings: \"Id\", \"Name\" and \"Type\".

    Attributes:

        call_center_table (OCITable):

    """

    call_center_table: OCITable = field(metadata={"alias": "callCenterTable"})


@dataclass(kw_only=True)
class GroupCallCenterComfortMessageBypassGetResponse20(OCIDataResponse):
    """Response to the GroupCallCenterComfortMessageBypassGetRequest20.

    Attributes:

        is_active (bool):

        call_waiting_age_threshold_seconds (int):

        play_announcement_after_ringing (bool):

        ring_time_before_playing_announcement_seconds (int):

        audio_message_selection (str):

        audio_url_list (Optional[CallCenterAnnouncementURLList]):

        audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        video_message_selection (str):

        video_url_list (Optional[CallCenterAnnouncementURLList]):

        video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    call_waiting_age_threshold_seconds: int = field(
        metadata={"alias": "callWaitingAgeThresholdSeconds"}
    )

    play_announcement_after_ringing: bool = field(
        metadata={"alias": "playAnnouncementAfterRinging"}
    )

    ring_time_before_playing_announcement_seconds: int = field(
        metadata={"alias": "ringTimeBeforePlayingAnnouncementSeconds"}
    )

    audio_message_selection: str = field(metadata={"alias": "audioMessageSelection"})

    audio_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: str = field(metadata={"alias": "videoMessageSelection"})

    video_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )


@dataclass(kw_only=True)
class GroupCallCenterCurrentAndPastAgentGetListResponse(OCIDataResponse):
    """Response to the GroupCallCenterCurrentAndPastAgentGetListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        agent_user_table (OCITable):

        deleted_agent_user_table (OCITable):

    """

    agent_user_table: OCITable = field(metadata={"alias": "agentUserTable"})

    deleted_agent_user_table: OCITable = field(
        metadata={"alias": "deletedAgentUserTable"}
    )


@dataclass(kw_only=True)
class GroupCallCenterCurrentAndPastCallCenterGetListResponse(OCIDataResponse):
    """Response to the GroupCallCenterCurrentAndPastCallCenterGetListRequest.

    Attributes:

        service_user_id (Optional[List[str]]):

        deleted_service_user_id (Optional[List[str]]):

    """

    service_user_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "serviceUserId"}
    )

    deleted_service_user_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "deletedServiceUserId"}
    )


@dataclass(kw_only=True)
class GroupCallCenterCurrentAndPastDNISGetListResponse(OCIDataResponse):
    """Response to the GroupCallCenterCurrentAndPastDNISGetListRequest.

    Attributes:

        name (Optional[List[str]]):

        deleted_name (Optional[List[str]]):

    """

    name: Optional[List[str]] = field(default=None, metadata={"alias": "name"})

    deleted_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "deletedName"}
    )


@dataclass(kw_only=True)
class GroupCallCenterDistinctiveRingingGetResponse(OCIDataResponse):
    """Response to the GroupCallCenterDistinctiveRingingGetRequest.

        The following element is only used in AS data mode and not returned in XS data mode:
          distinctiveRingingForceDeliveryRingPattern

    Attributes:

        distinctive_ringing_call_center_calls (bool):

        distinctive_ringing_ring_pattern_for_call_center (str):

        distinctive_ringing_force_delivery_ring_pattern (Optional[str]):

    """

    distinctive_ringing_call_center_calls: bool = field(
        metadata={"alias": "distinctiveRingingCallCenterCalls"}
    )

    distinctive_ringing_ring_pattern_for_call_center: str = field(
        metadata={"alias": "distinctiveRingingRingPatternForCallCenter"}
    )

    distinctive_ringing_force_delivery_ring_pattern: Optional[str] = field(
        default=None, metadata={"alias": "distinctiveRingingForceDeliveryRingPattern"}
    )


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingBrandingGetResponse(OCIDataResponse):
    """Response to the GroupCallCenterEnhancedReportingBrandingGetRequest.

    Attributes:

        branding_choice (str):

        branding_file_description (Optional[str]):

    """

    branding_choice: str = field(metadata={"alias": "brandingChoice"})

    branding_file_description: Optional[str] = field(
        default=None, metadata={"alias": "brandingFileDescription"}
    )


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingGetAvailableReportTemplateListResponse(
    OCIDataResponse
):
    """Response to GroupCallCenterEnhancedReportingGetAvailableReportTemplateListRequest.
        Contains a table with column headings: \"Name\", \"Description\" and \"Level\", \"Is Agent Required\",
        \"Is Call Center Required\", \"Is Call Center Dnis Required\",\"Is Real Time Report\", \"Is Sampling Period Required\",
        \"Call Completion Threshold Parameter\", \"Short Duration Threshold Parameter\",
        \"Service Level Threshold Parameter\", \"Service Level Inclusions Parameter\", \"Service Level Objective Threshold Parameter\",
        \"Abandoned Call Threshold Parameter\", \"Service Level Threshold Parameter Number\",
        and \"Abandoned Call Threshold Parameter Number\".
        The possible values for \"Level\" are \"System\" and \"Group\".
        The possible values for \"Is Agent Required\", \"Is Call Center Required\", \"Is Call Center Dnis Required\",
        \"Is Real Time Report\" and \"Is Sampling Period Required\" are \"true\" and \"false\".
        The possible values for \"Call Completion Threshold Parameter\", \"Short Duration Threshold Parameter\",
        \"Service Level Threshold Parameter\", \"Service Level Inclusions Parameter\",\"Service Level Objective Threshold Parameter\"
        and \"Abandoned Call Threshold Parameter\" are \"Required\", \"Hidden\" and \"Does Not Apply\".

    Attributes:

        report_template_table (OCITable):

    """

    report_template_table: OCITable = field(metadata={"alias": "reportTemplateTable"})


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingGetResponse19(OCIDataResponse):
    """Response to GroupCallCenterEnhancedReportingGetRequest19.

    Attributes:

        reporting_server (str):

    """

    reporting_server: str = field(metadata={"alias": "reportingServer"})


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingReportTemplateGetListResponse(OCIDataResponse):
    """Response to GroupCallCenterEnhancedReportingReportTemplateGetListRequest.
        Contains a table with column headings: \"Name\", \"Description\", \"Type\" and \"Enabled\"

    Attributes:

        report_template_table (OCITable):

    """

    report_template_table: OCITable = field(metadata={"alias": "reportTemplateTable"})


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingReportTemplateGetResponse(OCIDataResponse):
    """Response to GroupCallCenterEnhancedReportingReportTemplateGetRequest.

    Attributes:

        description (Optional[str]):

        data_template (str):

        filter_number (Optional[int]):

        xslt_template_description (str):

        scope (str):

        is_enabled (bool):

        is_realtime_report (Optional[bool]):

        call_completion_threshold_param (Optional[str]):

        short_duration_threshold_param (Optional[str]):

        service_level_threshold_param (Optional[str]):

        service_level_inclusions_param (Optional[str]):

        service_level_objective_threshold_param (Optional[str]):

        abandoned_call_threshold_param (Optional[str]):

        service_level_threshold_param_number (Optional[int]):

        abandoned_call_threshold_param_number (Optional[int]):

        filter_value (Optional[List[str]]):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    data_template: str = field(metadata={"alias": "dataTemplate"})

    filter_number: Optional[int] = field(
        default=None, metadata={"alias": "filterNumber"}
    )

    xslt_template_description: str = field(
        metadata={"alias": "xsltTemplateDescription"}
    )

    scope: str = field(metadata={"alias": "scope"})

    is_enabled: bool = field(metadata={"alias": "isEnabled"})

    is_realtime_report: Optional[bool] = field(
        default=None, metadata={"alias": "isRealtimeReport"}
    )

    call_completion_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "callCompletionThresholdParam"}
    )

    short_duration_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "shortDurationThresholdParam"}
    )

    service_level_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelThresholdParam"}
    )

    service_level_inclusions_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelInclusionsParam"}
    )

    service_level_objective_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelObjectiveThresholdParam"}
    )

    abandoned_call_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "abandonedCallThresholdParam"}
    )

    service_level_threshold_param_number: Optional[int] = field(
        default=None, metadata={"alias": "serviceLevelThresholdParamNumber"}
    )

    abandoned_call_threshold_param_number: Optional[int] = field(
        default=None, metadata={"alias": "abandonedCallThresholdParamNumber"}
    )

    filter_value: Optional[List[str]] = field(
        default=None, metadata={"alias": "filterValue"}
    )


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingScheduledReportGetActiveListResponse(
    OCIDataResponse
):
    """Response to GroupCallCenterEnhancedReportingScheduledReportGetActiveListRequest
        Contains a table with column headings : \"Schedule Name\", \"Description\", \"Created By\",
        \"Is Supervisor Report\", \"Report Template Name\", \"Report Template Level\" and \"Recurring\".
        The \"Created By\" can be either \"Administrator\" or user id if created by supervisor.
        The possible values for \"Recurring\" are \"None\", \"Daily\", \"Weekly\", \"Monthly\" and \"Yearly\".
        The possible values for \"Report Template Level\" are \"System\" and \"Group\".

    Attributes:

        scheduled_report_table (OCITable):

    """

    scheduled_report_table: OCITable = field(metadata={"alias": "scheduledReportTable"})


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingScheduledReportGetCompletedListResponse(
    OCIDataResponse
):
    """Response to GroupCallCenterEnhancedReportingScheduledReportGetCompletedListRequest
        Contains a table with column headings : \"Schedule Name\", \"Description\", \"Created By\",
        \"Is Supervisor Report\", \"Report Template Name\", \"Report Template Level\" and \"Recurring\".
        The \"Created By\" can be either \"Administrator\" or user id if created by supervisor.
        The possible values for \"Recurring\" are \"None\", \"Daily\", \"Weekly\", \"Monthly\" and \"Yearly\".
        The possible values for \"Report Template Level\" are \"System\" and \"Group\".

    Attributes:

        scheduled_report_table (OCITable):

    """

    scheduled_report_table: OCITable = field(metadata={"alias": "scheduledReportTable"})


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingScheduledReportGetListResponse(OCIDataResponse):
    """Response to GroupCallCenterEnhancedReportingScheduledReportGetListRequest.
        Contains a table with column headings : \"Schedule Name\", \"Description\", \"Created By\",
        \"Is Supervisor Report\", \"Status\", \"Report Template Name\", \"Report Template Level\" and \"Recurring\".
        The \"Created By\" can be either \"Administrator\" or user id if created by supervisor.
        The possible values for \"Status\" are \"Active\", and \"Completed\".
        The possible values for \"Recurring\" are \"None\", \"Daily\", \"Weekly\", \"Monthly\" and \"Yearly\".
        The possible values for \"Report Template Level\" are \"System\" and \"Group\".

    Attributes:

        scheduled_report_table (OCITable):

    """

    scheduled_report_table: OCITable = field(metadata={"alias": "scheduledReportTable"})


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingScheduledReportGetReportTemplateUsageListResponse(
    OCIDataResponse
):
    """Response to GroupCallCenterEnhancedReportingScheduledReportGetReportTemplateUsageListRequest.
        Contains a table with column headings: \"Schedule Name\", \"Created By\", \"Created By Supervisor\",
        and \"Is Active\".
        The \"Created By\" can be either \"Administrator\" or user id if created by supervisor.

    Attributes:

        schedule_report_table (OCITable):

    """

    schedule_report_table: OCITable = field(metadata={"alias": "scheduleReportTable"})


@dataclass(kw_only=True)
class GroupCallCenterEnhancedReportingScheduledReportGetResponse(OCIDataResponse):
    """Response to GroupCallCenterEnhancedReportingScheduledReportGetRequest.

    Attributes:

        description (Optional[str]):

        report_template (CallCenterReportTemplateKey):

        schedule (CallCenterReportSchedule):

        sampling_period (Optional[str]):

        start_day_of_week (Optional[str]):

        report_time_zone (str):

        report_date_format (str):

        report_time_format (str):

        report_interval (CallCenterReportInterval):

        report_format (str):

        agent (Optional[CallCenterScheduledReportAgentSelectionAdminRead]):

        call_center (Optional[CallCenterScheduledReportCallCenterSelectionRead]):

        dnis (Optional[CallCenterScheduledReportDNISSelectionRead]):

        call_completion_threshold_seconds (Optional[int]):

        short_duration_threshold_seconds (Optional[int]):

        service_level_threshold_seconds (Optional[List[int]]):

        service_level_inclusions (Optional[CallCenterScheduledReportServiceLevelInclusions]):

        service_level_objective_percentage (Optional[int]):

        abandoned_call_threshold_seconds (Optional[List[int]]):

        email_address (List[str]):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    report_template: CallCenterReportTemplateKey = field(
        metadata={"alias": "reportTemplate"}
    )

    schedule: CallCenterReportSchedule = field(metadata={"alias": "schedule"})

    sampling_period: Optional[str] = field(
        default=None, metadata={"alias": "samplingPeriod"}
    )

    start_day_of_week: Optional[str] = field(
        default=None, metadata={"alias": "startDayOfWeek"}
    )

    report_time_zone: str = field(metadata={"alias": "reportTimeZone"})

    report_date_format: str = field(metadata={"alias": "reportDateFormat"})

    report_time_format: str = field(metadata={"alias": "reportTimeFormat"})

    report_interval: CallCenterReportInterval = field(
        metadata={"alias": "reportInterval"}
    )

    report_format: str = field(metadata={"alias": "reportFormat"})

    agent: Optional[CallCenterScheduledReportAgentSelectionAdminRead] = field(
        default=None, metadata={"alias": "agent"}
    )

    call_center: Optional[CallCenterScheduledReportCallCenterSelectionRead] = field(
        default=None, metadata={"alias": "callCenter"}
    )

    dnis: Optional[CallCenterScheduledReportDNISSelectionRead] = field(
        default=None, metadata={"alias": "dnis"}
    )

    call_completion_threshold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "callCompletionThresholdSeconds"}
    )

    short_duration_threshold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "shortDurationThresholdSeconds"}
    )

    service_level_threshold_seconds: Optional[List[int]] = field(
        default=None, metadata={"alias": "serviceLevelThresholdSeconds"}
    )

    service_level_inclusions: Optional[
        CallCenterScheduledReportServiceLevelInclusions
    ] = field(default=None, metadata={"alias": "serviceLevelInclusions"})

    service_level_objective_percentage: Optional[int] = field(
        default=None, metadata={"alias": "serviceLevelObjectivePercentage"}
    )

    abandoned_call_threshold_seconds: Optional[List[int]] = field(
        default=None, metadata={"alias": "abandonedCallThresholdSeconds"}
    )

    email_address: List[str] = field(metadata={"alias": "emailAddress"})


@dataclass(kw_only=True)
class GroupCallCenterForcedForwardingGetResponse20(OCIDataResponse):
    """Response to the GroupCallCenterForcedForwardingGetRequest20.

    Attributes:

        is_active (bool):

        forward_to_phone_number (Optional[str]):

        allow_enable_via_fac (bool):

        play_announcement_before_forwarding (bool):

        audio_message_selection (str):

        audio_url_list (Optional[CallCenterAnnouncementURLList]):

        audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        video_message_selection (str):

        video_url_list (Optional[CallCenterAnnouncementURLList]):

        video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    allow_enable_via_fac: bool = field(metadata={"alias": "allowEnableViaFAC"})

    play_announcement_before_forwarding: bool = field(
        metadata={"alias": "playAnnouncementBeforeForwarding"}
    )

    audio_message_selection: str = field(metadata={"alias": "audioMessageSelection"})

    audio_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: str = field(metadata={"alias": "videoMessageSelection"})

    video_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )


@dataclass(kw_only=True)
class GroupCallCenterGetAgentListResponse(OCIDataResponse):
    """Response to the GroupCallCenterGetAgentListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\", \"Weight\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\", \"Skill Level\".

        The following column is only returned in AS data mode:
          \"Skill Level\"

    Attributes:

        agent_table (OCITable):

    """

    agent_table: OCITable = field(metadata={"alias": "agentTable"})


@dataclass(kw_only=True)
class GroupCallCenterGetAgentPagedSortedListResponse(OCIDataResponse):
    """Response to the GroupCallCenterGetAgentPagedSortedListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\", \"Weight\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\", \"Skill Level\".

    Attributes:

        agent_table (OCITable):

    """

    agent_table: OCITable = field(metadata={"alias": "agentTable"})


@dataclass(kw_only=True)
class GroupCallCenterGetAnnouncementResponse22(OCIDataResponse):
    """Response to the GroupCallCenterGetAnnouncementRequest22.

    Attributes:

        play_entrance_message (bool):

        mandatory_entrance_message (bool):

        entrance_audio_message_selection (str):

        entrance_message_audio_url_list (Optional[CallCenterAnnouncementURLList]):

        entrance_message_audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        entrance_video_message_selection (Optional[str]):

        entrance_message_video_url_list (Optional[CallCenterAnnouncementURLList]):

        entrance_message_video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        play_periodic_comfort_message (bool):

        time_between_comfort_messages_seconds (int):

        periodic_comfort_audio_message_selection (str):

        periodic_comfort_message_audio_url_list (Optional[CallCenterAnnouncementURLList]):

        periodic_comfort_message_audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        periodic_comfort_video_message_selection (Optional[str]):

        periodic_comfort_message_video_url_list (Optional[CallCenterAnnouncementURLList]):

        periodic_comfort_message_video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        enable_media_on_hold_for_queued_calls (bool):

        media_on_hold_source (CallCenterMediaOnHoldSourceRead22):

        media_on_hold_use_alternate_source_for_internal_calls (Optional[bool]):

        media_on_hold_internal_source (Optional[CallCenterMediaOnHoldSourceRead22]):

        play_whisper_message (Optional[bool]):

        whisper_audio_message_selection (Optional[str]):

        whisper_message_audio_url_list (Optional[CallCenterAnnouncementURLList]):

        whisper_message_audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        whisper_video_message_selection (Optional[str]):

        whisper_message_video_url_list (Optional[CallCenterAnnouncementURLList]):

        whisper_message_video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        estimated_wait_message_options_read (EstimatedWaitMessageOptionsRead17sp4):

    """

    play_entrance_message: bool = field(metadata={"alias": "playEntranceMessage"})

    mandatory_entrance_message: bool = field(
        metadata={"alias": "mandatoryEntranceMessage"}
    )

    entrance_audio_message_selection: str = field(
        metadata={"alias": "entranceAudioMessageSelection"}
    )

    entrance_message_audio_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "entranceMessageAudioUrlList"}
    )

    entrance_message_audio_file_list: Optional[CallCenterAnnouncementFileListRead20] = (
        field(default=None, metadata={"alias": "entranceMessageAudioFileList"})
    )

    entrance_video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "entranceVideoMessageSelection"}
    )

    entrance_message_video_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "entranceMessageVideoUrlList"}
    )

    entrance_message_video_file_list: Optional[CallCenterAnnouncementFileListRead20] = (
        field(default=None, metadata={"alias": "entranceMessageVideoFileList"})
    )

    play_periodic_comfort_message: bool = field(
        metadata={"alias": "playPeriodicComfortMessage"}
    )

    time_between_comfort_messages_seconds: int = field(
        metadata={"alias": "timeBetweenComfortMessagesSeconds"}
    )

    periodic_comfort_audio_message_selection: str = field(
        metadata={"alias": "periodicComfortAudioMessageSelection"}
    )

    periodic_comfort_message_audio_url_list: Optional[CallCenterAnnouncementURLList] = (
        field(default=None, metadata={"alias": "periodicComfortMessageAudioUrlList"})
    )

    periodic_comfort_message_audio_file_list: Optional[
        CallCenterAnnouncementFileListRead20
    ] = field(default=None, metadata={"alias": "periodicComfortMessageAudioFileList"})

    periodic_comfort_video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "periodicComfortVideoMessageSelection"}
    )

    periodic_comfort_message_video_url_list: Optional[CallCenterAnnouncementURLList] = (
        field(default=None, metadata={"alias": "periodicComfortMessageVideoUrlList"})
    )

    periodic_comfort_message_video_file_list: Optional[
        CallCenterAnnouncementFileListRead20
    ] = field(default=None, metadata={"alias": "periodicComfortMessageVideoFileList"})

    enable_media_on_hold_for_queued_calls: bool = field(
        metadata={"alias": "enableMediaOnHoldForQueuedCalls"}
    )

    media_on_hold_source: CallCenterMediaOnHoldSourceRead22 = field(
        metadata={"alias": "mediaOnHoldSource"}
    )

    media_on_hold_use_alternate_source_for_internal_calls: Optional[bool] = field(
        default=None,
        metadata={"alias": "mediaOnHoldUseAlternateSourceForInternalCalls"},
    )

    media_on_hold_internal_source: Optional[CallCenterMediaOnHoldSourceRead22] = field(
        default=None, metadata={"alias": "mediaOnHoldInternalSource"}
    )

    play_whisper_message: Optional[bool] = field(
        default=None, metadata={"alias": "playWhisperMessage"}
    )

    whisper_audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "whisperAudioMessageSelection"}
    )

    whisper_message_audio_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "whisperMessageAudioUrlList"}
    )

    whisper_message_audio_file_list: Optional[CallCenterAnnouncementFileListRead20] = (
        field(default=None, metadata={"alias": "whisperMessageAudioFileList"})
    )

    whisper_video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "whisperVideoMessageSelection"}
    )

    whisper_message_video_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "whisperMessageVideoUrlList"}
    )

    whisper_message_video_file_list: Optional[CallCenterAnnouncementFileListRead20] = (
        field(default=None, metadata={"alias": "whisperMessageVideoFileList"})
    )

    estimated_wait_message_options_read: EstimatedWaitMessageOptionsRead17sp4 = field(
        metadata={"alias": "estimatedWaitMessageOptionsRead"}
    )


@dataclass(kw_only=True)
class GroupCallCenterGetAvailableAgentListResponse(OCIDataResponse):
    """Response to the GroupCallCenterGetAvailableAgentListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupCallCenterGetAvailableAgentPagedSortedListResponse(OCIDataResponse):
    """Response to the GroupCallCenterGetAvailableAgentPagedSortedListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupCallCenterGetAvailableSupervisorListResponse(OCIDataResponse):
    """Response to the GroupCallCenterGetAvailableSupervisorListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupCallCenterGetDNISAgentListResponse(OCIDataResponse):
    """Response to the GroupCallCenterGetDNISAgentListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        agent_table (OCITable):

    """

    agent_table: OCITable = field(metadata={"alias": "agentTable"})


@dataclass(kw_only=True)
class GroupCallCenterGetDNISAnnouncementResponse22(OCIDataResponse):
    """Response to the GroupCallCenterGetDNISAnnouncementRequest22.

    Attributes:

        play_entrance_message (bool):

        mandatory_entrance_message (bool):

        entrance_audio_message_selection (str):

        entrance_message_audio_url_list (Optional[CallCenterAnnouncementURLList]):

        entrance_message_audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        entrance_video_message_selection (Optional[str]):

        entrance_message_video_url_list (Optional[CallCenterAnnouncementURLList]):

        entrance_message_video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        play_periodic_comfort_message (bool):

        time_between_comfort_messages_seconds (int):

        periodic_comfort_audio_message_selection (str):

        periodic_comfort_message_audio_url_list (Optional[CallCenterAnnouncementURLList]):

        periodic_comfort_message_audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        periodic_comfort_video_message_selection (Optional[str]):

        periodic_comfort_message_video_url_list (Optional[CallCenterAnnouncementURLList]):

        periodic_comfort_message_video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        enable_media_on_hold_for_queued_calls (bool):

        media_on_hold_source (CallCenterMediaOnHoldSourceRead22):

        play_whisper_message (bool):

        whisper_audio_message_selection (str):

        whisper_message_audio_url_list (Optional[CallCenterAnnouncementURLList]):

        whisper_message_audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        whisper_video_message_selection (Optional[str]):

        whisper_message_video_url_list (Optional[CallCenterAnnouncementURLList]):

        whisper_message_video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        estimated_wait_message_options_read (EstimatedWaitMessageOptionsRead17sp4):

    """

    play_entrance_message: bool = field(metadata={"alias": "playEntranceMessage"})

    mandatory_entrance_message: bool = field(
        metadata={"alias": "mandatoryEntranceMessage"}
    )

    entrance_audio_message_selection: str = field(
        metadata={"alias": "entranceAudioMessageSelection"}
    )

    entrance_message_audio_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "entranceMessageAudioUrlList"}
    )

    entrance_message_audio_file_list: Optional[CallCenterAnnouncementFileListRead20] = (
        field(default=None, metadata={"alias": "entranceMessageAudioFileList"})
    )

    entrance_video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "entranceVideoMessageSelection"}
    )

    entrance_message_video_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "entranceMessageVideoUrlList"}
    )

    entrance_message_video_file_list: Optional[CallCenterAnnouncementFileListRead20] = (
        field(default=None, metadata={"alias": "entranceMessageVideoFileList"})
    )

    play_periodic_comfort_message: bool = field(
        metadata={"alias": "playPeriodicComfortMessage"}
    )

    time_between_comfort_messages_seconds: int = field(
        metadata={"alias": "timeBetweenComfortMessagesSeconds"}
    )

    periodic_comfort_audio_message_selection: str = field(
        metadata={"alias": "periodicComfortAudioMessageSelection"}
    )

    periodic_comfort_message_audio_url_list: Optional[CallCenterAnnouncementURLList] = (
        field(default=None, metadata={"alias": "periodicComfortMessageAudioUrlList"})
    )

    periodic_comfort_message_audio_file_list: Optional[
        CallCenterAnnouncementFileListRead20
    ] = field(default=None, metadata={"alias": "periodicComfortMessageAudioFileList"})

    periodic_comfort_video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "periodicComfortVideoMessageSelection"}
    )

    periodic_comfort_message_video_url_list: Optional[CallCenterAnnouncementURLList] = (
        field(default=None, metadata={"alias": "periodicComfortMessageVideoUrlList"})
    )

    periodic_comfort_message_video_file_list: Optional[
        CallCenterAnnouncementFileListRead20
    ] = field(default=None, metadata={"alias": "periodicComfortMessageVideoFileList"})

    enable_media_on_hold_for_queued_calls: bool = field(
        metadata={"alias": "enableMediaOnHoldForQueuedCalls"}
    )

    media_on_hold_source: CallCenterMediaOnHoldSourceRead22 = field(
        metadata={"alias": "mediaOnHoldSource"}
    )

    play_whisper_message: bool = field(metadata={"alias": "playWhisperMessage"})

    whisper_audio_message_selection: str = field(
        metadata={"alias": "whisperAudioMessageSelection"}
    )

    whisper_message_audio_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "whisperMessageAudioUrlList"}
    )

    whisper_message_audio_file_list: Optional[CallCenterAnnouncementFileListRead20] = (
        field(default=None, metadata={"alias": "whisperMessageAudioFileList"})
    )

    whisper_video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "whisperVideoMessageSelection"}
    )

    whisper_message_video_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "whisperMessageVideoUrlList"}
    )

    whisper_message_video_file_list: Optional[CallCenterAnnouncementFileListRead20] = (
        field(default=None, metadata={"alias": "whisperMessageVideoFileList"})
    )

    estimated_wait_message_options_read: EstimatedWaitMessageOptionsRead17sp4 = field(
        metadata={"alias": "estimatedWaitMessageOptionsRead"}
    )


@dataclass(kw_only=True)
class GroupCallCenterGetDNISListResponse(OCIDataResponse):
    """Response to the GroupCallCenterGetDNISListResponse.
        Contains a table with column headings: \"Name\", \"Phone Number\", \"Extension\", \"Priority\", \"Is Primary DNIS\".

    Attributes:

        display_dnis_number (bool):

        display_dnis_name (bool):

        promote_calls_from_priority1to0 (bool):

        promote_calls_from_priority2to1 (bool):

        promote_calls_from_priority3to2 (bool):

        promote_calls_from_priority1to0_seconds (int):

        promote_calls_from_priority2to1_seconds (int):

        promote_calls_from_priority3to2_seconds (int):

        dnis_table (OCITable):

    """

    display_dnis_number: bool = field(metadata={"alias": "displayDNISNumber"})

    display_dnis_name: bool = field(metadata={"alias": "displayDNISName"})

    promote_calls_from_priority1to0: bool = field(
        metadata={"alias": "promoteCallsFromPriority1to0"}
    )

    promote_calls_from_priority2to1: bool = field(
        metadata={"alias": "promoteCallsFromPriority2to1"}
    )

    promote_calls_from_priority3to2: bool = field(
        metadata={"alias": "promoteCallsFromPriority3to2"}
    )

    promote_calls_from_priority1to0_seconds: int = field(
        metadata={"alias": "promoteCallsFromPriority1to0Seconds"}
    )

    promote_calls_from_priority2to1_seconds: int = field(
        metadata={"alias": "promoteCallsFromPriority2to1Seconds"}
    )

    promote_calls_from_priority3to2_seconds: int = field(
        metadata={"alias": "promoteCallsFromPriority3to2Seconds"}
    )

    dnis_table: OCITable = field(metadata={"alias": "dnisTable"})


@dataclass(kw_only=True)
class GroupCallCenterGetDNISResponse(OCIDataResponse):
    """Response to the GroupCallCenterGetDNISResponse.

    Attributes:

        dnis_phone_number (Optional[str]):

        extension (Optional[str]):

        use_custom_clid_settings (bool):

        calling_line_id_phone_number (Optional[str]):

        calling_line_id_last_name (Optional[str]):

        calling_line_id_first_name (Optional[str]):

        use_custom_dnis_announcement_settings (bool):

        priority (str):

        allow_outgoing_acd_call (bool):

    """

    dnis_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "dnisPhoneNumber"}
    )

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})

    use_custom_clid_settings: bool = field(metadata={"alias": "useCustomCLIDSettings"})

    calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )

    calling_line_id_last_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdLastName"}
    )

    calling_line_id_first_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdFirstName"}
    )

    use_custom_dnis_announcement_settings: bool = field(
        metadata={"alias": "useCustomDnisAnnouncementSettings"}
    )

    priority: str = field(metadata={"alias": "priority"})

    allow_outgoing_acd_call: bool = field(metadata={"alias": "allowOutgoingACDCall"})


@dataclass(kw_only=True)
class GroupCallCenterGetDistinctiveRingingResponse(OCIDataResponse):
    """Response to the GroupCallCenterGetDistinctiveRingingRequest.

    Attributes:

        distinctive_ringing_call_center_calls (bool):

        distinctive_ringing_ring_pattern_for_call_center (str):

        distinctive_ringing_force_delivery_ring_pattern (Optional[str]):

    """

    distinctive_ringing_call_center_calls: bool = field(
        metadata={"alias": "distinctiveRingingCallCenterCalls"}
    )

    distinctive_ringing_ring_pattern_for_call_center: str = field(
        metadata={"alias": "distinctiveRingingRingPatternForCallCenter"}
    )

    distinctive_ringing_force_delivery_ring_pattern: Optional[str] = field(
        default=None, metadata={"alias": "distinctiveRingingForceDeliveryRingPattern"}
    )


@dataclass(kw_only=True)
class GroupCallCenterGetInstanceListResponse(OCIDataResponse):
    """Response to the GroupCallCenterGetInstanceListRequest.
        Contains a table with column headings:
        \"Service User Id\", \"Name\", \"Video\", \"Phone Number\", \"Extension\", \"Department\", \"Is Active\", \"Policy\", \"Type\".
        The column values for \"Video\" and \"Is Active\" can either be true, or false.
        The column values for \"Type\" can be \"Basic\", \"Standard\" or \"Premium\" in AS data mode and \"Basic\" in XS data mode.
        NOTE: prior to release 14, the policy column did not match the HuntPolicy enumerated type.

    Attributes:

        call_center_table (OCITable):

    """

    call_center_table: OCITable = field(metadata={"alias": "callCenterTable"})


@dataclass(kw_only=True)
class GroupCallCenterGetInstancePagedSortedListResponse(OCIDataResponse):
    """Response to the GroupCallCenterGetInstancePagedSortedListRequest.
        Contains a table with column headings:
        \"Service User Id\", \"Name\", \"Video\", \"Phone Number\", \"Extension\", \"Department\", \"Is Active\", \"Policy\", \"Type\".
        The column values for \"Video\" and \"Is Active\" can either be true, or false.
        The column values for \"Type\" can be \"Basic\", \"Standard\" or \"Premium\".
        NOTE: prior to release 14, the policy column did not match the HuntPolicy enumerated type.

    Attributes:

        call_center_table (OCITable):

    """

    call_center_table: OCITable = field(metadata={"alias": "callCenterTable"})


@dataclass(kw_only=True)
class GroupCallCenterGetInstanceQueueStatusResponse(OCIDataResponse):
    """Contains Call Center queue status and a table with column headings:
        \"User Id\", \"First Name\", \"Last Name\", \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        number_of_calls_queued_now (int):

        agents_currently_staffed (OCITable):

    """

    number_of_calls_queued_now: int = field(
        metadata={"alias": "numberOfCallsQueuedNow"}
    )

    agents_currently_staffed: OCITable = field(
        metadata={"alias": "agentsCurrentlyStaffed"}
    )


@dataclass(kw_only=True)
class GroupCallCenterGetInstanceResponse22(OCIDataResponse):
    """Response to GroupCallCenterGetInstanceRequest22.

        The following elements are only used in AS data mode and not returned in XS data mode:
          routingType
          enableReporting
          allowCallsToAgentsInWrapUp
          overrideAgentWrapUpTime
          wrapUpSeconds
          forceDeliveryOfCalls
          forceDeliveryWaitTimeSeconds
          enableAutomaticStateChangeForAgents
          agentStateAfterCall
          agentUnavailableCode
          callCenterQueueThresholdsIsActive
          networkClassOfService

    Attributes:

        service_instance_profile (ServiceInstanceReadProfile19sp1):

        type (str):

        routing_type (Optional[str]):

        policy (str):

        enable_video (bool):

        queue_length (int):

        enable_reporting (Optional[bool]):

        allow_caller_to_dial_escape_digit (bool):

        escape_digit (str):

        reset_call_statistics_upon_entry_in_queue (bool):

        allow_agent_logoff (bool):

        allow_call_waiting_for_agents (bool):

        allow_calls_to_agents_in_wrap_up (Optional[bool]):

        override_agent_wrap_up_time (Optional[bool]):

        wrap_up_seconds (Optional[int]):

        force_delivery_of_calls (Optional[bool]):

        force_delivery_wait_time_seconds (Optional[int]):

        enable_automatic_state_change_for_agents (Optional[bool]):

        agent_state_after_call (Optional[str]):

        agent_unavailable_code (Optional[str]):

        external_preferred_audio_codec (str):

        internal_preferred_audio_codec (str):

        play_ringing_when_offering_call (bool):

        call_center_queue_thresholds_is_active (Optional[bool]):

        network_class_of_service (Optional[str]):

    """

    service_instance_profile: ServiceInstanceReadProfile19sp1 = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    type: str = field(metadata={"alias": "type"})

    routing_type: Optional[str] = field(default=None, metadata={"alias": "routingType"})

    policy: str = field(metadata={"alias": "policy"})

    enable_video: bool = field(metadata={"alias": "enableVideo"})

    queue_length: int = field(metadata={"alias": "queueLength"})

    enable_reporting: Optional[bool] = field(
        default=None, metadata={"alias": "enableReporting"}
    )

    allow_caller_to_dial_escape_digit: bool = field(
        metadata={"alias": "allowCallerToDialEscapeDigit"}
    )

    escape_digit: str = field(metadata={"alias": "escapeDigit"})

    reset_call_statistics_upon_entry_in_queue: bool = field(
        metadata={"alias": "resetCallStatisticsUponEntryInQueue"}
    )

    allow_agent_logoff: bool = field(metadata={"alias": "allowAgentLogoff"})

    allow_call_waiting_for_agents: bool = field(
        metadata={"alias": "allowCallWaitingForAgents"}
    )

    allow_calls_to_agents_in_wrap_up: Optional[bool] = field(
        default=None, metadata={"alias": "allowCallsToAgentsInWrapUp"}
    )

    override_agent_wrap_up_time: Optional[bool] = field(
        default=None, metadata={"alias": "overrideAgentWrapUpTime"}
    )

    wrap_up_seconds: Optional[int] = field(
        default=None, metadata={"alias": "wrapUpSeconds"}
    )

    force_delivery_of_calls: Optional[bool] = field(
        default=None, metadata={"alias": "forceDeliveryOfCalls"}
    )

    force_delivery_wait_time_seconds: Optional[int] = field(
        default=None, metadata={"alias": "forceDeliveryWaitTimeSeconds"}
    )

    enable_automatic_state_change_for_agents: Optional[bool] = field(
        default=None, metadata={"alias": "enableAutomaticStateChangeForAgents"}
    )

    agent_state_after_call: Optional[str] = field(
        default=None, metadata={"alias": "agentStateAfterCall"}
    )

    agent_unavailable_code: Optional[str] = field(
        default=None, metadata={"alias": "agentUnavailableCode"}
    )

    external_preferred_audio_codec: str = field(
        metadata={"alias": "externalPreferredAudioCodec"}
    )

    internal_preferred_audio_codec: str = field(
        metadata={"alias": "internalPreferredAudioCodec"}
    )

    play_ringing_when_offering_call: bool = field(
        metadata={"alias": "playRingingWhenOfferingCall"}
    )

    call_center_queue_thresholds_is_active: Optional[bool] = field(
        default=None, metadata={"alias": "callCenterQueueThresholdsIsActive"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupCallCenterGetInstanceStatisticsReportingResponse17sp1(OCIDataResponse):
    """Response to GroupCallCenterGetInstanceStatisticsReportingRequest17sp1.
        Contains Call Center statistics reporting settings.

    Attributes:

        generate_daily_report (bool):

        collection_period_minutes (int):

        reporting_email_address1 (Optional[str]):

        reporting_email_address2 (Optional[str]):

        statistics_source (str):

    """

    generate_daily_report: bool = field(metadata={"alias": "generateDailyReport"})

    collection_period_minutes: int = field(
        metadata={"alias": "collectionPeriodMinutes"}
    )

    reporting_email_address1: Optional[str] = field(
        default=None, metadata={"alias": "reportingEmailAddress1"}
    )

    reporting_email_address2: Optional[str] = field(
        default=None, metadata={"alias": "reportingEmailAddress2"}
    )

    statistics_source: str = field(metadata={"alias": "statisticsSource"})


@dataclass(kw_only=True)
class GroupCallCenterGetInstanceStatisticsResponse14sp9(OCIDataResponse):
    """Contains Call Center statistics.

    Attributes:

        statistics_range (CallCenterStatisticsRange):

        queue_statistics (CallCenterQueueStatistics14sp9):

        agent_statistics (Optional[List[CallCenterAgentStatistics14sp9]]):

    """

    statistics_range: CallCenterStatisticsRange = field(
        metadata={"alias": "statisticsRange"}
    )

    queue_statistics: CallCenterQueueStatistics14sp9 = field(
        metadata={"alias": "queueStatistics"}
    )

    agent_statistics: Optional[List[CallCenterAgentStatistics14sp9]] = field(
        default=None, metadata={"alias": "agentStatistics"}
    )


@dataclass(kw_only=True)
class GroupCallCenterGetResponse23(OCIDataResponse):
    """Response to GroupCallCenterGetRequest23.

        The following elements are only used in AS data mode and not returned in XS data mode:
          useSystemDefaultUnavailableSettings
          forceAgentUnavailableOnDNDActivation
          forceAgentUnavailableOnPersonalCalls
          forceAgentUnavailableOnBouncedCallLimit
          numberConsecutiveBouncedCallsToForceAgentUnavailable
          forceAgentUnavailableOnNotReachable
          wrapUpDestination

    Attributes:

        use_system_default_guard_timer (bool):

        enable_guard_timer (bool):

        guard_timer_seconds (int):

        use_system_default_unavailable_settings (Optional[bool]):

        force_agent_unavailable_on_dnd_activation (Optional[bool]):

        force_agent_unavailable_on_personal_calls (Optional[bool]):

        force_agent_unavailable_on_bounced_call_limit (Optional[bool]):

        number_consecutive_bounced_calls_to_force_agent_unavailable (Optional[int]):

        force_agent_unavailable_on_not_reachable (Optional[bool]):

        wrap_up_destination (Optional[str]):

    """

    use_system_default_guard_timer: bool = field(
        metadata={"alias": "useSystemDefaultGuardTimer"}
    )

    enable_guard_timer: bool = field(metadata={"alias": "enableGuardTimer"})

    guard_timer_seconds: int = field(metadata={"alias": "guardTimerSeconds"})

    use_system_default_unavailable_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemDefaultUnavailableSettings"}
    )

    force_agent_unavailable_on_dnd_activation: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnDNDActivation"}
    )

    force_agent_unavailable_on_personal_calls: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnPersonalCalls"}
    )

    force_agent_unavailable_on_bounced_call_limit: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnBouncedCallLimit"}
    )

    number_consecutive_bounced_calls_to_force_agent_unavailable: Optional[int] = field(
        default=None,
        metadata={"alias": "numberConsecutiveBouncedCallsToForceAgentUnavailable"},
    )

    force_agent_unavailable_on_not_reachable: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnNotReachable"}
    )

    wrap_up_destination: Optional[str] = field(
        default=None, metadata={"alias": "wrapUpDestination"}
    )


@dataclass(kw_only=True)
class GroupCallCenterGetRoutingPolicyResponse(OCIDataResponse):
    """Response to GroupCallCenterGetRoutingPolicyRequest.
        Contains a table with column headings: \"Service User Id\", \"Name\" and
        \"Priority\".

    Attributes:

        routing_policy (str):

        call_center_table (OCITable):

    """

    routing_policy: str = field(metadata={"alias": "routingPolicy"})

    call_center_table: OCITable = field(metadata={"alias": "callCenterTable"})


@dataclass(kw_only=True)
class GroupCallCenterGetSupervisorListResponse16(OCIDataResponse):
    """Response to the GroupCallCenterGetSupervisorListRequest16.
        Contains a table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        supervisor_table (OCITable):

    """

    supervisor_table: OCITable = field(metadata={"alias": "supervisorTable"})


@dataclass(kw_only=True)
class GroupCallCenterGetUnlicensedAgentListResponse(OCIDataResponse):
    """Response to the GroupCallCenterGetUnlicensedAgentListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\", \"Phone Number\", \"Group Id\",
        \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupCallCenterHolidayServiceGetResponse20(OCIDataResponse):
    """Response to the GroupCallCenterHolidayServiceGetRequest20.

    Attributes:

        action (str):

        holiday_schedule (Optional[HolidaySchedule]):

        transfer_phone_number (Optional[str]):

        play_announcement_before_action (bool):

        audio_message_selection (str):

        audio_url_list (Optional[CallCenterAnnouncementURLList]):

        audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        video_message_selection (str):

        video_url_list (Optional[CallCenterAnnouncementURLList]):

        video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

    """

    action: str = field(metadata={"alias": "action"})

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    transfer_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    play_announcement_before_action: bool = field(
        metadata={"alias": "playAnnouncementBeforeAction"}
    )

    audio_message_selection: str = field(metadata={"alias": "audioMessageSelection"})

    audio_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: str = field(metadata={"alias": "videoMessageSelection"})

    video_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )


@dataclass(kw_only=True)
class GroupCallCenterMonitoringGetResponse(OCIDataResponse):
    """Response to GroupCallCenterMonitoringGetRequest.

    Attributes:

        enable_supervisor_coaching (bool):

    """

    enable_supervisor_coaching: bool = field(
        metadata={"alias": "enableSupervisorCoaching"}
    )


@dataclass(kw_only=True)
class GroupCallCenterNightServiceGetResponse20(OCIDataResponse):
    """Response to the GroupCallCenterNightServiceGetRequest20.

    Attributes:

        action (str):

        business_hours (Optional[TimeSchedule]):

        force_night_service (bool):

        allow_manual_override_via_fac (bool):

        transfer_phone_number (Optional[str]):

        play_announcement_before_action (bool):

        audio_message_selection (str):

        audio_url_list (Optional[CallCenterAnnouncementURLList]):

        audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        video_message_selection (str):

        video_url_list (Optional[CallCenterAnnouncementURLList]):

        video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        manual_announcement_mode (str):

        manual_audio_message_selection (str):

        manual_audio_url_list (Optional[CallCenterAnnouncementURLList]):

        manual_audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        manual_video_message_selection (str):

        manual_video_url_list (Optional[CallCenterAnnouncementURLList]):

        manual_video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

    """

    action: str = field(metadata={"alias": "action"})

    business_hours: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "businessHours"}
    )

    force_night_service: bool = field(metadata={"alias": "forceNightService"})

    allow_manual_override_via_fac: bool = field(
        metadata={"alias": "allowManualOverrideViaFAC"}
    )

    transfer_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    play_announcement_before_action: bool = field(
        metadata={"alias": "playAnnouncementBeforeAction"}
    )

    audio_message_selection: str = field(metadata={"alias": "audioMessageSelection"})

    audio_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: str = field(metadata={"alias": "videoMessageSelection"})

    video_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )

    manual_announcement_mode: str = field(metadata={"alias": "manualAnnouncementMode"})

    manual_audio_message_selection: str = field(
        metadata={"alias": "manualAudioMessageSelection"}
    )

    manual_audio_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "manualAudioUrlList"}
    )

    manual_audio_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "manualAudioFileList"}
    )

    manual_video_message_selection: str = field(
        metadata={"alias": "manualVideoMessageSelection"}
    )

    manual_video_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "manualVideoUrlList"}
    )

    manual_video_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "manualVideoFileList"}
    )


@dataclass(kw_only=True)
class GroupCallCenterOverflowGetResponse20(OCIDataResponse):
    """Response to the GroupCallCenterOverflowGetRequest20.

    Attributes:

        action (str):

        transfer_phone_number (Optional[str]):

        overflow_after_timeout (bool):

        timeout_seconds (int):

        play_announcement_before_overflow_processing (bool):

        audio_message_selection (str):

        audio_url_list (Optional[CallCenterAnnouncementURLList]):

        audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        video_message_selection (Optional[str]):

        video_url_list (Optional[CallCenterAnnouncementURLList]):

        video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

    """

    action: str = field(metadata={"alias": "action"})

    transfer_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    overflow_after_timeout: bool = field(metadata={"alias": "overflowAfterTimeout"})

    timeout_seconds: int = field(metadata={"alias": "timeoutSeconds"})

    play_announcement_before_overflow_processing: bool = field(
        metadata={"alias": "playAnnouncementBeforeOverflowProcessing"}
    )

    audio_message_selection: str = field(metadata={"alias": "audioMessageSelection"})

    audio_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoMessageSelection"}
    )

    video_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )


@dataclass(kw_only=True)
class GroupCallCenterQueueCallDispositionCodeGetListResponse(OCIDataResponse):
    """Response to the GroupCallCenterQueueCallDispositionCodeGetListRequest.
        Contains a table with column headings: \"Is Active\", \"Code\", \"Description\" and \"Level\".
        Level column can be any of the values in the data type CallDispositionCodeLevel.

    Attributes:

        disposition_codes_table (OCITable):

    """

    disposition_codes_table: OCITable = field(
        metadata={"alias": "dispositionCodesTable"}
    )


@dataclass(kw_only=True)
class GroupCallCenterQueueCallDispositionCodeGetResponse(OCIDataResponse):
    """Response to the GroupCallCenterQueueCallDispositionCodeGetRequest

    Attributes:

        is_active (bool):

        description (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class GroupCallCenterQueueCallDispositionCodeSettingsGetResponse(OCIDataResponse):
    """Response to GroupCallCenterQueueCallDispositionCodeSettingsGetRequest.

    Attributes:

        enable_call_disposition_codes (bool):

        include_organization_codes (bool):

        force_use_of_call_disposition_codes (bool):

        default_call_disposition_code (Optional[CallDispositionCodeWithLevel]):

    """

    enable_call_disposition_codes: bool = field(
        metadata={"alias": "enableCallDispositionCodes"}
    )

    include_organization_codes: bool = field(
        metadata={"alias": "includeOrganizationCodes"}
    )

    force_use_of_call_disposition_codes: bool = field(
        metadata={"alias": "forceUseOfCallDispositionCodes"}
    )

    default_call_disposition_code: Optional[CallDispositionCodeWithLevel] = field(
        default=None, metadata={"alias": "defaultCallDispositionCode"}
    )


@dataclass(kw_only=True)
class GroupCallCenterQueueStatusNotificationGetResponse(OCIDataResponse):
    """Response to the GroupCallCenterQueueStatusNotificationGetRequest.
        The response contains the call center status configuration information.

    Attributes:

        enable_queue_status_notification (bool):

        enable_queue_depth_threshold (bool):

        enable_waiting_time_threshold (bool):

        number_of_calls_threshold (int):

        waiting_time_of_calls_threshold (int):

    """

    enable_queue_status_notification: bool = field(
        metadata={"alias": "enableQueueStatusNotification"}
    )

    enable_queue_depth_threshold: bool = field(
        metadata={"alias": "enableQueueDepthThreshold"}
    )

    enable_waiting_time_threshold: bool = field(
        metadata={"alias": "enableWaitingTimeThreshold"}
    )

    number_of_calls_threshold: int = field(metadata={"alias": "numberOfCallsThreshold"})

    waiting_time_of_calls_threshold: int = field(
        metadata={"alias": "waitingTimeOfCallsThreshold"}
    )


@dataclass(kw_only=True)
class GroupCallCenterQueueThresholdsGetResponse(OCIDataResponse):
    """Response to the GroupCallCenterQueueThresholdsGetRequest.

    Attributes:

        is_active (bool):

        threshold_current_calls_in_queue_yellow (Optional[int]):

        threshold_current_calls_in_queue_red (Optional[int]):

        threshold_current_longest_waiting_call_yellow (Optional[int]):

        threshold_current_longest_waiting_call_red (Optional[int]):

        threshold_average_estimated_wait_time_yellow (Optional[int]):

        threshold_average_estimated_wait_time_red (Optional[int]):

        threshold_average_handling_time_yellow (Optional[int]):

        threshold_average_handling_time_red (Optional[int]):

        threshold_average_speed_of_answer_yellow (Optional[int]):

        threshold_average_speed_of_answer_red (Optional[int]):

        enable_notification_email (bool):

        notification_email_address (Optional[List[str]]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    threshold_current_calls_in_queue_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallsInQueueYellow"}
    )

    threshold_current_calls_in_queue_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentCallsInQueueRed"}
    )

    threshold_current_longest_waiting_call_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentLongestWaitingCallYellow"}
    )

    threshold_current_longest_waiting_call_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdCurrentLongestWaitingCallRed"}
    )

    threshold_average_estimated_wait_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageEstimatedWaitTimeYellow"}
    )

    threshold_average_estimated_wait_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageEstimatedWaitTimeRed"}
    )

    threshold_average_handling_time_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageHandlingTimeYellow"}
    )

    threshold_average_handling_time_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageHandlingTimeRed"}
    )

    threshold_average_speed_of_answer_yellow: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageSpeedOfAnswerYellow"}
    )

    threshold_average_speed_of_answer_red: Optional[int] = field(
        default=None, metadata={"alias": "thresholdAverageSpeedOfAnswerRed"}
    )

    enable_notification_email: bool = field(
        metadata={"alias": "enableNotificationEmail"}
    )

    notification_email_address: Optional[List[str]] = field(
        default=None, metadata={"alias": "notificationEmailAddress"}
    )


@dataclass(kw_only=True)
class GroupCallCenterStrandedCallGetResponse20(OCIDataResponse):
    """Response to the GroupCallCenterStrandedCallGetRequest20.

    Attributes:

        action (str):

        transfer_phone_number (Optional[str]):

        audio_message_selection (Optional[str]):

        audio_url_list (Optional[CallCenterAnnouncementURLList]):

        audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        video_message_selection (Optional[str]):

        video_url_list (Optional[CallCenterAnnouncementURLList]):

        video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

    """

    action: str = field(metadata={"alias": "action"})

    transfer_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioMessageSelection"}
    )

    audio_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoMessageSelection"}
    )

    video_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )


@dataclass(kw_only=True)
class GroupCallCenterStrandedCallUnavailableGetResponse20(OCIDataResponse):
    """Response to the GroupCallCenterStrandedCallUnavailableGetRequest20.

    Attributes:

        condition_policy_on_number_of_agents_with_specified_unavailable_code (bool):

        number_of_agents_with_specified_unavailable_code (Optional[int]):

        agents_unavailable_code (Optional[str]):

        action (str):

        transfer_phone_number (Optional[str]):

        audio_message_selection (Optional[str]):

        audio_url_list (Optional[CallCenterAnnouncementURLList]):

        audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        video_message_selection (Optional[str]):

        video_url_list (Optional[CallCenterAnnouncementURLList]):

        video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

    """

    condition_policy_on_number_of_agents_with_specified_unavailable_code: bool = field(
        metadata={
            "alias": "conditionPolicyOnNumberOfAgentsWithSpecifiedUnavailableCode"
        }
    )

    number_of_agents_with_specified_unavailable_code: Optional[int] = field(
        default=None, metadata={"alias": "numberOfAgentsWithSpecifiedUnavailableCode"}
    )

    agents_unavailable_code: Optional[str] = field(
        default=None, metadata={"alias": "agentsUnavailableCode"}
    )

    action: str = field(metadata={"alias": "action"})

    transfer_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    audio_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "audioMessageSelection"}
    )

    audio_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoMessageSelection"}
    )

    video_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )


@dataclass(kw_only=True)
class GroupCallParkGetAvailableAlternateRecallUserListResponse(OCIDataResponse):
    """Response to the GroupCallParkGetAvailableAlternateRecallUserListResponse.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\".

    Attributes:

        available_hunt_group_table (OCITable):

    """

    available_hunt_group_table: OCITable = field(
        metadata={"alias": "availableHuntGroupTable"}
    )


@dataclass(kw_only=True)
class GroupCallParkGetAvailableAlternateRecallUserPagedSortedListResponse(
    OCIDataResponse
):
    """Response to the GroupCallParkGetAvailableAlternateRecallUserPagedSortedListResponse.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\". The Email Address will never be populated, since Hunt Groups don't
        have Email Addresses.

    Attributes:

        available_hunt_group_table (OCITable):

    """

    available_hunt_group_table: OCITable = field(
        metadata={"alias": "availableHuntGroupTable"}
    )


@dataclass(kw_only=True)
class GroupCallParkGetAvailableUserListResponse(OCIDataResponse):
    """Response to the GroupCallParkGetAvailableUserListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\",
        \"Hiragana First Name\", \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupCallParkGetAvailableUserPagedSortedListResponse(OCIDataResponse):
    """Response to the GroupCallParkGetAvailableUserPagedSortedListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\",
        \"Hiragana First Name\", \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupCallParkGetInstanceListResponse(OCIDataResponse):
    """Response to the GroupCallParkGetInstanceListRequest.

    Attributes:

        name (Optional[List[str]]):

    """

    name: Optional[List[str]] = field(default=None, metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCallParkGetInstancePagedSortedListResponse(OCIDataResponse):
    """Response to the GroupCallParkGetInstancePagedSortedListRequest.

    Attributes:

        name (Optional[List[str]]):

    """

    name: Optional[List[str]] = field(default=None, metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCallParkGetInstancePagedSortedResponse(OCIDataResponse):
    """Response to the GroupCallParkGetInstancePagedSortedRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\",
        \"Hiragana First Name\", \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".
        The users are in the table are in the order they will try to be parked on.

    Attributes:

        recall_alternate_user_id (Optional[str]):

        recall_to (str):

        user_table (OCITable):

    """

    recall_alternate_user_id: Optional[str] = field(
        default=None, metadata={"alias": "recallAlternateUserId"}
    )

    recall_to: str = field(metadata={"alias": "recallTo"})

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupCallParkGetInstanceResponse16sp2(OCIDataResponse):
    """Response to the GroupCallParkGetInstanceRequest16sp2.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\",
        \"Hiragana First Name\", \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".
        The users are in the table are in the order they will try to be parked on.

    Attributes:

        recall_alternate_user_id (Optional[str]):

        recall_to (str):

        user_table (OCITable):

    """

    recall_alternate_user_id: Optional[str] = field(
        default=None, metadata={"alias": "recallAlternateUserId"}
    )

    recall_to: str = field(metadata={"alias": "recallTo"})

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupCallParkGetResponse16sp2(OCIDataResponse):
    """Response to the GroupCallParkGetRequest16sp2.
        Contains the settings that apply to the whole group for Call Park.

    Attributes:

        recall_timer_seconds (int):

        display_timer_seconds (int):

        enable_destination_announcement (bool):

        recall_alternate_user_id (Optional[str]):

        recall_ring_pattern (str):

        recall_to (str):

        alternate_user_recall_timer_seconds (int):

    """

    recall_timer_seconds: int = field(metadata={"alias": "recallTimerSeconds"})

    display_timer_seconds: int = field(metadata={"alias": "displayTimerSeconds"})

    enable_destination_announcement: bool = field(
        metadata={"alias": "enableDestinationAnnouncement"}
    )

    recall_alternate_user_id: Optional[str] = field(
        default=None, metadata={"alias": "recallAlternateUserId"}
    )

    recall_ring_pattern: str = field(metadata={"alias": "recallRingPattern"})

    recall_to: str = field(metadata={"alias": "recallTo"})

    alternate_user_recall_timer_seconds: int = field(
        metadata={"alias": "alternateUserRecallTimerSeconds"}
    )


@dataclass(kw_only=True)
class GroupCallPickupGetAvailableUserListResponse(OCIDataResponse):
    """Response to the GroupCallPickupGetAvailableUserListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupCallPickupGetAvailableUserPagedSortedListResponse(OCIDataResponse):
    """Response to the GroupCallPickupGetAvailableUserPagedSortedListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupCallPickupGetInstanceListResponse(OCIDataResponse):
    """Response to the GroupCallPickupGetInstanceListRequest.

    Attributes:

        name (Optional[List[str]]):

    """

    name: Optional[List[str]] = field(default=None, metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCallPickupGetInstancePagedSortedListResponse(OCIDataResponse):
    """Response to the GroupCallPickupGetInstancePagedSortedListRequest.

    Attributes:

        name (Optional[List[str]]):

    """

    name: Optional[List[str]] = field(default=None, metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCallPickupGetInstancePagedSortedResponse(OCIDataResponse):
    """Response to the GroupCallPickupGetInstancePagedSortedRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupCallPickupGetInstanceResponse(OCIDataResponse):
    """Response to the GroupCallPickupGetInstanceRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupCallProcessingGetPolicyResponse22V3(OCIDataResponse):
    """Response to GroupCallProcessingGetPolicyRequest22V3.
        The following elements are not returned for a group within a service provider:
          enableGatewayRoutePolicy
          networkCallsGatewayRouteIdentity
          networkURLCallsGatewayRouteIdentity
          emergencyCallsGatewayRouteIdentity
          repairCallsGatewayRouteIdentity
          callTypingErrorsGatewayRouteIdentity

        The following elements are only used in AS data mode:
          useGroupDCLIDSetting
          enableDialableCallerID
          allowConfigurableCLIDForRedirectingIdentity
          allowDepartmentCLIDNameOverride
          enterpriseCallsCLIDPolicy, value \"Use Location Code plus Extension\" is returned in XS data mode.
          groupCallsCLIDPolicy, value \"Use Extension\" is returned in XS data mode.
          useGroupPhoneListLookupSetting, value \"false\" is returned in XS data mode.
          enablePhoneListLookup, value \"false\" is returned in XS data mode.
          useMaxConcurrentTerminatingAlertingRequests, value \"false\" is returned in XS data mode.
          maxConcurrentTerminatingAlertingRequests, value \"10\" is returned in XS data mode.
          includeRedirectionsInMaximumNumberOfConcurrentCalls, value \"false\" is returned in XS data mode.
          useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable, value \"false\" is returned in XS data mode.
          useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable, value \"false\" is returned in XS data mode.
          allowMobileDNForRedirectingIdentity,value \"false\" is returned in XS data mode.

        The following elements are only used in AS data mode and not returned in XS data mode:
          enableGatewayRoutePolicy
          networkCallsGatewayRouteIdentity
          networkURLCallsGatewayRouteIdentity
          emergencyCallsGatewayRouteIdentity
          repairCallsGatewayRouteIdentity
          callTypingErrorsGatewayRouteIdentity

        The following elements are only used in XS data mode and not returned in AS data mode:
          routeOverrideDomain
          routeOverridePrefix

    Attributes:

        use_group_clid_setting (bool):

        use_group_media_setting (bool):

        use_group_call_limits_setting (bool):

        use_group_translation_routing_setting (bool):

        use_group_dclid_setting (bool):

        use_max_simultaneous_calls (bool):

        max_simultaneous_calls (int):

        use_max_simultaneous_video_calls (bool):

        max_simultaneous_video_calls (int):

        use_max_call_time_for_answered_calls (bool):

        max_call_time_for_answered_calls_minutes (int):

        use_max_call_time_for_unanswered_calls (bool):

        max_call_time_for_unanswered_calls_minutes (int):

        media_policy_selection (str):

        supported_media_set_name (Optional[str]):

        network_usage_selection (str):

        enforce_group_calling_line_identity_restriction (bool):

        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):

        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):

        override_clid_restriction_for_private_call_category (Optional[bool]):

        use_enterprise_clid_for_private_call_category (Optional[bool]):

        enable_enterprise_extension_dialing (bool):

        use_max_concurrent_redirected_calls (bool):

        max_concurrent_redirected_calls (int):

        use_max_find_me_follow_me_depth (bool):

        max_find_me_follow_me_depth (int):

        max_redirection_depth (int):

        use_max_concurrent_find_me_follow_me_invocations (bool):

        max_concurrent_find_me_follow_me_invocations (int):

        clid_policy (str):

        emergency_clid_policy (str):

        allow_alternate_numbers_for_redirecting_identity (bool):

        use_group_name (bool):

        block_calling_name_for_external_calls (bool):

        enable_dialable_caller_id (bool):

        allow_configurable_clid_for_redirecting_identity (bool):

        allow_department_clid_name_override (bool):

        enterprise_calls_clid_policy (str):

        group_calls_clid_policy (str):

        use_group_phone_list_lookup_setting (bool):

        enable_phone_list_lookup (bool):

        use_max_concurrent_terminating_alerting_requests (bool):

        max_concurrent_terminating_alerting_requests (int):

        include_redirections_in_maximum_number_of_concurrent_calls (bool):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):

        route_override_domain (Optional[str]):

        route_override_prefix (Optional[str]):

        allow_mobile_dn_for_redirecting_identity (bool):

        enable_gateway_route_policy (Optional[bool]):

        network_calls_gateway_route_identity (Optional[str]):

        network_url_calls_gateway_route_identity (Optional[str]):

        emergency_calls_gateway_route_identity (Optional[str]):

        repair_calls_gateway_route_identity (Optional[str]):

        call_typing_errors_gateway_route_identity (Optional[str]):

    """

    use_group_clid_setting: bool = field(metadata={"alias": "useGroupCLIDSetting"})

    use_group_media_setting: bool = field(metadata={"alias": "useGroupMediaSetting"})

    use_group_call_limits_setting: bool = field(
        metadata={"alias": "useGroupCallLimitsSetting"}
    )

    use_group_translation_routing_setting: bool = field(
        metadata={"alias": "useGroupTranslationRoutingSetting"}
    )

    use_group_dclid_setting: bool = field(metadata={"alias": "useGroupDCLIDSetting"})

    use_max_simultaneous_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: int = field(metadata={"alias": "maxSimultaneousCalls"})

    use_max_simultaneous_video_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: int = field(
        metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    media_policy_selection: str = field(metadata={"alias": "mediaPolicySelection"})

    supported_media_set_name: Optional[str] = field(
        default=None, metadata={"alias": "supportedMediaSetName"}
    )

    network_usage_selection: str = field(metadata={"alias": "networkUsageSelection"})

    enforce_group_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"}
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"}
    )

    override_clid_restriction_for_private_call_category: Optional[bool] = field(
        default=None,
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"},
    )

    use_enterprise_clid_for_private_call_category: Optional[bool] = field(
        default=None, metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    enable_enterprise_extension_dialing: bool = field(
        metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    use_max_concurrent_redirected_calls: bool = field(
        metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: int = field(
        metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_find_me_follow_me_depth: bool = field(
        metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: int = field(
        metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: int = field(metadata={"alias": "maxRedirectionDepth"})

    use_max_concurrent_find_me_follow_me_invocations: bool = field(
        metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: int = field(
        metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    emergency_clid_policy: str = field(metadata={"alias": "emergencyClidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: bool = field(
        metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: bool = field(metadata={"alias": "useGroupName"})

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    enable_dialable_caller_id: bool = field(
        metadata={"alias": "enableDialableCallerID"}
    )

    allow_configurable_clid_for_redirecting_identity: bool = field(
        metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: bool = field(
        metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    group_calls_clid_policy: str = field(metadata={"alias": "groupCallsCLIDPolicy"})

    use_group_phone_list_lookup_setting: bool = field(
        metadata={"alias": "useGroupPhoneListLookupSetting"}
    )

    enable_phone_list_lookup: bool = field(metadata={"alias": "enablePhoneListLookup"})

    use_max_concurrent_terminating_alerting_requests: bool = field(
        metadata={"alias": "useMaxConcurrentTerminatingAlertingRequests"}
    )

    max_concurrent_terminating_alerting_requests: int = field(
        metadata={"alias": "maxConcurrentTerminatingAlertingRequests"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: bool = field(
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"}
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: bool = field(
        metadata={"alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"}
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: bool = field(
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        }
    )

    route_override_domain: Optional[str] = field(
        default=None, metadata={"alias": "routeOverrideDomain"}
    )

    route_override_prefix: Optional[str] = field(
        default=None, metadata={"alias": "routeOverridePrefix"}
    )

    allow_mobile_dn_for_redirecting_identity: bool = field(
        metadata={"alias": "allowMobileDNForRedirectingIdentity"}
    )

    enable_gateway_route_policy: Optional[bool] = field(
        default=None, metadata={"alias": "enableGatewayRoutePolicy"}
    )

    network_calls_gateway_route_identity: Optional[str] = field(
        default=None, metadata={"alias": "networkCallsGatewayRouteIdentity"}
    )

    network_url_calls_gateway_route_identity: Optional[str] = field(
        default=None, metadata={"alias": "networkURLCallsGatewayRouteIdentity"}
    )

    emergency_calls_gateway_route_identity: Optional[str] = field(
        default=None, metadata={"alias": "emergencyCallsGatewayRouteIdentity"}
    )

    repair_calls_gateway_route_identity: Optional[str] = field(
        default=None, metadata={"alias": "repairCallsGatewayRouteIdentity"}
    )

    call_typing_errors_gateway_route_identity: Optional[str] = field(
        default=None, metadata={"alias": "callTypingErrorsGatewayRouteIdentity"}
    )


@dataclass(kw_only=True)
class GroupCallRecordingGetResponse(OCIDataResponse):
    """Response to the GroupCallRecordingGetRequest.
         The response contains the group's Call Recording platform information.

    Attributes:

        name (Optional[str]):

    """

    name: Optional[str] = field(default=None, metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCallingPlanGetDigitPatternListResponse(OCIDataResponse):
    """Response to GroupCallingPlanGetDigitPatternListRequest.
        Contains a table with column headings: \"Name\", \"Digit Pattern\".

    Attributes:

        digit_pattern_table (OCITable):

    """

    digit_pattern_table: OCITable = field(metadata={"alias": "digitPatternTable"})


@dataclass(kw_only=True)
class GroupCollaborateBridgeGetAvailableUserListResponse(OCIDataResponse):
    """Response to the GroupCollaborateBridgeGetAvailableUserListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", and \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Department Type\", \"Parent Department\", \"Parent Department Type\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupCollaborateBridgeGetAvailableUserPagedSortedListResponse(OCIDataResponse):
    """Response to the GroupCollaborateBridgeGetAvailableUserPagedSortedListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Is Phone Number Activated\", \"Country Code\",\"National Prefix\", \"Extension\", \"Department\", \"Department Type\",
        \"Parent Department\", \"Parent Department Type\", \"Email Address\", \"IMP Id\", \"Mobile Number\", \"Group Id\", \"Group Name\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupCollaborateBridgeGetInstanceListResponse(OCIDataResponse):
    """Response to the GroupCollaborateBridgeGetInstanceListRequest.
        Contains a table with column headings: \"Service User Id\", \"Name\", \"Phone Number\", \"Extension\", \"Department\", \"Participants\", and \"Is Default\".
        The column values for \"Is default\" can either be true, or false.

    Attributes:

        collaborate_bridge_table (OCITable):

    """

    collaborate_bridge_table: OCITable = field(
        metadata={"alias": "collaborateBridgeTable"}
    )


@dataclass(kw_only=True)
class GroupCollaborateBridgeGetInstancePagedSortedListResponse(OCIDataResponse):
    """Response to the GroupCollaborateBridgeGetInstancePagedSortedListRequest.
        Contains a table with column headings: \"Service User Id\", \"Name\", \"Phone Number\", \"Is Phone Number Activated\",
        \"Country Code\",\"National Prefix\", \"Extension\", \"Department\", \"Department Type\",
        \"Parent Department\", \"Parent Department Type\", \"Participants\", \"Is Default\", \"Max Room Participants\",
        \"Is Support Outdial\".
        The column values for \"Is default\", \"Is Support Outdial\" can either be true, or false.

    Attributes:

        collaborate_bridge_table (OCITable):

    """

    collaborate_bridge_table: OCITable = field(
        metadata={"alias": "collaborateBridgeTable"}
    )


@dataclass(kw_only=True)
class GroupCollaborateBridgeGetInstanceResponse20sp1(OCIDataResponse):
    """Response to GroupCollaborateBridgeGetInstanceRequest20sp1.
        The system-level collaborate supportOutdial setting is returned in the response when the system-level collaborate
        supportOutdial setting is disabled.
        Contains the service profile information and a table of assigned owners.
        The table has column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\",
        \"Hiragana First Name\", Phone Number\", \"Extension\", \"Department\", \"Email Address\",
        \"Is Phone Number Activated\", \"Country Code\", \"National Prefix\", \"Department Name\",
        \"Department Type\", \"Parent Department\", \"Parent Department Type\", \"Group Id\", \"Group Name\".
        Collaborate bridge maximum participant’s choices unlimited or a quantified number of participants.

    Attributes:

        service_instance_profile (ServiceInstanceReadProfile19sp1):

        maximum_bridge_participants (CollaborateBridgeMaximumParticipants):

        network_class_of_service (Optional[str]):

        is_default (bool):

        max_collaborate_room_participants (int):

        support_outdial (bool):

        collaborate_owner_user_table (Optional[Nillable[OCITable]]):

    """

    service_instance_profile: ServiceInstanceReadProfile19sp1 = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    maximum_bridge_participants: CollaborateBridgeMaximumParticipants = field(
        metadata={"alias": "maximumBridgeParticipants"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    is_default: bool = field(metadata={"alias": "isDefault"})

    max_collaborate_room_participants: int = field(
        metadata={"alias": "maxCollaborateRoomParticipants"}
    )

    support_outdial: bool = field(metadata={"alias": "supportOutdial"})

    collaborate_owner_user_table: Optional[Nillable[OCITable]] = field(
        default=None, metadata={"alias": "collaborateOwnerUserTable"}
    )

    def __post_init__(self):
        nillable_fields = ["collaborate_owner_user_table"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class GroupCommonPhoneListGetListResponse(OCIDataResponse):
    """Response to the GroupCommonPhoneListGetListRequest.
        The response contains the group's common phone list.

    Attributes:

        entry (Optional[List[PhoneListEntry]]):

    """

    entry: Optional[List[PhoneListEntry]] = field(
        default=None, metadata={"alias": "entry"}
    )


@dataclass(kw_only=True)
class GroupCommunicationBarringAuthorizationCodeGetListResponse21sp1(OCIDataResponse):
    """Response to GroupCommunicationBarringAuthorizationCodeGetListRequest21sp1.
         Contains a list of Communication Barring Authorization Codes assigned to the group.

    Attributes:

        code (Optional[List[CommunicationBarringAuthorizationCodeConfiguration]]):

    """

    code: Optional[List[CommunicationBarringAuthorizationCodeConfiguration]] = field(
        default=None, metadata={"alias": "code"}
    )


@dataclass(kw_only=True)
class GroupCommunicationBarringAuthorizationCodeGetResponse(OCIDataResponse):
    """Response to GroupCommunicationBarringAuthorizationCodeGetRequest.

    Attributes:

        description (Optional[str]):

        network_class_of_service (Optional[str]):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupCommunicationBarringGetResponse(OCIDataResponse):
    """Response to GroupCommunicationBarringGetRequest.

    Attributes:

        use_default_service_provider_profile (bool):

        profile (Optional[str]):

    """

    use_default_service_provider_profile: bool = field(
        metadata={"alias": "useDefaultServiceProviderProfile"}
    )

    profile: Optional[str] = field(default=None, metadata={"alias": "profile"})


@dataclass(kw_only=True)
class GroupCommunicationBarringProfileGetAssignedListResponse(OCIDataResponse):
    """Response to the GroupCommunicationBarringProfileGetAssignedListRequest.
        The response contains a simple list of all communication barring profiles assigned to the group.

    Attributes:

        profile_name (Optional[List[str]]):

    """

    profile_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "profileName"}
    )


@dataclass(kw_only=True)
class GroupConsolidatedAddResponse22(OCIDataResponse):
    """Response to GroupConsolidatedAddRequest22.

    Attributes:

        dn_validation_error (Optional[List[DNValidationStatusMessage]]):

    """

    dn_validation_error: Optional[List[DNValidationStatusMessage]] = field(
        default=None, metadata={"alias": "dnValidationError"}
    )


@dataclass(kw_only=True)
class GroupConsolidatedDnAssignListResponse(OCIDataResponse):
    """Response to GroupConsolidatedDnAssignListRequest.

    Attributes:

        dn_validation_error (Optional[List[DNValidationStatusMessage]]):

    """

    dn_validation_error: Optional[List[DNValidationStatusMessage]] = field(
        default=None, metadata={"alias": "dnValidationError"}
    )


@dataclass(kw_only=True)
class GroupCustomContactDirectoryGetAvailableUserListResponse17(OCIDataResponse):
    """Response to the
        GroupCustomContactDirectoryGetAvailableUserListRequest17.
        Contains a table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Virtual On-Net Phone Number\", \"Group Id\", \"Is Virtual On-Net User\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

        If the entry represents a Virtual On-Net user then \"User Id\" is blank,
        the \"Virtual On-Net Phone Number\" contains the phone Number of the
        Virtual On-Net user, the \"Group Id\" contains the Virtual On-Net user's
        group and the \"Is Virtual On-Net User\" contains true.

        If the entry represents a BroadWorks user then the \"User Id\" contains
        his BroadWorks userId, the \"Virtual On-Net Phone Number\" and
        \"Group Id\" fields are blank and the \"Is Virtual On-Net User\"
        contains false.

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupCustomContactDirectoryGetListResponse(OCIDataResponse):
    """Response to the GroupCustomContactDirectoryGetListRequest.
        The response contains all the group's custom contact directory names.

    Attributes:

        name (Optional[List[str]]):

    """

    name: Optional[List[str]] = field(default=None, metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupCustomContactDirectoryGetResponse17(OCIDataResponse):
    """Response to the GroupCustomContactDirectoryGetRequest17.
        The response contains all the contacts in the group's given custom
        contact directory. Contains a table with column headings: \"User Id\",
        \"Last Name\", \"First Name\", \"Hiragana Last Name\",
        \"Hiragana First Name\", \"Virtual On-Net Phone Number\", \"Group Id\",
        \"Is Virtual On-Net User\", \"Department\", \"Phone Number\", \"Extension\",
        \"Mobile\", \"Email Address\", \"Yahoo Id\", \"Title\", \"IMP Id\", \"Receptionist Note\".
        If the entry represents a Virtual On-Net user then \"User Id\" is blank,
        the \"Virtual On-Net Phone Number\" contains the phone Number of the
        Virtual On-Net user, the \"Group Id\" contains the Virtual On-Net user's
        group and the \"Is Virtual On-Net User\" contains true.
        If the entry represents a BroadWorks user then the \"User Id\" contains
        his BroadWorks userId, the \"Virtual On-Net Phone Number\" and
        \"Group Id\" fields are field is blank and the \"Is Virtual On-Net User\"
        contains false.  The Receptionist Note column is only populated in AS
        Mode, if the user sending the request is the owner of the Receptionist
        Note and a Note exists.

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupCustomRingbackGroupGetResponse20(OCIDataResponse):
    """Response to the GroupCustomRingbackGroupGetRequest20.

    Attributes:

        is_active (bool):

        audio_selection (str):

        audio_file (Optional[AnnouncementFileKey]):

        audio_file_url (Optional[str]):

        video_selection (str):

        video_file (Optional[AnnouncementFileKey]):

        video_file_url (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    audio_selection: str = field(metadata={"alias": "audioSelection"})

    audio_file: Optional[AnnouncementFileKey] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    audio_file_url: Optional[str] = field(
        default=None, metadata={"alias": "audioFileUrl"}
    )

    video_selection: str = field(metadata={"alias": "videoSelection"})

    video_file: Optional[AnnouncementFileKey] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    video_file_url: Optional[str] = field(
        default=None, metadata={"alias": "videoFileUrl"}
    )


@dataclass(kw_only=True)
class GroupDepartmentAdminGetListResponse(OCIDataResponse):
    """Response to GroupDepartmentAdminGetListRequest.
        Contains a 5 column table with column headings \"Administrator ID\",
        \"Last Name\", \"First Name\", \"Department\", \"Language\".

    Attributes:

        department_admin_table (OCITable):

    """

    department_admin_table: OCITable = field(metadata={"alias": "departmentAdminTable"})


@dataclass(kw_only=True)
class GroupDepartmentAdminGetResponse22V2(OCIDataResponse):
    """Response to the GroupDepartmentAdminGetRequest22V2.
        The response contains the group department administrators profile information.

        The following elements are only used in AS data mode and ignored in XS data mode.
        accountDisabled
        lastAuthenticatedDate
        hasPassword

    Attributes:

        department_key (GroupDepartmentKey):

        department_full_path (str):

        first_name (Optional[str]):

        last_name (Optional[str]):

        language (str):

        account_disabled (bool):

        last_authenticated_date (str):

        has_password (bool):

    """

    department_key: GroupDepartmentKey = field(metadata={"alias": "departmentKey"})

    department_full_path: str = field(metadata={"alias": "departmentFullPath"})

    first_name: Optional[str] = field(default=None, metadata={"alias": "firstName"})

    last_name: Optional[str] = field(default=None, metadata={"alias": "lastName"})

    language: str = field(metadata={"alias": "language"})

    account_disabled: bool = field(metadata={"alias": "accountDisabled"})

    last_authenticated_date: str = field(metadata={"alias": "lastAuthenticatedDate"})

    has_password: bool = field(metadata={"alias": "hasPassword"})


@dataclass(kw_only=True)
class GroupDepartmentGetAvailableParentListResponse(OCIDataResponse):
    """Response to GroupDepartmentGetAvailableParentListRequest.
        The response includes two parallel arrays of department keys and department display names.

    Attributes:

        department_key (Optional[List[DepartmentKey]]):

        full_path_name (Optional[List[str]]):

    """

    department_key: Optional[List[DepartmentKey]] = field(
        default=None, metadata={"alias": "departmentKey"}
    )

    full_path_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "fullPathName"}
    )


@dataclass(kw_only=True)
class GroupDepartmentGetListResponse18(OCIDataResponse):
    """Response to GroupDepartmentGetListRequest18.
        Contains a table of department attributes.
        The column headings are: \"Is Enterprise Department\", \"Department Name\", \"Full Path Name\", \"Calling Line Id Name\", and \"Calling Line Id Phone Number\"

    Attributes:

        department_table (OCITable):

    """

    department_table: OCITable = field(metadata={"alias": "departmentTable"})


@dataclass(kw_only=True)
class GroupDepartmentGetResponse(OCIDataResponse):
    """Response to GroupDepartmentGetRequest.
        The following elements are only used in AS data mode:
          callingLineIdName
          caliingLineIdPhoneNumber

    Attributes:

        parent_department_key (Optional[DepartmentKey]):

        calling_line_id_name (Optional[str]):

        calling_line_id_phone_number (Optional[str]):

    """

    parent_department_key: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "parentDepartmentKey"}
    )

    calling_line_id_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdName"}
    )

    calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )


@dataclass(kw_only=True)
class GroupDeviceActivationPolicyGetResponse(OCIDataResponse):
    """Response to GroupDeviceActivationPolicyGetRequest.

    Attributes:

        use_group_settings (bool):

        allow_activation_code_request_by_user (bool):

        send_activation_code_in_email (bool):

    """

    use_group_settings: bool = field(metadata={"alias": "useGroupSettings"})

    allow_activation_code_request_by_user: bool = field(
        metadata={"alias": "allowActivationCodeRequestByUser"}
    )

    send_activation_code_in_email: bool = field(
        metadata={"alias": "sendActivationCodeInEmail"}
    )


@dataclass(kw_only=True)
class GroupDeviceManagementEventGetListResponse22(OCIDataResponse):
    """Response to GroupDeviceManagementEventGetListRequest22.
        Contains a table with column headings: \"Event Id\", \"Status\", \"Action\",
        \"Level\", \"Type\", \"Additional Info\", \"Is Local\", \"Completion %\",
        \"Pushed/ Same Hash/ Not Pushed\", \"Login Id\", \"Start Time\",
        \"Process Time\", \"Rx Time\", \"Total Time\", \"Request\", \"Priority\",
        \"Tracking Id\", \"End Time\".
        \"Event Id\" is a unique identifier for the event.
        \"Status\" can be: Pending, Queued, In Progress,
        Process On Other Host, Stale, Completed, Canceled.
        \"Action\" can be: Delete, Download, Rebuild, Reset, Upload.
        \"Level\" can be: Device, Device Type, Device Type Group, Group, User.
        \"Type\" can be: Automatic, Manual.
        \"Additional Info\" includes the affected device type, device or group.
        It depends on the level of the event:
          Device Profile: \"Device Name\" \"Service Provider Id\" \"Group Id\"
          Device Type: \"Device Type Name\"
          Device Type Service Provider: \"Service Provider Id\" \"Device Type Name\"
          Service Provider: \"Service Provider Id\"
          Device Type Group: \"Service Provider Id\" \"Group Id\" \"Device Type Name\"
          Group: \"Service Provider Id\" \"Group Id\"
          User: \"User Id\"
        \"Is Local\" is set to \"yes\" if the event is processed on the server
        who received the request, \"no\" otherwise meaning that the event is
        processed on another server.
        \"Completion %\" provides an estimate of the completion of the event.
        A percentage is given, the current number of completed expanded event,
        and the total number of expanded event.
        \"Pushed/ Same Hash/ Not Pushed\" gives the total number of files that
        were pushed, not pushed because of same hash, and not pushed when
        processing the event.
        \"LoginId\" is the user or admin id who triggered the event.
        \"Start Time\" is the date when the event's processing started.  The
        display shows the month, day, hours, minutes, and seconds (MM-dd hh:mm:ss).
        \"Process Time\" is the time taken to process the event in hours,
        minutes, seconds, and milliseconds (hhhh:mm:ss.SSS).
        \"Rx Time\" is the date when the event was received via OCI-P and
        stored in the system.  The display shows the month, day, hours,
        minutes, and seconds (MM-dd hh:mm:ss).
        \"Total Time\" is the total time the event was in the system, from the
        moment it was received and stored until its processing ended, in
        hours, minutes, seconds, and milliseconds (hhhh:mm:ss.SSS).
        \"Request\" is the name of the OCI-P request that triggered the event.
        \"Priority\" is the priority of the event.
        \"Tracking Id\" is the tracking id of the OCI-P request that triggered the event.
        \"End Time\" is the difference, measured in milliseconds, between the
        event's end time and midnight, January 1, 1970 UTC

    Attributes:

        event_table (OCITable):

    """

    event_table: OCITable = field(metadata={"alias": "eventTable"})


@dataclass(kw_only=True)
class GroupDeviceManagementGetAccessDeviceCountForDeviceTypeGroupResponse(
    OCIDataResponse
):
    """Response to GroupDeviceManagementGetAccessDeviceCountForDeviceTypeGroupRequest.

    Attributes:

        access_device_count (int):

    """

    access_device_count: int = field(metadata={"alias": "accessDeviceCount"})


@dataclass(kw_only=True)
class GroupDeviceTypeCustomTagGetListResponse(OCIDataResponse):
    """Response to GroupDeviceTypeCustomTagGetListRequest.
        Contains a table of custom configuration tags managed by the Device Management System on a per-device type basis for a group.
        In As data mode, the column headings are:
          \"Tag Name\", \"Tag Value\", \"Actual Tag Value\".
        In XS data mode, the column headings are:
          \"Tag Name\", \"Tag Value\", \"Actual Tag Value\" if request is invoked by an admin without system privileges.
          \"Tag Name\", \"Tag Value\", \"Is Encrypted\", \"Actual Tag Value\" if request is invoked by an admin with system privileges.

    Attributes:

        group_device_type_custom_tags_table (OCITable):

    """

    group_device_type_custom_tags_table: OCITable = field(
        metadata={"alias": "groupDeviceTypeCustomTagsTable"}
    )


@dataclass(kw_only=True)
class GroupDeviceTypeFileGetListResponse21(OCIDataResponse):
    """Response to GroupDeviceTypeFileGetListRequest21.
        Contains a table of device type files managed by the Device Management System, on a per-group basis.
        The column headings are: \"File Format\", \"Is Authenticated\", \"Access URL\", \"Repository URL\", \"Template URL\".

    Attributes:

        group_device_type_files_table (OCITable):

        group_has_customizable_dynamic_files (bool):

    """

    group_device_type_files_table: OCITable = field(
        metadata={"alias": "groupDeviceTypeFilesTable"}
    )

    group_has_customizable_dynamic_files: bool = field(
        metadata={"alias": "groupHasCustomizableDynamicFiles"}
    )


@dataclass(kw_only=True)
class GroupDeviceTypeFileGetResponse16sp1(OCIDataResponse):
    """Response to GroupDeviceTypeFileGetRequest16sp1.

    Attributes:

        file_source (Optional[str]):

        configuration_file_name (Optional[str]):

        access_url (str):

        repository_url (Optional[str]):

        template_url (Optional[str]):

    """

    file_source: Optional[str] = field(default=None, metadata={"alias": "fileSource"})

    configuration_file_name: Optional[str] = field(
        default=None, metadata={"alias": "configurationFileName"}
    )

    access_url: str = field(metadata={"alias": "accessUrl"})

    repository_url: Optional[str] = field(
        default=None, metadata={"alias": "repositoryUrl"}
    )

    template_url: Optional[str] = field(default=None, metadata={"alias": "templateUrl"})


@dataclass(kw_only=True)
class GroupDeviceTypeTagSetGetResponse(OCIDataResponse):
    """Response to GroupDeviceTypeTagSetGetRequest.

    Attributes:

        tag_set_name (Optional[str]):

    """

    tag_set_name: Optional[str] = field(default=None, metadata={"alias": "tagSetName"})


@dataclass(kw_only=True)
class GroupDialPlanPolicyGetAccessCodeListResponse(OCIDataResponse):
    """Response to GroupDialPlanPolicyGetAccessCodeListRequest
        Contains a table with column headings: \"Access Code\",
        \"Enable Secondary Dial Tone\", \"Description\"

    Attributes:

        access_code_table (OCITable):

    """

    access_code_table: OCITable = field(metadata={"alias": "accessCodeTable"})


@dataclass(kw_only=True)
class GroupDialPlanPolicyGetAccessCodeResponse(OCIDataResponse):
    """Response to GroupDialPlanPolicyGetAccessCodeRequest

    Attributes:

        include_code_for_network_translations_and_routing (bool):

        include_code_for_screening_services (bool):

        enable_secondary_dial_tone (bool):

        description (Optional[str]):

    """

    include_code_for_network_translations_and_routing: bool = field(
        metadata={"alias": "includeCodeForNetworkTranslationsAndRouting"}
    )

    include_code_for_screening_services: bool = field(
        metadata={"alias": "includeCodeForScreeningServices"}
    )

    enable_secondary_dial_tone: bool = field(
        metadata={"alias": "enableSecondaryDialTone"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class GroupDialPlanPolicyGetResponse22(OCIDataResponse):
    """Response to GroupDialPlanPolicyGetRequest22
        The following elements are only used in AS data mode:
          overrideResolvedDeviceDigitMap
        The following elements are only used in AS data mode and not returned in XS data mode:
          deviceDigitMap

    Attributes:

        use_setting (str):

        requires_access_code_for_public_calls (bool):

        allow_e164_public_calls (bool):

        prefer_e164_number_format_for_callback_services (bool):

        public_digit_map (Optional[str]):

        private_digit_map (Optional[str]):

        override_resolved_device_digit_map (bool):

        device_digit_map (Optional[str]):

    """

    use_setting: str = field(metadata={"alias": "useSetting"})

    requires_access_code_for_public_calls: bool = field(
        metadata={"alias": "requiresAccessCodeForPublicCalls"}
    )

    allow_e164_public_calls: bool = field(metadata={"alias": "allowE164PublicCalls"})

    prefer_e164_number_format_for_callback_services: bool = field(
        metadata={"alias": "preferE164NumberFormatForCallbackServices"}
    )

    public_digit_map: Optional[str] = field(
        default=None, metadata={"alias": "publicDigitMap"}
    )

    private_digit_map: Optional[str] = field(
        default=None, metadata={"alias": "privateDigitMap"}
    )

    override_resolved_device_digit_map: bool = field(
        metadata={"alias": "overrideResolvedDeviceDigitMap"}
    )

    device_digit_map: Optional[str] = field(
        default=None, metadata={"alias": "deviceDigitMap"}
    )


@dataclass(kw_only=True)
class GroupDialableCallerIDCriteriaGetResponse(OCIDataResponse):
    """Response to the GroupDialableCallerIDCriteriaGetRequest.
        The response contains the Dialable Caller ID Criteria information.

    Attributes:

        description (Optional[str]):

        prefix_digits (Optional[str]):

        match_call_type (Optional[List[str]]):

        match_alternate_call_indicator (Optional[List[str]]):

        match_local_category (bool):

        match_national_category (bool):

        match_interlata_category (bool):

        match_intralata_category (bool):

        match_international_category (bool):

        match_private_category (bool):

        match_emergency_category (bool):

        match_other_category (bool):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    prefix_digits: Optional[str] = field(
        default=None, metadata={"alias": "prefixDigits"}
    )

    match_call_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchCallType"}
    )

    match_alternate_call_indicator: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchAlternateCallIndicator"}
    )

    match_local_category: bool = field(metadata={"alias": "matchLocalCategory"})

    match_national_category: bool = field(metadata={"alias": "matchNationalCategory"})

    match_interlata_category: bool = field(metadata={"alias": "matchInterlataCategory"})

    match_intralata_category: bool = field(metadata={"alias": "matchIntralataCategory"})

    match_international_category: bool = field(
        metadata={"alias": "matchInternationalCategory"}
    )

    match_private_category: bool = field(metadata={"alias": "matchPrivateCategory"})

    match_emergency_category: bool = field(metadata={"alias": "matchEmergencyCategory"})

    match_other_category: bool = field(metadata={"alias": "matchOtherCategory"})


@dataclass(kw_only=True)
class GroupDialableCallerIDGetResponse(OCIDataResponse):
    """Response to the GroupDialableCallerIDGetRequest.
        The criteria table's column headings are \"Active\", \"Name\", \"Description\", \"Prefix Digits\", \"Priority\".

    Attributes:

        use_group_criteria (bool):

        ns_screening_failure_policy (str):

        criteria_table (OCITable):

    """

    use_group_criteria: bool = field(metadata={"alias": "useGroupCriteria"})

    ns_screening_failure_policy: str = field(
        metadata={"alias": "nsScreeningFailurePolicy"}
    )

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class GroupDigitCollectionGetResponse13mp4(OCIDataResponse):
    """Response to GroupDigitCollectionGetRequest13mp4.

    Attributes:

        use_setting (str):

        access_code (Optional[str]):

        public_digit_map (Optional[str]):

        private_digit_map (Optional[str]):

    """

    use_setting: str = field(metadata={"alias": "useSetting"})

    access_code: Optional[str] = field(default=None, metadata={"alias": "accessCode"})

    public_digit_map: Optional[str] = field(
        default=None, metadata={"alias": "publicDigitMap"}
    )

    private_digit_map: Optional[str] = field(
        default=None, metadata={"alias": "privateDigitMap"}
    )


@dataclass(kw_only=True)
class GroupDirectoryNumberHuntingGetAvailableUserListResponse(OCIDataResponse):
    """Response to the GroupDirectoryNumberHuntingGetAvailableUserListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupDirectoryNumberHuntingGetResponse17sp1(OCIDataResponse):
    """Response to the GroupDirectoryNumberHuntingGetRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        agent_user_table (OCITable):

        use_terminate_call_to_agent_first (bool):

        use_original_agent_services_for_busy_and_no_answer_calls (bool):

    """

    agent_user_table: OCITable = field(metadata={"alias": "agentUserTable"})

    use_terminate_call_to_agent_first: bool = field(
        metadata={"alias": "useTerminateCallToAgentFirst"}
    )

    use_original_agent_services_for_busy_and_no_answer_calls: bool = field(
        metadata={"alias": "useOriginalAgentServicesForBusyAndNoAnswerCalls"}
    )


@dataclass(kw_only=True)
class GroupDnGetActivationListResponse(OCIDataResponse):
    """Response to the GroupDnGetActivationListRequest.
        The response contains a table with columns: \"Phone Numbers\", and \"Activated\".  \".  Phone Numbers are only returned if assigned to a user.
        The \"Phone Numbers\" column contains either a single DN or a range of DNs.
        The \"Activated\" column indicates if the phone number(s) are activated or not.

    Attributes:

        dn_table (OCITable):

    """

    dn_table: OCITable = field(metadata={"alias": "dnTable"})


@dataclass(kw_only=True)
class GroupDnGetAssignmentListResponse18(OCIDataResponse):
    """Response to the GroupDnGetAssignmentListRequest18.
        The response contains a table with columns: \"Phone Numbers\", \"Department\", \"Activated\", \"User Id\",
        \"Last Name\", \"First Name\", \"Extension\", \"Email Address\", \"User Type\", \"Country Code\", \"National Prefix\".
        The \"Phone Numbers\" column contains either a single DN or a range of DNs.
        The \"User Id\", \"Last Name\" and \"First Name\" columns contains the corresponding attributes of the user possessing the DN(s).
        For a service instance, \"Last Name\" contains the service instance name and \"First Name\" column contains the corresponding enumerated UserType value.
        The \"Department\" column contains the department of the DN, not the department of the user or service instance.
        The \"Activated\" column indicates if the DN or DN range has been activated.
        The \"User Type\" column contains the corresponding enumerated UserType value.
        The \"Country Code\" column indicates the dialing prefix for the phone number.
        The \"National Prefix\" column indicates the digit sequence to be dialed before the telephone number.
        NOTE: the same phone number can show up in the list twice if the phone number is being used as the group calling line Id.

    Attributes:

        dn_table (OCITable):

    """

    dn_table: OCITable = field(metadata={"alias": "dnTable"})


@dataclass(kw_only=True)
class GroupDnGetAssignmentPagedSortedListResponse(OCIDataResponse):
    """Response to the GroupDnGetAssignmentPagedSortedListRequest.

        The response contains a table with columns: \"Phone Numbers\", \"Department\", \"Department Type\",
        \"Parent Department\", \"Parent Department Type\", \"Activated\", \"Available\", \"User Id\",
        \"Last Name\", \"First Name\", \"Extension\", \"Email Address\", \"User Type\", \"Country Code\", \"National Prefix\".
        The \"Phone Numbers\" column contains either a single DN or a range of DNs.
        The \"User Id\", \"Last Name\" and \"First Name\" columns contains the corresponding attributes of the user possessing the DN(s).
        For a service instance, \"Last Name\" contains the service instance name and \"First Name\" column contains the corresponding enumerated UserType value.
        The \"Department\" column contains the department of the DN, not the department of the user or service instance.
        The \"Department Type\" and \"Parent Department Type\" columns will contain the values \"Enterprise\" or \"Group\".
        The \"Activated\" column indicates if the DN or DN range has been activated.  Only has a value if the DN(s) is assigned to a user.
        The \"User Type\" column contains the corresponding enumerated UserType value.
        The \"Country Code\" column indicates the dialing prefix for the phone number.
        The \"National Prefix\" column indicates the digit sequence to be dialed before the telephone number.
        NOTE: the same phone number can show up in the list twice if the phone number is being used as the group calling line Id.

    Attributes:

        dn_table (OCITable):

    """

    dn_table: OCITable = field(metadata={"alias": "dnTable"})


@dataclass(kw_only=True)
class GroupDnGetAvailableListResponse(OCIDataResponse):
    """Response to the GroupDnGetAvailableListRequest.
        The response contains the list of DNs that are assigned to a group and still available for
        assignment to users or service instances within the group.

    Attributes:

        phone_number (Optional[List[str]]):

    """

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )


@dataclass(kw_only=True)
class GroupDnGetAvailableRangesListResponse(OCIDataResponse):
    """Response to the GroupDnGetAvailableRangesListRequest.
        The response contains the list of group DNs that are not assigned to user, service instances or IMRN pool.
        The Dns are returned in a list of DNs or DN ranges and formated in E164 format for display.

    Attributes:

        phone_number (Optional[List[str]]):

    """

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )


@dataclass(kw_only=True)
class GroupDnGetDetailedAvailableListResponse(OCIDataResponse):
    """Response to the GroupDnGetDetailedAvailableListRequest.
        The response contains a table with columns: \"Phone Number\", \"Department\".
        The \"Phone Numbers\" column contains a single DN.
        The \"Department\" column contains the department of the DN if the DN is part of the department.
        The \"Activated\" column indicates if the DN has been activated.
        Only has a value if the DN(s) is assigned to a user or if \"Group
        Enable Activation Mode\" is enabled.

    Attributes:

        dn_table (OCITable):

    """

    dn_table: OCITable = field(metadata={"alias": "dnTable"})


@dataclass(kw_only=True)
class GroupDnGetListResponse(OCIDataResponse):
    """Response to the GroupDnGetListRequest.
        The response contains the list of DNs assigned to the group.

    Attributes:

        phone_number (Optional[List[str]]):

    """

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )


@dataclass(kw_only=True)
class GroupDnGetStatusListResponse(OCIDataResponse):
    """Response to GroupDnGetStatusListRequest.

    Attributes:

        dn_status (Optional[List[DNValidationStatusMessage]]):

    """

    dn_status: Optional[List[DNValidationStatusMessage]] = field(
        default=None, metadata={"alias": "dnStatus"}
    )


@dataclass(kw_only=True)
class GroupDnGetSummaryListResponse(OCIDataResponse):
    """Response to the GroupDnGetSummaryListRequest.
        The response contains a table with columns: \"Phone Numbers\", \"Assigned\".
        The \"Phone Numbers\" column contains either a single DN or a range of DNs.
        The \"Assigned\" column contains a boolean flag indicating if the DN(s) are
        currently assigned to a user or service instance.
        The \"Activated\" column indicates if the DN or DN range has been activated.
        Only has a value if the DN(s) is assigned to a user or if either “User Enable Activation mode “
        or \"Group and User Enable Activation Mode\" is enabled.

    Attributes:

        dn_table (OCITable):

    """

    dn_table: OCITable = field(metadata={"alias": "dnTable"})


@dataclass(kw_only=True)
class GroupDomainGetAssignedListResponse(OCIDataResponse):
    """Contains a simple list of all group domain names.

    Attributes:

        group_default_domain (str):

        domain (Optional[List[str]]):

    """

    group_default_domain: str = field(metadata={"alias": "groupDefaultDomain"})

    domain: Optional[List[str]] = field(default=None, metadata={"alias": "domain"})


@dataclass(kw_only=True)
class GroupDomainGetAssignedUserListResponse(OCIDataResponse):
    """Response to GroupDomainGetAssignedUserListRequest.
        The table columns are: \"User Id\", \"Last Name\", \"First Name\", \"Department\", \"Phone Number\", \"Email Address\",
        \"Service Provider Id\", \"Group Id\", \"Hiragana Last Name\" and \"Hiragana First Name\", \"Extension\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupEmergencyCallNotificationGetResponse(OCIDataResponse):
    """Response to GroupEmergencyCallNotificationGetRequest.

    Attributes:

        send_emergency_call_notification_email (bool):

        emergency_call_notify_email_address (Optional[str]):

    """

    send_emergency_call_notification_email: bool = field(
        metadata={"alias": "sendEmergencyCallNotificationEmail"}
    )

    emergency_call_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "emergencyCallNotifyEmailAddress"}
    )


@dataclass(kw_only=True)
class GroupEmergencyZonesGetHomeZoneListResponse(OCIDataResponse):
    """Response to GroupEmergencyZonesGetHomeZoneListRequest.

    Attributes:

        home_zone_ip_address (Optional[List[str]]):

        home_zone_ip_address_range (Optional[List[IPAddressRange]]):

    """

    home_zone_ip_address: Optional[List[str]] = field(
        default=None, metadata={"alias": "homeZoneIpAddress"}
    )

    home_zone_ip_address_range: Optional[List[IPAddressRange]] = field(
        default=None, metadata={"alias": "homeZoneIpAddressRange"}
    )


@dataclass(kw_only=True)
class GroupEmergencyZonesGetResponse(OCIDataResponse):
    """Response to GroupEmergencyZonesGetRequest.

    Attributes:

        is_active (bool):

        emergency_zones_prohibition (str):

        send_emergency_call_notify_email (bool):

        emergency_call_notify_email_address (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    emergency_zones_prohibition: str = field(
        metadata={"alias": "emergencyZonesProhibition"}
    )

    send_emergency_call_notify_email: bool = field(
        metadata={"alias": "sendEmergencyCallNotifyEmail"}
    )

    emergency_call_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "emergencyCallNotifyEmailAddress"}
    )


@dataclass(kw_only=True)
class GroupEndpointGetListResponse(OCIDataResponse):
    """Response to GroupEndpointGetListRequest.
        The column headings for the endpointTable are:
          \"Line/Port\", \"Last Name\", \"First Name\",  \"User Id\", \"User Type\", \"Phone Number\", \"Extension\", \"Device Type\", \"Device Name\", \"Net Address\", \"MAC Address\", \"Department\", \"Email Address\".
          Possible values for User Type are \"User\", \"CCBasic\", \"CCStandard\", \"CCPremium\", \"RP\", \"MOH\", \"MOHVideo\".

    Attributes:

        endpoint_table (OCITable):

    """

    endpoint_table: OCITable = field(metadata={"alias": "endpointTable"})


@dataclass(kw_only=True)
class GroupEnhancedCallLogsSchemaInstanceGetResponse(OCIDataResponse):
    """Response to GroupEnhancedCallLogsSchemaInstanceGetRequest.

    Attributes:

        name (Optional[str]):

    """

    name: Optional[str] = field(default=None, metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupEnterpriseTrunkGetAvailableTrunkGroupListResponse(OCIDataResponse):
    """Response to GroupEnterpriseTrunkGetAvailableTrunkGroupListRequest.

    Attributes:

        trunk_group_name (Optional[List[str]]):

    """

    trunk_group_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "trunkGroupName"}
    )


@dataclass(kw_only=True)
class GroupEnterpriseTrunkGetAvailableUserListResponse(OCIDataResponse):
    """Response to GroupEnterpriseTrunkGetAvailableUserListRequest.
        The column headings for the enterpriseTrunkUserTable are: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupEnterpriseTrunkGetListResponse(OCIDataResponse):
    """Response to GroupEnterpriseTrunkGetListRequest.
        Contains a table of enterprise trunks defined in the enterprise
        The column headings are: \"Enterprise Trunk Name\", \"Routing Type\"

    Attributes:

        enterprise_trunk_table (OCITable):

    """

    enterprise_trunk_table: OCITable = field(metadata={"alias": "enterpriseTrunkTable"})


@dataclass(kw_only=True)
class GroupEnterpriseTrunkGetResponse22(OCIDataResponse):
    """Response to GroupEnterpriseTrunkGetRequest22.

    Attributes:

        maximum_reroute_attempts (int):

        route_exhaustion_action (str):

        route_exhaustion_forward_address (Optional[str]):

        ordered_routing (Optional[object]):

        priority_weighted_routing (Optional[object]):

        enable_capacity_management (bool):

        max_active_calls (Optional[int]):

        capacity_exceeded_trap_initial_calls (Optional[int]):

        capacity_exceeded_trap_offset_calls (Optional[int]):

        maximum_active_incoming_calls_allowed (Optional[int]):

        maximum_active_outgoing_calls_allowed (Optional[int]):

        minimum_active_calls_reserved (Optional[int]):

    """

    maximum_reroute_attempts: int = field(metadata={"alias": "maximumRerouteAttempts"})

    route_exhaustion_action: str = field(metadata={"alias": "routeExhaustionAction"})

    route_exhaustion_forward_address: Optional[str] = field(
        default=None, metadata={"alias": "routeExhaustionForwardAddress"}
    )

    ordered_routing: Optional[object] = field(
        default=None, metadata={"alias": "orderedRouting"}
    )

    priority_weighted_routing: Optional[object] = field(
        default=None, metadata={"alias": "priorityWeightedRouting"}
    )

    enable_capacity_management: bool = field(
        metadata={"alias": "enableCapacityManagement"}
    )

    max_active_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxActiveCalls"}
    )

    capacity_exceeded_trap_initial_calls: Optional[int] = field(
        default=None, metadata={"alias": "capacityExceededTrapInitialCalls"}
    )

    capacity_exceeded_trap_offset_calls: Optional[int] = field(
        default=None, metadata={"alias": "capacityExceededTrapOffsetCalls"}
    )

    maximum_active_incoming_calls_allowed: Optional[int] = field(
        default=None, metadata={"alias": "maximumActiveIncomingCallsAllowed"}
    )

    maximum_active_outgoing_calls_allowed: Optional[int] = field(
        default=None, metadata={"alias": "maximumActiveOutgoingCallsAllowed"}
    )

    minimum_active_calls_reserved: Optional[int] = field(
        default=None, metadata={"alias": "minimumActiveCallsReserved"}
    )


@dataclass(kw_only=True)
class GroupEnterpriseTrunkGetUserListResponse(OCIDataResponse):
    """Response to GroupEnterpriseTrunkGetUserListRequest.
        The column headings for the enterpriseTrunkUserTable are: \"User Id\", \"Last Name\", \"First Name\", \"Phone Number\", \"Alternate Trunk Identity\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Extension\", \"Department\", \"Email Address\" and \"Route List Assigned\".

    Attributes:

        enterprise_trunk_user_table (OCITable):

    """

    enterprise_trunk_user_table: OCITable = field(
        metadata={"alias": "enterpriseTrunkUserTable"}
    )


@dataclass(kw_only=True)
class GroupExchangeIntegrationGetResponse(OCIDataResponse):
    """Response to GroupExchangeIntegrationGetRequest.

    Attributes:

        enable_exchange_integration (bool):

        exchange_url (Optional[str]):

        exchange_user_name (Optional[str]):

    """

    enable_exchange_integration: bool = field(
        metadata={"alias": "enableExchangeIntegration"}
    )

    exchange_url: Optional[str] = field(default=None, metadata={"alias": "exchangeURL"})

    exchange_user_name: Optional[str] = field(
        default=None, metadata={"alias": "exchangeUserName"}
    )


@dataclass(kw_only=True)
class GroupExtensionLengthGetResponse22(OCIDataResponse):
    """Response to GroupExtensionLengthGetRequest22.

        The following elements are only used in AS data mode and not returned in XS data mode:
           useExterpriseExtensionLengthSetting

    Attributes:

        min_extension_length (int):

        max_extension_length (int):

        default_extension_length (int):

        use_enterprise_extension_length_setting (Optional[bool]):

    """

    min_extension_length: int = field(metadata={"alias": "minExtensionLength"})

    max_extension_length: int = field(metadata={"alias": "maxExtensionLength"})

    default_extension_length: int = field(metadata={"alias": "defaultExtensionLength"})

    use_enterprise_extension_length_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useEnterpriseExtensionLengthSetting"}
    )


@dataclass(kw_only=True)
class GroupFeatureAccessCodeGetResponse21(OCIDataResponse):
    """Response to the GroupFeatureAccessCodeGetRequest21.

        In release 20 the \"Call Recording\" FAC name is changed to
        \"Call Recording - Start\".

    Attributes:

        use_feature_access_code_level (str):

        feature_access_code (Optional[List[FeatureAccessCodeReadEntry]]):

    """

    use_feature_access_code_level: str = field(
        metadata={"alias": "useFeatureAccessCodeLevel"}
    )

    feature_access_code: Optional[List[FeatureAccessCodeReadEntry]] = field(
        default=None, metadata={"alias": "featureAccessCode"}
    )


@dataclass(kw_only=True)
class GroupFileRepositoryDeviceUserGetListResponse(OCIDataResponse):
    """Response to GroupFileRepositoryDeviceUserGetListRequest.
        Contains a table with column headings : \"User Name\",\"Allow Delete\",\"Allow Get\",\"Allow Put\" in a row for each file repository service provider user.

    Attributes:

        file_repository_user_table (OCITable):

    """

    file_repository_user_table: OCITable = field(
        metadata={"alias": "fileRepositoryUserTable"}
    )


@dataclass(kw_only=True)
class GroupFindMeFollowMeAlertingGroupGetAvailableUserListResponse(OCIDataResponse):
    """Response to the GroupFindMeFollowMeAlertingGroupGetAvailableUserListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\",
        \"Hiragana First Name\", \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupFindMeFollowMeGetAlertingGroupListResponse(OCIDataResponse):
    """Response to the GroupFindMeFollowMeGetAlertingGroupListRequest.
        Contains a table with column headings:
        \"Name\", \"Priority\".

    Attributes:

        alerting_group_table (OCITable):

    """

    alerting_group_table: OCITable = field(metadata={"alias": "alertingGroupTable"})


@dataclass(kw_only=True)
class GroupFindMeFollowMeGetAlertingGroupResponse(OCIDataResponse):
    """Response to GroupFindMeFollowMeGetAlertingGroupRequest.
        Contains the alerting group information.
              The user table’s column headings are: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\" and \"Hiragana First Name\", \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".
        The criteria table's column headings are: \"Is Active\", \"Criteria Name\", \"Time Schedule\", \"Calls From\", \"Blacklisted\", \"Holiday Schedule\"\", \"Calls To Type\", \"Calls To Number\" and \"Calls To Extension\".
        The possible values for the \"Calls To Type\" column are the following or a combination of them separated by comma:
          - Primary
          - Alternate X (where x is a number between 1 and 10)
          The possible values for the \"Calls To Number\" column are the following or a combination of them separated by comma:
          - The value of the phone number for the corresponding Calls To Type, when the number is available. i.e. Alternate 1 may have extension, but no number.
          - When no number is available a blank space is provided instead.
        The possible values for the \"Calls To Extension\" column are the following or a combination of them separated by comma:
          - The value of the extension for the corresponding Calls To Type, when the extension is available. i.e. Primary may have number, but no extension.
          - When no extension is available a blank space is provided instead.

    Attributes:

        alerting_group_description (Optional[str]):

        use_diversion_inhibitor (bool):

        answer_confirmation_required (bool):

        number_of_rings (int):

        phone_number (Optional[List[str]]):

        user_table (OCITable):

        criteria_table (OCITable):

    """

    alerting_group_description: Optional[str] = field(
        default=None, metadata={"alias": "alertingGroupDescription"}
    )

    use_diversion_inhibitor: bool = field(metadata={"alias": "useDiversionInhibitor"})

    answer_confirmation_required: bool = field(
        metadata={"alias": "answerConfirmationRequired"}
    )

    number_of_rings: int = field(metadata={"alias": "numberOfRings"})

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )

    user_table: OCITable = field(metadata={"alias": "userTable"})

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class GroupFindMeFollowMeGetAlertingGroupSelectiveCriteriaResponse21(OCIDataResponse):
    """Response to GroupFindMeFollowMeGetAlertingGroupSelectiveCriteriaRequest21.
        Contains the alerting group selective criteria information.

    Attributes:

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria (CriteriaFromDn):

        call_to_number (Optional[List[CallToNumber]]):

    """

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria: CriteriaFromDn = field(metadata={"alias": "fromDnCriteria"})

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class GroupFindMeFollowMeGetInstanceListResponse(OCIDataResponse):
    """Response to the GroupFindMeFollowMeGetInstanceListRequest.
        Contains a table with column headings:
        \"Service User Id\", \"Name\", \"Phone Number\", \"Extension\", \"Department\", \"Is Active\".
        The column value for \"Is Active\" can either be true, or false.

    Attributes:

        find_me_follow_me_table (OCITable):

    """

    find_me_follow_me_table: OCITable = field(metadata={"alias": "findMeFollowMeTable"})


@dataclass(kw_only=True)
class GroupFindMeFollowMeGetInstanceResponse19sp1(OCIDataResponse):
    """Response to GroupFindMeFollowMeGetInstanceRequest19sp1.
        Contains the service profile information.

    Attributes:

        service_instance_profile (ServiceInstanceReadProfile19sp1):

        network_class_of_service (Optional[str]):

    """

    service_instance_profile: ServiceInstanceReadProfile19sp1 = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupFlexibleSeatingAccessDeviceGetListResponse(OCIDataResponse):
    """Response to GroupFlexibleSeatingAccessDeviceGetListRequest

    Attributes:

        available_access_device (Optional[List[object]]):

    """

    available_access_device: Optional[List[object]] = field(
        default=None, metadata={"alias": "availableAccessDevice"}
    )


@dataclass(kw_only=True)
class GroupFlexibleSeatingHostGetInstanceListResponse(OCIDataResponse):
    """Response to the GroupFlexibleSeatingHostGetInstanceListRequest.
        Contains a table with column headings:
        \"Service User Id\", \"Name\", \"Phone Number\", \"Extension\", \"Department\", \"Is Active\".
        The column value for \"Is Active\" can either be true, or false.

    Attributes:

        flexible_seating_host_table (OCITable):

    """

    flexible_seating_host_table: OCITable = field(
        metadata={"alias": "flexibleSeatingHostTable"}
    )


@dataclass(kw_only=True)
class GroupFlexibleSeatingHostGetInstanceResponse22(OCIDataResponse):
    """Response to GroupFlexibleSeatingHostGetInstanceRequest22.
        Contains the service profile and access device information.

    Attributes:

        service_instance_profile (ServiceInstanceReadProfile19sp1):

        default_alias (str):

        access_device_endpoint (Optional[AccessDeviceMultipleContactEndpointRead22]):

        network_class_of_service (Optional[str]):

    """

    service_instance_profile: ServiceInstanceReadProfile19sp1 = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    default_alias: str = field(metadata={"alias": "defaultAlias"})

    access_device_endpoint: Optional[AccessDeviceMultipleContactEndpointRead22] = field(
        default=None, metadata={"alias": "accessDeviceEndpoint"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupFlexibleSeatingHostGuestAssociationGetResponse(OCIDataResponse):
    """Response to GroupFlexibleSeatingHostGuestAssociationGetRequest.

    Attributes:

        enforce_association_limit (bool):

        association_limit_hours (int):

        access_level (str):

        guest_last_name (Optional[str]):

        guest_first_name (Optional[str]):

        guest_phone_number (Optional[str]):

        guest_extension (Optional[str]):

        guest_location_dialing_code (Optional[str]):

        guest_association_date_time (Optional[str]):

    """

    enforce_association_limit: bool = field(
        metadata={"alias": "enforceAssociationLimit"}
    )

    association_limit_hours: int = field(metadata={"alias": "associationLimitHours"})

    access_level: str = field(metadata={"alias": "accessLevel"})

    guest_last_name: Optional[str] = field(
        default=None, metadata={"alias": "guestLastName"}
    )

    guest_first_name: Optional[str] = field(
        default=None, metadata={"alias": "guestFirstName"}
    )

    guest_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "guestPhoneNumber"}
    )

    guest_extension: Optional[str] = field(
        default=None, metadata={"alias": "guestExtension"}
    )

    guest_location_dialing_code: Optional[str] = field(
        default=None, metadata={"alias": "guestLocationDialingCode"}
    )

    guest_association_date_time: Optional[str] = field(
        default=None, metadata={"alias": "guestAssociationDateTime"}
    )


@dataclass(kw_only=True)
class GroupFlexibleSeatingHostRoutingPoliciesGetResponse(OCIDataResponse):
    """Response to the GroupFlexibleSeatingHostRoutingPoliciesGetRequest.

    Attributes:

        allow_emergency_calls (bool):

        allow_calls_to_voice_portal (bool):

    """

    allow_emergency_calls: bool = field(metadata={"alias": "allowEmergencyCalls"})

    allow_calls_to_voice_portal: bool = field(
        metadata={"alias": "allowCallsToVoicePortal"}
    )


@dataclass(kw_only=True)
class GroupGetAvailableLeafDeviceListResponse22(OCIDataResponse):
    """Response to GroupGetAvailableLeafDeviceListRequest22.

    Attributes:

        leaf_device_key (Optional[List[AccessDeviceKey]]):

        support_links (Optional[List[str]]):

    """

    leaf_device_key: Optional[List[AccessDeviceKey]] = field(
        default=None, metadata={"alias": "leafDeviceKey"}
    )

    support_links: Optional[List[str]] = field(
        default=None, metadata={"alias": "supportLinks"}
    )


@dataclass(kw_only=True)
class GroupGetAvailableTreeDeviceListResponse(OCIDataResponse):
    """Response to GroupGetAvailableTreeDeviceListRequest.

    Attributes:

        tree_device_info (Optional[List[TreeDeviceInfo]]):

    """

    tree_device_info: Optional[List[TreeDeviceInfo]] = field(
        default=None, metadata={"alias": "treeDeviceInfo"}
    )


@dataclass(kw_only=True)
class GroupGetDefaultResponse(OCIDataResponse):
    """Response to the GroupGetDefaultRequest. All values are default values for a group's profile.

    Attributes:

        default_domain (str):

        user_limit (int):

        time_zone (str):

        time_zone_display_name (str):

    """

    default_domain: str = field(metadata={"alias": "defaultDomain"})

    user_limit: int = field(metadata={"alias": "userLimit"})

    time_zone: str = field(metadata={"alias": "timeZone"})

    time_zone_display_name: str = field(metadata={"alias": "timeZoneDisplayName"})


@dataclass(kw_only=True)
class GroupGetListInServiceProviderPagedSortedListResponse(OCIDataResponse):
    """Response to GroupGetListInServiceProviderPagedSortedListRequest.
        Contains a table with column headings: \"Group Id\", \"Group Name\", \"User Limit\" and \"Group External Id\"
        and a row for each group.

        The following columns are only populated in AS data mode:
          \"Group External Id\".

    Attributes:

        group_table (OCITable):

    """

    group_table: OCITable = field(metadata={"alias": "groupTable"})


@dataclass(kw_only=True)
class GroupGetListInServiceProviderResponse(OCIDataResponse):
    """Response to GroupGetListInServiceProviderRequest.
        Contains a 3 column table with column headings: \"Group Id\", \"Group Name\", \"User Limit\"
        and a row for each group.

    Attributes:

        group_table (OCITable):

    """

    group_table: OCITable = field(metadata={"alias": "groupTable"})


@dataclass(kw_only=True)
class GroupGetListInSystemResponse(OCIDataResponse):
    """Response to GroupGetListInSystemRequest.
        Contains a table with column headings: \"Group Id\", \"Group Name\", \"User Limit\", \"Organization Id\", \"Organization Type\", \"Reseller Id\"
        and a row for each group.
        The \"Organization Id\" column is populated with either a service provider Id or an enterprise Id.
        The \"Organization Type\" column is populated with one of the enumerated strings defined in the
        OrganizationType OCI data type.  Please see OCISchemaDataTypes.xsd for details on OrganizationType.

        The following columns are only returned in AS data mode:
          Reseller Id

    Attributes:

        group_table (OCITable):

    """

    group_table: OCITable = field(metadata={"alias": "groupTable"})


@dataclass(kw_only=True)
class GroupGetResponse22V5(OCIDataResponse):
    """Response to the GroupGetRequest22V5.
        The response contains the group's profile information.
        The following elements are not returned in AS and XS data mode:
        servicePolicy,
        callProcessingSliceId,
        provisioningSliceId,
        subscriberPartition,
        preferredDataCenter.

        The following elements are only used in XS data mode and not
        returned in AS data mode:
        preferredDataCenter.

        The following data elements are only used in AS data mode and not returned
        in XS data mode:
        resellerId,
        groupExternalId.

        The following elements are only used in XS data mode and not returned
        in AS data mode:
        defaultUserCallingLineIdPhoneNumber.

    Attributes:

        default_domain (str):

        user_limit (int):

        user_count (int):

        group_name (Optional[str]):

        calling_line_id_name (Optional[str]):

        calling_line_id_phone_number (Optional[str]):

        calling_line_id_display_phone_number (Optional[str]):

        time_zone (str):

        time_zone_display_name (str):

        location_dialing_code (Optional[str]):

        contact (Optional[Contact]):

        address (Optional[StreetAddress]):

        service_policy (Optional[str]):

        call_processing_slice_id (Optional[str]):

        provisioning_slice_id (Optional[str]):

        subscriber_partition (Optional[str]):

        preferred_data_center (Optional[str]):

        reseller_id (Optional[str]):

        default_user_calling_line_id_phone_number (Optional[str]):

        service_provider_id (str):

        group_id (str):

        group_external_id (Optional[str]):

    """

    default_domain: str = field(metadata={"alias": "defaultDomain"})

    user_limit: int = field(metadata={"alias": "userLimit"})

    user_count: int = field(metadata={"alias": "userCount"})

    group_name: Optional[str] = field(default=None, metadata={"alias": "groupName"})

    calling_line_id_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdName"}
    )

    calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )

    calling_line_id_display_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdDisplayPhoneNumber"}
    )

    time_zone: str = field(metadata={"alias": "timeZone"})

    time_zone_display_name: str = field(metadata={"alias": "timeZoneDisplayName"})

    location_dialing_code: Optional[str] = field(
        default=None, metadata={"alias": "locationDialingCode"}
    )

    contact: Optional[Contact] = field(default=None, metadata={"alias": "contact"})

    address: Optional[StreetAddress] = field(
        default=None, metadata={"alias": "address"}
    )

    service_policy: Optional[str] = field(
        default=None, metadata={"alias": "servicePolicy"}
    )

    call_processing_slice_id: Optional[str] = field(
        default=None, metadata={"alias": "callProcessingSliceId"}
    )

    provisioning_slice_id: Optional[str] = field(
        default=None, metadata={"alias": "provisioningSliceId"}
    )

    subscriber_partition: Optional[str] = field(
        default=None, metadata={"alias": "subscriberPartition"}
    )

    preferred_data_center: Optional[str] = field(
        default=None, metadata={"alias": "preferredDataCenter"}
    )

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    default_user_calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "defaultUserCallingLineIdPhoneNumber"}
    )

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    group_external_id: Optional[str] = field(
        default=None, metadata={"alias": "groupExternalId"}
    )


@dataclass(kw_only=True)
class GroupGetUserServiceAssignedUserListResponse(OCIDataResponse):
    """Return a table containing the list of users assigned the user service
        or service pack.  The table contains columns: \"User Id\", \"Last Name\",
        \"First Name\", \"Department\", \"Phone Number\", \"Email Address\", \"Hiragana Last Name\";
        \"Hiragana First Name\", \"Extension\".
        This is a response to the GroupGetUserServiceAssignedUserListRequest.

    Attributes:

        user_list_table (OCITable):

    """

    user_list_table: OCITable = field(metadata={"alias": "userListTable"})


@dataclass(kw_only=True)
class GroupGroupNightForwardingGetResponse(OCIDataResponse):
    """Response to GroupGroupNightForwardingGetRequest.

    Attributes:

        night_forwarding (str):

        business_hours (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        forward_to_phone_number (Optional[str]):

    """

    night_forwarding: str = field(metadata={"alias": "nightForwarding"})

    business_hours: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "businessHours"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )


@dataclass(kw_only=True)
class GroupGroupPagingGetAvailableOriginatorListResponse(OCIDataResponse):
    """Response to the GroupGroupPagingGetAvailableOriginatorListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\" and \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupGroupPagingGetAvailableTargetListResponse(OCIDataResponse):
    """Response to the GroupGroupPagingGetAvailableTargetListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\" and \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupGroupPagingGetInstanceListResponse(OCIDataResponse):
    """Response to the GroupGroupPagingGetInstanceListRequest.
        Contains a table with column headings:
        \"Service User Id\", \"Name\", \"Phone Number\", \"Extension\", \"Department\", \"Is Active\".
        The column value for \"Is Active\" can either be true, or false.

    Attributes:

        paging_group_table (OCITable):

    """

    paging_group_table: OCITable = field(metadata={"alias": "pagingGroupTable"})


@dataclass(kw_only=True)
class GroupGroupPagingGetInstanceResponse19sp1(OCIDataResponse):
    """Response to GroupGroupPagingGetInstanceRequest19sp1.
        Contains the service profile information.

        The following element is only used in AS data mode and not returned in XS data mode :
           networkClassOfService

    Attributes:

        service_instance_profile (ServiceInstanceReadProfile19sp1):

        confirmation_tone_timeout_seconds (int):

        deliver_originator_clid_instead (bool):

        originator_clid_prefix (Optional[str]):

        network_class_of_service (Optional[str]):

    """

    service_instance_profile: ServiceInstanceReadProfile19sp1 = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    confirmation_tone_timeout_seconds: int = field(
        metadata={"alias": "confirmationToneTimeoutSeconds"}
    )

    deliver_originator_clid_instead: bool = field(
        metadata={"alias": "deliverOriginatorCLIDInstead"}
    )

    originator_clid_prefix: Optional[str] = field(
        default=None, metadata={"alias": "originatorCLIDPrefix"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupGroupPagingGetOriginatorListResponse(OCIDataResponse):
    """Response to the GroupGroupPagingGetOriginatorListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        originator_table (OCITable):

    """

    originator_table: OCITable = field(metadata={"alias": "originatorTable"})


@dataclass(kw_only=True)
class GroupGroupPagingGetTargetListResponse(OCIDataResponse):
    """Response to the GroupGroupPagingGetTargetListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        target_table (OCITable):

    """

    target_table: OCITable = field(metadata={"alias": "targetTable"})


@dataclass(kw_only=True)
class GroupGroupPagingTargetsCapacityGetResponse22(OCIDataResponse):
    """Response to GroupGroupPagingTargetsCapacityGetRequest22.

    Attributes:

        maximum_target_users_from_service_provider (int):

        maximum_target_users (int):

    """

    maximum_target_users_from_service_provider: int = field(
        metadata={"alias": "maximumTargetUsersFromServiceProvider"}
    )

    maximum_target_users: int = field(metadata={"alias": "maximumTargetUsers"})


@dataclass(kw_only=True)
class GroupHuntGroupGetAvailableUserListResponse(OCIDataResponse):
    """Response to the GroupHuntGroupGetAvailableUserListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupHuntGroupGetAvailableUserPagedSortedListResponse(OCIDataResponse):
    """Response to the GroupHuntGroupGetAvailableUserPagedSortedListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Is Phone Number Activated\", \"Country Code\",\"National Prefix\", \"Extension\", \"Department\", \"Department Type\",
        \"Parent Department\", \"Parent Department Type\", \"Email Address\", \"IMP Id\", \"Mobile Number\", \"Group Id\", \"Group Name\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupHuntGroupGetInstanceListResponse(OCIDataResponse):
    """Response to the GroupHuntGroupGetInstanceListRequest.
        Contains a table with column headings:
        \"Service User Id\", \"Name\", \"Phone Number\", \"Extension\", \"Department\", \"Is Active\", \"Policy\".
        The column values for \"Is Active\" can either be true, or false.
        NOTE: prior to release 14, the policy column did not match the HuntPolicy enumerated type.

    Attributes:

        hunt_group_table (OCITable):

    """

    hunt_group_table: OCITable = field(metadata={"alias": "huntGroupTable"})


@dataclass(kw_only=True)
class GroupHuntGroupGetInstancePagedSortedListResponse(OCIDataResponse):
    """Response to the GroupHuntGroupGetInstancePagedSortedListRequest.
        Contains a table with column headings:
        \"Service User Id\", \"Name\", \"Phone Number\", \"Is Phone Number Activated\",
        \"Country Code\",\"National Prefix\", \"Extension\", \"Department\", \"Department Type\",
        \"Parent Department\", \"Parent Department Type\", \"Is Active\", \"Policy\".
        The column values for \"Is Active\" can either be true, or false.
        NOTE: prior to release 14, the policy column did not match the HuntPolicy enumerated type.

    Attributes:

        hunt_group_table (OCITable):

    """

    hunt_group_table: OCITable = field(metadata={"alias": "huntGroupTable"})


@dataclass(kw_only=True)
class GroupHuntGroupGetInstanceResponse20(OCIDataResponse):
    """Response to GroupHuntGroupGetInstanceRequest20.
        Contains the service profile information and a table of assigned users.
        The table has column headings: \"User Id\", \"Last Name\", \"First Name\",
        \"Hiragana Last Name\", \"Hiragana First Name\", \"Weight\", \"Phone Number\",
        \"Extension\", \"Department\", \"Email Address\", \"Is Phone Number Activated\",
        \"Country Code\",\"National Prefix\", \"Department Name\" ,\"Department Type\",
        \"Parent Department\", \"Parent Department Type\",\"Group Id\",\"Group Name\".
        The following elements are only used in AS data mode:
           useSystemHuntGroupCLIDSetting
           includeHuntGroupNameInCLID
           Is Phone Number Activated
           Country Code
           National Prefix
           Department Name
           Department Type
           Parent Department
           Parent Department Type
           Group Id
           Group Name

    Attributes:

        service_instance_profile (ServiceInstanceReadProfile19sp1):

        policy (str):

        hunt_after_no_answer (bool):

        no_answer_number_of_rings (int):

        forward_after_timeout (bool):

        forward_timeout_seconds (int):

        forward_to_phone_number (Optional[str]):

        agent_user_table (OCITable):

        allow_call_waiting_for_agents (bool):

        use_system_hunt_group_clid_setting (bool):

        include_hunt_group_name_in_clid (bool):

        enable_not_reachable_forwarding (bool):

        not_reachable_forward_to_phone_number (Optional[str]):

        make_busy_when_not_reachable (bool):

        allow_members_to_control_group_busy (bool):

        enable_group_busy (bool):

        apply_group_busy_when_terminating_to_agent (bool):

        network_class_of_service (Optional[str]):

    """

    service_instance_profile: ServiceInstanceReadProfile19sp1 = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    policy: str = field(metadata={"alias": "policy"})

    hunt_after_no_answer: bool = field(metadata={"alias": "huntAfterNoAnswer"})

    no_answer_number_of_rings: int = field(metadata={"alias": "noAnswerNumberOfRings"})

    forward_after_timeout: bool = field(metadata={"alias": "forwardAfterTimeout"})

    forward_timeout_seconds: int = field(metadata={"alias": "forwardTimeoutSeconds"})

    forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    agent_user_table: OCITable = field(metadata={"alias": "agentUserTable"})

    allow_call_waiting_for_agents: bool = field(
        metadata={"alias": "allowCallWaitingForAgents"}
    )

    use_system_hunt_group_clid_setting: bool = field(
        metadata={"alias": "useSystemHuntGroupCLIDSetting"}
    )

    include_hunt_group_name_in_clid: bool = field(
        metadata={"alias": "includeHuntGroupNameInCLID"}
    )

    enable_not_reachable_forwarding: bool = field(
        metadata={"alias": "enableNotReachableForwarding"}
    )

    not_reachable_forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "notReachableForwardToPhoneNumber"}
    )

    make_busy_when_not_reachable: bool = field(
        metadata={"alias": "makeBusyWhenNotReachable"}
    )

    allow_members_to_control_group_busy: bool = field(
        metadata={"alias": "allowMembersToControlGroupBusy"}
    )

    enable_group_busy: bool = field(metadata={"alias": "enableGroupBusy"})

    apply_group_busy_when_terminating_to_agent: bool = field(
        metadata={"alias": "applyGroupBusyWhenTerminatingToAgent"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupIMRNGetListResponse(OCIDataResponse):
    """Response to GroupIMRNGetListRequest.

    Attributes:

        imrn (Optional[List[str]]):

    """

    imrn: Optional[List[str]] = field(default=None, metadata={"alias": "imrn"})


@dataclass(kw_only=True)
class GroupIncomingCallingPlanGetListResponse(OCIDataResponse):
    """Response to GroupIncomingCallingPlanGetListRequest.

    Attributes:

        group_permissions (IncomingCallingPlanPermissions):

        department_permissions (Optional[List[IncomingCallingPlanDepartmentPermissions]]):

    """

    group_permissions: IncomingCallingPlanPermissions = field(
        metadata={"alias": "groupPermissions"}
    )

    department_permissions: Optional[List[IncomingCallingPlanDepartmentPermissions]] = (
        field(default=None, metadata={"alias": "departmentPermissions"})
    )


@dataclass(kw_only=True)
class GroupInstantGroupCallGetInstanceListResponse(OCIDataResponse):
    """Response to the GroupInstantGroupCallGetInstanceListRequest.
        Contains a 6 column table with column headings:
        \"Service User Id\", \"Name\", \"Phone Number\", \"Extension\", \"Department\", \"Is Active\".
        The column values for Is Active can either be true, or false.

    Attributes:

        instant_group_call_table (OCITable):

    """

    instant_group_call_table: OCITable = field(
        metadata={"alias": "instantGroupCallTable"}
    )


@dataclass(kw_only=True)
class GroupInstantGroupCallGetInstanceResponse19sp1(OCIDataResponse):
    """Response to GroupInstantGroupCallGetInstanceRequest19sp1.
        Contains the service profile information and a list of phone numbers.

    Attributes:

        service_instance_profile (ServiceInstanceReadProfile19sp1):

        destination_phone_number (Optional[List[str]]):

        is_answer_timeout_enabled (bool):

        answer_timeout_minutes (Optional[int]):

        network_class_of_service (Optional[str]):

    """

    service_instance_profile: ServiceInstanceReadProfile19sp1 = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    destination_phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "destinationPhoneNumber"}
    )

    is_answer_timeout_enabled: bool = field(
        metadata={"alias": "isAnswerTimeoutEnabled"}
    )

    answer_timeout_minutes: Optional[int] = field(
        default=None, metadata={"alias": "answerTimeoutMinutes"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class GroupIntegratedIMPGetResponse23(OCIDataResponse):
    """Response to the GroupIntegratedIMPGetRequest23.
        The response contains the group Integrated IMP service attributes.

        The following elements are only returned to a reseller administrator or above:
          useServiceProviderMessagingServer
          provisioningUrl
          provisioningUserId

    Attributes:

        use_service_provider_setting (bool):

        service_domain (Optional[str]):

        effective_service_domain (Optional[str]):

        add_service_provider_in_imp_user_id (bool):

        default_imp_id_type (str):

        use_service_provider_messaging_server (Optional[bool]):

        provisioning_url (Optional[str]):

        provisioning_user_id (Optional[str]):

    """

    use_service_provider_setting: bool = field(
        metadata={"alias": "useServiceProviderSetting"}
    )

    service_domain: Optional[str] = field(
        default=None, metadata={"alias": "serviceDomain"}
    )

    effective_service_domain: Optional[str] = field(
        default=None, metadata={"alias": "effectiveServiceDomain"}
    )

    add_service_provider_in_imp_user_id: bool = field(
        metadata={"alias": "addServiceProviderInIMPUserId"}
    )

    default_imp_id_type: str = field(metadata={"alias": "defaultImpIdType"})

    use_service_provider_messaging_server: Optional[bool] = field(
        default=None, metadata={"alias": "useServiceProviderMessagingServer"}
    )

    provisioning_url: Optional[str] = field(
        default=None, metadata={"alias": "provisioningUrl"}
    )

    provisioning_user_id: Optional[str] = field(
        default=None, metadata={"alias": "provisioningUserId"}
    )


@dataclass(kw_only=True)
class GroupInterceptGroupGetResponse21sp1(OCIDataResponse):
    """Response to the GroupInterceptGroupGetRequest21sp1.

        The following elements are only used in AS data mode:
          exemptInboundMobilityCalls
          exemptOutboundMobilityCalls
          disableParallelRingingToNetworkLocations

    Attributes:

        is_active (bool):

        announcement_selection (str):

        audio_file_description (Optional[str]):

        audio_media_type (Optional[str]):

        video_file_description (Optional[str]):

        video_media_type (Optional[str]):

        inbound_call_mode (str):

        alternate_blocking_announcement (bool):

        exempt_inbound_mobility_calls (bool):

        disable_parallel_ringing_to_network_locations (bool):

        route_to_voice_mail (bool):

        play_new_phone_number (bool):

        new_phone_number (Optional[str]):

        transfer_on_zero_to_phone_number (bool):

        transfer_phone_number (Optional[str]):

        outbound_call_mode (str):

        exempt_outbound_mobility_calls (bool):

        reroute_outbound_calls (bool):

        outbound_reroute_phone_number (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    announcement_selection: str = field(metadata={"alias": "announcementSelection"})

    audio_file_description: Optional[str] = field(
        default=None, metadata={"alias": "audioFileDescription"}
    )

    audio_media_type: Optional[str] = field(
        default=None, metadata={"alias": "audioMediaType"}
    )

    video_file_description: Optional[str] = field(
        default=None, metadata={"alias": "videoFileDescription"}
    )

    video_media_type: Optional[str] = field(
        default=None, metadata={"alias": "videoMediaType"}
    )

    inbound_call_mode: str = field(metadata={"alias": "inboundCallMode"})

    alternate_blocking_announcement: bool = field(
        metadata={"alias": "alternateBlockingAnnouncement"}
    )

    exempt_inbound_mobility_calls: bool = field(
        metadata={"alias": "exemptInboundMobilityCalls"}
    )

    disable_parallel_ringing_to_network_locations: bool = field(
        metadata={"alias": "disableParallelRingingToNetworkLocations"}
    )

    route_to_voice_mail: bool = field(metadata={"alias": "routeToVoiceMail"})

    play_new_phone_number: bool = field(metadata={"alias": "playNewPhoneNumber"})

    new_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "newPhoneNumber"}
    )

    transfer_on_zero_to_phone_number: bool = field(
        metadata={"alias": "transferOnZeroToPhoneNumber"}
    )

    transfer_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    outbound_call_mode: str = field(metadata={"alias": "outboundCallMode"})

    exempt_outbound_mobility_calls: bool = field(
        metadata={"alias": "exemptOutboundMobilityCalls"}
    )

    reroute_outbound_calls: bool = field(metadata={"alias": "rerouteOutboundCalls"})

    outbound_reroute_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "outboundReroutePhoneNumber"}
    )


@dataclass(kw_only=True)
class GroupInventoryReportGetResponse(OCIDataResponse):
    """Response to GroupInventoryReportGetRequest.

    Attributes:

        inventory_report_table (OCITable):

    """

    inventory_report_table: OCITable = field(metadata={"alias": "inventoryReportTable"})


@dataclass(kw_only=True)
class GroupMWIDeliveryToMobileEndpointCustomTemplateGetResponse23(OCIDataResponse):
    """Response to the GroupMWIDeliveryToMobileEndpointCustomTemplateGetRequest23.

    Attributes:

        is_enabled (bool):

        month_abbreviations (Optional[str]):

        template_body (MWIDeliveryToMobileEndpointTemplateBody23):

    """

    is_enabled: bool = field(metadata={"alias": "isEnabled"})

    month_abbreviations: Optional[str] = field(
        default=None, metadata={"alias": "monthAbbreviations"}
    )

    template_body: MWIDeliveryToMobileEndpointTemplateBody23 = field(
        metadata={"alias": "templateBody"}
    )


@dataclass(kw_only=True)
class GroupMWIDeliveryToMobileEndpointGetResponse(OCIDataResponse):
    """Response to GroupMWIDeliveryToMobileEndpointGetRequest.

        The templateActivationTable contains the list of templates defined for the group.
        The column headings are \"Enable\", \"Language\", \"Type\".

    Attributes:

        use_setting_level (str):

        template_activation_table (OCITable):

    """

    use_setting_level: str = field(metadata={"alias": "useSettingLevel"})

    template_activation_table: OCITable = field(
        metadata={"alias": "templateActivationTable"}
    )


@dataclass(kw_only=True)
class GroupMeetMeConferencingGetAvailableUserListResponse(OCIDataResponse):
    """Response to the GroupMeetMeConferencingGetAvailableUserListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", and \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupMeetMeConferencingGetInstanceListResponse(OCIDataResponse):
    """Response to the GroupMeetMeConferencingGetInstanceListRequest.
        Contains a table with column headings: \"Service User Id\", \"Name\", \"Phone Number\", \"Extension\", \"Department\", \"Ports\", and \"Is Active\".
        The column values for \"Is Active\" can either be true, or false.

    Attributes:

        conference_bridge_table (OCITable):

    """

    conference_bridge_table: OCITable = field(
        metadata={"alias": "conferenceBridgeTable"}
    )


@dataclass(kw_only=True)
class GroupMeetMeConferencingGetInstanceResponse19sp1(OCIDataResponse):
    """Response to GroupMeetMeConferencingGetInstanceRequest19sp1.
        Contains the service profile information and a table of assigned hosts.
        The table has column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\",
        \"Hiragana First Name\", Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        service_instance_profile (ServiceInstanceReadProfile19sp1):

        allocated_ports (MeetMeConferencingConferencePorts):

        network_class_of_service (Optional[str]):

        security_pin_length (int):

        allow_individual_out_dial (bool):

        operator_number (Optional[str]):

        conference_host_user_table (OCITable):

        play_warning_prompt (bool):

        conference_end_warning_prompt_minutes (int):

        enable_max_conference_duration (bool):

        max_conference_duration_minutes (MeetMeConferencingConferenceDuration):

        max_scheduled_conference_duration_minutes (MeetMeConferencingConferenceDuration):

    """

    service_instance_profile: ServiceInstanceReadProfile19sp1 = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    allocated_ports: MeetMeConferencingConferencePorts = field(
        metadata={"alias": "allocatedPorts"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    security_pin_length: int = field(metadata={"alias": "securityPinLength"})

    allow_individual_out_dial: bool = field(
        metadata={"alias": "allowIndividualOutDial"}
    )

    operator_number: Optional[str] = field(
        default=None, metadata={"alias": "operatorNumber"}
    )

    conference_host_user_table: OCITable = field(
        metadata={"alias": "conferenceHostUserTable"}
    )

    play_warning_prompt: bool = field(metadata={"alias": "playWarningPrompt"})

    conference_end_warning_prompt_minutes: int = field(
        metadata={"alias": "conferenceEndWarningPromptMinutes"}
    )

    enable_max_conference_duration: bool = field(
        metadata={"alias": "enableMaxConferenceDuration"}
    )

    max_conference_duration_minutes: MeetMeConferencingConferenceDuration = field(
        metadata={"alias": "maxConferenceDurationMinutes"}
    )

    max_scheduled_conference_duration_minutes: MeetMeConferencingConferenceDuration = (
        field(metadata={"alias": "maxScheduledConferenceDurationMinutes"})
    )


@dataclass(kw_only=True)
class GroupMeetMeConferencingGetResponse(OCIDataResponse):
    """Response to GroupMeetMeConferencingGetRequest.

    Attributes:

        available_ports (MeetMeConferencingConferencePorts):

        allocated_ports (MeetMeConferencingConferencePorts):

    """

    available_ports: MeetMeConferencingConferencePorts = field(
        metadata={"alias": "availablePorts"}
    )

    allocated_ports: MeetMeConferencingConferencePorts = field(
        metadata={"alias": "allocatedPorts"}
    )


@dataclass(kw_only=True)
class GroupMusicOnHoldGetDepartmentListResponse(OCIDataResponse):
    """Response to the GroupMusicOnHoldGetDepartmentListRequest.

    Attributes:

        has_department (bool):

        department (Optional[List[DepartmentKey]]):

        department_full_path (Optional[List[str]]):

    """

    has_department: bool = field(metadata={"alias": "hasDepartment"})

    department: Optional[List[DepartmentKey]] = field(
        default=None, metadata={"alias": "department"}
    )

    department_full_path: Optional[List[str]] = field(
        default=None, metadata={"alias": "departmentFullPath"}
    )


@dataclass(kw_only=True)
class GroupMusicOnHoldGetInstanceResponse23V2(OCIDataResponse):
    """Response to the GroupMusicOnHoldGetInstanceRequest23V2.
        The following elements are only used in AS data mode:
        - useDynamicMOHDuringCallHold, value \"false\" is returned in XS data mode.

    Attributes:

        service_user_id (str):

        is_active_during_call_hold (bool):

        is_active_during_call_park (bool):

        is_active_during_busy_camp_on (bool):

        enable_video (bool):

        source (MusicOnHoldSourceRead22V3):

        use_alternate_source_for_internal_calls (bool):

        internal_source (MusicOnHoldSourceRead22V3):

        use_dynamic_moh_during_call_hold (bool):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    is_active_during_call_hold: bool = field(
        metadata={"alias": "isActiveDuringCallHold"}
    )

    is_active_during_call_park: bool = field(
        metadata={"alias": "isActiveDuringCallPark"}
    )

    is_active_during_busy_camp_on: bool = field(
        metadata={"alias": "isActiveDuringBusyCampOn"}
    )

    enable_video: bool = field(metadata={"alias": "enableVideo"})

    source: MusicOnHoldSourceRead22V3 = field(metadata={"alias": "source"})

    use_alternate_source_for_internal_calls: bool = field(
        metadata={"alias": "useAlternateSourceForInternalCalls"}
    )

    internal_source: MusicOnHoldSourceRead22V3 = field(
        metadata={"alias": "internalSource"}
    )

    use_dynamic_moh_during_call_hold: bool = field(
        metadata={"alias": "useDynamicMOHDuringCallHold"}
    )


@dataclass(kw_only=True)
class GroupNetworkClassOfServiceGetAssignedListResponse(OCIDataResponse):
    """Response to GroupNetworkClassOfServiceGetAssignedListRequest.
        Contains a table of all Network Classes of Service assigned to
        the group. The column headings are: \"Name\", \"Description\" and \"Default\".

    Attributes:

        network_class_of_service_table (OCITable):

    """

    network_class_of_service_table: OCITable = field(
        metadata={"alias": "networkClassOfServiceTable"}
    )


@dataclass(kw_only=True)
class GroupNetworkClassOfServiceGetAssignedUserListResponse21(OCIDataResponse):
    """Response to GroupNetworkClassOfServiceGetAssignedUserListRequest21.
        Contains a table of users that have the Network Class of Service
        assigned. The column headings are: \"User Id\", \"User Type\", \"Last Name\", \"First Name\",
        \"Department\", \"Phone Number\", \"Email Address\", \"Service Provider Id\",
        \"Group Id\", \"Hiragana Last Name\" and \"Hiragana First Name\" , \"Extension\".
        The User type column will display Auto Attendant and the Call Center subtype.
        Call Center - Basic, Call Center - Standard and Call Center - Premium will be displayed instead of Call Center and
        Auto Attendant (for the Basic Auto Attendant) and Auto Attendant - Standard instead of Auto Attendant.

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupOfficeZoneGetAssignedListResponse(OCIDataResponse):
    """Response to GroupOfficeZoneGetAssignedListRequest.
        Contains a table of all Office Zones assigned to the
        group. The column headings are: \"Name\", \"Description\" and \"Default\".

    Attributes:

        office_zone_table (OCITable):

    """

    office_zone_table: OCITable = field(metadata={"alias": "officeZoneTable"})


@dataclass(kw_only=True)
class GroupOfficeZoneGetAssignedUserListResponse(OCIDataResponse):
    """Response to GroupOfiiceZoneGetAssignedUserListRequest.
        Contains a table of users that have the Office Zone assigned. The column headings are: \"User Id\", \"User Type\", \"Last Name\",
        \"First Name\", \"Department\", \"Phone Number\", \"Email Address\", \"Hiragana Last Name\" and \"Hiragana First Name\", \"Extension\".
        Office Zones can only be unassigned if the Location-Based Calling Restrictions has been authorized to the group otherwise the request will fail.

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanAuthorizationCodeGetListResponse(OCIDataResponse):
    """Response to GroupOutgoingCallingPlanAuthorizationCodeGetListRequest.

    Attributes:

        group_code_list (OutgoingCallingPlanGroupAuthorizationCodes):

        department_code_list (Optional[List[OutgoingCallingPlanDepartmentAuthorizationCodes]]):

    """

    group_code_list: OutgoingCallingPlanGroupAuthorizationCodes = field(
        metadata={"alias": "groupCodeList"}
    )

    department_code_list: Optional[
        List[OutgoingCallingPlanDepartmentAuthorizationCodes]
    ] = field(default=None, metadata={"alias": "departmentCodeList"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanCallMeNowGetListResponse(OCIDataResponse):
    """Response to GroupOutgoingCallingPlanCallMeNowGetListRequest.

    Attributes:

        group_permissions (OutgoingCallingPlanCallMeNowPermissions):

        department_permissions (Optional[List[OutgoingCallingPlanCallMeNowDepartmentPermissions]]):

    """

    group_permissions: OutgoingCallingPlanCallMeNowPermissions = field(
        metadata={"alias": "groupPermissions"}
    )

    department_permissions: Optional[
        List[OutgoingCallingPlanCallMeNowDepartmentPermissions]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanDepartmentAuthorizationCodeGetListResponse(
    OCIDataResponse
):
    """Response to GroupOutgoingCallingPlanDepartmentAuthorizationCodeGetListRequest.

    Attributes:

        code_entry (Optional[List[OutgoingCallingPlanAuthorizationCodeEntry]]):

    """

    code_entry: Optional[List[OutgoingCallingPlanAuthorizationCodeEntry]] = field(
        default=None, metadata={"alias": "codeEntry"}
    )


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanDigitPlanCallMeNowGetListResponse(OCIDataResponse):
    """Response to GroupOutgoingCallingPlanDigitPlanCallMeNowGetListRequest.

    Attributes:

        group_permissions (Optional[OutgoingCallingPlanDigitPatternCallMeNowPermissions]):

        department_permissions (Optional[List[OutgoingCallingPlanDigitPatternCallMeNowDepartmentPermissions]]):

    """

    group_permissions: Optional[OutgoingCallingPlanDigitPatternCallMeNowPermissions] = (
        field(default=None, metadata={"alias": "groupPermissions"})
    )

    department_permissions: Optional[
        List[OutgoingCallingPlanDigitPatternCallMeNowDepartmentPermissions]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanDigitPlanOriginatingGetListResponse(OCIDataResponse):
    """Response to GroupOutgoingCallingPlanDigitPlanOriginatingGetListRequest.

    Attributes:

        group_permissions (Optional[OutgoingCallingPlanDigitPatternOriginatingPermissions]):

        department_permissions (Optional[List[OutgoingCallingPlanDigitPatternOriginatingDepartmentPermissions]]):

    """

    group_permissions: Optional[
        OutgoingCallingPlanDigitPatternOriginatingPermissions
    ] = field(default=None, metadata={"alias": "groupPermissions"})

    department_permissions: Optional[
        List[OutgoingCallingPlanDigitPatternOriginatingDepartmentPermissions]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanDigitPlanRedirectingGetListResponse(OCIDataResponse):
    """Response to GroupOutgoingCallingPlanDigitPlanRedirectingGetListRequest.

    Attributes:

        group_permissions (Optional[OutgoingCallingPlanDigitPatternRedirectingPermissions]):

        department_permissions (Optional[List[OutgoingCallingPlanDigitPatternRedirectingDepartmentPermissions]]):

    """

    group_permissions: Optional[
        OutgoingCallingPlanDigitPatternRedirectingPermissions
    ] = field(default=None, metadata={"alias": "groupPermissions"})

    department_permissions: Optional[
        List[OutgoingCallingPlanDigitPatternRedirectingDepartmentPermissions]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanOriginatingGetListResponse(OCIDataResponse):
    """Response to GroupOutgoingCallingPlanOriginatingGetListRequest.

    Attributes:

        group_permissions (OutgoingCallingPlanOriginatingPermissions):

        department_permissions (Optional[List[OutgoingCallingPlanOriginatingDepartmentPermissions]]):

    """

    group_permissions: OutgoingCallingPlanOriginatingPermissions = field(
        metadata={"alias": "groupPermissions"}
    )

    department_permissions: Optional[
        List[OutgoingCallingPlanOriginatingDepartmentPermissions]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanPinholeDigitPatternGetListResponse(OCIDataResponse):
    """Response to GroupOutgoingCallingPlanPinholeDigitPatternGetListRequest.
        Contains a table with column headings: \"Name\", \"Digit Pattern\".

    Attributes:

        digit_pattern_table (OCITable):

    """

    digit_pattern_table: OCITable = field(metadata={"alias": "digitPatternTable"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanPinholeDigitPlanCallMeNowGetListResponse(OCIDataResponse):
    """Response to GroupOutgoingCallingPlanPinholeDigitPlanCallMeNowGetListRequest.

    Attributes:

        group_permissions (Optional[OutgoingPinholeDigitPlanDigitPatternCallMeNowPermissions]):

        department_permissions (Optional[List[OutgoingPinholeDigitPlanDigitPatternCallMeNowDepartmentPermissions]]):

    """

    group_permissions: Optional[
        OutgoingPinholeDigitPlanDigitPatternCallMeNowPermissions
    ] = field(default=None, metadata={"alias": "groupPermissions"})

    department_permissions: Optional[
        List[OutgoingPinholeDigitPlanDigitPatternCallMeNowDepartmentPermissions]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanPinholeDigitPlanOriginatingGetListResponse(
    OCIDataResponse
):
    """Response to GroupOutgoingCallingPlanPinholeDigitPlanOriginatingGetListRequest.

    Attributes:

        group_permissions (Optional[OutgoingPinholeDigitPlanDigitPatternOriginatingPermissions]):

        department_permissions (Optional[List[OutgoingPinholeDigitPlanDigitPatternOriginatingDepartmentPermissions]]):

    """

    group_permissions: Optional[
        OutgoingPinholeDigitPlanDigitPatternOriginatingPermissions
    ] = field(default=None, metadata={"alias": "groupPermissions"})

    department_permissions: Optional[
        List[OutgoingPinholeDigitPlanDigitPatternOriginatingDepartmentPermissions]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanPinholeDigitPlanRedirectingGetListResponse(
    OCIDataResponse
):
    """Response to GroupOutgoingCallingPlanPinholeDigitPlanRedirectingGetListRequest.

    Attributes:

        group_permissions (Optional[OutgoingPinholeDigitPlanDigitPatternRedirectingPermissions]):

        department_permissions (Optional[List[OutgoingPinholeDigitPlanDigitPatternRedirectingDepartmentPermissions]]):

    """

    group_permissions: Optional[
        OutgoingPinholeDigitPlanDigitPatternRedirectingPermissions
    ] = field(default=None, metadata={"alias": "groupPermissions"})

    department_permissions: Optional[
        List[OutgoingPinholeDigitPlanDigitPatternRedirectingDepartmentPermissions]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanRedirectedGetListResponse(OCIDataResponse):
    """Response to GroupOutgoingCallingPlanRedirectedGetListRequest.

    Attributes:

        group_permissions (OutgoingCallingPlanRedirectedPermissions):

        department_permissions (Optional[List[OutgoingCallingPlanRedirectedDepartmentPermissions]]):

    """

    group_permissions: OutgoingCallingPlanRedirectedPermissions = field(
        metadata={"alias": "groupPermissions"}
    )

    department_permissions: Optional[
        List[OutgoingCallingPlanRedirectedDepartmentPermissions]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanRedirectingGetListResponse(OCIDataResponse):
    """Response to GroupOutgoingCallingPlanRedirectingGetListRequest.

    Attributes:

        group_permissions (OutgoingCallingPlanRedirectingPermissions):

        department_permissions (Optional[List[OutgoingCallingPlanRedirectingDepartmentPermissions]]):

    """

    group_permissions: OutgoingCallingPlanRedirectingPermissions = field(
        metadata={"alias": "groupPermissions"}
    )

    department_permissions: Optional[
        List[OutgoingCallingPlanRedirectingDepartmentPermissions]
    ] = field(default=None, metadata={"alias": "departmentPermissions"})


@dataclass(kw_only=True)
class GroupOutgoingCallingPlanTransferNumbersGetListResponse(OCIDataResponse):
    """Response to GroupOutgoingCallingPlanTransferNumbersGetListRequest.

    Attributes:

        group_numbers (OutgoingCallingPlanTransferNumbers):

        department_numbers (Optional[List[OutgoingCallingPlanDepartmentTransferNumbers]]):

    """

    group_numbers: OutgoingCallingPlanTransferNumbers = field(
        metadata={"alias": "groupNumbers"}
    )

    department_numbers: Optional[List[OutgoingCallingPlanDepartmentTransferNumbers]] = (
        field(default=None, metadata={"alias": "departmentNumbers"})
    )


@dataclass(kw_only=True)
class GroupPasswordRulesGetResponseRI(OCIDataResponse):
    """Response to GroupPasswordRulesGetRequestRI.
        Contains the password rules applicable to users within the group.

        The following element is only used in AS data mode:
        forcePasswordChangeAfterReset, value “false” is returned in XS data mode
        reenableLogin
        lockOutInMinutes

    Attributes:

        disallow_user_id (bool):

        disallow_old_password (bool):

        disallow_reversed_old_password (bool):

        restrict_min_digits (bool):

        min_digits (int):

        restrict_min_upper_case_letters (bool):

        min_upper_case_letters (int):

        restrict_min_lower_case_letters (bool):

        min_lower_case_letters (int):

        restrict_min_non_alphanumeric_characters (bool):

        min_non_alphanumeric_characters (int):

        min_length (int):

        max_failed_login_attempts (int):

        password_expires_days (int):

        send_login_disabled_notify_email (bool):

        login_disabled_notify_email_address (Optional[str]):

        disallow_rules_modification (bool):

        disallow_previous_passwords (bool):

        number_of_previous_passwords (int):

        force_password_change_after_reset (bool):

        use_password_validation_service (bool):

        reenable_login (bool):

        lock_out_in_minutes (int):

    """

    disallow_user_id: bool = field(metadata={"alias": "disallowUserId"})

    disallow_old_password: bool = field(metadata={"alias": "disallowOldPassword"})

    disallow_reversed_old_password: bool = field(
        metadata={"alias": "disallowReversedOldPassword"}
    )

    restrict_min_digits: bool = field(metadata={"alias": "restrictMinDigits"})

    min_digits: int = field(metadata={"alias": "minDigits"})

    restrict_min_upper_case_letters: bool = field(
        metadata={"alias": "restrictMinUpperCaseLetters"}
    )

    min_upper_case_letters: int = field(metadata={"alias": "minUpperCaseLetters"})

    restrict_min_lower_case_letters: bool = field(
        metadata={"alias": "restrictMinLowerCaseLetters"}
    )

    min_lower_case_letters: int = field(metadata={"alias": "minLowerCaseLetters"})

    restrict_min_non_alphanumeric_characters: bool = field(
        metadata={"alias": "restrictMinNonAlphanumericCharacters"}
    )

    min_non_alphanumeric_characters: int = field(
        metadata={"alias": "minNonAlphanumericCharacters"}
    )

    min_length: int = field(metadata={"alias": "minLength"})

    max_failed_login_attempts: int = field(metadata={"alias": "maxFailedLoginAttempts"})

    password_expires_days: int = field(metadata={"alias": "passwordExpiresDays"})

    send_login_disabled_notify_email: bool = field(
        metadata={"alias": "sendLoginDisabledNotifyEmail"}
    )

    login_disabled_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "loginDisabledNotifyEmailAddress"}
    )

    disallow_rules_modification: bool = field(
        metadata={"alias": "disallowRulesModification"}
    )

    disallow_previous_passwords: bool = field(
        metadata={"alias": "disallowPreviousPasswords"}
    )

    number_of_previous_passwords: int = field(
        metadata={"alias": "numberOfPreviousPasswords"}
    )

    force_password_change_after_reset: bool = field(
        metadata={"alias": "forcePasswordChangeAfterReset"}
    )

    use_password_validation_service: bool = field(
        metadata={"alias": "usePasswordValidationService"}
    )

    reenable_login: bool = field(metadata={"alias": "reenableLogin"})

    lock_out_in_minutes: int = field(metadata={"alias": "lockOutInMinutes"})


@dataclass(kw_only=True)
class GroupPhoneDirectoryGetPagedSortedListResponse(OCIDataResponse):
    """Response to GroupPhoneDirectoryGetPagedSortedListRequest.
        Contains a table with a row for each phone number and column headings :
        \"Name\", \"Number\", \"Extension\", \"Mobile\", \"Email Address\",
        \"Department\", \"Hiragana Name\", \"Group Id\", \"Yahoo Id\", \"User Id\", \"IMP Id\" and \"Is Virtual On-Net User\".

        If extended directory information is requested, the following columns are also included:
        \"First Name\", \"Last Name\", \"Pager\", \"Title\", \"Time Zone\",
        \"Location\", \"Address Line 1\", \"Address Line 2\", \"City\", \"State\", \"Zip\", \"Country\".

        Finally \"Service Name\".
        The Service Name represents the localized service name for service instances. The localized values are taken from the BroadworksLabel.properties file.
        Service Name is currently supporting:
        AutoAttendant, AutoAttendantStandard, AutoAttendantVideo, CallCenter, CallCenterStandard, CallCenterPremium
        HuntGroup, InstantGroupCall, VoiceMessagingGroup, MusicOnHold, MusicOnHoldVideo, RoutePoint, BroadWorksAnywhere
        GroupPaging, FindmeFollowme, VoiceXML, FlexibleSeatingGuest, CollaborateSharing, MeetMeConferencing.
        For a Regular User or a Virtual On Network Enterprise Extensions, the Service Name is empty.

        The following columns are populated in AS data mode only:
          \"IMP Id\"

    Attributes:

        total_number_of_rows (int):

        directory_table (OCITable):

    """

    total_number_of_rows: int = field(metadata={"alias": "totalNumberOfRows"})

    directory_table: OCITable = field(metadata={"alias": "directoryTable"})


@dataclass(kw_only=True)
class GroupPolicyGetResponse22(OCIDataResponse):
    """Response to GroupPolicyGetRequest22.
          Contains the policy settings for the group.

          The following elements are only used in AS data mode:
            userAutoAttendantNameDialingAccess, value None is returned in XS data mode

    Attributes:

        calling_plan_access (str):

        extension_access (str):

        voice_messaging_access (str):

        department_admin_user_access (str):

        department_admin_trunk_group_access (str):

        department_admin_phone_number_extension_access (str):

        department_admin_calling_line_id_number_access (str):

        user_authentication_access (str):

        user_group_directory_access (str):

        user_profile_access (str):

        user_enhanced_call_log_access (str):

        user_auto_attendant_name_dialing_access (str):

    """

    calling_plan_access: str = field(metadata={"alias": "callingPlanAccess"})

    extension_access: str = field(metadata={"alias": "extensionAccess"})

    voice_messaging_access: str = field(metadata={"alias": "voiceMessagingAccess"})

    department_admin_user_access: str = field(
        metadata={"alias": "departmentAdminUserAccess"}
    )

    department_admin_trunk_group_access: str = field(
        metadata={"alias": "departmentAdminTrunkGroupAccess"}
    )

    department_admin_phone_number_extension_access: str = field(
        metadata={"alias": "departmentAdminPhoneNumberExtensionAccess"}
    )

    department_admin_calling_line_id_number_access: str = field(
        metadata={"alias": "departmentAdminCallingLineIdNumberAccess"}
    )

    user_authentication_access: str = field(
        metadata={"alias": "userAuthenticationAccess"}
    )

    user_group_directory_access: str = field(
        metadata={"alias": "userGroupDirectoryAccess"}
    )

    user_profile_access: str = field(metadata={"alias": "userProfileAccess"})

    user_enhanced_call_log_access: str = field(
        metadata={"alias": "userEnhancedCallLogAccess"}
    )

    user_auto_attendant_name_dialing_access: str = field(
        metadata={"alias": "userAutoAttendantNameDialingAccess"}
    )


@dataclass(kw_only=True)
class GroupPolycomPhoneServicesGetResponse(OCIDataResponse):
    """Response to GroupPolycomPhoneServicesGetRequest.

    Attributes:

        include_group_common_phone_list_in_directory (bool):

        include_group_custom_contact_directory_in_directory (bool):

        group_custom_contact_directory (Optional[str]):

    """

    include_group_common_phone_list_in_directory: bool = field(
        metadata={"alias": "includeGroupCommonPhoneListInDirectory"}
    )

    include_group_custom_contact_directory_in_directory: bool = field(
        metadata={"alias": "includeGroupCustomContactDirectoryInDirectory"}
    )

    group_custom_contact_directory: Optional[str] = field(
        default=None, metadata={"alias": "groupCustomContactDirectory"}
    )


@dataclass(kw_only=True)
class GroupPortalPasscodeRulesGetResponseRI(OCIDataResponse):
    """Response to GroupPortalPasscodeRulesGetRequestRI.
        Contains the group's passcode rules setting.

        The following elements are only used in AS data mode:
          numberOfRepeatedDigits
          disallowRepeatedPatterns
          disallowContiguousSequences
          numberOfAscendingDigits
          numberOfDescendingDigits
          numberOfPreviousPasscodes
          reenableLogin
          lockOutInMinutes

    Attributes:

        use_rule_level (str):

        disallow_repeated_digits (bool):

        number_of_repeated_digits (int):

        disallow_repeated_patterns (bool):

        disallow_contiguous_sequences (bool):

        number_of_ascending_digits (int):

        number_of_descending_digits (int):

        disallow_user_number (bool):

        disallow_reversed_user_number (bool):

        disallow_old_passcode (bool):

        number_of_previous_passcodes (int):

        disallow_reversed_old_passcode (bool):

        min_code_length (int):

        max_code_length (int):

        disable_login_after_max_failed_login_attempts (bool):

        max_failed_login_attempts (Optional[int]):

        expire_password (bool):

        passcode_expires_days (Optional[int]):

        send_login_disabled_notify_email (bool):

        login_disabled_notify_email_address (Optional[str]):

        reenable_login (bool):

        lock_out_in_minutes (int):

    """

    use_rule_level: str = field(metadata={"alias": "useRuleLevel"})

    disallow_repeated_digits: bool = field(metadata={"alias": "disallowRepeatedDigits"})

    number_of_repeated_digits: int = field(metadata={"alias": "numberOfRepeatedDigits"})

    disallow_repeated_patterns: bool = field(
        metadata={"alias": "disallowRepeatedPatterns"}
    )

    disallow_contiguous_sequences: bool = field(
        metadata={"alias": "disallowContiguousSequences"}
    )

    number_of_ascending_digits: int = field(
        metadata={"alias": "numberOfAscendingDigits"}
    )

    number_of_descending_digits: int = field(
        metadata={"alias": "numberOfDescendingDigits"}
    )

    disallow_user_number: bool = field(metadata={"alias": "disallowUserNumber"})

    disallow_reversed_user_number: bool = field(
        metadata={"alias": "disallowReversedUserNumber"}
    )

    disallow_old_passcode: bool = field(metadata={"alias": "disallowOldPasscode"})

    number_of_previous_passcodes: int = field(
        metadata={"alias": "numberOfPreviousPasscodes"}
    )

    disallow_reversed_old_passcode: bool = field(
        metadata={"alias": "disallowReversedOldPasscode"}
    )

    min_code_length: int = field(metadata={"alias": "minCodeLength"})

    max_code_length: int = field(metadata={"alias": "maxCodeLength"})

    disable_login_after_max_failed_login_attempts: bool = field(
        metadata={"alias": "disableLoginAfterMaxFailedLoginAttempts"}
    )

    max_failed_login_attempts: Optional[int] = field(
        default=None, metadata={"alias": "maxFailedLoginAttempts"}
    )

    expire_password: bool = field(metadata={"alias": "expirePassword"})

    passcode_expires_days: Optional[int] = field(
        default=None, metadata={"alias": "passcodeExpiresDays"}
    )

    send_login_disabled_notify_email: bool = field(
        metadata={"alias": "sendLoginDisabledNotifyEmail"}
    )

    login_disabled_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "loginDisabledNotifyEmailAddress"}
    )

    reenable_login: bool = field(metadata={"alias": "reenableLogin"})

    lock_out_in_minutes: int = field(metadata={"alias": "lockOutInMinutes"})


@dataclass(kw_only=True)
class GroupPreAlertingAnnouncementGetResponse20(OCIDataResponse):
    """Response to a GroupPreAlertingAnnouncementGetResponse20.

    Attributes:

        announcement_interruption (str):

        interruption_digit_sequence (Optional[str]):

        audio_selection (str):

        audio_file (Optional[AnnouncementFileKey]):

        audio_file_url (Optional[str]):

        video_selection (str):

        video_file (Optional[AnnouncementFileKey]):

        video_file_url (Optional[str]):

    """

    announcement_interruption: str = field(
        metadata={"alias": "announcementInterruption"}
    )

    interruption_digit_sequence: Optional[str] = field(
        default=None, metadata={"alias": "interruptionDigitSequence"}
    )

    audio_selection: str = field(metadata={"alias": "audioSelection"})

    audio_file: Optional[AnnouncementFileKey] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    audio_file_url: Optional[str] = field(
        default=None, metadata={"alias": "audioFileUrl"}
    )

    video_selection: str = field(metadata={"alias": "videoSelection"})

    video_file: Optional[AnnouncementFileKey] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    video_file_url: Optional[str] = field(
        default=None, metadata={"alias": "videoFileUrl"}
    )


@dataclass(kw_only=True)
class GroupPreferredCarrierGroupGetResponse(OCIDataResponse):
    """Response to a GroupPreferredCarrierGroupGetRequest.

    Attributes:

        intra_lata_carrier (GroupPreferredCarrierName):

        inter_lata_carrier (GroupPreferredCarrierName):

        international_carrier (GroupPreferredCarrierName):

    """

    intra_lata_carrier: GroupPreferredCarrierName = field(
        metadata={"alias": "intraLataCarrier"}
    )

    inter_lata_carrier: GroupPreferredCarrierName = field(
        metadata={"alias": "interLataCarrier"}
    )

    international_carrier: GroupPreferredCarrierName = field(
        metadata={"alias": "internationalCarrier"}
    )


@dataclass(kw_only=True)
class GroupRouteListEnterpriseTrunkNumberPrefixGetAvailableListResponse(
    OCIDataResponse
):
    """Response to GroupRouteListEnterpriseTrunkNumberPrefixGetAvailableListRequest.
        Contains a list of number prefixess that are assigned to a group and still available for assignment to users within the group.
        The column headings are \"Number Prefix\"\",\"Is Active\", \"Extension Range Start\" and \"Extension Range End\".

    Attributes:

        available_number_prefix_table (OCITable):

    """

    available_number_prefix_table: OCITable = field(
        metadata={"alias": "availableNumberPrefixTable"}
    )


@dataclass(kw_only=True)
class GroupRouteListEnterpriseTrunkNumberPrefixGetSummaryListResponse(OCIDataResponse):
    """Response to GroupRouteListEnterpriseTrunkNumberRangeGetSummaryListRequest.
        The response contains a table with columns: \"Number Prefix\", \"User Id\",
        \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\", \"Phone Number\", \"Extension\",
        \"Department\", \"Email Address\", \"Enterprise Trunk\"\",\"Is Active\", \"Extension Range Start\" and \"Extension Range End\".
        The \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\", \"Phone Number\",
        \"Extension\", \"Department\" and \"Email Address\" columns contains the corresponding attributes of the user possessing the number range.
        The \"Enterprise Trunk\" column contains the enterprise trunk the user possessing the number range belongs to.
        The \"Is Active\" column indicates if the number prefix has been activated.
        The \"Extension Range Start\" column indicates the start for an extension range.
        The \"Extension Range End\" column indicates the end for an extension range.

    Attributes:

        number_prefix_summary_table (OCITable):

    """

    number_prefix_summary_table: OCITable = field(
        metadata={"alias": "numberPrefixSummaryTable"}
    )


@dataclass(kw_only=True)
class GroupRouteListEnterpriseTrunkNumberRangeGetAvailableListResponse(OCIDataResponse):
    """Response to GroupRouteListEnterpriseTrunkNumberRangeGetAvailableListRequest.
        Contains a list of number ranges that are assigned to a group and still available for assignment to users within the group.
        The column headings are \"Number Range Start\", \"Number Range End\" ,\"Is Active\" and \"Extension Length\"..

    Attributes:

        available_number_range_table (OCITable):

    """

    available_number_range_table: OCITable = field(
        metadata={"alias": "availableNumberRangeTable"}
    )


@dataclass(kw_only=True)
class GroupRouteListEnterpriseTrunkNumberRangeGetSummaryListResponse(OCIDataResponse):
    """Response to GroupRouteListEnterpriseTrunkNumberRangeGetSummaryListRequest.
        The response contains a table with columns: \"Number Range Start\", \"Number Range End\", \"User Id\",
        \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\", \"Phone Number\", \"Extension\",
        \"Department\", \"Email Address\", \"Enterprise Trunk\" and \"Is Active\".
        The \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\", \"Phone Number\",
        \"Extension\", \"Department\" and \"Email Address\" columns contains the corresponding attributes of the user possessing the number range.
        The \"Enterprise Trunk\" column contains the enterprise trunk the user possessing the number range belongs to.
        The \"Is Active\" column indicates if the number range has been activated.
        The \"Extension Length\" column indicates the length of the extension for the enterpris trunk number range.

    Attributes:

        number_range_summary_table (OCITable):

    """

    number_range_summary_table: OCITable = field(
        metadata={"alias": "numberRangeSummaryTable"}
    )


@dataclass(kw_only=True)
class GroupRoutePointBouncedCallGetResponse(OCIDataResponse):
    """Response to the GroupRoutePointBouncedCallGetRequest.

    Attributes:

        is_active (bool):

        number_of_rings_before_bouncing_call (int):

        enable_transfer (Optional[bool]):

        transfer_phone_number (Optional[str]):

        bounce_call_when_agent_unavailable (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    number_of_rings_before_bouncing_call: int = field(
        metadata={"alias": "numberOfRingsBeforeBouncingCall"}
    )

    enable_transfer: Optional[bool] = field(
        default=None, metadata={"alias": "enableTransfer"}
    )

    transfer_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    bounce_call_when_agent_unavailable: bool = field(
        metadata={"alias": "bounceCallWhenAgentUnavailable"}
    )


@dataclass(kw_only=True)
class GroupRoutePointDistinctiveRingingGetResponse(OCIDataResponse):
    """Response to the GroupRoutePointDistinctiveRingingGetRequest.

    Attributes:

        enable_distinctive_ringing (bool):

        distinctive_ringing_ring_pattern (str):

        distinctive_ringing_force_delivery_ring_pattern (str):

    """

    enable_distinctive_ringing: bool = field(
        metadata={"alias": "enableDistinctiveRinging"}
    )

    distinctive_ringing_ring_pattern: str = field(
        metadata={"alias": "distinctiveRingingRingPattern"}
    )

    distinctive_ringing_force_delivery_ring_pattern: str = field(
        metadata={"alias": "distinctiveRingingForceDeliveryRingPattern"}
    )


@dataclass(kw_only=True)
class GroupRoutePointExternalSystemGetAssignedListResponse(OCIDataResponse):
    """Response to the GroupRoutePointExternalSystemGetAssignedListRequest.
        Contains a table of all Route Point External Systems assigned to the
        group.  The column headings are: \"Name\" and \"Description\".

    Attributes:

        external_system_table (OCITable):

    """

    external_system_table: OCITable = field(metadata={"alias": "externalSystemTable"})


@dataclass(kw_only=True)
class GroupRoutePointExternalSystemGetAssignedRoutePointListResponse(OCIDataResponse):
    """Response to the GroupRoutePointExternalSystemGetAssignedRoutePointListRequest.
        Contains a table with column headings:
        \"Service User Id\", \"Name\", \"Video\", \"Phone Number\", \"Extension\", \"Department\".
        The column values for \"Video\" can either be \"true\", or \"false\".

    Attributes:

        route_point_table (OCITable):

    """

    route_point_table: OCITable = field(metadata={"alias": "routePointTable"})


@dataclass(kw_only=True)
class GroupRoutePointForcedForwardingGetResponse20(OCIDataResponse):
    """Response to the GroupRoutePointForcedForwardingGetRequest20.

    Attributes:

        is_active (bool):

        forward_to_phone_number (Optional[str]):

        play_announcement_before_forwarding (bool):

        audio_message_selection (str):

        audio_url_list (Optional[CallCenterAnnouncementURLList]):

        audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        video_message_selection (str):

        video_url_list (Optional[CallCenterAnnouncementURLList]):

        video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    play_announcement_before_forwarding: bool = field(
        metadata={"alias": "playAnnouncementBeforeForwarding"}
    )

    audio_message_selection: str = field(metadata={"alias": "audioMessageSelection"})

    audio_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: str = field(metadata={"alias": "videoMessageSelection"})

    video_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )


@dataclass(kw_only=True)
class GroupRoutePointGetAnnouncementResponse22(OCIDataResponse):
    """Response to the GroupRoutePointGetAnnouncementRequest22.

    Attributes:

        media_on_hold_source (CallCenterMediaOnHoldSourceRead22):

    """

    media_on_hold_source: CallCenterMediaOnHoldSourceRead22 = field(
        metadata={"alias": "mediaOnHoldSource"}
    )


@dataclass(kw_only=True)
class GroupRoutePointGetDNISAgentListResponse(OCIDataResponse):
    """Response to the GroupRoutePointGetDNISAgentListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        agent_table (OCITable):

    """

    agent_table: OCITable = field(metadata={"alias": "agentTable"})


@dataclass(kw_only=True)
class GroupRoutePointGetDNISAnnouncementResponse22(OCIDataResponse):
    """Response to the GroupRoutePointGetDNISAnnouncementRequest22.

    Attributes:

        media_on_hold_source (CallCenterMediaOnHoldSourceRead22):

    """

    media_on_hold_source: CallCenterMediaOnHoldSourceRead22 = field(
        metadata={"alias": "mediaOnHoldSource"}
    )


@dataclass(kw_only=True)
class GroupRoutePointGetDNISListResponse(OCIDataResponse):
    """Response to the GroupRoutePointGetDNISListRequest.
        Contains a table with column headings: \"Name\", \"Phone Number\", \"Extension\".

    Attributes:

        display_dnis_number (bool):

        display_dnis_name (bool):

        dnis_table (OCITable):

    """

    display_dnis_number: bool = field(metadata={"alias": "displayDNISNumber"})

    display_dnis_name: bool = field(metadata={"alias": "displayDNISName"})

    dnis_table: OCITable = field(metadata={"alias": "dnisTable"})


@dataclass(kw_only=True)
class GroupRoutePointGetDNISResponse(OCIDataResponse):
    """Response to the GroupRoutePointGetDNISRequest.

    Attributes:

        dnis_phone_number (Optional[str]):

        extension (Optional[str]):

        use_custom_clid_settings (bool):

        calling_line_id_phone_number (Optional[str]):

        calling_line_id_last_name (Optional[str]):

        calling_line_id_first_name (Optional[str]):

        use_custom_dnis_announcement_settings (bool):

        allow_outgoing_acd_call (bool):

    """

    dnis_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "dnisPhoneNumber"}
    )

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})

    use_custom_clid_settings: bool = field(metadata={"alias": "useCustomCLIDSettings"})

    calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )

    calling_line_id_last_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdLastName"}
    )

    calling_line_id_first_name: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdFirstName"}
    )

    use_custom_dnis_announcement_settings: bool = field(
        metadata={"alias": "useCustomDnisAnnouncementSettings"}
    )

    allow_outgoing_acd_call: bool = field(metadata={"alias": "allowOutgoingACDCall"})


@dataclass(kw_only=True)
class GroupRoutePointGetFailoverPolicyResponse(OCIDataResponse):
    """Response to the GroupRoutePointGetFailoverPolicyRequest.

    Attributes:

        enable_failover_support (bool):

        external_system (Optional[str]):

        failover_phone_number (Optional[str]):

        failover_status (str):

        per_call_enable_failover_support (bool):

        per_call_call_failure_timeout_seconds (int):

        per_call_outbound_call_failure_timeout_seconds (int):

        per_call_failover_phone_number (Optional[str]):

    """

    enable_failover_support: bool = field(metadata={"alias": "enableFailoverSupport"})

    external_system: Optional[str] = field(
        default=None, metadata={"alias": "externalSystem"}
    )

    failover_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "failoverPhoneNumber"}
    )

    failover_status: str = field(metadata={"alias": "failoverStatus"})

    per_call_enable_failover_support: bool = field(
        metadata={"alias": "perCallEnableFailoverSupport"}
    )

    per_call_call_failure_timeout_seconds: int = field(
        metadata={"alias": "perCallCallFailureTimeoutSeconds"}
    )

    per_call_outbound_call_failure_timeout_seconds: int = field(
        metadata={"alias": "perCallOutboundCallFailureTimeoutSeconds"}
    )

    per_call_failover_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "perCallFailoverPhoneNumber"}
    )


@dataclass(kw_only=True)
class GroupRoutePointGetInstanceListResponse(OCIDataResponse):
    """Response to the GroupRoutePointGetInstanceListRequest.
        Contains a table with column headings:
        \"Service User Id\", \"Name\", \"Video\", \"Phone Number\", \"Extension\", \"Department\", \"Is Active\".
        The column values for \"Video\" and \"Is Active\" can either be true, or false.

    Attributes:

        route_point_table (OCITable):

    """

    route_point_table: OCITable = field(metadata={"alias": "routePointTable"})


@dataclass(kw_only=True)
class GroupRoutePointGetInstanceResponse23(OCIDataResponse):
    """Response to GroupRoutePointGetInstanceRequest23.

    Attributes:

        service_instance_profile (ServiceInstanceReadProfile19sp1):

        network_class_of_service (Optional[str]):

        external_preferred_audio_codec (str):

        internal_preferred_audio_codec (str):

        queue_length (int):

        no_answer_timeout_rings (int):

        enable_video (bool):

        play_ringing_when_offering_call (bool):

        override_agent_wrap_up_time (bool):

        wrap_up_seconds (Optional[int]):

        enable_automatic_state_change_for_agents (bool):

        agent_state_after_call (str):

        agent_unavailable_code (Optional[str]):

        force_delivery_of_calls (bool):

        force_delivery_wait_time_seconds (Optional[int]):

        send_call_admission_notification (bool):

        call_admission_timer_seconds (int):

        enable_unlimited_queue_length (Optional[bool]):

    """

    service_instance_profile: ServiceInstanceReadProfile19sp1 = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    external_preferred_audio_codec: str = field(
        metadata={"alias": "externalPreferredAudioCodec"}
    )

    internal_preferred_audio_codec: str = field(
        metadata={"alias": "internalPreferredAudioCodec"}
    )

    queue_length: int = field(metadata={"alias": "queueLength"})

    no_answer_timeout_rings: int = field(metadata={"alias": "noAnswerTimeoutRings"})

    enable_video: bool = field(metadata={"alias": "enableVideo"})

    play_ringing_when_offering_call: bool = field(
        metadata={"alias": "playRingingWhenOfferingCall"}
    )

    override_agent_wrap_up_time: bool = field(
        metadata={"alias": "overrideAgentWrapUpTime"}
    )

    wrap_up_seconds: Optional[int] = field(
        default=None, metadata={"alias": "wrapUpSeconds"}
    )

    enable_automatic_state_change_for_agents: bool = field(
        metadata={"alias": "enableAutomaticStateChangeForAgents"}
    )

    agent_state_after_call: str = field(metadata={"alias": "agentStateAfterCall"})

    agent_unavailable_code: Optional[str] = field(
        default=None, metadata={"alias": "agentUnavailableCode"}
    )

    force_delivery_of_calls: bool = field(metadata={"alias": "forceDeliveryOfCalls"})

    force_delivery_wait_time_seconds: Optional[int] = field(
        default=None, metadata={"alias": "forceDeliveryWaitTimeSeconds"}
    )

    send_call_admission_notification: bool = field(
        metadata={"alias": "sendCallAdmissionNotification"}
    )

    call_admission_timer_seconds: int = field(
        metadata={"alias": "callAdmissionTimerSeconds"}
    )

    enable_unlimited_queue_length: Optional[bool] = field(
        default=None, metadata={"alias": "enableUnlimitedQueueLength"}
    )


@dataclass(kw_only=True)
class GroupRoutePointHolidayServiceGetResponse20(OCIDataResponse):
    """Response to the GroupRoutePointHolidayServiceGetRequest20.

    Attributes:

        action (str):

        holiday_schedule (Optional[HolidaySchedule]):

        transfer_phone_number (Optional[str]):

        play_announcement_before_action (bool):

        audio_message_selection (str):

        audio_url_list (Optional[CallCenterAnnouncementURLList]):

        audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        video_message_selection (str):

        video_url_list (Optional[CallCenterAnnouncementURLList]):

        video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

    """

    action: str = field(metadata={"alias": "action"})

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    transfer_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    play_announcement_before_action: bool = field(
        metadata={"alias": "playAnnouncementBeforeAction"}
    )

    audio_message_selection: str = field(metadata={"alias": "audioMessageSelection"})

    audio_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: str = field(metadata={"alias": "videoMessageSelection"})

    video_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )


@dataclass(kw_only=True)
class GroupRoutePointNightServiceGetResponse20(OCIDataResponse):
    """Response to the GroupRoutePointNightServiceGetRequest20.

    Attributes:

        action (str):

        business_hours (Optional[TimeSchedule]):

        force_night_service (bool):

        transfer_phone_number (Optional[str]):

        play_announcement_before_action (bool):

        audio_message_selection (str):

        audio_url_list (Optional[CallCenterAnnouncementURLList]):

        audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        video_message_selection (str):

        video_url_list (Optional[CallCenterAnnouncementURLList]):

        video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        manual_announcement_mode (str):

        manual_audio_message_selection (str):

        manual_audio_url_list (Optional[CallCenterAnnouncementURLList]):

        manual_audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        manual_video_message_selection (str):

        manual_video_url_list (Optional[CallCenterAnnouncementURLList]):

        manual_video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

    """

    action: str = field(metadata={"alias": "action"})

    business_hours: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "businessHours"}
    )

    force_night_service: bool = field(metadata={"alias": "forceNightService"})

    transfer_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    play_announcement_before_action: bool = field(
        metadata={"alias": "playAnnouncementBeforeAction"}
    )

    audio_message_selection: str = field(metadata={"alias": "audioMessageSelection"})

    audio_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: str = field(metadata={"alias": "videoMessageSelection"})

    video_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )

    manual_announcement_mode: str = field(metadata={"alias": "manualAnnouncementMode"})

    manual_audio_message_selection: str = field(
        metadata={"alias": "manualAudioMessageSelection"}
    )

    manual_audio_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "manualAudioUrlList"}
    )

    manual_audio_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "manualAudioFileList"}
    )

    manual_video_message_selection: str = field(
        metadata={"alias": "manualVideoMessageSelection"}
    )

    manual_video_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "manualVideoUrlList"}
    )

    manual_video_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "manualVideoFileList"}
    )


@dataclass(kw_only=True)
class GroupRoutePointOverflowGetResponse20(OCIDataResponse):
    """Response to the GroupRoutePointOverflowGetRequest20.

    Attributes:

        action (str):

        transfer_phone_number (Optional[str]):

        overflow_after_timeout (bool):

        timeout_seconds (int):

        play_announcement_before_overflow_processing (bool):

        audio_message_selection (str):

        audio_url_list (Optional[CallCenterAnnouncementURLList]):

        audio_file_list (Optional[CallCenterAnnouncementFileListRead20]):

        video_message_selection (Optional[str]):

        video_url_list (Optional[CallCenterAnnouncementURLList]):

        video_file_list (Optional[CallCenterAnnouncementFileListRead20]):

    """

    action: str = field(metadata={"alias": "action"})

    transfer_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    overflow_after_timeout: bool = field(metadata={"alias": "overflowAfterTimeout"})

    timeout_seconds: int = field(metadata={"alias": "timeoutSeconds"})

    play_announcement_before_overflow_processing: bool = field(
        metadata={"alias": "playAnnouncementBeforeOverflowProcessing"}
    )

    audio_message_selection: str = field(metadata={"alias": "audioMessageSelection"})

    audio_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "audioUrlList"}
    )

    audio_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "audioFileList"}
    )

    video_message_selection: Optional[str] = field(
        default=None, metadata={"alias": "videoMessageSelection"}
    )

    video_url_list: Optional[CallCenterAnnouncementURLList] = field(
        default=None, metadata={"alias": "videoUrlList"}
    )

    video_file_list: Optional[CallCenterAnnouncementFileListRead20] = field(
        default=None, metadata={"alias": "videoFileList"}
    )


@dataclass(kw_only=True)
class GroupRoutePointQueueCallDispositionCodeGetListResponse(OCIDataResponse):
    """Response to the GroupRoutePointQueueCallDispositionCodeGetListRequest.
        Contains a table with column headings: \"Is Active\", \"Code\", \"Description\" and \"Level\".
        Level column can be any of the values in the data type CallDispositionCodeLevel.

    Attributes:

        disposition_codes_table (OCITable):

    """

    disposition_codes_table: OCITable = field(
        metadata={"alias": "dispositionCodesTable"}
    )


@dataclass(kw_only=True)
class GroupRoutePointQueueCallDispositionCodeGetResponse(OCIDataResponse):
    """Response to the GroupRoutePointQueueCallDispositionCodeGetRequest

    Attributes:

        is_active (bool):

        description (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class GroupRoutePointQueueCallDispositionCodeSettingsGetResponse(OCIDataResponse):
    """Response to GroupRoutePointQueueCallDispositionCodeSettingsGetRequest.

    Attributes:

        enable_call_disposition_codes (bool):

        include_organization_codes (bool):

        force_use_of_call_disposition_codes (bool):

        default_call_disposition_code (Optional[CallDispositionCodeWithLevel]):

    """

    enable_call_disposition_codes: bool = field(
        metadata={"alias": "enableCallDispositionCodes"}
    )

    include_organization_codes: bool = field(
        metadata={"alias": "includeOrganizationCodes"}
    )

    force_use_of_call_disposition_codes: bool = field(
        metadata={"alias": "forceUseOfCallDispositionCodes"}
    )

    default_call_disposition_code: Optional[CallDispositionCodeWithLevel] = field(
        default=None, metadata={"alias": "defaultCallDispositionCode"}
    )


@dataclass(kw_only=True)
class GroupRoutingProfileGetResponse(OCIDataResponse):
    """Response to GroupRoutingProfileGetRequest.

    Attributes:

        routing_profile (Optional[str]):

    """

    routing_profile: Optional[str] = field(
        default=None, metadata={"alias": "routingProfile"}
    )


@dataclass(kw_only=True)
class GroupScheduleGetEventDetailListResponse(OCIDataResponse):
    """Response to GroupScheduleGetEventDetailListRequest.
        The response contains a list of ScheduleEvents.
        If the scheduleKey doesn't refer to an existing schedule on the AS, then the response will be empty.

    Attributes:

        schedule_events_list (Optional[List[ScheduleEvents]]):

    """

    schedule_events_list: Optional[List[ScheduleEvents]] = field(
        default=None, metadata={"alias": "scheduleEventsList"}
    )


@dataclass(kw_only=True)
class GroupScheduleGetEventListResponse(OCIDataResponse):
    """Response to GroupScheduleGetEventListRequest.
        The response contains a list of events.

    Attributes:

        event_name (Optional[List[str]]):

    """

    event_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "eventName"}
    )


@dataclass(kw_only=True)
class GroupScheduleGetEventResponse(OCIDataResponse):
    """Response to GroupScheduleGetEventRequest.
        The response contains the event of the group schedule.

    Attributes:

        start_date (int):

        all_day_event (Optional[bool]):

        start_time (Optional[HourMinute]):

        end_time (Optional[HourMinute]):

        end_date (int):

        recurrence (Optional[Recurrence]):

    """

    start_date: int = field(metadata={"alias": "startDate"})

    all_day_event: Optional[bool] = field(
        default=None, metadata={"alias": "allDayEvent"}
    )

    start_time: Optional[HourMinute] = field(
        default=None, metadata={"alias": "startTime"}
    )

    end_time: Optional[HourMinute] = field(default=None, metadata={"alias": "endTime"})

    end_date: int = field(metadata={"alias": "endDate"})

    recurrence: Optional[Recurrence] = field(
        default=None, metadata={"alias": "recurrence"}
    )


@dataclass(kw_only=True)
class GroupScheduleGetListResponse17sp1(OCIDataResponse):
    """Response to GroupScheduleGetListRequest17sp1.
        The response contains a list of group schedules. If the group belongs to an enterprise,
        it also contains the schedules for the enterprise.

    Attributes:

        schedule_global_key (Optional[List[ScheduleGlobalKey]]):

    """

    schedule_global_key: Optional[List[ScheduleGlobalKey]] = field(
        default=None, metadata={"alias": "scheduleGlobalKey"}
    )


@dataclass(kw_only=True)
class GroupScheduleGetPagedSortedListResponse(OCIDataResponse):
    """Response to GroupScheduleGetPagedSortedListRequest.
        Contains a 3 column table with column headings: \"Name\", \"Type\", \"Level\"
        and a row for each schedule.

    Attributes:

        schedule_table (OCITable):

    """

    schedule_table: OCITable = field(metadata={"alias": "scheduleTable"})


@dataclass(kw_only=True)
class GroupScheduleUsageResponse(OCIDataResponse):
    """Response to GroupScheduleUsageRequest.
        The response contains a list of service names.
        The response contains the usage for the requested schedule.
        The usage table has columns \"Service Name\", and \"Instance Name\".
        The Service Name values correspond to string values of the GroupService and UserService data types.

    Attributes:

        usage_table (OCITable):

    """

    usage_table: OCITable = field(metadata={"alias": "usageTable"})


@dataclass(kw_only=True)
class GroupSecurityClassificationCustomizationGetAvailableListResponse(OCIDataResponse):
    """Response to GroupClassificationCustomizationGetAvailableListRequest.
        Returns the available group security classifications.
        Contains a table with column headings:
        \"SystemSecurityClassification\", \"CustomizedSecurityClassification\"

    Attributes:

        security_classification_name_table (OCITable):

    """

    security_classification_name_table: OCITable = field(
        metadata={"alias": "securityClassificationNameTable"}
    )


@dataclass(kw_only=True)
class GroupSeriesCompletionGetAvailableUserListResponse(OCIDataResponse):
    """Response to the GroupSeriesCompletionGetAvailableUserListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupSeriesCompletionGetInstanceListResponse(OCIDataResponse):
    """Response to the GroupSeriesCompletionGetInstanceListRequest.

    Attributes:

        name (Optional[List[str]]):

    """

    name: Optional[List[str]] = field(default=None, metadata={"alias": "name"})


@dataclass(kw_only=True)
class GroupSeriesCompletionGetInstanceResponse(OCIDataResponse):
    """Response to the GroupSeriesCompletionGetInstanceRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupServiceGetAuthorizationListResponse(OCIDataResponse):
    """Response to GroupServiceGetAuthorizationListRequest.
        Contains three tables, one for the service packs, one for the group services, and one for
        the user services.
        The user table has the following column headings:
          \"Service Name\", \"Authorized\", \"Assigned\", \"Limited\", \"Quantity\", \"Usage\", \"Licensed\", \"Allowed\", \"User Assignable\", \"Group Service Assignable\".
        The group service table has the following column headings:
          \"Service Name\", \"Authorized\", \"Assigned\", \"Limited\", \"Quantity\", \"Usage\", \"Licensed\", \"Allowed\", \"Instance Count\".
        The service pack table's column headings are:
          \"Service Pack Name\", \"Authorized\", \"Assigned\", \"Limited\", \"Allocated\", \"Allowed\", \"Usage\", \"Description\".

    Attributes:

        service_packs_authorization_table (OCITable):

        group_services_authorization_table (OCITable):

        user_services_authorization_table (OCITable):

    """

    service_packs_authorization_table: OCITable = field(
        metadata={"alias": "servicePacksAuthorizationTable"}
    )

    group_services_authorization_table: OCITable = field(
        metadata={"alias": "groupServicesAuthorizationTable"}
    )

    user_services_authorization_table: OCITable = field(
        metadata={"alias": "userServicesAuthorizationTable"}
    )


@dataclass(kw_only=True)
class GroupServiceGetAuthorizationResponse(OCIDataResponse):
    """Response to GroupServiceGetAuthorizationRequest.
        If the feature is not authorized, then \"authorized\" is false and the remaining elements are not returned.
        If the service pack is not available for use or is not authorized, then \"authorized\" is false and the remaining elements are not returned.
        \"authorizedQuantity\" can be unlimited or a quantity. In the case of a service pack, \"authorizedQuantity\" is the service pack's quantity.
        \"authorizable\" is applicable for user services and group services; it is not returned for service packs.

    Attributes:

        authorized (bool):

        authorized_quantity (Optional[UnboundedNonNegativeInt]):

        used_quantity (Optional[UnboundedNonNegativeInt]):

        authorizable (Optional[bool]):

    """

    authorized: bool = field(metadata={"alias": "authorized"})

    authorized_quantity: Optional[UnboundedNonNegativeInt] = field(
        default=None, metadata={"alias": "authorizedQuantity"}
    )

    used_quantity: Optional[UnboundedNonNegativeInt] = field(
        default=None, metadata={"alias": "usedQuantity"}
    )

    authorizable: Optional[bool] = field(
        default=None, metadata={"alias": "authorizable"}
    )


@dataclass(kw_only=True)
class GroupServiceGetAuthorizedListResponse(OCIDataResponse):
    """Response to GroupServiceGetAuthorizedListRequest.

    Attributes:

        service_pack_name (Optional[List[str]]):

        group_service_name (Optional[List[str]]):

        user_service_name (Optional[List[str]]):

    """

    service_pack_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "servicePackName"}
    )

    group_service_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "groupServiceName"}
    )

    user_service_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "userServiceName"}
    )


@dataclass(kw_only=True)
class GroupServiceInstancePrivacyGetResponse17sp4(OCIDataResponse):
    """Response to GroupServiceInstancePrivacyGetRequest17sp4.

    Attributes:

        enable_directory_privacy (bool):

        enable_auto_attendant_extension_dialing_privacy (bool):

        enable_auto_attendant_name_dialing_privacy (bool):

    """

    enable_directory_privacy: bool = field(metadata={"alias": "enableDirectoryPrivacy"})

    enable_auto_attendant_extension_dialing_privacy: bool = field(
        metadata={"alias": "enableAutoAttendantExtensionDialingPrivacy"}
    )

    enable_auto_attendant_name_dialing_privacy: bool = field(
        metadata={"alias": "enableAutoAttendantNameDialingPrivacy"}
    )


@dataclass(kw_only=True)
class GroupServiceIsAssignedResponse(OCIDataResponse):
    """Returns true if the GroupService is assigned, otherwise false.

    Attributes:

        is_assigned (bool):

    """

    is_assigned: bool = field(metadata={"alias": "isAssigned"})


@dataclass(kw_only=True)
class GroupServicePhoneNumberLookupResponse(OCIDataResponse):
    """Response to the GroupServicePhoneNumberLookupRequest.
        The column headings for the userTable are: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\",
        \"Hiragana First Name\", \"Phone Number\", \"Extension\" and \"Department\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupSessionAdmissionControlGetAvailableDeviceListResponse(OCIDataResponse):
    """Response to GroupSessionAdmissionControlGetAvailableDeviceListRequest.
        Contains a table of devices can be assigned to session admission control group in the group.

    Attributes:

        access_device (Optional[List[AccessDevice]]):

    """

    access_device: Optional[List[AccessDevice]] = field(
        default=None, metadata={"alias": "accessDevice"}
    )


@dataclass(kw_only=True)
class GroupSessionAdmissionControlGetResponse(OCIDataResponse):
    """Response to the GroupSessionAdmissionControlGetRequest.
        The response contains the session admission control capacity allocated for the group.

    Attributes:

        restrict_aggregate_sessions (bool):

        max_sessions (Optional[int]):

        max_user_originating_sessions (Optional[int]):

        max_user_terminating_sessions (Optional[int]):

        count_intra_group_sessions (bool):

    """

    restrict_aggregate_sessions: bool = field(
        metadata={"alias": "restrictAggregateSessions"}
    )

    max_sessions: Optional[int] = field(default=None, metadata={"alias": "maxSessions"})

    max_user_originating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "maxUserOriginatingSessions"}
    )

    max_user_terminating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "maxUserTerminatingSessions"}
    )

    count_intra_group_sessions: bool = field(
        metadata={"alias": "countIntraGroupSessions"}
    )


@dataclass(kw_only=True)
class GroupSessionAdmissionControlGroupGetListResponse(OCIDataResponse):
    """Response to GroupSessionAdmissionControlGroupGetListRequest.
        Contains a table of session admission control group configured in the group.
        The column headings are: \"Name\", \"Is Default\", \"Maximum Sessions\", \"Maximum Originating Sessions\", \"Maximum Terminating Sessions\".

    Attributes:

        session_admission_control_group_table (OCITable):

    """

    session_admission_control_group_table: OCITable = field(
        metadata={"alias": "sessionAdmissionControlGroupTable"}
    )


@dataclass(kw_only=True)
class GroupSessionAdmissionControlGroupGetResponse21sp1V2(OCIDataResponse):
    """Response to GroupSessionAdmissionControlGroupGetRequest21sp1V2.
        Returns the profile information for the session admission control group.

    Attributes:

        max_session (int):

        max_user_originating_sessions (Optional[int]):

        max_user_terminating_sessions (Optional[int]):

        reserved_session (int):

        reserved_user_originating_sessions (Optional[int]):

        reserved_user_terminating_sessions (Optional[int]):

        default_group (bool):

        count_intra_sac_group_sessions (bool):

        devices (Optional[List[AccessDevice]]):

        block_emergency_and_repair_calls_due_to_sac_limits (bool):

        media_group_name (Optional[str]):

        access_info_pattern (Optional[str]):

    """

    max_session: int = field(metadata={"alias": "maxSession"})

    max_user_originating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "maxUserOriginatingSessions"}
    )

    max_user_terminating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "maxUserTerminatingSessions"}
    )

    reserved_session: int = field(metadata={"alias": "reservedSession"})

    reserved_user_originating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "reservedUserOriginatingSessions"}
    )

    reserved_user_terminating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "reservedUserTerminatingSessions"}
    )

    default_group: bool = field(metadata={"alias": "defaultGroup"})

    count_intra_sac_group_sessions: bool = field(
        metadata={"alias": "countIntraSACGroupSessions"}
    )

    devices: Optional[List[AccessDevice]] = field(
        default=None, metadata={"alias": "devices"}
    )

    block_emergency_and_repair_calls_due_to_sac_limits: bool = field(
        metadata={"alias": "blockEmergencyAndRepairCallsDueToSACLimits"}
    )

    media_group_name: Optional[str] = field(
        default=None, metadata={"alias": "mediaGroupName"}
    )

    access_info_pattern: Optional[str] = field(
        default=None, metadata={"alias": "accessInfoPattern"}
    )


@dataclass(kw_only=True)
class GroupShInterfaceGetUserListResponse21sp1(OCIDataResponse):
    """Response to the GroupShInterfaceGetUserListRequest21sp1.
        The response contains the Sh Non Transparent data and associated Public User Identity
        information for every Public User Identity in the group.

    Attributes:

        entry (Optional[List[ShInterfaceUserListEntry21sp1]]):

    """

    entry: Optional[List[ShInterfaceUserListEntry21sp1]] = field(
        default=None, metadata={"alias": "entry"}
    )


@dataclass(kw_only=True)
class GroupSpeedDial100GetResponse17sp1(OCIDataResponse):
    """Response to the GroupSpeedDial100GetRequest17sp1.

    Attributes:

        prefix (Optional[str]):

    """

    prefix: Optional[str] = field(default=None, metadata={"alias": "prefix"})


@dataclass(kw_only=True)
class GroupStirShakenGetResponse23V2(OCIDataResponse):
    """Response to the GroupStirShakenGetRequest23V2.

    Attributes:

        use_parent_level_settings (bool):

        signing_policy (str):

        tagging_policy (str):

        signing_service_url (Optional[str]):

        tag_from_or_pai (str):

        verstat_tag (str):

        use_os_value_for_orig_id (bool):

        orig_uuid (Optional[str]):

        attestation_level (str):

        enable_verification (bool):

        verification_service_url (Optional[str]):

        verification_error_handling (str):

        proxy_verstat_to_cnam_subscribe (bool):

        use_unknown_headers_from_cnam_notify (bool):

        enable_signing_for_unscreened_trunk_group_originations (bool):

        enable_tagging_for_unscreened_trunk_group_originations (bool):

        unscreened_trunk_group_origination_attestation_level (str):

        include_tagged_headers_to_access_side (bool):

        proxy_identity_header_to_access_side (bool):

        check_directory_numbers_for_attestation (bool):

        match_unassigned_numbers_only (bool):

        enable_tagging_for_redirected_calls (bool):

        prefer_ingress_tagging (bool):

    """

    use_parent_level_settings: bool = field(
        metadata={"alias": "useParentLevelSettings"}
    )

    signing_policy: str = field(metadata={"alias": "signingPolicy"})

    tagging_policy: str = field(metadata={"alias": "taggingPolicy"})

    signing_service_url: Optional[str] = field(
        default=None, metadata={"alias": "signingServiceURL"}
    )

    tag_from_or_pai: str = field(metadata={"alias": "tagFromOrPAI"})

    verstat_tag: str = field(metadata={"alias": "verstatTag"})

    use_os_value_for_orig_id: bool = field(metadata={"alias": "useOSValueForOrigId"})

    orig_uuid: Optional[str] = field(default=None, metadata={"alias": "origUUID"})

    attestation_level: str = field(metadata={"alias": "attestationLevel"})

    enable_verification: bool = field(metadata={"alias": "enableVerification"})

    verification_service_url: Optional[str] = field(
        default=None, metadata={"alias": "verificationServiceURL"}
    )

    verification_error_handling: str = field(
        metadata={"alias": "verificationErrorHandling"}
    )

    proxy_verstat_to_cnam_subscribe: bool = field(
        metadata={"alias": "proxyVerstatToCNAMSubscribe"}
    )

    use_unknown_headers_from_cnam_notify: bool = field(
        metadata={"alias": "useUnknownHeadersFromCNAMNotify"}
    )

    enable_signing_for_unscreened_trunk_group_originations: bool = field(
        metadata={"alias": "enableSigningForUnscreenedTrunkGroupOriginations"}
    )

    enable_tagging_for_unscreened_trunk_group_originations: bool = field(
        metadata={"alias": "enableTaggingForUnscreenedTrunkGroupOriginations"}
    )

    unscreened_trunk_group_origination_attestation_level: str = field(
        metadata={"alias": "unscreenedTrunkGroupOriginationAttestationLevel"}
    )

    include_tagged_headers_to_access_side: bool = field(
        metadata={"alias": "includeTaggedHeadersToAccessSide"}
    )

    proxy_identity_header_to_access_side: bool = field(
        metadata={"alias": "proxyIdentityHeaderToAccessSide"}
    )

    check_directory_numbers_for_attestation: bool = field(
        metadata={"alias": "checkDirectoryNumbersForAttestation"}
    )

    match_unassigned_numbers_only: bool = field(
        metadata={"alias": "matchUnassignedNumbersOnly"}
    )

    enable_tagging_for_redirected_calls: bool = field(
        metadata={"alias": "enableTaggingForRedirectedCalls"}
    )

    prefer_ingress_tagging: bool = field(metadata={"alias": "preferIngressTagging"})


@dataclass(kw_only=True)
class GroupTemplateOnlyDeviceFileGetListResponse(OCIDataResponse):
    """Response to GroupTemplateOnlyDeviceFileGetListRequest.
        Contains a list of template files used to support a Visual Device Management device.

    Attributes:

        template_file_url (Optional[List[str]]):

    """

    template_file_url: Optional[List[str]] = field(
        default=None, metadata={"alias": "templateFileUrl"}
    )


@dataclass(kw_only=True)
class GroupThirdPartyEmergencyCallingGetResponse22(OCIDataResponse):
    """Response to the GroupThirdPartyEmergencyCallingGetRequest22.
        The response contains the third-party emergency call service settings for the Group.

    Attributes:

        enable_device_management (bool):

        enable_routing (bool):

        customer_id (Optional[str]):

        secret_key (Optional[str]):

    """

    enable_device_management: bool = field(metadata={"alias": "enableDeviceManagement"})

    enable_routing: bool = field(metadata={"alias": "enableRouting"})

    customer_id: Optional[str] = field(default=None, metadata={"alias": "customerId"})

    secret_key: Optional[str] = field(default=None, metadata={"alias": "secretKey"})


@dataclass(kw_only=True)
class GroupThirdPartyVoiceMailSupportGetResponse(OCIDataResponse):
    """Response to GroupThirdPartyVoiceMailSupportGetRequest.

    Attributes:

        is_active (bool):

        group_server (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    group_server: Optional[str] = field(default=None, metadata={"alias": "groupServer"})


@dataclass(kw_only=True)
class GroupTrunkGroupGetAvailableDetailListResponse(OCIDataResponse):
    """Response to GroupTrunkGroupGetAvailableDetailListRequest.

    Attributes:

        trunk_group (Optional[List[object]]):

    """

    trunk_group: Optional[List[object]] = field(
        default=None, metadata={"alias": "trunkGroup"}
    )


@dataclass(kw_only=True)
class GroupTrunkGroupGetAvailableHostedUserListResponse(OCIDataResponse):
    """Response to the GroupTrunkGroupGetAvailableHostedUserListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupTrunkGroupGetInstanceListResponse14sp4(OCIDataResponse):
    """Response to GroupTrunkGroupGetInstanceListRequest14sp4.
        Contains a table with column headings \"Name\", \"Department\", \"Device Name\", \"Device Level\",
        \"Group Id\".
        The \"Device Level\" column contains one of the AccessDeviceLevel enumerated constants.

    Attributes:

        trunk_group_table (OCITable):

    """

    trunk_group_table: OCITable = field(metadata={"alias": "trunkGroupTable"})


@dataclass(kw_only=True)
class GroupTrunkGroupGetInstanceResponse23(OCIDataResponse):
    """Response to GroupTrunkGroupGetInstanceRequest23.
        Returns the profile information for the Trunk Group.
        Contains a hosted user table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\", \"Phone Number\",
        \"Extension\", \"Department\", \"Email Address\".
        Following attributes are only used in IMS mode:
          implicitRegistrationSetSupportPolicy
          useSystemImplicitRegistrationSetSupportPolicy
          sipIdentityForPilotAndProxyTrunkModesPolicy
          useSystemSIPIdentityForPilotAndProxyTrunkModesPolicy

    Attributes:

        pilot_user_id (Optional[str]):

        department (Optional[DepartmentKey]):

        access_device (Optional[AccessDevice]):

        max_active_calls (int):

        max_incoming_calls (Optional[int]):

        max_outgoing_calls (Optional[int]):

        enable_bursting (bool):

        bursting_max_active_calls (Optional[int]):

        bursting_max_incoming_calls (Optional[int]):

        bursting_max_outgoing_calls (Optional[int]):

        capacity_exceeded_action (Optional[str]):

        capacity_exceeded_forward_address (Optional[str]):

        capacity_exceeded_reroute_trunk_group_key (Optional[TrunkGroupKey]):

        capacity_exceeded_trap_initial_calls (int):

        capacity_exceeded_trap_offset_calls (int):

        unreachable_destination_action (Optional[str]):

        unreachable_destination_forward_address (Optional[str]):

        unreachable_destination_reroute_trunk_group_key (Optional[TrunkGroupKey]):

        invitation_timeout (int):

        require_authentication (bool):

        sip_authentication_user_name (Optional[str]):

        hosted_user_table (Optional[OCITable]):

        trunk_group_identity (Optional[str]):

        otg_dtg_identity (Optional[str]):

        allow_termination_to_trunk_group_identity (bool):

        allow_termination_to_dtg_identity (bool):

        include_trunk_group_identity (bool):

        include_dtg_identity (bool):

        include_trunk_group_identity_for_network_calls (bool):

        include_otg_identity_for_network_calls (bool):

        enable_network_address_identity (bool):

        allow_unscreened_calls (bool):

        allow_unscreened_emergency_calls (bool):

        pilot_user_calling_line_identity_for_external_calls_policy (str):

        pilot_user_charge_number_policy (str):

        call_forwarding_always_action (Optional[str]):

        call_forwarding_always_forward_address (Optional[str]):

        call_forwarding_always_reroute_trunk_group_key (Optional[TrunkGroupKey]):

        peering_domain (Optional[str]):

        route_to_peering_domain (bool):

        prefix_enabled (bool):

        prefix (Optional[str]):

        stateful_rerouting_enabled (bool):

        send_continuous_options_message (bool):

        continuous_options_sending_interval_seconds (int):

        failure_options_sending_interval_seconds (int):

        failure_threshold_counter (int):

        success_threshold_counter (int):

        invite_failure_threshold_counter (int):

        invite_failure_threshold_window_seconds (int):

        trunk_group_state (str):

        pilot_user_calling_line_asserted_identity_policy (str):

        use_system_calling_line_asserted_identity_policy (bool):

        total_active_incoming_calls (int):

        total_active_outgoing_calls (int):

        pilot_user_call_optimization_policy (str):

        clid_source_for_screened_calls_policy (str):

        use_system_clid_source_for_screened_calls_policy (bool):

        user_lookup_policy (str):

        use_system_user_lookup_policy (bool):

        pilot_user_calling_line_identity_for_emergency_calls_policy (str):

        implicit_registration_set_support_policy (str):

        use_system_implicit_registration_set_support_policy (bool):

        sip_identity_for_pilot_and_proxy_trunk_modes_policy (str):

        use_system_sip_identity_for_pilot_and_proxy_trunk_modes_policy (bool):

        use_system_support_connected_identity_policy (bool):

        support_connected_identity_policy (str):

        use_system_options_message_response_status_codes (bool):

        options_message_response_status_code (Optional[List[str]]):

    """

    pilot_user_id: Optional[str] = field(
        default=None, metadata={"alias": "pilotUserId"}
    )

    department: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "department"}
    )

    access_device: Optional[AccessDevice] = field(
        default=None, metadata={"alias": "accessDevice"}
    )

    max_active_calls: int = field(metadata={"alias": "maxActiveCalls"})

    max_incoming_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxIncomingCalls"}
    )

    max_outgoing_calls: Optional[int] = field(
        default=None, metadata={"alias": "maxOutgoingCalls"}
    )

    enable_bursting: bool = field(metadata={"alias": "enableBursting"})

    bursting_max_active_calls: Optional[int] = field(
        default=None, metadata={"alias": "burstingMaxActiveCalls"}
    )

    bursting_max_incoming_calls: Optional[int] = field(
        default=None, metadata={"alias": "burstingMaxIncomingCalls"}
    )

    bursting_max_outgoing_calls: Optional[int] = field(
        default=None, metadata={"alias": "burstingMaxOutgoingCalls"}
    )

    capacity_exceeded_action: Optional[str] = field(
        default=None, metadata={"alias": "capacityExceededAction"}
    )

    capacity_exceeded_forward_address: Optional[str] = field(
        default=None, metadata={"alias": "capacityExceededForwardAddress"}
    )

    capacity_exceeded_reroute_trunk_group_key: Optional[TrunkGroupKey] = field(
        default=None, metadata={"alias": "capacityExceededRerouteTrunkGroupKey"}
    )

    capacity_exceeded_trap_initial_calls: int = field(
        metadata={"alias": "capacityExceededTrapInitialCalls"}
    )

    capacity_exceeded_trap_offset_calls: int = field(
        metadata={"alias": "capacityExceededTrapOffsetCalls"}
    )

    unreachable_destination_action: Optional[str] = field(
        default=None, metadata={"alias": "unreachableDestinationAction"}
    )

    unreachable_destination_forward_address: Optional[str] = field(
        default=None, metadata={"alias": "unreachableDestinationForwardAddress"}
    )

    unreachable_destination_reroute_trunk_group_key: Optional[TrunkGroupKey] = field(
        default=None, metadata={"alias": "unreachableDestinationRerouteTrunkGroupKey"}
    )

    invitation_timeout: int = field(metadata={"alias": "invitationTimeout"})

    require_authentication: bool = field(metadata={"alias": "requireAuthentication"})

    sip_authentication_user_name: Optional[str] = field(
        default=None, metadata={"alias": "sipAuthenticationUserName"}
    )

    hosted_user_table: Optional[OCITable] = field(
        default=None, metadata={"alias": "hostedUserTable"}
    )

    trunk_group_identity: Optional[str] = field(
        default=None, metadata={"alias": "trunkGroupIdentity"}
    )

    otg_dtg_identity: Optional[str] = field(
        default=None, metadata={"alias": "otgDtgIdentity"}
    )

    allow_termination_to_trunk_group_identity: bool = field(
        metadata={"alias": "allowTerminationToTrunkGroupIdentity"}
    )

    allow_termination_to_dtg_identity: bool = field(
        metadata={"alias": "allowTerminationToDtgIdentity"}
    )

    include_trunk_group_identity: bool = field(
        metadata={"alias": "includeTrunkGroupIdentity"}
    )

    include_dtg_identity: bool = field(metadata={"alias": "includeDtgIdentity"})

    include_trunk_group_identity_for_network_calls: bool = field(
        metadata={"alias": "includeTrunkGroupIdentityForNetworkCalls"}
    )

    include_otg_identity_for_network_calls: bool = field(
        metadata={"alias": "includeOtgIdentityForNetworkCalls"}
    )

    enable_network_address_identity: bool = field(
        metadata={"alias": "enableNetworkAddressIdentity"}
    )

    allow_unscreened_calls: bool = field(metadata={"alias": "allowUnscreenedCalls"})

    allow_unscreened_emergency_calls: bool = field(
        metadata={"alias": "allowUnscreenedEmergencyCalls"}
    )

    pilot_user_calling_line_identity_for_external_calls_policy: str = field(
        metadata={"alias": "pilotUserCallingLineIdentityForExternalCallsPolicy"}
    )

    pilot_user_charge_number_policy: str = field(
        metadata={"alias": "pilotUserChargeNumberPolicy"}
    )

    call_forwarding_always_action: Optional[str] = field(
        default=None, metadata={"alias": "callForwardingAlwaysAction"}
    )

    call_forwarding_always_forward_address: Optional[str] = field(
        default=None, metadata={"alias": "callForwardingAlwaysForwardAddress"}
    )

    call_forwarding_always_reroute_trunk_group_key: Optional[TrunkGroupKey] = field(
        default=None, metadata={"alias": "callForwardingAlwaysRerouteTrunkGroupKey"}
    )

    peering_domain: Optional[str] = field(
        default=None, metadata={"alias": "peeringDomain"}
    )

    route_to_peering_domain: bool = field(metadata={"alias": "routeToPeeringDomain"})

    prefix_enabled: bool = field(metadata={"alias": "prefixEnabled"})

    prefix: Optional[str] = field(default=None, metadata={"alias": "prefix"})

    stateful_rerouting_enabled: bool = field(
        metadata={"alias": "statefulReroutingEnabled"}
    )

    send_continuous_options_message: bool = field(
        metadata={"alias": "sendContinuousOptionsMessage"}
    )

    continuous_options_sending_interval_seconds: int = field(
        metadata={"alias": "continuousOptionsSendingIntervalSeconds"}
    )

    failure_options_sending_interval_seconds: int = field(
        metadata={"alias": "failureOptionsSendingIntervalSeconds"}
    )

    failure_threshold_counter: int = field(
        metadata={"alias": "failureThresholdCounter"}
    )

    success_threshold_counter: int = field(
        metadata={"alias": "successThresholdCounter"}
    )

    invite_failure_threshold_counter: int = field(
        metadata={"alias": "inviteFailureThresholdCounter"}
    )

    invite_failure_threshold_window_seconds: int = field(
        metadata={"alias": "inviteFailureThresholdWindowSeconds"}
    )

    trunk_group_state: str = field(metadata={"alias": "trunkGroupState"})

    pilot_user_calling_line_asserted_identity_policy: str = field(
        metadata={"alias": "pilotUserCallingLineAssertedIdentityPolicy"}
    )

    use_system_calling_line_asserted_identity_policy: bool = field(
        metadata={"alias": "useSystemCallingLineAssertedIdentityPolicy"}
    )

    total_active_incoming_calls: int = field(
        metadata={"alias": "totalActiveIncomingCalls"}
    )

    total_active_outgoing_calls: int = field(
        metadata={"alias": "totalActiveOutgoingCalls"}
    )

    pilot_user_call_optimization_policy: str = field(
        metadata={"alias": "pilotUserCallOptimizationPolicy"}
    )

    clid_source_for_screened_calls_policy: str = field(
        metadata={"alias": "clidSourceForScreenedCallsPolicy"}
    )

    use_system_clid_source_for_screened_calls_policy: bool = field(
        metadata={"alias": "useSystemCLIDSourceForScreenedCallsPolicy"}
    )

    user_lookup_policy: str = field(metadata={"alias": "userLookupPolicy"})

    use_system_user_lookup_policy: bool = field(
        metadata={"alias": "useSystemUserLookupPolicy"}
    )

    pilot_user_calling_line_identity_for_emergency_calls_policy: str = field(
        metadata={"alias": "pilotUserCallingLineIdentityForEmergencyCallsPolicy"}
    )

    implicit_registration_set_support_policy: str = field(
        metadata={"alias": "implicitRegistrationSetSupportPolicy"}
    )

    use_system_implicit_registration_set_support_policy: bool = field(
        metadata={"alias": "useSystemImplicitRegistrationSetSupportPolicy"}
    )

    sip_identity_for_pilot_and_proxy_trunk_modes_policy: str = field(
        metadata={"alias": "sipIdentityForPilotAndProxyTrunkModesPolicy"}
    )

    use_system_sip_identity_for_pilot_and_proxy_trunk_modes_policy: bool = field(
        metadata={"alias": "useSystemSIPIdentityForPilotAndProxyTrunkModesPolicy"}
    )

    use_system_support_connected_identity_policy: bool = field(
        metadata={"alias": "useSystemSupportConnectedIdentityPolicy"}
    )

    support_connected_identity_policy: str = field(
        metadata={"alias": "supportConnectedIdentityPolicy"}
    )

    use_system_options_message_response_status_codes: bool = field(
        metadata={"alias": "useSystemOptionsMessageResponseStatusCodes"}
    )

    options_message_response_status_code: Optional[List[str]] = field(
        default=None, metadata={"alias": "optionsMessageResponseStatusCode"}
    )


@dataclass(kw_only=True)
class GroupTrunkGroupGetInstanceUserListResponse14sp4(OCIDataResponse):
    """Response to GroupTrunkGroupGetInstanceUserListRequest14sp4.
        The response contains a 9 column table with column headings \"User Id\", \"Last Name\",
        \"First Name\", \"Department\", \"Phone Number\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Extension\", \"Email Address\".

    Attributes:

        trunk_group_user_table (OCITable):

    """

    trunk_group_user_table: OCITable = field(metadata={"alias": "trunkGroupUserTable"})


@dataclass(kw_only=True)
class GroupTrunkGroupGetResponse23(OCIDataResponse):
    """Response to the GroupTrunkGroupGetRequest23.
        The response contains the maximum and bursting maximum permissible active trunk group calls for the group.

    Attributes:

        max_active_calls (int):

        max_available_active_calls (UnboundedNonNegativeInt):

        bursting_max_active_calls (UnboundedNonNegativeInt):

        bursting_max_available_active_calls (UnboundedNonNegativeInt):

        max_available_number_of_bursting_btl_us (UnboundedNonNegativeInt):

        number_of_bursting_btl_us (Optional[int]):

    """

    max_active_calls: int = field(metadata={"alias": "maxActiveCalls"})

    max_available_active_calls: UnboundedNonNegativeInt = field(
        metadata={"alias": "maxAvailableActiveCalls"}
    )

    bursting_max_active_calls: UnboundedNonNegativeInt = field(
        metadata={"alias": "burstingMaxActiveCalls"}
    )

    bursting_max_available_active_calls: UnboundedNonNegativeInt = field(
        metadata={"alias": "burstingMaxAvailableActiveCalls"}
    )

    max_available_number_of_bursting_btl_us: UnboundedNonNegativeInt = field(
        metadata={"alias": "maxAvailableNumberOfBurstingBTLUs"}
    )

    number_of_bursting_btl_us: Optional[int] = field(
        default=None, metadata={"alias": "numberOfBurstingBTLUs"}
    )


@dataclass(kw_only=True)
class GroupTrunkGroupSecurityClassificationGetResponse(OCIDataResponse):
    """Response to the GroupTrunkGroupSecurityClassificationGetRequest.

    Attributes:

        default_security_classification (Optional[str]):

    """

    default_security_classification: Optional[str] = field(
        default=None, metadata={"alias": "defaultSecurityClassification"}
    )


@dataclass(kw_only=True)
class GroupTrunkGroupStirShakenGetResponse23V2(OCIDataResponse):
    """Response to the GroupTrunkGroupStirShakenGetRequest23V2.

    Attributes:

        use_parent_level_settings (bool):

        signing_policy (str):

        tagging_policy (str):

        signing_service_url (Optional[str]):

        tag_from_or_pai (str):

        verstat_tag (str):

        use_os_value_for_orig_id (bool):

        orig_uuid (Optional[str]):

        attestation_level (str):

        enable_signing_for_unscreened_trunk_group_originations (bool):

        enable_tagging_for_unscreened_trunk_group_originations (bool):

        unscreened_trunk_group_origination_attestation_level (str):

        check_directory_numbers_for_attestation (bool):

        match_unassigned_numbers_only (bool):

        enable_tagging_for_redirected_calls (bool):

    """

    use_parent_level_settings: bool = field(
        metadata={"alias": "useParentLevelSettings"}
    )

    signing_policy: str = field(metadata={"alias": "signingPolicy"})

    tagging_policy: str = field(metadata={"alias": "taggingPolicy"})

    signing_service_url: Optional[str] = field(
        default=None, metadata={"alias": "signingServiceURL"}
    )

    tag_from_or_pai: str = field(metadata={"alias": "tagFromOrPAI"})

    verstat_tag: str = field(metadata={"alias": "verstatTag"})

    use_os_value_for_orig_id: bool = field(metadata={"alias": "useOSValueForOrigId"})

    orig_uuid: Optional[str] = field(default=None, metadata={"alias": "origUUID"})

    attestation_level: str = field(metadata={"alias": "attestationLevel"})

    enable_signing_for_unscreened_trunk_group_originations: bool = field(
        metadata={"alias": "enableSigningForUnscreenedTrunkGroupOriginations"}
    )

    enable_tagging_for_unscreened_trunk_group_originations: bool = field(
        metadata={"alias": "enableTaggingForUnscreenedTrunkGroupOriginations"}
    )

    unscreened_trunk_group_origination_attestation_level: str = field(
        metadata={"alias": "unscreenedTrunkGroupOriginationAttestationLevel"}
    )

    check_directory_numbers_for_attestation: bool = field(
        metadata={"alias": "checkDirectoryNumbersForAttestation"}
    )

    match_unassigned_numbers_only: bool = field(
        metadata={"alias": "matchUnassignedNumbersOnly"}
    )

    enable_tagging_for_redirected_calls: bool = field(
        metadata={"alias": "enableTaggingForRedirectedCalls"}
    )


@dataclass(kw_only=True)
class GroupTrunkGroupUserCreationTaskGetListResponse14sp4(OCIDataResponse):
    """Response to GroupTrunkGroupUserCreationTaskGetListRequest14sp4.
        Contains a table with a row for each user creation task and column headings :
        \"Name\", \"Status\", \"Users Created\", \"Total Users To Create\", \"Error Count\".

    Attributes:

        task_table (OCITable):

    """

    task_table: OCITable = field(metadata={"alias": "taskTable"})


@dataclass(kw_only=True)
class GroupTrunkGroupUserCreationTaskGetResponse14sp4(OCIDataResponse):
    """Response to a GroupTrunkGroupUserCreationTaskGetRequest14sp4.

    Attributes:

        user_id_format (str):

        user_id_domain (str):

        populate_extension (bool):

        line_port_format (str):

        line_port_domain (str):

        populate_contact (bool):

        contact_format (Optional[str]):

        contact_domain (Optional[str]):

        users_created (int):

        total_users_to_create (int):

        error_count (int):

        service_pack_name (Optional[List[str]]):

        user_service_name (Optional[List[str]]):

        status (str):

        user_creation_mode (str):

        task_summary (str):

        report_file_key (str):

    """

    user_id_format: str = field(metadata={"alias": "userIdFormat"})

    user_id_domain: str = field(metadata={"alias": "userIdDomain"})

    populate_extension: bool = field(metadata={"alias": "populateExtension"})

    line_port_format: str = field(metadata={"alias": "linePortFormat"})

    line_port_domain: str = field(metadata={"alias": "linePortDomain"})

    populate_contact: bool = field(metadata={"alias": "populateContact"})

    contact_format: Optional[str] = field(
        default=None, metadata={"alias": "contactFormat"}
    )

    contact_domain: Optional[str] = field(
        default=None, metadata={"alias": "contactDomain"}
    )

    users_created: int = field(metadata={"alias": "usersCreated"})

    total_users_to_create: int = field(metadata={"alias": "totalUsersToCreate"})

    error_count: int = field(metadata={"alias": "errorCount"})

    service_pack_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "servicePackName"}
    )

    user_service_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "userServiceName"}
    )

    status: str = field(metadata={"alias": "status"})

    user_creation_mode: str = field(metadata={"alias": "userCreationMode"})

    task_summary: str = field(metadata={"alias": "taskSummary"})

    report_file_key: str = field(metadata={"alias": "reportFileKey"})


@dataclass(kw_only=True)
class GroupUserCallForwardingSettingsGetListResponse(OCIDataResponse):
    """Response to the GroupUserCallForwardingSettingsGetListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\",
        \"Hiragana Last Name\", and \"Hiragana First Name\", \"Phone Number\",
        \"Extension\", \"Department\", \"In Trunk Group\", \"Email Address\",
        \"Is Active\", \"Forwarding Address\".
        \"Is Active\" is \"true\" or \"false\".
        The \"Forwarding Address\" is the Call Forwarding service's forwarding address.
        If the service is Call Forwarding Selective, the default forwarding address is returned.
        \"Phone Number\" is presented in the E164 format.

    Attributes:

        user_call_forwarding_table (OCITable):

    """

    user_call_forwarding_table: OCITable = field(
        metadata={"alias": "userCallForwardingTable"}
    )


@dataclass(kw_only=True)
class GroupUserCallWaitingSettingsGetListResponse(OCIDataResponse):
    """Response to the GroupUserCallWaitingSettingsGetListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana
        Last Name\", and \"Hiragana First Name\", \"Phone Number\",
        \"Extension\", \"Department\", \"In Trunk Group\", \"Email Address\", \"Is Active\".
        \"Is Active\" is \"true\" or \"false\".
        \"Phone Number\" is presented in the E164 format.

    Attributes:

        user_call_waiting_table (OCITable):

    """

    user_call_waiting_table: OCITable = field(
        metadata={"alias": "userCallWaitingTable"}
    )


@dataclass(kw_only=True)
class GroupUserCallingPlanSettingsGetListResponse(OCIDataResponse):
    """Response to the GroupUserCallingPlanSettingsGetListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana
        Last Name\", and \"Hiragana First Name\", \"Phone Number\",
        \"Extension\", \"Department\", \"In Trunk Group\", \"Email Address\", \"Use Custom Settings\".
        \"Use Custom Settings\" is \"true\" or \"false\".
        \"Phone Number\" is presented in the E164 format.

    Attributes:

        user_calling_plan_table (OCITable):

    """

    user_calling_plan_table: OCITable = field(
        metadata={"alias": "userCallingPlanTable"}
    )


@dataclass(kw_only=True)
class GroupUserHotelingGuestSettingsGetListResponse(OCIDataResponse):
    """Response to the GroupUserHotelingGuestSettingsGetListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\",
        \"Hiragana Last Name\", and \"Hiragana First Name\", \"Phone Number\",
        \"Extension\", \"Department\", \"In Trunk Group\", \"Email Address\", \"Is Active\".
        \"Is Active\" is \"true\" or \"false\".
        \"Phone Number\" is presented in the E164 format.

    Attributes:

        user_hoteling_guest_table (OCITable):

    """

    user_hoteling_guest_table: OCITable = field(
        metadata={"alias": "userHotelingGuestTable"}
    )


@dataclass(kw_only=True)
class GroupVirtualOnNetEnterpriseExtensionsGetUserListResponse(OCIDataResponse):
    """Response to GroupVirtualOnNetEnterpriseExtensionsGetUserListRequest.
        Contains a table with column headings: \"Last Name\",
        \"First Name\", \"Phone Number\", \"Extension\",
        \"Virtual On-Net Call Type Name\"
        in a row for each user.

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class GroupVirtualOnNetEnterpriseExtensionsGetUserResponse(OCIDataResponse):
    """Response to GroupVirtualOnNetEnterpriseExtensionsGetUserRequest.

    Attributes:

        extension (str):

        first_name (str):

        last_name (str):

        calling_line_id_first_name (str):

        calling_line_id_last_name (str):

        virtual_on_net_call_type_name (str):

    """

    extension: str = field(metadata={"alias": "extension"})

    first_name: str = field(metadata={"alias": "firstName"})

    last_name: str = field(metadata={"alias": "lastName"})

    calling_line_id_first_name: str = field(
        metadata={"alias": "callingLineIdFirstName"}
    )

    calling_line_id_last_name: str = field(metadata={"alias": "callingLineIdLastName"})

    virtual_on_net_call_type_name: str = field(
        metadata={"alias": "virtualOnNetCallTypeName"}
    )


@dataclass(kw_only=True)
class GroupVisualDeviceManagementGetDeviceInfoResponse(OCIDataResponse):
    """Response to GroupVisualDeviceManagementGetDeviceInfoRequest.

    Attributes:

        device_type (str):

        support_visual_device_management (bool):

        mac_address (Optional[str]):

        primary_user (Optional[PrimaryUserInfo]):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    support_visual_device_management: bool = field(
        metadata={"alias": "supportVisualDeviceManagement"}
    )

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})

    primary_user: Optional[PrimaryUserInfo] = field(
        default=None, metadata={"alias": "primaryUser"}
    )


@dataclass(kw_only=True)
class GroupVoiceMessagingGroupGetResponse(OCIDataResponse):
    """Response to GroupVoiceMessagingGroupGetRequest.
        Contains the group's voice messaging settings.

    Attributes:

        use_mail_server_setting (str):

        warn_caller_before_recording_voice_message (bool):

        allow_users_configuring_advanced_settings (bool):

        allow_compose_or_forward_message_to_entire_group (bool):

        mail_server_net_address (Optional[str]):

        mail_server_protocol (str):

        real_delete_for_imap (bool):

        max_mailbox_length_minutes (int):

        does_message_age (bool):

        hold_period_days (int):

    """

    use_mail_server_setting: str = field(metadata={"alias": "useMailServerSetting"})

    warn_caller_before_recording_voice_message: bool = field(
        metadata={"alias": "warnCallerBeforeRecordingVoiceMessage"}
    )

    allow_users_configuring_advanced_settings: bool = field(
        metadata={"alias": "allowUsersConfiguringAdvancedSettings"}
    )

    allow_compose_or_forward_message_to_entire_group: bool = field(
        metadata={"alias": "allowComposeOrForwardMessageToEntireGroup"}
    )

    mail_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "mailServerNetAddress"}
    )

    mail_server_protocol: str = field(metadata={"alias": "mailServerProtocol"})

    real_delete_for_imap: bool = field(metadata={"alias": "realDeleteForImap"})

    max_mailbox_length_minutes: int = field(
        metadata={"alias": "maxMailboxLengthMinutes"}
    )

    does_message_age: bool = field(metadata={"alias": "doesMessageAge"})

    hold_period_days: int = field(metadata={"alias": "holdPeriodDays"})


@dataclass(kw_only=True)
class GroupVoiceMessagingGroupGetVoicePortalBrandingResponse20(OCIDataResponse):
    """Response to the GroupVoiceMessagingGroupGetVoicePortalBrandingRequest20.

    Attributes:

        voice_portal_greeting_selection (str):

        voice_portal_greeting_file (Optional[AnnouncementFileKey]):

        voice_messaging_greeting_selection (str):

        voice_messaging_greeting_file (Optional[AnnouncementFileKey]):

    """

    voice_portal_greeting_selection: str = field(
        metadata={"alias": "voicePortalGreetingSelection"}
    )

    voice_portal_greeting_file: Optional[AnnouncementFileKey] = field(
        default=None, metadata={"alias": "voicePortalGreetingFile"}
    )

    voice_messaging_greeting_selection: str = field(
        metadata={"alias": "voiceMessagingGreetingSelection"}
    )

    voice_messaging_greeting_file: Optional[AnnouncementFileKey] = field(
        default=None, metadata={"alias": "voiceMessagingGreetingFile"}
    )


@dataclass(kw_only=True)
class GroupVoiceMessagingGroupGetVoicePortalResponse21sp1(OCIDataResponse):
    """Response to the GroupVoiceMessagingGroupGetVoicePortalRequest21sp1.

        The following elements are only used in XS data mode:
        enableExtendedScope

        The following elements are only used in AS data mode:
        expressMode, value \"false\" is returned in XS data mode.

    Attributes:

        service_user_id (str):

        service_instance_profile (ServiceInstanceReadProfile19sp1):

        is_active (bool):

        enable_extended_scope (Optional[bool]):

        allow_identification_by_phone_number_or_voice_mail_aliases_on_login (bool):

        use_voice_portal_wizard (bool):

        voice_portal_external_routing_scope (str):

        use_external_routing (bool):

        external_routing_address (Optional[str]):

        home_zone_name (Optional[str]):

        network_class_of_service (Optional[str]):

        express_mode (bool):

    """

    service_user_id: str = field(metadata={"alias": "serviceUserId"})

    service_instance_profile: ServiceInstanceReadProfile19sp1 = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    is_active: bool = field(metadata={"alias": "isActive"})

    enable_extended_scope: Optional[bool] = field(
        default=None, metadata={"alias": "enableExtendedScope"}
    )

    allow_identification_by_phone_number_or_voice_mail_aliases_on_login: bool = field(
        metadata={"alias": "allowIdentificationByPhoneNumberOrVoiceMailAliasesOnLogin"}
    )

    use_voice_portal_wizard: bool = field(metadata={"alias": "useVoicePortalWizard"})

    voice_portal_external_routing_scope: str = field(
        metadata={"alias": "voicePortalExternalRoutingScope"}
    )

    use_external_routing: bool = field(metadata={"alias": "useExternalRouting"})

    external_routing_address: Optional[str] = field(
        default=None, metadata={"alias": "externalRoutingAddress"}
    )

    home_zone_name: Optional[str] = field(
        default=None, metadata={"alias": "homeZoneName"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    express_mode: bool = field(metadata={"alias": "expressMode"})


@dataclass(kw_only=True)
class GroupVoiceXmlGetInstanceListResponse(OCIDataResponse):
    """Response to the GroupVoiceXmlGetInstanceListRequest.
        Contains a table with column headings:
        \"Service User Id\", \"Name\", \"Phone Number\", \"Extension\", \"Department\", \"Is Active\"
        and \"Is Webex Meeting Callback\".
        The column values for \"Is Active\" can either be true, or false.

    Attributes:

        voice_xml_table (OCITable):

    """

    voice_xml_table: OCITable = field(metadata={"alias": "voiceXmlTable"})


@dataclass(kw_only=True)
class GroupVoiceXmlGetInstanceResponse23(OCIDataResponse):
    """Response to GroupVoiceXmlGetInstanceRequest23.
        Contains the service profile information and possibly access device information.

    Attributes:

        service_instance_profile (ServiceInstanceReadProfile19sp1):

        network_class_of_service (Optional[str]):

        access_device_endpoint (Optional[AccessDeviceEndpointWithPortNumberRead22]):

        webex_meeting_callback (bool):

    """

    service_instance_profile: ServiceInstanceReadProfile19sp1 = field(
        metadata={"alias": "serviceInstanceProfile"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    access_device_endpoint: Optional[AccessDeviceEndpointWithPortNumberRead22] = field(
        default=None, metadata={"alias": "accessDeviceEndpoint"}
    )

    webex_meeting_callback: bool = field(metadata={"alias": "webexMeetingCallback"})


@dataclass(kw_only=True)
class GroupXsiPolicyProfileGetAssignedListResponse(OCIDataResponse):
    """Response to GroupXsiPolicyProfileGetAssignedListRequest.
        Contains a table of all Xsi Policy Profile assigned to.
        The column headings are: \"Name\", \"Level\", \"Description\" and \"Default\".

    Attributes:

        assigned_table (OCITable):

    """

    assigned_table: OCITable = field(metadata={"alias": "assignedTable"})


@dataclass(kw_only=True)
class GroupXsiPolicyProfileGetAssignedUserListResponse(OCIDataResponse):
    """Response to GroupXsiPolicyProfileGetAssignedUserListRequest.
        Contains a table of user that have the user Xsi Policy Profile
        assigned. The column headings are: \"User Id\", \"Last Name\", \"First Name\",
        \"Phone Number\" \"Department\" and \"Extension\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class LoginResponse22V5(OCIDataResponse):
    """Response to the OCI login request.

        The following data elements are only returned in AS data mode:
          resellerId

        The parameter tokenRevocationTime is represented in the number of milliseconds
        since January 1, 1970, 00:00:00 GMT, and it is set to the more current time between
        the system level token revocation time and user level token revocation time.

    Attributes:

        login_type (str):

        locale (str):

        encoding (str):

        group_id (Optional[str]):

        service_provider_id (Optional[str]):

        is_enterprise (bool):

        password_expires_days (Optional[int]):

        user_domain (str):

        reseller_id (Optional[str]):

        token_revocation_time (Optional[int]):

    """

    login_type: str = field(metadata={"alias": "loginType"})

    locale: str = field(metadata={"alias": "locale"})

    encoding: str = field(metadata={"alias": "encoding"})

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    is_enterprise: bool = field(metadata={"alias": "isEnterprise"})

    password_expires_days: Optional[int] = field(
        default=None, metadata={"alias": "passwordExpiresDays"}
    )

    user_domain: str = field(metadata={"alias": "userDomain"})

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    token_revocation_time: Optional[int] = field(
        default=None, metadata={"alias": "tokenRevocationTime"}
    )


@dataclass(kw_only=True)
class PasswordGenerateResponse(OCIDataResponse):
    """Response to the PasswordGenerateRequest.
        The response contains the requested passwords.

    Attributes:

        system_administrator_password (Optional[str]):

        service_provider_administrator_password (Optional[str]):

        group_administrator_password (Optional[str]):

        user_password (Optional[str]):

        user_passcode (Optional[str]):

        user_sip_authentication_password (Optional[str]):

        access_device_authentication_password (Optional[str]):

        trunk_group_authentication_password (Optional[str]):

    """

    system_administrator_password: Optional[str] = field(
        default=None, metadata={"alias": "systemAdministratorPassword"}
    )

    service_provider_administrator_password: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderAdministratorPassword"}
    )

    group_administrator_password: Optional[str] = field(
        default=None, metadata={"alias": "groupAdministratorPassword"}
    )

    user_password: Optional[str] = field(
        default=None, metadata={"alias": "userPassword"}
    )

    user_passcode: Optional[str] = field(
        default=None, metadata={"alias": "userPasscode"}
    )

    user_sip_authentication_password: Optional[str] = field(
        default=None, metadata={"alias": "userSIPAuthenticationPassword"}
    )

    access_device_authentication_password: Optional[str] = field(
        default=None, metadata={"alias": "accessDeviceAuthenticationPassword"}
    )

    trunk_group_authentication_password: Optional[str] = field(
        default=None, metadata={"alias": "trunkGroupAuthenticationPassword"}
    )


@dataclass(kw_only=True)
class PublicClusterGetFullyQualifiedDomainNameResponse(OCIDataResponse):
    """Response to PublicClusterGetFullyQualifiedDomainNameRequest.

    Attributes:

        public_cluster_fqdn (Optional[str]):

    """

    public_cluster_fqdn: Optional[str] = field(
        default=None, metadata={"alias": "publicClusterFQDN"}
    )


@dataclass(kw_only=True)
class ResellerAdminAlternateIdGetListResponse(OCIDataResponse):
    """Response to ResellerAdminAlternateIdGetListRequest.
        Contains a table of the main admin user id and the alternate admin user ids, the column headings are: \"User Id\", \"Description\", \"Alternate\".
        The possible values for \"Alternate\" are \"true\" and \"false\".
        The \"Description\" is only present for alternate admin user Ids.

    Attributes:

        admin_user_id_table (OCITable):

    """

    admin_user_id_table: OCITable = field(metadata={"alias": "adminUserIdTable"})


@dataclass(kw_only=True)
class ResellerAdminGetListResponse(OCIDataResponse):
    """Response to ResellerAdminGetListRequest.
        Contains a 4 column table with column headings \"Administrator ID\",
        \"Last Name\", \"First Name\", \"Language\".

    Attributes:

        reseller_admin_table (OCITable):

    """

    reseller_admin_table: OCITable = field(metadata={"alias": "resellerAdminTable"})


@dataclass(kw_only=True)
class ResellerAdminGetResponse22V2(OCIDataResponse):
    """Response to the ResellerAdminGetRequest22V2.
        The response contains the reseller administrators profile information.

    Attributes:

        reseller_id (str):

        first_name (Optional[str]):

        last_name (Optional[str]):

        language (str):

        account_disabled (bool):

        last_authenticated_date (str):

    """

    reseller_id: str = field(metadata={"alias": "resellerId"})

    first_name: Optional[str] = field(default=None, metadata={"alias": "firstName"})

    last_name: Optional[str] = field(default=None, metadata={"alias": "lastName"})

    language: str = field(metadata={"alias": "language"})

    account_disabled: bool = field(metadata={"alias": "accountDisabled"})

    last_authenticated_date: str = field(metadata={"alias": "lastAuthenticatedDate"})


@dataclass(kw_only=True)
class ResellerCallAdmissionControlPoliciesGetResponse(OCIDataResponse):
    """Response to the ResellerCallAdmissionControlPoliciesGetRequest.
        The response contains the reseller call admission control policies information.

    Attributes:

        enable_call_admission_control (bool):

        max_concurrent_network_sessions (int):

        max_concurrent_network_sessions_threshold (Optional[int]):

        max_network_calls_per_second (int):

        max_network_calls_per_second_threshold (Optional[int]):

        max_concurrent_external_siprec_sessions (int):

        max_concurrent_external_siprec_sessions_threshold (Optional[int]):

    """

    enable_call_admission_control: bool = field(
        metadata={"alias": "enableCallAdmissionControl"}
    )

    max_concurrent_network_sessions: int = field(
        metadata={"alias": "maxConcurrentNetworkSessions"}
    )

    max_concurrent_network_sessions_threshold: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentNetworkSessionsThreshold"}
    )

    max_network_calls_per_second: int = field(
        metadata={"alias": "maxNetworkCallsPerSecond"}
    )

    max_network_calls_per_second_threshold: Optional[int] = field(
        default=None, metadata={"alias": "maxNetworkCallsPerSecondThreshold"}
    )

    max_concurrent_external_siprec_sessions: int = field(
        metadata={"alias": "maxConcurrentExternalSIPRECSessions"}
    )

    max_concurrent_external_siprec_sessions_threshold: Optional[int] = field(
        default=None, metadata={"alias": "maxConcurrentExternalSIPRECSessionsThreshold"}
    )


@dataclass(kw_only=True)
class ResellerCallCenterGetResponse(OCIDataResponse):
    """Response to ResellerCallCenterGetRequest.

    Attributes:

        default_from_address (Optional[str]):

    """

    default_from_address: Optional[str] = field(
        default=None, metadata={"alias": "defaultFromAddress"}
    )


@dataclass(kw_only=True)
class ResellerCallNotifyGetResponse(OCIDataResponse):
    """Response to ResellerCallNotifyGetRequest.

    Attributes:

        default_from_address (Optional[str]):

    """

    default_from_address: Optional[str] = field(
        default=None, metadata={"alias": "defaultFromAddress"}
    )


@dataclass(kw_only=True)
class ResellerCallPoliciesGetResponse22(OCIDataResponse):
    """Response to ResellerCallPoliciesGetRequest22.

    Attributes:

        force_redirecting_user_identity_for_redirected_calls (bool):

        apply_redirecting_user_identity_to_network_locations (bool):

    """

    force_redirecting_user_identity_for_redirected_calls: bool = field(
        metadata={"alias": "forceRedirectingUserIdentityForRedirectedCalls"}
    )

    apply_redirecting_user_identity_to_network_locations: bool = field(
        metadata={"alias": "applyRedirectingUserIdentityToNetworkLocations"}
    )


@dataclass(kw_only=True)
class ResellerCallRecordingGetResponse(OCIDataResponse):
    """Response to the ResellerCallRecordingGetRequest.
         The response contains the reseller’s Call Recording attribute.

    Attributes:

        fqdn (Optional[str]):

    """

    fqdn: Optional[str] = field(default=None, metadata={"alias": "FQDN"})


@dataclass(kw_only=True)
class ResellerCollaborateGetResponse(OCIDataResponse):
    """Response to ResellerCollaborateGetRequest.

    Attributes:

        collaborate_from_address (Optional[str]):

    """

    collaborate_from_address: Optional[str] = field(
        default=None, metadata={"alias": "collaborateFromAddress"}
    )


@dataclass(kw_only=True)
class ResellerDeviceActivationPolicyGetResponse(OCIDataResponse):
    """Response to ResellerDeviceActivationPolicyGetRequest.

    Attributes:

        use_reseller_settings (bool):

        allow_activation_code_request_by_user (bool):

        send_activation_code_in_email (bool):

    """

    use_reseller_settings: bool = field(metadata={"alias": "useResellerSettings"})

    allow_activation_code_request_by_user: bool = field(
        metadata={"alias": "allowActivationCodeRequestByUser"}
    )

    send_activation_code_in_email: bool = field(
        metadata={"alias": "sendActivationCodeInEmail"}
    )


@dataclass(kw_only=True)
class ResellerEmergencyCallNotificationGetResponse(OCIDataResponse):
    """Response to ResellerEmergencyCallNotificationGetRequest.

    Attributes:

        default_from_address (Optional[str]):

    """

    default_from_address: Optional[str] = field(
        default=None, metadata={"alias": "defaultFromAddress"}
    )


@dataclass(kw_only=True)
class ResellerEmergencyZonesGetResponse(OCIDataResponse):
    """Response to ResellerEmergencyZonesGetRequest.

    Attributes:

        default_from_address (Optional[str]):

    """

    default_from_address: Optional[str] = field(
        default=None, metadata={"alias": "defaultFromAddress"}
    )


@dataclass(kw_only=True)
class ResellerGetListResponse(OCIDataResponse):
    """Response to the ResellerGetListRequest.
        Contains a 2 column table with column headings \"Reseller Id\", \"Reseller Name\" and \"Reseller External Id\". A row for each reseller.

    Attributes:

        reseller_table (OCITable):

    """

    reseller_table: OCITable = field(metadata={"alias": "resellerTable"})


@dataclass(kw_only=True)
class ResellerGetResponse22V2(OCIDataResponse):
    """Response to the ResellerGetRequest22V2.

    Attributes:

        reseller_name (Optional[str]):

        reseller_id (str):

        reseller_external_id (Optional[str]):

    """

    reseller_name: Optional[str] = field(
        default=None, metadata={"alias": "resellerName"}
    )

    reseller_id: str = field(metadata={"alias": "resellerId"})

    reseller_external_id: Optional[str] = field(
        default=None, metadata={"alias": "resellerExternalId"}
    )


@dataclass(kw_only=True)
class ResellerIntegratedIMPGetResponse22(OCIDataResponse):
    """Response to the ResellerIntegratedIMPGetRequest22.
        The response contains the reseller Integrated IMP service attributes.

    Attributes:

        use_system_service_domain (bool):

        service_domain (Optional[str]):

        service_port (Optional[int]):

        use_system_messaging_server (bool):

        provisioning_url (Optional[str]):

        provisioning_user_id (Optional[str]):

        bosh_url (Optional[str]):

        default_imp_id_type (str):

    """

    use_system_service_domain: bool = field(
        metadata={"alias": "useSystemServiceDomain"}
    )

    service_domain: Optional[str] = field(
        default=None, metadata={"alias": "serviceDomain"}
    )

    service_port: Optional[int] = field(default=None, metadata={"alias": "servicePort"})

    use_system_messaging_server: bool = field(
        metadata={"alias": "useSystemMessagingServer"}
    )

    provisioning_url: Optional[str] = field(
        default=None, metadata={"alias": "provisioningUrl"}
    )

    provisioning_user_id: Optional[str] = field(
        default=None, metadata={"alias": "provisioningUserId"}
    )

    bosh_url: Optional[str] = field(default=None, metadata={"alias": "boshURL"})

    default_imp_id_type: str = field(metadata={"alias": "defaultImpIdType"})


@dataclass(kw_only=True)
class ResellerMailParametersGetResponse(OCIDataResponse):
    """Response to ResellerMailParametersGetRequest.

    Attributes:

        default_from_address (Optional[str]):

    """

    default_from_address: Optional[str] = field(
        default=None, metadata={"alias": "defaultFromAddress"}
    )


@dataclass(kw_only=True)
class ResellerMeetMeConferencingGetResponse22(OCIDataResponse):
    """Response to ResellerMeetMeConferencingGetRequest22.

    Attributes:

        conference_from_address (Optional[str]):

        max_allocated_ports (Optional[int]):

        disable_unlimited_meet_me_ports (Optional[bool]):

        enable_max_allocated_ports (Optional[bool]):

    """

    conference_from_address: Optional[str] = field(
        default=None, metadata={"alias": "conferenceFromAddress"}
    )

    max_allocated_ports: Optional[int] = field(
        default=None, metadata={"alias": "maxAllocatedPorts"}
    )

    disable_unlimited_meet_me_ports: Optional[bool] = field(
        default=None, metadata={"alias": "disableUnlimitedMeetMePorts"}
    )

    enable_max_allocated_ports: Optional[bool] = field(
        default=None, metadata={"alias": "enableMaxAllocatedPorts"}
    )


@dataclass(kw_only=True)
class ResellerNetworkClassOfServiceGetAssignedListResponse(OCIDataResponse):
    """Response to ResellerNetworkClassOfServiceGetAssignedListRequest.
        Contains a table of all Network Classes of Service assigned to the
        reseller. The column headings are: \"Name\", \"Description\" and \"Default\".

    Attributes:

        network_class_of_service_table (OCITable):

    """

    network_class_of_service_table: OCITable = field(
        metadata={"alias": "networkClassOfServiceTable"}
    )


@dataclass(kw_only=True)
class ResellerNetworkClassOfServiceGetAssignedServiceProviderListResponse(
    OCIDataResponse
):
    """Response to ResellerNetworkClassOfServiceGetAssignedServiceProviderListRequest.
        Contains a table of Service Providers that have the Network Class of Service
        assigned. The column headings are: \"Service Provider Id\" and \"Service Provider Name\".

    Attributes:

        sp_table (OCITable):

    """

    sp_table: OCITable = field(metadata={"alias": "spTable"})


@dataclass(kw_only=True)
class ResellerResourcePriorityGetResponse(OCIDataResponse):
    """Response to the ResellerResourcePriorityGetRequest.
        The response contains the reseller Resource Priority service attributes.
        If useSystemSettings is true, the parameters sendResourcePriorityToNetwork and
        resourcePriority will not be returned in the response.

    Attributes:

        use_system_settings (bool):

        send_resource_priority_to_network (bool):

        resource_priority (str):

    """

    use_system_settings: bool = field(metadata={"alias": "useSystemSettings"})

    send_resource_priority_to_network: bool = field(
        metadata={"alias": "sendResourcePriorityToNetwork"}
    )

    resource_priority: str = field(metadata={"alias": "resourcePriority"})


@dataclass(kw_only=True)
class ResellerServiceAuthorizationGetResponse(OCIDataResponse):
    """Response to the ResellerServiceAuthorizationGetRequest.

    Attributes:

        service_offering (Optional[int]):

    """

    service_offering: Optional[int] = field(
        default=None, metadata={"alias": "serviceOffering"}
    )


@dataclass(kw_only=True)
class ResellerStirShakenGetResponse23V2(OCIDataResponse):
    """Response to the ResellerStirShakenGetRequest23V2.

    Attributes:

        use_parent_level_settings (bool):

        signing_policy (str):

        tagging_policy (str):

        sign_emergency_calls (bool):

        tag_emergency_calls (bool):

        signing_service_url (Optional[str]):

        tag_from_or_pai (str):

        verstat_tag (str):

        use_os_value_for_orig_id (bool):

        orig_uuid (Optional[str]):

        attestation_level (str):

        enable_verification (bool):

        verification_service_url (Optional[str]):

        verification_error_handling (str):

        proxy_verstat_to_cnam_subscribe (bool):

        use_unknown_headers_from_cnam_notify (bool):

        enable_signing_for_unscreened_trunk_group_originations (bool):

        enable_tagging_for_unscreened_trunk_group_originations (bool):

        unscreened_trunk_group_origination_attestation_level (str):

        verify_gets_calls (bool):

        include_tagged_headers_to_access_side (bool):

        proxy_identity_header_to_access_side (bool):

        check_directory_numbers_for_attestation (bool):

        match_unassigned_numbers_only (bool):

        enable_tagging_for_redirected_calls (bool):

        prefer_ingress_tagging (bool):

    """

    use_parent_level_settings: bool = field(
        metadata={"alias": "useParentLevelSettings"}
    )

    signing_policy: str = field(metadata={"alias": "signingPolicy"})

    tagging_policy: str = field(metadata={"alias": "taggingPolicy"})

    sign_emergency_calls: bool = field(metadata={"alias": "signEmergencyCalls"})

    tag_emergency_calls: bool = field(metadata={"alias": "tagEmergencyCalls"})

    signing_service_url: Optional[str] = field(
        default=None, metadata={"alias": "signingServiceURL"}
    )

    tag_from_or_pai: str = field(metadata={"alias": "tagFromOrPAI"})

    verstat_tag: str = field(metadata={"alias": "verstatTag"})

    use_os_value_for_orig_id: bool = field(metadata={"alias": "useOSValueForOrigId"})

    orig_uuid: Optional[str] = field(default=None, metadata={"alias": "origUUID"})

    attestation_level: str = field(metadata={"alias": "attestationLevel"})

    enable_verification: bool = field(metadata={"alias": "enableVerification"})

    verification_service_url: Optional[str] = field(
        default=None, metadata={"alias": "verificationServiceURL"}
    )

    verification_error_handling: str = field(
        metadata={"alias": "verificationErrorHandling"}
    )

    proxy_verstat_to_cnam_subscribe: bool = field(
        metadata={"alias": "proxyVerstatToCNAMSubscribe"}
    )

    use_unknown_headers_from_cnam_notify: bool = field(
        metadata={"alias": "useUnknownHeadersFromCNAMNotify"}
    )

    enable_signing_for_unscreened_trunk_group_originations: bool = field(
        metadata={"alias": "enableSigningForUnscreenedTrunkGroupOriginations"}
    )

    enable_tagging_for_unscreened_trunk_group_originations: bool = field(
        metadata={"alias": "enableTaggingForUnscreenedTrunkGroupOriginations"}
    )

    unscreened_trunk_group_origination_attestation_level: str = field(
        metadata={"alias": "unscreenedTrunkGroupOriginationAttestationLevel"}
    )

    verify_gets_calls: bool = field(metadata={"alias": "verifyGETSCalls"})

    include_tagged_headers_to_access_side: bool = field(
        metadata={"alias": "includeTaggedHeadersToAccessSide"}
    )

    proxy_identity_header_to_access_side: bool = field(
        metadata={"alias": "proxyIdentityHeaderToAccessSide"}
    )

    check_directory_numbers_for_attestation: bool = field(
        metadata={"alias": "checkDirectoryNumbersForAttestation"}
    )

    match_unassigned_numbers_only: bool = field(
        metadata={"alias": "matchUnassignedNumbersOnly"}
    )

    enable_tagging_for_redirected_calls: bool = field(
        metadata={"alias": "enableTaggingForRedirectedCalls"}
    )

    prefer_ingress_tagging: bool = field(metadata={"alias": "preferIngressTagging"})


@dataclass(kw_only=True)
class ResellerVoiceMessagingGroupGetResponse(OCIDataResponse):
    """Response to ResellerVoiceMessagingGroupGetRequest.

    Attributes:

        delivery_from_address (Optional[str]):

        notification_from_address (Optional[str]):

        voice_portal_lockout_from_address (Optional[str]):

    """

    delivery_from_address: Optional[str] = field(
        default=None, metadata={"alias": "deliveryFromAddress"}
    )

    notification_from_address: Optional[str] = field(
        default=None, metadata={"alias": "notificationFromAddress"}
    )

    voice_portal_lockout_from_address: Optional[str] = field(
        default=None, metadata={"alias": "voicePortalLockoutFromAddress"}
    )


@dataclass(kw_only=True)
class ResellerXsiPolicyProfileGetAssignedListResponse(OCIDataResponse):
    """Response to ResellerXsiPolicyProfileGetAssignedListRequest.
        Contains a table of all Xsi Policy Profile assigned to.
        The column headings are: \"Name\", \"Level\", \"Description\" and \"Default\".

    Attributes:

        assigned_table (OCITable):

    """

    assigned_table: OCITable = field(metadata={"alias": "assignedTable"})


@dataclass(kw_only=True)
class ResellerXsiPolicyProfileGetAssignedServiceProviderListResponse(OCIDataResponse):
    """Response to ResellerXsiPolicyProfileGetAssignedServiceProviderListRequest.
        Contains a table of Service Providers that have the Xsi Policy Profile
        assigned. The column headings are: \"Organization ID\", \"Organization Name\", \"Organization Type\".

    Attributes:

        svc_provider_table (OCITable):

    """

    svc_provider_table: OCITable = field(metadata={"alias": "svcProviderTable"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceCustomTagGetListResponse(OCIDataResponse):
    """Response to ServiceProviderAccessDeviceCustomTagGetListRequest.
        Contains a table of custom configuration tags managed by the Device Management System on a per-device profile basis.
        In AS data mode, the column headings are:
          \"Tag Name\", \"Tag Value\", \"Actual Tag Value\".
        In XS data mode, the column headings are:
          \"Tag Name\", \"Tag Value\", \"Actual Tag Value\" if request is invoked by an admin without system privileges.
          \"Tag Name\", \"Tag Value\", \"Is Encrypted\", \"Actual Tag Value\" if request is invoked by an admin with system privileges.

    Attributes:

        device_custom_tags_table (OCITable):

    """

    device_custom_tags_table: OCITable = field(
        metadata={"alias": "deviceCustomTagsTable"}
    )


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceDeviceActivationGetResponse(OCIDataResponse):
    """Response to ServiceProviderAccessDeviceDeviceActivationGetRequest.
        The response contains the activation code (if available), the expiry time (if available) and the activation state.
        The expiryTime is represented as a timestamp, i.e. the number of milliseconds
        since January 1, 1970, 00:00:00 GMT.

    Attributes:

        activation_code (Optional[str]):

        expiry_time (Optional[int]):

        activation_state (str):

    """

    activation_code: Optional[str] = field(
        default=None, metadata={"alias": "activationCode"}
    )

    expiry_time: Optional[int] = field(default=None, metadata={"alias": "expiryTime"})

    activation_state: str = field(metadata={"alias": "activationState"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceFileGetListResponse14sp8(OCIDataResponse):
    """Response to ServiceProviderAccessDeviceFileGetListRequest14sp8.
        Contains a table of device files managed by the Device Management System on a per-device profile basis.
        The column headings are: \"File Format\", \"Is Authenticated\", \"Access URL\", \"Repository URL\", \"Template URL\", \"Extended Capture URL\", \"Is File Linked\".

        The following column is only populated in AS data mode for leaf devices.
          \"Is File Linked\"

    Attributes:

        device_files_table (OCITable):

    """

    device_files_table: OCITable = field(metadata={"alias": "deviceFilesTable"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceFileGetResponse20(OCIDataResponse):
    """Response to ServiceProviderAccessDeviceFileGetRequest21.

    Attributes:

        file_source (str):

        configuration_file_name (Optional[str]):

        access_url (str):

        repository_url (Optional[str]):

        template_url (Optional[str]):

        extended_capture_enabled (Optional[bool]):

        extended_capture_url (Optional[str]):

        allow_upload_from_device (Optional[bool]):

    """

    file_source: str = field(metadata={"alias": "fileSource"})

    configuration_file_name: Optional[str] = field(
        default=None, metadata={"alias": "configurationFileName"}
    )

    access_url: str = field(metadata={"alias": "accessUrl"})

    repository_url: Optional[str] = field(
        default=None, metadata={"alias": "repositoryUrl"}
    )

    template_url: Optional[str] = field(default=None, metadata={"alias": "templateUrl"})

    extended_capture_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "extendedCaptureEnabled"}
    )

    extended_capture_url: Optional[str] = field(
        default=None, metadata={"alias": "extendedCaptureURL"}
    )

    allow_upload_from_device: Optional[bool] = field(
        default=None, metadata={"alias": "allowUploadFromDevice"}
    )


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetAvailableCustomTagListResponse(OCIDataResponse):
    """Response to ServiceProviderAccessDeviceGetAvailableCustomTagListRequest.
        Contains a table of all available custom tags managed by the Device Management System on a per-device profile basis.

        In AS data mode, the column headings are: \"Tag Name\", \"Tag Value\", \"Tag Level\", \"Tag Set Name\", \"Region Name\".

        In XS data mode:
          the column headings are: \"Tag Name\", \"Tag Value\", \"Tag Level\", \"Tag Set Name\", \"Is Encrypted\" if request is invoked by a System administrator or by an administrator with higher priviledges, otherwise the column headings are: \"Tag Name\", \"Tag Value\", \"Tag Level\", \"Tag Source\", \"Tag Set Name\".

        \"Tag Level\" can take the value: \"System Default\", \"System\", \"Service Provider\", \"Group\" or \"Device Profile\".

    Attributes:

        device_available_custom_tags_table (OCITable):

    """

    device_available_custom_tags_table: OCITable = field(
        metadata={"alias": "deviceAvailableCustomTagsTable"}
    )


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetEnhancedConfigurationTypeListResponse(
    OCIDataResponse
):
    """Response to ServiceProviderAccessDeviceGetEnhancedConfigurationTypeListRequest.

    Attributes:

        device_type (Optional[List[str]]):

    """

    device_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "deviceType"}
    )


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetEnhancedConfigurationTypeResponse(OCIDataResponse):
    """Response to ServiceProviderAccessDeviceGetEnhancedConfigurationTypeRequest.

    Attributes:

        supports_enhanced_configuration (bool):

        supports_reset (bool):

        configuration_type (Optional[str]):

        configuration_file_name (Optional[str]):

    """

    supports_enhanced_configuration: bool = field(
        metadata={"alias": "supportsEnhancedConfiguration"}
    )

    supports_reset: bool = field(metadata={"alias": "supportsReset"})

    configuration_type: Optional[str] = field(
        default=None, metadata={"alias": "configurationType"}
    )

    configuration_file_name: Optional[str] = field(
        default=None, metadata={"alias": "configurationFileName"}
    )


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetLinkedLeafDeviceListResponse22(OCIDataResponse):
    """Response to ServiceProviderAccessDeviceGetLinkedLeafDeviceListRequest22.

    Attributes:

        tree_device_link_id (str):

        leaf_device_key (Optional[List[AccessDeviceKey]]):

        support_links (Optional[List[str]]):

    """

    tree_device_link_id: str = field(metadata={"alias": "treeDeviceLinkId"})

    leaf_device_key: Optional[List[AccessDeviceKey]] = field(
        default=None, metadata={"alias": "leafDeviceKey"}
    )

    support_links: Optional[List[str]] = field(
        default=None, metadata={"alias": "supportLinks"}
    )


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetLinkedTreeDeviceResponse(OCIDataResponse):
    """Response to ServiceProviderAccessDeviceGetLinkedTreeDeviceRequest.

    Attributes:

        tree_device_info (Optional[TreeDeviceInfo]):

    """

    tree_device_info: Optional[TreeDeviceInfo] = field(
        default=None, metadata={"alias": "treeDeviceInfo"}
    )


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetListResponse(OCIDataResponse):
    """Response to ServiceProviderAccessDeviceGetListRequest.
        Contains a table of devices configured in the service provider.
        The column headings are: \"Device Name\", \"Device Type\", \"Available Ports\",
        \"Net Address\", \"MAC Address\", \"Status\", \"Version\", and \"Access Device External Id\".

        The following columns are only populated in AS data mode:
          \"Access Device External Id\"

    Attributes:

        access_device_table (OCITable):

    """

    access_device_table: OCITable = field(metadata={"alias": "accessDeviceTable"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetNativeTagsWithLogicListResponse(OCIDataResponse):
    """Response to ServiceProviderAccessDeviceGetNativeTagsWithLogicListRequest.
        Contains a table of all native tags with logic managed by the Device Management System on a per-device profile basis.

        The column headings are: \"Tag Name\", \"Tag Value\".

    Attributes:

        device_native_tags_with_logic_table (OCITable):

    """

    device_native_tags_with_logic_table: OCITable = field(
        metadata={"alias": "deviceNativeTagsWithLogicTable"}
    )


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetPagedSortedListResponse(OCIDataResponse):
    """Response to ServiceProviderAccessDeviceGetPagedSortedListRequest.
        Contains a table of devices configured at service provider level.
        The column headings are: \"Device Name\", \"Device Type\", \"Available Ports\", \"Net Address\", \"MAC Address\", \"Status\", \"Version\", and \"Support Visual Device Management API\".
        When CloudPBX is not licensed, the column \"Support Visual Device Management API\" values are not returned.

    Attributes:

        access_device_table (OCITable):

    """

    access_device_table: OCITable = field(metadata={"alias": "accessDeviceTable"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetResponse24V3(OCIDataResponse):
    """Response to ServiceProviderAccessDeviceGetRequest24V3.

        The following elements are only used in AS data mode:
           useHotline
           hotlineContact
           serviceProviderId
           deviceName
           deviceExternalId
           deviceCode
           deviceIPEI
           deviceIndex
           useDeviceCode
           authBearerSubject

    Attributes:

        device_type (str):

        protocol (str):

        net_address (Optional[str]):

        port (Optional[int]):

        outbound_proxy_server_net_address (Optional[str]):

        stun_server_net_address (Optional[str]):

        mac_address (Optional[str]):

        serial_number (Optional[str]):

        description (Optional[str]):

        number_of_ports (UnboundedPositiveInt):

        number_of_assigned_ports (int):

        status (str):

        physical_location (Optional[str]):

        transport_protocol (Optional[str]):

        use_custom_user_name_password (Optional[bool]):

        user_name (Optional[str]):

        version (Optional[str]):

        service_provider_id (str):

        device_name (str):

        device_external_id (Optional[str]):

        device_code (Optional[str]):

        device_ipei (Optional[str]):

        device_index (Optional[int]):

        use_device_code (Optional[bool]):

        auth_bearer_subject (Optional[str]):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    protocol: str = field(metadata={"alias": "protocol"})

    net_address: Optional[str] = field(default=None, metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    outbound_proxy_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "outboundProxyServerNetAddress"}
    )

    stun_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "stunServerNetAddress"}
    )

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})

    serial_number: Optional[str] = field(
        default=None, metadata={"alias": "serialNumber"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    number_of_ports: UnboundedPositiveInt = field(metadata={"alias": "numberOfPorts"})

    number_of_assigned_ports: int = field(metadata={"alias": "numberOfAssignedPorts"})

    status: str = field(metadata={"alias": "status"})

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    use_custom_user_name_password: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomUserNamePassword"}
    )

    user_name: Optional[str] = field(default=None, metadata={"alias": "userName"})

    version: Optional[str] = field(default=None, metadata={"alias": "version"})

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    device_name: str = field(metadata={"alias": "deviceName"})

    device_external_id: Optional[str] = field(
        default=None, metadata={"alias": "deviceExternalId"}
    )

    device_code: Optional[str] = field(default=None, metadata={"alias": "deviceCode"})

    device_ipei: Optional[str] = field(default=None, metadata={"alias": "deviceIPEI"})

    device_index: Optional[int] = field(default=None, metadata={"alias": "deviceIndex"})

    use_device_code: Optional[bool] = field(
        default=None, metadata={"alias": "useDeviceCode"}
    )

    auth_bearer_subject: Optional[str] = field(
        default=None, metadata={"alias": "authBearerSubject"}
    )


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceGetUserListResponse21sp1(OCIDataResponse):
    """Response to ServiceProviderAccessDeviceGetUserListRequest21sp1.
        The column headings for the deviceUserTable are: \"Line/Port\", \"Last Name\",
        \"First Name\", \"Phone Number\", \"Group Id\", \"User Id\",
        \"User Type\", \"Endpoint Type\", \"Primary Line/Port\", \"Order\", \"Extension\", \"Department\", \"Email Address\", \"Private Identity\".
        In IMS mode, the table will contain a row for each TEL-URI in the Phone Number column.
        In standalone mode, rows for the alternate numbers are not included.
        The User Type column contains one of the enumerated UserType values.
        The Endpoint Type column contains one of the enumerated EndpointType21sp1 values.
        The value Mobility in Endpoint Type column is only applicable in AS data mode.
        The Private Identity column is empty is AS mode.

    Attributes:

        device_user_table (OCITable):

    """

    device_user_table: OCITable = field(metadata={"alias": "deviceUserTable"})


@dataclass(kw_only=True)
class ServiceProviderAccessDeviceTagSetGetResponse(OCIDataResponse):
    """Response to ServiceProviderAccessDeviceTagSetGetRequest.
        The response includes a tag set name defined in the access device.

    Attributes:

        tag_set_name (Optional[str]):

    """

    tag_set_name: Optional[str] = field(default=None, metadata={"alias": "tagSetName"})


@dataclass(kw_only=True)
class ServiceProviderAdminAlternateIdGetListResponse(OCIDataResponse):
    """Response to ServiceProviderAdminAlternateIdGetListRequest.
        Contains a table of the main admin user id and the alternate admin user ids, the column headings are: \"User Id\", \"Description\", \"Alternate\".
        The possible values for \"Alternate\" are \"true\" and \"false\".
        The \"Description\" is only present for alternate admin user Ids.

    Attributes:

        admin_user_id_table (OCITable):

    """

    admin_user_id_table: OCITable = field(metadata={"alias": "adminUserIdTable"})


@dataclass(kw_only=True)
class ServiceProviderAdminGetListResponse14(OCIDataResponse):
    """Response to ServiceProviderAdminGetListRequest14.
        Contains a 7 column table with column headings \"Administrator ID\",
        \"Last Name\", \"First Name\", \"Administrator Type\", \"Language\", \"Locale\" and \"Encoding\".

        The following columns are only returned in AS data mode:
          \"Locale\" and \"Encoding\"

    Attributes:

        service_provider_admin_table (OCITable):

    """

    service_provider_admin_table: OCITable = field(
        metadata={"alias": "serviceProviderAdminTable"}
    )


@dataclass(kw_only=True)
class ServiceProviderAdminGetPagedSortedListResponse(OCIDataResponse):
    """Response to ServiceProviderAdminGetPagedSortedListRequest.
        Contains a 7 column table with column headings \"Administrator ID\",
        \"Last Name\", \"First Name\", \"Administrator Type\", \"Language\", \"Locale\" and \"Encoding\".
        The following columns are only returned in AS data mode:
        \"Locale\" and \"Encoding\".

    Attributes:

        service_provider_admin_table (OCITable):

    """

    service_provider_admin_table: OCITable = field(
        metadata={"alias": "serviceProviderAdminTable"}
    )


@dataclass(kw_only=True)
class ServiceProviderAdminGetPolicyResponse20(OCIDataResponse):
    """Response to ServiceProviderAdminGetPolicyRequest20.
        Contains the policy settings for the service provider administrator.
        The networkPolicyAccess and numberActivationAccess are returned only for the enterprise administrator.
        The following elements are only used in AS data mode:
            dialableCallerIDAccess
            verifyTranslationAndRoutingAccess

    Attributes:

        profile_access (str):

        group_access (str):

        user_access (str):

        admin_access (str):

        department_access (str):

        access_device_access (str):

        phone_number_extension_access (str):

        calling_line_id_number_access (str):

        service_access (str):

        service_pack_access (str):

        session_admission_control_access (str):

        web_branding_access (str):

        office_zone_access (str):

        communication_barring_access (str):

        network_policy_access (Optional[str]):

        number_activation_access (Optional[str]):

        dialable_caller_id_access (str):

        verify_translation_and_routing_access (str):

    """

    profile_access: str = field(metadata={"alias": "profileAccess"})

    group_access: str = field(metadata={"alias": "groupAccess"})

    user_access: str = field(metadata={"alias": "userAccess"})

    admin_access: str = field(metadata={"alias": "adminAccess"})

    department_access: str = field(metadata={"alias": "departmentAccess"})

    access_device_access: str = field(metadata={"alias": "accessDeviceAccess"})

    phone_number_extension_access: str = field(
        metadata={"alias": "phoneNumberExtensionAccess"}
    )

    calling_line_id_number_access: str = field(
        metadata={"alias": "callingLineIdNumberAccess"}
    )

    service_access: str = field(metadata={"alias": "serviceAccess"})

    service_pack_access: str = field(metadata={"alias": "servicePackAccess"})

    session_admission_control_access: str = field(
        metadata={"alias": "sessionAdmissionControlAccess"}
    )

    web_branding_access: str = field(metadata={"alias": "webBrandingAccess"})

    office_zone_access: str = field(metadata={"alias": "officeZoneAccess"})

    communication_barring_access: str = field(
        metadata={"alias": "communicationBarringAccess"}
    )

    network_policy_access: Optional[str] = field(
        default=None, metadata={"alias": "networkPolicyAccess"}
    )

    number_activation_access: Optional[str] = field(
        default=None, metadata={"alias": "numberActivationAccess"}
    )

    dialable_caller_id_access: str = field(metadata={"alias": "dialableCallerIDAccess"})

    verify_translation_and_routing_access: str = field(
        metadata={"alias": "verifyTranslationAndRoutingAccess"}
    )


@dataclass(kw_only=True)
class ServiceProviderAdminGetResponse22V3(OCIDataResponse):
    """Response to the ServiceProviderAdminGetRequest22V3.
        The response contains the service provider administrators profile information.

        The following elements are only used in AS data mode and ignored in XS data mode.
        accountDisabled
        lastAuthenticatedDate
        hasPassword

    Attributes:

        service_provider_id (str):

        first_name (Optional[str]):

        last_name (Optional[str]):

        language (str):

        administrator_type (str):

        locale (str):

        encoding (str):

        account_disabled (bool):

        last_authenticated_date (str):

        has_password (bool):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    first_name: Optional[str] = field(default=None, metadata={"alias": "firstName"})

    last_name: Optional[str] = field(default=None, metadata={"alias": "lastName"})

    language: str = field(metadata={"alias": "language"})

    administrator_type: str = field(metadata={"alias": "administratorType"})

    locale: str = field(metadata={"alias": "locale"})

    encoding: str = field(metadata={"alias": "encoding"})

    account_disabled: bool = field(metadata={"alias": "accountDisabled"})

    last_authenticated_date: str = field(metadata={"alias": "lastAuthenticatedDate"})

    has_password: bool = field(metadata={"alias": "hasPassword"})


@dataclass(kw_only=True)
class ServiceProviderAdministratorPasswordRulesGetResponseRI(OCIDataResponse):
    """Response to ServiceProviderAdministratorPasswordRulesGetRequestRI.

    Attributes:

        use_external_authentication (Optional[bool]):

        allow_web_add_external_authentication_users (Optional[bool]):

        disallow_user_id (Optional[bool]):

        disallow_old_password (Optional[bool]):

        disallow_reversed_old_password (Optional[bool]):

        restrict_min_digits (Optional[bool]):

        min_digits (Optional[int]):

        restrict_min_upper_case_letters (Optional[bool]):

        min_upper_case_letters (Optional[int]):

        restrict_min_lower_case_letters (Optional[bool]):

        min_lower_case_letters (Optional[int]):

        restrict_min_non_alphanumeric_characters (Optional[bool]):

        min_non_alphanumeric_characters (Optional[int]):

        min_length (Optional[int]):

        max_failed_login_attempts (Optional[int]):

        password_expires_days (Optional[int]):

        send_login_disabled_notify_email (Optional[bool]):

        login_disabled_notify_email_address (Optional[str]):

        disallow_previous_passwords (Optional[bool]):

        number_of_previous_passwords (Optional[int]):

        use_password_validation_service (Optional[bool]):

        reenable_login (Optional[bool]):

        lock_out_in_minutes (Optional[int]):

    """

    use_external_authentication: Optional[bool] = field(
        default=None, metadata={"alias": "useExternalAuthentication"}
    )

    allow_web_add_external_authentication_users: Optional[bool] = field(
        default=None, metadata={"alias": "allowWebAddExternalAuthenticationUsers"}
    )

    disallow_user_id: Optional[bool] = field(
        default=None, metadata={"alias": "disallowUserId"}
    )

    disallow_old_password: Optional[bool] = field(
        default=None, metadata={"alias": "disallowOldPassword"}
    )

    disallow_reversed_old_password: Optional[bool] = field(
        default=None, metadata={"alias": "disallowReversedOldPassword"}
    )

    restrict_min_digits: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinDigits"}
    )

    min_digits: Optional[int] = field(default=None, metadata={"alias": "minDigits"})

    restrict_min_upper_case_letters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinUpperCaseLetters"}
    )

    min_upper_case_letters: Optional[int] = field(
        default=None, metadata={"alias": "minUpperCaseLetters"}
    )

    restrict_min_lower_case_letters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinLowerCaseLetters"}
    )

    min_lower_case_letters: Optional[int] = field(
        default=None, metadata={"alias": "minLowerCaseLetters"}
    )

    restrict_min_non_alphanumeric_characters: Optional[bool] = field(
        default=None, metadata={"alias": "restrictMinNonAlphanumericCharacters"}
    )

    min_non_alphanumeric_characters: Optional[int] = field(
        default=None, metadata={"alias": "minNonAlphanumericCharacters"}
    )

    min_length: Optional[int] = field(default=None, metadata={"alias": "minLength"})

    max_failed_login_attempts: Optional[int] = field(
        default=None, metadata={"alias": "maxFailedLoginAttempts"}
    )

    password_expires_days: Optional[int] = field(
        default=None, metadata={"alias": "passwordExpiresDays"}
    )

    send_login_disabled_notify_email: Optional[bool] = field(
        default=None, metadata={"alias": "sendLoginDisabledNotifyEmail"}
    )

    login_disabled_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "loginDisabledNotifyEmailAddress"}
    )

    disallow_previous_passwords: Optional[bool] = field(
        default=None, metadata={"alias": "disallowPreviousPasswords"}
    )

    number_of_previous_passwords: Optional[int] = field(
        default=None, metadata={"alias": "numberOfPreviousPasswords"}
    )

    use_password_validation_service: Optional[bool] = field(
        default=None, metadata={"alias": "usePasswordValidationService"}
    )

    reenable_login: Optional[bool] = field(
        default=None, metadata={"alias": "reenableLogin"}
    )

    lock_out_in_minutes: Optional[int] = field(
        default=None, metadata={"alias": "lockOutInMinutes"}
    )


@dataclass(kw_only=True)
class ServiceProviderAdviceOfChargeGetResponse(OCIDataResponse):
    """Response to ServiceProviderAdviceOfChargeGetRequest.
        Contains a list of Advice of Charge service provider parameters.

    Attributes:

        use_sp_level_ao_c_settings (bool):

        delay_between_notification_seconds (int):

    """

    use_sp_level_ao_c_settings: bool = field(
        metadata={"alias": "useSPLevelAoCSettings"}
    )

    delay_between_notification_seconds: int = field(
        metadata={"alias": "delayBetweenNotificationSeconds"}
    )


@dataclass(kw_only=True)
class ServiceProviderAlternateUserIdGetListResponse(OCIDataResponse):
    """Response to ServiceProviderAlternateUserIdGetListRequest.
        The \"User Type\" column contains the corresponding enumerated UserType value.
        Contains a table of alternate user ids, the column headings are:
          \"User Id\", \"Alternate User Id\", \"Group Id\" and \"User Type\".

    Attributes:

        alternate_user_id_table (OCITable):

    """

    alternate_user_id_table: OCITable = field(
        metadata={"alias": "alternateUserIdTable"}
    )


@dataclass(kw_only=True)
class ServiceProviderAnswerConfirmationGetResponse16(OCIDataResponse):
    """Response to the ServiceProviderAnswerConfirmationGetRequest16.

    Attributes:

        announcement_message_selection (str):

        confirmation_message_audio_file_description (Optional[str]):

        confirmation_message_media_type (Optional[str]):

        confirmation_timout_seconds (int):

    """

    announcement_message_selection: str = field(
        metadata={"alias": "announcementMessageSelection"}
    )

    confirmation_message_audio_file_description: Optional[str] = field(
        default=None, metadata={"alias": "confirmationMessageAudioFileDescription"}
    )

    confirmation_message_media_type: Optional[str] = field(
        default=None, metadata={"alias": "confirmationMessageMediaType"}
    )

    confirmation_timout_seconds: int = field(
        metadata={"alias": "confirmationTimoutSeconds"}
    )


@dataclass(kw_only=True)
class ServiceProviderApplicationServerSetGetResponse(OCIDataResponse):
    """Response to the ServiceProviderApplicationServerSetGetRequest.
        The response contains the service provider or enterprise's Application Server set information.

    Attributes:

        application_server_set_name (Optional[str]):

    """

    application_server_set_name: Optional[str] = field(
        default=None, metadata={"alias": "applicationServerSetName"}
    )


@dataclass(kw_only=True)
class ServiceProviderBroadWorksCommunicatorGetResponse(OCIDataResponse):
    """Response to ServiceProviderBroadWorksCommunicatorGetRequest.

    Attributes:

        configuration_server_url (Optional[str]):

    """

    configuration_server_url: Optional[str] = field(
        default=None, metadata={"alias": "configurationServerURL"}
    )


@dataclass(kw_only=True)
class ServiceProviderBroadWorksMobilityGetResponse22V3(OCIDataResponse):
    """The response to a ServiceProviderBroadWorksMobilityGetRequest22V3.

    Attributes:

        use_setting_level (str):

        enable_location_services (bool):

        enable_msrn_lookup (bool):

        enable_mobile_state_checking (bool):

        deny_call_originations (bool):

        deny_call_terminations (bool):

        enable_announcement_suppression (bool):

        enable_internal_clid_delivery (bool):

        enable_internal_clid_delivery_access_locations (bool):

        enable_enhanced_unreachable_state_checking (bool):

        enable_network_call_barring_status_check (bool):

        network_translation_index (Optional[str]):

    """

    use_setting_level: str = field(metadata={"alias": "useSettingLevel"})

    enable_location_services: bool = field(metadata={"alias": "enableLocationServices"})

    enable_msrn_lookup: bool = field(metadata={"alias": "enableMSRNLookup"})

    enable_mobile_state_checking: bool = field(
        metadata={"alias": "enableMobileStateChecking"}
    )

    deny_call_originations: bool = field(metadata={"alias": "denyCallOriginations"})

    deny_call_terminations: bool = field(metadata={"alias": "denyCallTerminations"})

    enable_announcement_suppression: bool = field(
        metadata={"alias": "enableAnnouncementSuppression"}
    )

    enable_internal_clid_delivery: bool = field(
        metadata={"alias": "enableInternalCLIDDelivery"}
    )

    enable_internal_clid_delivery_access_locations: bool = field(
        metadata={"alias": "enableInternalCLIDDeliveryAccessLocations"}
    )

    enable_enhanced_unreachable_state_checking: bool = field(
        metadata={"alias": "enableEnhancedUnreachableStateChecking"}
    )

    enable_network_call_barring_status_check: bool = field(
        metadata={"alias": "enableNetworkCallBarringStatusCheck"}
    )

    network_translation_index: Optional[str] = field(
        default=None, metadata={"alias": "networkTranslationIndex"}
    )


@dataclass(kw_only=True)
class ServiceProviderBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailableListResponse(
    OCIDataResponse
):
    """Response to ServiceProviderBroadWorksMobilityMobileSubscriberDirectoryNumberGetAvailableListRequest.
        Contains a list of available Mobile Subscriber Directory Numbers not yet assigned to any group.

    Attributes:

        available_mobile_subscriber_directory_number (Optional[List[str]]):

    """

    available_mobile_subscriber_directory_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "availableMobileSubscriberDirectoryNumber"}
    )


@dataclass(kw_only=True)
class ServiceProviderBroadWorksMobilityMobileSubscriberDirectoryNumberGetSummaryListResponse(
    OCIDataResponse
):
    """Response to ServiceProviderBroadWorksMobilityMobileSubscriberDirectoryNumberGetSummaryListRequest.
        The column headings are \"Phone Number\", \"Group Id\" and \"Mobile Network\".

    Attributes:

        mobile_subscriber_directory_numbers_summary_table (OCITable):

    """

    mobile_subscriber_directory_numbers_summary_table: OCITable = field(
        metadata={"alias": "mobileSubscriberDirectoryNumbersSummaryTable"}
    )


@dataclass(kw_only=True)
class ServiceProviderCallProcessingGetPolicyResponse22V3(OCIDataResponse):
    """Response to ServiceProviderCallProcessingGetPolicyRequest22V3.
        The following elements are not returned for a service provider:
          enableGatewayRoutePolicy
          networkCallsGatewayRouteIdentity
          networkURLCallsGatewayRouteIdentity
          emergencyCallsGatewayRouteIdentity
          repairCallsGatewayRouteIdentity
          callTypingErrorsGatewayRouteIdentity
        The following elements are only used in AS data mode:
          useServiceProviderDCLIDSetting
          enableDialableCallerID
          allowConfigurableCLIDForRedirectingIdentity
          enterpriseCallsCLIDPolicy, value \"Use Location Code plus Extension\" is returned in XS data mode.
          groupCallsCLIDPolicy, value \"Use Extension\" is returned in XS data mode.
          enablePhoneListLookup, value \"false\" is returned in XS data mode.
          useMaxConcurrentTerminatingAlertingRequests, value \"false\" is returned in XS data mode.
          maxConcurrentTerminatingAlertingRequests, value \"10\" is returned in XS data mode.
          includeRedirectionsInMaximumNumberOfConcurrentCalls, value \"false\" is returned in XS data mode.
          useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable, value \"false\" is returned in XS data mode.
          useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable, value \"false\" is returned in XS data mode.
          allowMobileDNForRedirectingIdentity, value \"false\" is returned in XS data mode.
        The following elements are only used in AS data mode and not returned in XS data mode:
          enableGatewayRoutePolicy
          networkCallsGatewayRouteIdentity
          networkURLCallsGatewayRouteIdentity
          emergencyCallsGatewayRouteIdentity
          repairCallsGatewayRouteIdentity
          callTypingErrorsGatewayRouteIdentity

       The following elements are only used in XS data mode and not returned in AS data mode:
          routeOverrideDomain
          routeOverridePrefix

    Attributes:

        use_service_provider_dclid_setting (bool):

        use_max_simultaneous_calls (bool):

        max_simultaneous_calls (int):

        use_max_simultaneous_video_calls (bool):

        max_simultaneous_video_calls (int):

        use_max_call_time_for_answered_calls (bool):

        max_call_time_for_answered_calls_minutes (int):

        use_max_call_time_for_unanswered_calls (bool):

        max_call_time_for_unanswered_calls_minutes (int):

        media_policy_selection (str):

        supported_media_set_name (Optional[str]):

        network_usage_selection (str):

        enforce_group_calling_line_identity_restriction (bool):

        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):

        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):

        override_clid_restriction_for_private_call_category (bool):

        use_enterprise_clid_for_private_call_category (bool):

        enable_enterprise_extension_dialing (bool):

        enforce_enterprise_calling_line_identity_restriction (bool):

        use_setting_level (str):

        conference_uri (Optional[str]):

        use_max_concurrent_redirected_calls (bool):

        max_concurrent_redirected_calls (int):

        use_max_find_me_follow_me_depth (bool):

        max_find_me_follow_me_depth (int):

        max_redirection_depth (int):

        use_max_concurrent_find_me_follow_me_invocations (bool):

        max_concurrent_find_me_follow_me_invocations (int):

        clid_policy (str):

        emergency_clid_policy (str):

        allow_alternate_numbers_for_redirecting_identity (bool):

        block_calling_name_for_external_calls (bool):

        enable_dialable_caller_id (bool):

        allow_configurable_clid_for_redirecting_identity (bool):

        enterprise_calls_clid_policy (str):

        group_calls_clid_policy (str):

        enable_phone_list_lookup (bool):

        use_max_concurrent_terminating_alerting_requests (bool):

        max_concurrent_terminating_alerting_requests (int):

        include_redirections_in_maximum_number_of_concurrent_calls (bool):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):

        route_override_domain (Optional[str]):

        route_override_prefix (Optional[str]):

        allow_mobile_dn_for_redirecting_identity (bool):

        enable_gateway_route_policy (Optional[bool]):

        network_calls_gateway_route_identity (Optional[str]):

        network_url_calls_gateway_route_identity (Optional[str]):

        emergency_calls_gateway_route_identity (Optional[str]):

        repair_calls_gateway_route_identity (Optional[str]):

        call_typing_errors_gateway_route_identity (Optional[str]):

    """

    use_service_provider_dclid_setting: bool = field(
        metadata={"alias": "useServiceProviderDCLIDSetting"}
    )

    use_max_simultaneous_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: int = field(metadata={"alias": "maxSimultaneousCalls"})

    use_max_simultaneous_video_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: int = field(
        metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    media_policy_selection: str = field(metadata={"alias": "mediaPolicySelection"})

    supported_media_set_name: Optional[str] = field(
        default=None, metadata={"alias": "supportedMediaSetName"}
    )

    network_usage_selection: str = field(metadata={"alias": "networkUsageSelection"})

    enforce_group_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"}
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"}
    )

    override_clid_restriction_for_private_call_category: bool = field(
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"}
    )

    use_enterprise_clid_for_private_call_category: bool = field(
        metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    enable_enterprise_extension_dialing: bool = field(
        metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_enterprise_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"}
    )

    use_setting_level: str = field(metadata={"alias": "useSettingLevel"})

    conference_uri: Optional[str] = field(
        default=None, metadata={"alias": "conferenceURI"}
    )

    use_max_concurrent_redirected_calls: bool = field(
        metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: int = field(
        metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_find_me_follow_me_depth: bool = field(
        metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: int = field(
        metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: int = field(metadata={"alias": "maxRedirectionDepth"})

    use_max_concurrent_find_me_follow_me_invocations: bool = field(
        metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: int = field(
        metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    emergency_clid_policy: str = field(metadata={"alias": "emergencyClidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: bool = field(
        metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    enable_dialable_caller_id: bool = field(
        metadata={"alias": "enableDialableCallerID"}
    )

    allow_configurable_clid_for_redirecting_identity: bool = field(
        metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    enterprise_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    group_calls_clid_policy: str = field(metadata={"alias": "groupCallsCLIDPolicy"})

    enable_phone_list_lookup: bool = field(metadata={"alias": "enablePhoneListLookup"})

    use_max_concurrent_terminating_alerting_requests: bool = field(
        metadata={"alias": "useMaxConcurrentTerminatingAlertingRequests"}
    )

    max_concurrent_terminating_alerting_requests: int = field(
        metadata={"alias": "maxConcurrentTerminatingAlertingRequests"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: bool = field(
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"}
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: bool = field(
        metadata={"alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"}
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: bool = field(
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        }
    )

    route_override_domain: Optional[str] = field(
        default=None, metadata={"alias": "routeOverrideDomain"}
    )

    route_override_prefix: Optional[str] = field(
        default=None, metadata={"alias": "routeOverridePrefix"}
    )

    allow_mobile_dn_for_redirecting_identity: bool = field(
        metadata={"alias": "allowMobileDNForRedirectingIdentity"}
    )

    enable_gateway_route_policy: Optional[bool] = field(
        default=None, metadata={"alias": "enableGatewayRoutePolicy"}
    )

    network_calls_gateway_route_identity: Optional[str] = field(
        default=None, metadata={"alias": "networkCallsGatewayRouteIdentity"}
    )

    network_url_calls_gateway_route_identity: Optional[str] = field(
        default=None, metadata={"alias": "networkURLCallsGatewayRouteIdentity"}
    )

    emergency_calls_gateway_route_identity: Optional[str] = field(
        default=None, metadata={"alias": "emergencyCallsGatewayRouteIdentity"}
    )

    repair_calls_gateway_route_identity: Optional[str] = field(
        default=None, metadata={"alias": "repairCallsGatewayRouteIdentity"}
    )

    call_typing_errors_gateway_route_identity: Optional[str] = field(
        default=None, metadata={"alias": "callTypingErrorsGatewayRouteIdentity"}
    )


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringCriteriaGetAssignedListResponse(
    OCIDataResponse
):
    """Response to ServiceProviderCommunicationBarringCriteriaGetAssignedListRequest.
        Contains a table of all Communication Barring Criteria assigned to the
        service provider. The column headings are: \"Name\" and \"Description\".

    Attributes:

        criteria_table (OCITable):

    """

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringDigitPatternCriteriaGetListResponse(
    OCIDataResponse
):
    """Response to the ServiceProviderCommunicationBarringDigitPatternCriteriaGetListRequest.
        The response contains a table of all Digit Pattern Criteria defined for the service provider. The column headings are \"Name\" and \"Description\"

    Attributes:

        criteria_table (OCITable):

    """

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringDigitPatternCriteriaGetPatternListResponse(
    OCIDataResponse
):
    """Response to the ServiceProviderCommunicationBarringDigitPatternCriteriaGetPatternListRequest.
        The response contains the Digit Pattern Criteria information.

    Attributes:

        match_digit_pattern (Optional[List[str]]):

    """

    match_digit_pattern: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchDigitPattern"}
    )


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringDigitPatternCriteriaGetResponse(
    OCIDataResponse
):
    """Response to the ServiceProviderCommunicationBarringDigitPatternCriteriaGetRequest.
        The response contains the Digit Pattern Criteria information.

    Attributes:

        description (Optional[str]):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringIncomingCriteriaGetAssignedListResponse(
    OCIDataResponse
):
    """Response to ServiceProviderCommunicationBarringIncomingCriteriaGetAssignedListRequest.
        Contains a table of all Communication Barring Incoming Criteria assigned to the
        service provider. The column headings are: \"Name\" and \"Description\".

    Attributes:

        criteria_table (OCITable):

    """

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringProfileGetAssignedGroupListResponse(
    OCIDataResponse
):
    """Response to ServiceProviderCommunicationBarringProfileGetAssignedGroupListRequest.
        Contains a table of groups that have the Communication Barring Profile
        assigned. The column headings are: \"Group Id\" and \"Group Name\".

    Attributes:

        group_table (OCITable):

    """

    group_table: OCITable = field(metadata={"alias": "groupTable"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringProfileGetCriteriaUsageListResponse(
    OCIDataResponse
):
    """Response to ServiceProviderCommunicationBarring ProfileGetCriteriaUsageListRequest.  Contains a table of profiles that have the Communication Barring Criteria assigned. The column headings are: \"Name\" and \"Description\".

    Attributes:

        profile_table (OCITable):

    """

    profile_table: OCITable = field(metadata={"alias": "profileTable"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringProfileGetDigitPatternCriteriaUsageListResponse(
    OCIDataResponse
):
    """Response to the ServiceProviderCommunicationBarringProfileGetDigitPatternCriteriaUsageListRequest.
        The response contains a table of all Profiles that use the specific Digit Pattern Criteria. The column headings are \"Name\" and \"Description\"

    Attributes:

        profile_table (OCITable):

    """

    profile_table: OCITable = field(metadata={"alias": "profileTable"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringProfileGetIncomingCriteriaUsageListResponse(
    OCIDataResponse
):
    """Response to ServiceProviderCommunicationBarringProfileGetIncomingCriteriaUsageListRequest.
        Contains a table of profiles that have the Communication Barring Incoming Criteria assigned.
        The column headings are: \"Name\" and \"Description\".

    Attributes:

        profile_table (OCITable):

    """

    profile_table: OCITable = field(metadata={"alias": "profileTable"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringProfileGetListResponse(OCIDataResponse):
    """Response to the ServiceProviderCommunicationBarringProfileGetListRequest.
        The response contains a table of all Communication Barring Profiles
        for the service provider. The column headings are \"Default\" , \"Name\" and \"Description\"

    Attributes:

        profile_table (OCITable):

    """

    profile_table: OCITable = field(metadata={"alias": "profileTable"})


@dataclass(kw_only=True)
class ServiceProviderCommunicationBarringProfileGetResponse19sp1V2(OCIDataResponse):
    """Response to the ServiceProviderCommunicationBarringProfileGetRequest19sp1V2.
        The response contains the Communication Barring Profile information.
        The incoming, originating, redirecting and call me now rules are returned in ascending priority order.
      The following elements are only used in AS data mode:
           callMeNowDefaultAction
           callMeNowDefaultCallTimeout
           callMeNowRule
           applyToAttendedCallTransfers

    Attributes:

        description (Optional[str]):

        originating_default_action (str):

        originating_default_treatment_id (Optional[str]):

        originating_default_transfer_number (Optional[str]):

        originating_default_call_timeout (Optional[int]):

        originating_rule (Optional[List[ServiceProviderCommunicationBarringHierarchicalOriginatingRule]]):

        redirecting_default_action (str):

        redirecting_default_call_timeout (Optional[int]):

        redirecting_rule (Optional[List[ServiceProviderCommunicationBarringHierarchicalRedirectingRule]]):

        call_me_now_default_action (str):

        call_me_now_default_call_timeout (Optional[int]):

        call_me_now_rule (Optional[List[ServiceProviderCommunicationBarringHierarchicalCallMeNowRule]]):

        incoming_default_action (str):

        incoming_default_call_timeout (Optional[int]):

        incoming_rule (Optional[List[CommunicationBarringIncomingRule19sp1]]):

        is_default (bool):

        apply_to_attended_call_transfers (bool):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    originating_default_action: str = field(
        metadata={"alias": "originatingDefaultAction"}
    )

    originating_default_treatment_id: Optional[str] = field(
        default=None, metadata={"alias": "originatingDefaultTreatmentId"}
    )

    originating_default_transfer_number: Optional[str] = field(
        default=None, metadata={"alias": "originatingDefaultTransferNumber"}
    )

    originating_default_call_timeout: Optional[int] = field(
        default=None, metadata={"alias": "originatingDefaultCallTimeout"}
    )

    originating_rule: Optional[
        List[ServiceProviderCommunicationBarringHierarchicalOriginatingRule]
    ] = field(default=None, metadata={"alias": "originatingRule"})

    redirecting_default_action: str = field(
        metadata={"alias": "redirectingDefaultAction"}
    )

    redirecting_default_call_timeout: Optional[int] = field(
        default=None, metadata={"alias": "redirectingDefaultCallTimeout"}
    )

    redirecting_rule: Optional[
        List[ServiceProviderCommunicationBarringHierarchicalRedirectingRule]
    ] = field(default=None, metadata={"alias": "redirectingRule"})

    call_me_now_default_action: str = field(
        metadata={"alias": "callMeNowDefaultAction"}
    )

    call_me_now_default_call_timeout: Optional[int] = field(
        default=None, metadata={"alias": "callMeNowDefaultCallTimeout"}
    )

    call_me_now_rule: Optional[
        List[ServiceProviderCommunicationBarringHierarchicalCallMeNowRule]
    ] = field(default=None, metadata={"alias": "callMeNowRule"})

    incoming_default_action: str = field(metadata={"alias": "incomingDefaultAction"})

    incoming_default_call_timeout: Optional[int] = field(
        default=None, metadata={"alias": "incomingDefaultCallTimeout"}
    )

    incoming_rule: Optional[List[CommunicationBarringIncomingRule19sp1]] = field(
        default=None, metadata={"alias": "incomingRule"}
    )

    is_default: bool = field(metadata={"alias": "isDefault"})

    apply_to_attended_call_transfers: bool = field(
        metadata={"alias": "applyToAttendedCallTransfers"}
    )


@dataclass(kw_only=True)
class ServiceProviderDeviceActivationPolicyGetResponse(OCIDataResponse):
    """Response to ServiceProviderDeviceActivationPolicyGetRequest.

    Attributes:

        use_service_provider_settings (bool):

        allow_activation_code_request_by_user (bool):

        send_activation_code_in_email (bool):

    """

    use_service_provider_settings: bool = field(
        metadata={"alias": "useServiceProviderSettings"}
    )

    allow_activation_code_request_by_user: bool = field(
        metadata={"alias": "allowActivationCodeRequestByUser"}
    )

    send_activation_code_in_email: bool = field(
        metadata={"alias": "sendActivationCodeInEmail"}
    )


@dataclass(kw_only=True)
class ServiceProviderDeviceManagementEventGetListResponse22(OCIDataResponse):
    """Response to ServiceProviderDeviceManagementEventGetListRequest22.
        Contains a table with column headings: \"Event Id\", \"Status\", \"Action\",
        \"Level\", \"Type\", \"Additional Info\", \"Is Local\", \"Completion %\",
        \"Pushed/ Same Hash/ Not Pushed\", \"Login Id\", \"Start Time\",
        \"Process Time\", \"Rx Time\", \"Total Time\", \"Request\", \"Priority\",
        \"Tracking Id\", \"End Time\".
        \"Event Id\" is a unique identifier for the event.
        \"Status\" can be: Pending, Queued, In Progress,
        Process On Other Host, Stale, Completed, Canceled.
        \"Action\" can be: Delete, Download, Rebuild, Reset, Upload.
        \"Level\" can be: Device, Device Type, Device Type Group, Group, User.
        \"Type\" can be: Automatic, Manual.
        \"Additional Info\" includes the affected device type, device or group.
        It depends on the level of the event:
          Device Profile: \"Device Name\" \"Service Provider Id\" \"Group Id\"
          Device Type: \"Device Type Name\"
          Device Type Service Provider: \"Service Provider Id\" \"Device Type Name\"
          Service Provider: \"Service Provider Id\"
          Device Type Group: \"Service Provider Id\" \"Group Id\" \"Device Type Name\"
          Group: \"Service Provider Id\" \"Group Id\"
          User: \"User Id\"
        \"Is Local\" is set to \"yes\" if the event is processed on the server
        who received the request, \"no\" otherwise meaning that the event is
        processed on another server.
        \"Completion %\" provides an estimate of the completion of the event.
        A percentage is given, the current number of completed expanded event,
        and the total number of expanded event.
        \"Pushed/ Same Hash/ Not Pushed\" gives the total number of files that
        were pushed, not pushed because of same hash, and not pushed when
        processing the event.
        \"LoginId\" is the user or admin id who triggered the event.
        \"Start Time\" is the date when the event's processing started.  The
        display shows the month, day, hours, minutes, and seconds (MM-dd hh:mm:ss).
        \"Process Time\" is the time taken to process the event in hours,
        minutes, seconds, and milliseconds (hhhh:mm:ss.SSS).
        \"Rx Time\" is the date when the event was received via OCI-P and
        stored in the system.  The display shows the month, day, hours,
        minutes, and seconds (MM-dd hh:mm:ss).
        \"Total Time\" is the total time the event was in the system, from the
        moment it was received and stored until its processing ended, in
        hours, minutes, seconds, and milliseconds (hhhh:mm:ss.SSS).
        \"Request\" is the name of the OCI-P request that triggered the event.
        \"Priority\" is the priority of the event.
        \"Tracking Id\" is the tracking id of the OCI-P request that triggered the event.
        \"End Time\" is the difference, measured in milliseconds, between the
        event's end time and midnight, January 1, 1970 UTC

    Attributes:

        event_table (OCITable):

    """

    event_table: OCITable = field(metadata={"alias": "eventTable"})


@dataclass(kw_only=True)
class ServiceProviderDeviceManagementGetAccessDeviceCountForDeviceTypeServiceProviderResponse(
    OCIDataResponse
):
    """Response to ServiceProviderDeviceManagementGetAccessDeviceCountForDeviceTypeServiceProviderRequest.

    Attributes:

        access_device_count (int):

    """

    access_device_count: int = field(metadata={"alias": "accessDeviceCount"})


@dataclass(kw_only=True)
class ServiceProviderDeviceProfileAuthenticationPasswordRulesGetResponseRI(
    OCIDataResponse
):
    """Response to ServiceProviderDeviceProfileAuthenticationPasswordRulesGetRequestRI.
        Contains the device profile authentication password rules for the service provider.

    Attributes:

        use_service_provider_settings (bool):

        disallow_authentication_name (bool):

        disallow_old_password (bool):

        disallow_reversed_old_password (bool):

        restrict_min_digits (bool):

        min_digits (int):

        restrict_min_upper_case_letters (bool):

        min_upper_case_letters (int):

        restrict_min_lower_case_letters (bool):

        min_lower_case_letters (int):

        restrict_min_non_alphanumeric_characters (bool):

        min_non_alphanumeric_characters (int):

        min_length (int):

        send_permanent_lockout_notification (bool):

        permanent_lockout_notify_email_address (Optional[str]):

        device_profile_authentication_lockout_type (str):

        device_profile_temporary_lockout_threshold (int):

        device_profile_wait_algorithm (str):

        device_profile_lockout_fixed_minutes (str):

        device_profile_permanent_lockout_threshold (int):

        use_password_validation_service (bool):

    """

    use_service_provider_settings: bool = field(
        metadata={"alias": "useServiceProviderSettings"}
    )

    disallow_authentication_name: bool = field(
        metadata={"alias": "disallowAuthenticationName"}
    )

    disallow_old_password: bool = field(metadata={"alias": "disallowOldPassword"})

    disallow_reversed_old_password: bool = field(
        metadata={"alias": "disallowReversedOldPassword"}
    )

    restrict_min_digits: bool = field(metadata={"alias": "restrictMinDigits"})

    min_digits: int = field(metadata={"alias": "minDigits"})

    restrict_min_upper_case_letters: bool = field(
        metadata={"alias": "restrictMinUpperCaseLetters"}
    )

    min_upper_case_letters: int = field(metadata={"alias": "minUpperCaseLetters"})

    restrict_min_lower_case_letters: bool = field(
        metadata={"alias": "restrictMinLowerCaseLetters"}
    )

    min_lower_case_letters: int = field(metadata={"alias": "minLowerCaseLetters"})

    restrict_min_non_alphanumeric_characters: bool = field(
        metadata={"alias": "restrictMinNonAlphanumericCharacters"}
    )

    min_non_alphanumeric_characters: int = field(
        metadata={"alias": "minNonAlphanumericCharacters"}
    )

    min_length: int = field(metadata={"alias": "minLength"})

    send_permanent_lockout_notification: bool = field(
        metadata={"alias": "sendPermanentLockoutNotification"}
    )

    permanent_lockout_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "permanentLockoutNotifyEmailAddress"}
    )

    device_profile_authentication_lockout_type: str = field(
        metadata={"alias": "deviceProfileAuthenticationLockoutType"}
    )

    device_profile_temporary_lockout_threshold: int = field(
        metadata={"alias": "deviceProfileTemporaryLockoutThreshold"}
    )

    device_profile_wait_algorithm: str = field(
        metadata={"alias": "deviceProfileWaitAlgorithm"}
    )

    device_profile_lockout_fixed_minutes: str = field(
        metadata={"alias": "deviceProfileLockoutFixedMinutes"}
    )

    device_profile_permanent_lockout_threshold: int = field(
        metadata={"alias": "deviceProfilePermanentLockoutThreshold"}
    )

    use_password_validation_service: bool = field(
        metadata={"alias": "usePasswordValidationService"}
    )


@dataclass(kw_only=True)
class ServiceProviderDeviceTypeCustomTagGetListResponse(OCIDataResponse):
    """Response to ServiceProviderDeviceTypeCustomTagGetListRequest.
        Contains a table of custom configuration tags managed by the Device Management System on a per-device type basis for a service provider.
        In As data mode, the column headings are:
          \"Tag Name\", \"Tag Value\".
        In XS data mode, the column headings are:
          \"Tag Name\", \"Tag Value\" if request is invoked by an admin without system privileges.
          \"Tag Name\", \"Tag Value\", \"Is Encrypted\" if request is invoked by an admin with system privileges.

    Attributes:

        service_provider_device_type_custom_tags_table (OCITable):

    """

    service_provider_device_type_custom_tags_table: OCITable = field(
        metadata={"alias": "serviceProviderDeviceTypeCustomTagsTable"}
    )


@dataclass(kw_only=True)
class ServiceProviderDeviceTypeFileGetListResponse(OCIDataResponse):
    """Response to ServiceProviderDeviceTypeFileGetListRequest.
        Contains a table of device type files managed by the Device Management System, on a per-service provider basis.
        The column headings are: \"File Format\", \"Is Authenticated\", \"Access URL\", \"Repository URL\", \"Template URL\".

    Attributes:

        service_provider_device_type_files_table (OCITable):

        service_provider_has_customizable_dynamic_files (bool):

    """

    service_provider_device_type_files_table: OCITable = field(
        metadata={"alias": "serviceProviderDeviceTypeFilesTable"}
    )

    service_provider_has_customizable_dynamic_files: bool = field(
        metadata={"alias": "serviceProviderHasCustomizableDynamicFiles"}
    )


@dataclass(kw_only=True)
class ServiceProviderDeviceTypeFileGetResponse(OCIDataResponse):
    """Response to ServiceProviderDeviceTypeFileGetRequest.

    Attributes:

        file_source (Optional[str]):

        configuration_file_name (Optional[str]):

        access_url (str):

        repository_url (Optional[str]):

        template_url (Optional[str]):

    """

    file_source: Optional[str] = field(default=None, metadata={"alias": "fileSource"})

    configuration_file_name: Optional[str] = field(
        default=None, metadata={"alias": "configurationFileName"}
    )

    access_url: str = field(metadata={"alias": "accessUrl"})

    repository_url: Optional[str] = field(
        default=None, metadata={"alias": "repositoryUrl"}
    )

    template_url: Optional[str] = field(default=None, metadata={"alias": "templateUrl"})


@dataclass(kw_only=True)
class ServiceProviderDeviceTypeTagSetGetResponse(OCIDataResponse):
    """Response to ServiceProviderDeviceTypeGetRequest.

    Attributes:

        tag_set_name (Optional[str]):

    """

    tag_set_name: Optional[str] = field(default=None, metadata={"alias": "tagSetName"})


@dataclass(kw_only=True)
class ServiceProviderDialPlanPolicyGetAccessCodeListResponse(OCIDataResponse):
    """Response to ServiceProviderDialPlanPolicyGetAccessCodeListRequest.
        Contains a table with column headings: \"Access Code\",
        \"Enable Secondary Dial Tone\", \"Description\".

    Attributes:

        access_code_table (OCITable):

    """

    access_code_table: OCITable = field(metadata={"alias": "accessCodeTable"})


@dataclass(kw_only=True)
class ServiceProviderDialPlanPolicyGetAccessCodeResponse(OCIDataResponse):
    """Response to ServiceProviderDialPlanPolicyGetAccessCodeRequest

    Attributes:

        include_code_for_network_translations_and_routing (bool):

        include_code_for_screening_services (bool):

        enable_secondary_dial_tone (bool):

        description (Optional[str]):

    """

    include_code_for_network_translations_and_routing: bool = field(
        metadata={"alias": "includeCodeForNetworkTranslationsAndRouting"}
    )

    include_code_for_screening_services: bool = field(
        metadata={"alias": "includeCodeForScreeningServices"}
    )

    enable_secondary_dial_tone: bool = field(
        metadata={"alias": "enableSecondaryDialTone"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class ServiceProviderDialPlanPolicyGetResponse22(OCIDataResponse):
    """Response to ServiceProviderDialPlanPolicyGetRequest22
        The following elements are only used in AS data mode:
          overrideResolvedDeviceDigitMap
        The following elements are only used in AS data mode and not returned in XS data mode:
          deviceDigitMap

    Attributes:

        requires_access_code_for_public_calls (bool):

        allow_e164_public_calls (bool):

        prefer_e164_number_format_for_callback_services (bool):

        public_digit_map (Optional[str]):

        private_digit_map (Optional[str]):

        override_resolved_device_digit_map (bool):

        device_digit_map (Optional[str]):

    """

    requires_access_code_for_public_calls: bool = field(
        metadata={"alias": "requiresAccessCodeForPublicCalls"}
    )

    allow_e164_public_calls: bool = field(metadata={"alias": "allowE164PublicCalls"})

    prefer_e164_number_format_for_callback_services: bool = field(
        metadata={"alias": "preferE164NumberFormatForCallbackServices"}
    )

    public_digit_map: Optional[str] = field(
        default=None, metadata={"alias": "publicDigitMap"}
    )

    private_digit_map: Optional[str] = field(
        default=None, metadata={"alias": "privateDigitMap"}
    )

    override_resolved_device_digit_map: bool = field(
        metadata={"alias": "overrideResolvedDeviceDigitMap"}
    )

    device_digit_map: Optional[str] = field(
        default=None, metadata={"alias": "deviceDigitMap"}
    )


@dataclass(kw_only=True)
class ServiceProviderDialableCallerIDCriteriaGetResponse(OCIDataResponse):
    """Response to the ServiceProviderDialableCallerIDCriteriaGetRequest.
        The response contains the Dialable Caller ID Criteria information.

    Attributes:

        description (Optional[str]):

        prefix_digits (Optional[str]):

        match_call_type (Optional[List[str]]):

        match_alternate_call_indicator (Optional[List[str]]):

        match_local_category (bool):

        match_national_category (bool):

        match_interlata_category (bool):

        match_intralata_category (bool):

        match_international_category (bool):

        match_private_category (bool):

        match_emergency_category (bool):

        match_other_category (bool):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    prefix_digits: Optional[str] = field(
        default=None, metadata={"alias": "prefixDigits"}
    )

    match_call_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchCallType"}
    )

    match_alternate_call_indicator: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchAlternateCallIndicator"}
    )

    match_local_category: bool = field(metadata={"alias": "matchLocalCategory"})

    match_national_category: bool = field(metadata={"alias": "matchNationalCategory"})

    match_interlata_category: bool = field(metadata={"alias": "matchInterlataCategory"})

    match_intralata_category: bool = field(metadata={"alias": "matchIntralataCategory"})

    match_international_category: bool = field(
        metadata={"alias": "matchInternationalCategory"}
    )

    match_private_category: bool = field(metadata={"alias": "matchPrivateCategory"})

    match_emergency_category: bool = field(metadata={"alias": "matchEmergencyCategory"})

    match_other_category: bool = field(metadata={"alias": "matchOtherCategory"})


@dataclass(kw_only=True)
class ServiceProviderDialableCallerIDGetResponse(OCIDataResponse):
    """Response to the ServiceProviderDialableCallerIDGetRequest.
        The criteria table?s column headings are ?Active?, \"Name\", \"Description\", ?Prefix Digits?, and ?Priority?.

    Attributes:

        use_service_provider_criteria (bool):

        ns_screening_failure_policy (str):

        criteria_table (OCITable):

    """

    use_service_provider_criteria: bool = field(
        metadata={"alias": "useServiceProviderCriteria"}
    )

    ns_screening_failure_policy: str = field(
        metadata={"alias": "nsScreeningFailurePolicy"}
    )

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class ServiceProviderDigitCollectionGetResponse13mp4(OCIDataResponse):
    """Response to ServiceProviderDigitCollectionGetRequest13mp4.

    Attributes:

        access_code (Optional[str]):

        public_digit_map (Optional[str]):

        private_digit_map (Optional[str]):

    """

    access_code: Optional[str] = field(default=None, metadata={"alias": "accessCode"})

    public_digit_map: Optional[str] = field(
        default=None, metadata={"alias": "publicDigitMap"}
    )

    private_digit_map: Optional[str] = field(
        default=None, metadata={"alias": "privateDigitMap"}
    )


@dataclass(kw_only=True)
class ServiceProviderDnGetAvailableListResponse(OCIDataResponse):
    """Response to ServiceProviderDnGetAvailableListRequest.
        Contains a list of available DNs not yet assigned to any group.

    Attributes:

        available_dn (Optional[List[str]]):

    """

    available_dn: Optional[List[str]] = field(
        default=None, metadata={"alias": "availableDn"}
    )


@dataclass(kw_only=True)
class ServiceProviderDnGetStatusListResponse(OCIDataResponse):
    """Response to ServiceProviderDnGetStatusListRequest.

    Attributes:

        dn_status (Optional[List[DNValidationStatusMessage]]):

    """

    dn_status: Optional[List[DNValidationStatusMessage]] = field(
        default=None, metadata={"alias": "dnStatus"}
    )


@dataclass(kw_only=True)
class ServiceProviderDnGetSummaryListResponse(OCIDataResponse):
    """Response to ServiceProviderDnGetSummaryListRequest.
        The column headings are \"Phone Numbers, \"Group Id\" and \"Can Delete\"

    Attributes:

        dn_summary_table (OCITable):

    """

    dn_summary_table: OCITable = field(metadata={"alias": "dnSummaryTable"})


@dataclass(kw_only=True)
class ServiceProviderDomainGetAssignedGroupListResponse(OCIDataResponse):
    """Response to ServiceProviderDomainGetAssignedGroupListRequest.
        Contains a table with column headings: \"Group Id\", \"Group Name\"
        and a row for each group.

    Attributes:

        group_table (OCITable):

    """

    group_table: OCITable = field(metadata={"alias": "groupTable"})


@dataclass(kw_only=True)
class ServiceProviderDomainGetAssignedListResponse22(OCIDataResponse):
    """Contains a simple list of service provider domain names.

    Attributes:

        service_provider_default_domain (str):

        domain (Optional[List[str]]):

    """

    service_provider_default_domain: str = field(
        metadata={"alias": "serviceProviderDefaultDomain"}
    )

    domain: Optional[List[str]] = field(default=None, metadata={"alias": "domain"})


@dataclass(kw_only=True)
class ServiceProviderEmergencyCallNotificationGetResponse(OCIDataResponse):
    """Response to ServiceProviderEmergencyCallNotificationGetRequest.

    Attributes:

        send_emergency_call_notification_email (bool):

        emergency_call_notify_email_address (Optional[str]):

        allow_group_override (bool):

    """

    send_emergency_call_notification_email: bool = field(
        metadata={"alias": "sendEmergencyCallNotificationEmail"}
    )

    emergency_call_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "emergencyCallNotifyEmailAddress"}
    )

    allow_group_override: bool = field(metadata={"alias": "allowGroupOverride"})


@dataclass(kw_only=True)
class ServiceProviderEndpointGetListResponse(OCIDataResponse):
    """Response to ServiceProviderEndpointGetListRequest.
        The column headings for the endpointTable are:
          \"Group Id\", \"Line/Port\", \"Last Name\", \"First Name\",  \"User Id\", \"User Type\", \"Phone Number\", \"Extension\", \"Device Type\", \"Device Name\", \"Net Address\", \"MAC Address\", \"Department\", \"Email Address\".
                Possible values for User Type are \"User\", \"CCBasic\", \"CCStandard\", \"CCPremium\", \"RP\", \"MOH\", \"MOHVideo\".

    Attributes:

        endpoint_table (OCITable):

    """

    endpoint_table: OCITable = field(metadata={"alias": "endpointTable"})


@dataclass(kw_only=True)
class ServiceProviderEnhancedCallLogsGetResponse17sp4(OCIDataResponse):
    """Response to ServiceProviderEnhancedCallLogsGetRequest17sp4.

    Attributes:

        max_logged_calls (int):

        call_expiration_days (int):

    """

    max_logged_calls: int = field(metadata={"alias": "maxLoggedCalls"})

    call_expiration_days: int = field(metadata={"alias": "callExpirationDays"})


@dataclass(kw_only=True)
class ServiceProviderEnhancedCallLogsSchemaInstanceGetResponse(OCIDataResponse):
    """Response to ServiceProviderEnhancedCallLogsSchemaInstanceGetRequest.

    Attributes:

        name (Optional[str]):

    """

    name: Optional[str] = field(default=None, metadata={"alias": "name"})


@dataclass(kw_only=True)
class ServiceProviderExtensionLengthGetResponse(OCIDataResponse):
    """Response to ServiceProviderExtensionLengthGetRequest.

    Attributes:

        default_extension_length (Optional[int]):

        location_routing_prefix_digit (Optional[int]):

        location_code_length (Optional[int]):

    """

    default_extension_length: Optional[int] = field(
        default=None, metadata={"alias": "defaultExtensionLength"}
    )

    location_routing_prefix_digit: Optional[int] = field(
        default=None, metadata={"alias": "locationRoutingPrefixDigit"}
    )

    location_code_length: Optional[int] = field(
        default=None, metadata={"alias": "locationCodeLength"}
    )


@dataclass(kw_only=True)
class ServiceProviderExternalCustomRingbackGetResponse(OCIDataResponse):
    """Response to ServiceProviderExternalCustomRingbackGetRequest.

    Attributes:

        prefix_digits (Optional[str]):

        server_net_address (Optional[str]):

        server_port (Optional[int]):

        timeout_seconds (int):

    """

    prefix_digits: Optional[str] = field(
        default=None, metadata={"alias": "prefixDigits"}
    )

    server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "serverNetAddress"}
    )

    server_port: Optional[int] = field(default=None, metadata={"alias": "serverPort"})

    timeout_seconds: int = field(metadata={"alias": "timeoutSeconds"})


@dataclass(kw_only=True)
class ServiceProviderFeatureAccessCodeGetListResponse21(OCIDataResponse):
    """Response to the ServiceProviderFeatureAccessCodeGetListRequest21.

        In release 20 the \"Call Recording\" FAC name is changed to
        \"Call Recording - Start\".

    Attributes:

        feature_access_code (Optional[List[FeatureAccessCodeReadEntry]]):

    """

    feature_access_code: Optional[List[FeatureAccessCodeReadEntry]] = field(
        default=None, metadata={"alias": "featureAccessCode"}
    )


@dataclass(kw_only=True)
class ServiceProviderFileRepositoryDeviceUserGetListResponse(OCIDataResponse):
    """Response to ServiceProviderFileRepositoryDeviceUserGetListRequest.
        Contains a table with column headings : \"User Name\",\"Allow Delete\",\"Allow Get\",\"Allow Put\" in a row for each file repository service provider user.

    Attributes:

        file_repository_user_table (OCITable):

    """

    file_repository_user_table: OCITable = field(
        metadata={"alias": "fileRepositoryUserTable"}
    )


@dataclass(kw_only=True)
class ServiceProviderGetAvailableLeafDeviceListResponse22(OCIDataResponse):
    """Response to ServiceProviderGetAvailableLeafDeviceListRequest22.

    Attributes:

        leaf_device_key (Optional[List[AccessDeviceKey]]):

        support_links (Optional[List[str]]):

    """

    leaf_device_key: Optional[List[AccessDeviceKey]] = field(
        default=None, metadata={"alias": "leafDeviceKey"}
    )

    support_links: Optional[List[str]] = field(
        default=None, metadata={"alias": "supportLinks"}
    )


@dataclass(kw_only=True)
class ServiceProviderGetAvailableTreeDeviceListResponse(OCIDataResponse):
    """Response to ServiceProviderGetAvailableTreeDeviceListRequest.

    Attributes:

        tree_device_info (Optional[List[TreeDeviceInfo]]):

    """

    tree_device_info: Optional[List[TreeDeviceInfo]] = field(
        default=None, metadata={"alias": "treeDeviceInfo"}
    )


@dataclass(kw_only=True)
class ServiceProviderGetDefaultResponse(OCIDataResponse):
    """Response to the ServiceProviderGetDefaultRequest. All values are default values for
        a service provider or enterprise's profile.

    Attributes:

        is_enterprise (bool):

        default_domain (Optional[str]):

    """

    is_enterprise: bool = field(metadata={"alias": "isEnterprise"})

    default_domain: Optional[str] = field(
        default=None, metadata={"alias": "defaultDomain"}
    )


@dataclass(kw_only=True)
class ServiceProviderGetListResponse(OCIDataResponse):
    """Response to ServiceProviderGetListRequest.
        Contains a 3 column table with column headings \"Service Provider Id\", \"Service Provider Name\",
        \"Is Enterprise\" and \"Reseller Id\" and a row for each service provider or enterprise.

        The following columns are only returned in AS data mode:
          \"Reseller Id\"

    Attributes:

        service_provider_table (OCITable):

    """

    service_provider_table: OCITable = field(metadata={"alias": "serviceProviderTable"})


@dataclass(kw_only=True)
class ServiceProviderGetPagedSortedListResponse(OCIDataResponse):
    """Response to ServiceProviderGetPagedSortedListRequest.
        Contains a table with column headings \"Service Provider Id\", \"Service Provider Name\"
        and \"Is Enterprise\", \"Reseller Id\" and \"Service Provider External Id\" and a row for each service provider or enterprise.

        The following columns are only populated in AS data mode:
          \"Reseller Id\",
          \"Service Provider External Id

    Attributes:

        service_provider_table (OCITable):

    """

    service_provider_table: OCITable = field(metadata={"alias": "serviceProviderTable"})


@dataclass(kw_only=True)
class ServiceProviderGetResponse22V4(OCIDataResponse):
    """Response to the ServiceProviderGetRequest22V4.
        The response contains the service provider or enterprise's profile information.
        The following elements are not returned in AS and XS data mode:
        servicePolicy,
        callProcessingSliceId,
        subscriberPartition.

        The following data elements are only used in AS data mode and not returned
        in XS data mode:
        resellerId,
        serviceProviderExternalId,
        provisioningSliceId.

    Attributes:

        is_enterprise (Optional[bool]):

        use_custom_routing_profile (Optional[bool]):

        default_domain (str):

        service_provider_name (Optional[str]):

        support_email (Optional[str]):

        contact (Optional[Contact]):

        address (Optional[StreetAddress]):

        use_service_provider_languages (bool):

        service_policy (Optional[str]):

        call_processing_slice_id (Optional[str]):

        provisioning_slice_id (Optional[str]):

        subscriber_partition (Optional[str]):

        preferred_data_center (Optional[str]):

        reseller_id (Optional[str]):

        service_provider_id (str):

        service_provider_external_id (Optional[str]):

    """

    is_enterprise: Optional[bool] = field(
        default=None, metadata={"alias": "isEnterprise"}
    )

    use_custom_routing_profile: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomRoutingProfile"}
    )

    default_domain: str = field(metadata={"alias": "defaultDomain"})

    service_provider_name: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderName"}
    )

    support_email: Optional[str] = field(
        default=None, metadata={"alias": "supportEmail"}
    )

    contact: Optional[Contact] = field(default=None, metadata={"alias": "contact"})

    address: Optional[StreetAddress] = field(
        default=None, metadata={"alias": "address"}
    )

    use_service_provider_languages: bool = field(
        metadata={"alias": "useServiceProviderLanguages"}
    )

    service_policy: Optional[str] = field(
        default=None, metadata={"alias": "servicePolicy"}
    )

    call_processing_slice_id: Optional[str] = field(
        default=None, metadata={"alias": "callProcessingSliceId"}
    )

    provisioning_slice_id: Optional[str] = field(
        default=None, metadata={"alias": "provisioningSliceId"}
    )

    subscriber_partition: Optional[str] = field(
        default=None, metadata={"alias": "subscriberPartition"}
    )

    preferred_data_center: Optional[str] = field(
        default=None, metadata={"alias": "preferredDataCenter"}
    )

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    service_provider_external_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderExternalId"}
    )


@dataclass(kw_only=True)
class ServiceProviderGroupPagingTargetsCapacityGetResponse22(OCIDataResponse):
    """Response to ServiceProviderGroupPagingTargetsCapacityGetRequest22.

    Attributes:

        maximum_target_users (int):

    """

    maximum_target_users: int = field(metadata={"alias": "maximumTargetUsers"})


@dataclass(kw_only=True)
class ServiceProviderHPBXAlternateCarrierSelectionGetResponse(OCIDataResponse):
    """Response to the ServiceProviderHPBXAlternateCarrierSelectionGetRequest.

    Attributes:

        process_cbc_carrier_selection (bool):

        preselected_local_carrier (Optional[str]):

        preselected_distant_carrier (Optional[str]):

    """

    process_cbc_carrier_selection: bool = field(
        metadata={"alias": "processCbcCarrierSelection"}
    )

    preselected_local_carrier: Optional[str] = field(
        default=None, metadata={"alias": "preselectedLocalCarrier"}
    )

    preselected_distant_carrier: Optional[str] = field(
        default=None, metadata={"alias": "preselectedDistantCarrier"}
    )


@dataclass(kw_only=True)
class ServiceProviderIMRNGetListResponse(OCIDataResponse):
    """Response to ServiceProviderIMRNGetListRequest.

    Attributes:

        imrn (Optional[List[str]]):

    """

    imrn: Optional[List[str]] = field(default=None, metadata={"alias": "imrn"})


@dataclass(kw_only=True)
class ServiceProviderInCallServiceActivationGetResponse17(OCIDataResponse):
    """Response to ServiceProviderInCallServiceActivationGetRequest17.

    Attributes:

        flash_activation_digits (str):

        call_transfer_activation_digits (str):

    """

    flash_activation_digits: str = field(metadata={"alias": "flashActivationDigits"})

    call_transfer_activation_digits: str = field(
        metadata={"alias": "callTransferActivationDigits"}
    )


@dataclass(kw_only=True)
class ServiceProviderIntegratedIMPGetResponse22(OCIDataResponse):
    """Response to the ServiceProviderIntegratedIMPGetRequest22.
        The response contains the service provider Integrated IMP service attributes.
        If the service provider is within a reseller, useSystemServiceDomain means using reseller level service
        domain setting. And useSystemMessagingServer means using the reseller level messaging server setting.
        The element useResellerIMPIdSetting means using the reseller level IMP User ID setting.

    Attributes:

        use_system_service_domain (bool):

        service_domain (Optional[str]):

        service_port (Optional[int]):

        use_system_messaging_server (bool):

        provisioning_url (Optional[str]):

        provisioning_user_id (Optional[str]):

        bosh_url (Optional[str]):

        default_imp_id_type (Optional[str]):

        use_reseller_imp_id_setting (Optional[bool]):

    """

    use_system_service_domain: bool = field(
        metadata={"alias": "useSystemServiceDomain"}
    )

    service_domain: Optional[str] = field(
        default=None, metadata={"alias": "serviceDomain"}
    )

    service_port: Optional[int] = field(default=None, metadata={"alias": "servicePort"})

    use_system_messaging_server: bool = field(
        metadata={"alias": "useSystemMessagingServer"}
    )

    provisioning_url: Optional[str] = field(
        default=None, metadata={"alias": "provisioningUrl"}
    )

    provisioning_user_id: Optional[str] = field(
        default=None, metadata={"alias": "provisioningUserId"}
    )

    bosh_url: Optional[str] = field(default=None, metadata={"alias": "boshURL"})

    default_imp_id_type: Optional[str] = field(
        default=None, metadata={"alias": "defaultImpIdType"}
    )

    use_reseller_imp_id_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useResellerIMPIdSetting"}
    )


@dataclass(kw_only=True)
class ServiceProviderLanguageGetAvailableListResponse(OCIDataResponse):
    """Response to ServiceProviderLanguageGetAvailableListRequest.
        The language table column headings are: \"Language\", \"Locale\" and \"Encoding\".

    Attributes:

        default_language (str):

        language_table (OCITable):

    """

    default_language: str = field(metadata={"alias": "defaultLanguage"})

    language_table: OCITable = field(metadata={"alias": "languageTable"})


@dataclass(kw_only=True)
class ServiceProviderLanguageGetListResponse(OCIDataResponse):
    """Response to ServiceProviderLanguageGetListRequest.

    Attributes:

        language (Optional[List[str]]):

        default_language (Optional[str]):

    """

    language: Optional[List[str]] = field(default=None, metadata={"alias": "language"})

    default_language: Optional[str] = field(
        default=None, metadata={"alias": "defaultLanguage"}
    )


@dataclass(kw_only=True)
class ServiceProviderMWIDeliveryToMobileEndpointCustomTemplateGetResponse23(
    OCIDataResponse
):
    """Response to the ServiceProviderMWIDeliveryToMobileEndpointCustomTemplateGetRequest23.

    Attributes:

        is_enabled (bool):

        month_abbreviations (Optional[str]):

        template_body (MWIDeliveryToMobileEndpointTemplateBody23):

    """

    is_enabled: bool = field(metadata={"alias": "isEnabled"})

    month_abbreviations: Optional[str] = field(
        default=None, metadata={"alias": "monthAbbreviations"}
    )

    template_body: MWIDeliveryToMobileEndpointTemplateBody23 = field(
        metadata={"alias": "templateBody"}
    )


@dataclass(kw_only=True)
class ServiceProviderMWIDeliveryToMobileEndpointGetResponse(OCIDataResponse):
    """Response to ServiceProviderMWIDeliveryToMobileEndpointGetRequest.

        The templateActivationTable contains the list of templates defined for the service provider.
        The column headings are \"Enable\", \"Language\", \"Type\".

    Attributes:

        template_activation_table (OCITable):

    """

    template_activation_table: OCITable = field(
        metadata={"alias": "templateActivationTable"}
    )


@dataclass(kw_only=True)
class ServiceProviderMaliciousCallTraceGetResponse(OCIDataResponse):
    """Response to the ServiceProviderMaliciousCallTraceGetRequest.
        The response contains the service provider Malicious Call Trace
        settings.

    Attributes:

        use_system_play_mct_warning_announcement (bool):

        play_mct_warning_announcement (bool):

    """

    use_system_play_mct_warning_announcement: bool = field(
        metadata={"alias": "useSystemPlayMCTWarningAnnouncement"}
    )

    play_mct_warning_announcement: bool = field(
        metadata={"alias": "playMCTWarningAnnouncement"}
    )


@dataclass(kw_only=True)
class ServiceProviderMeetMeConferencingGetResponse(OCIDataResponse):
    """Response to ServiceProviderMeetMeConferencingGetRequest.

    Attributes:

        allocated_ports (MeetMeConferencingConferencePorts):

    """

    allocated_ports: MeetMeConferencingConferencePorts = field(
        metadata={"alias": "allocatedPorts"}
    )


@dataclass(kw_only=True)
class ServiceProviderNetworkClassOfServiceGetAssignedGroupListResponse(OCIDataResponse):
    """Response to ServiceProviderNetworkClassOfServiceGetAssignedGroupListRequest.
        Contains a table of groups that have the Network Class of Service
        assigned. The column headings are: \"Group Id\" and \"Group Name\".

    Attributes:

        group_table (OCITable):

    """

    group_table: OCITable = field(metadata={"alias": "groupTable"})


@dataclass(kw_only=True)
class ServiceProviderNetworkClassOfServiceGetAssignedListResponse(OCIDataResponse):
    """Response to ServiceProviderNetworkClassOfServiceGetAssignedListRequest.
        Contains a table of all Network Classes of Service assigned to the
        service provider. The column headings are: \"Name\", \"Description\" and \"Default\".

    Attributes:

        network_class_of_service_table (OCITable):

    """

    network_class_of_service_table: OCITable = field(
        metadata={"alias": "networkClassOfServiceTable"}
    )


@dataclass(kw_only=True)
class ServiceProviderNumberPortabilityQueryGetResponse(OCIDataResponse):
    """Response to the ServiceProviderNumberPortabilityQueryGetRequest.
        The response contains the service provider number portability query information.

    Attributes:

        enable_number_portability_query_for_outgoing_calls (bool):

        enable_number_portability_query_for_incoming_calls (bool):

        enable_number_portability_query_for_network_calls_only (bool):

        digit_pattern (Optional[List[str]]):

    """

    enable_number_portability_query_for_outgoing_calls: bool = field(
        metadata={"alias": "enableNumberPortabilityQueryForOutgoingCalls"}
    )

    enable_number_portability_query_for_incoming_calls: bool = field(
        metadata={"alias": "enableNumberPortabilityQueryForIncomingCalls"}
    )

    enable_number_portability_query_for_network_calls_only: bool = field(
        metadata={"alias": "enableNumberPortabilityQueryForNetworkCallsOnly"}
    )

    digit_pattern: Optional[List[str]] = field(
        default=None, metadata={"alias": "digitPattern"}
    )


@dataclass(kw_only=True)
class ServiceProviderOfficeZoneGetAssignedGroupListResponse(OCIDataResponse):
    """Response to ServiceProviderOfficeZoneGetAssignedGroupListRequest.  Contains a table of groups that have the Office Zone assigned. The column headings are: \"Group Id\" and \"Group Name\".

    Attributes:

        group_table (OCITable):

    """

    group_table: OCITable = field(metadata={"alias": "groupTable"})


@dataclass(kw_only=True)
class ServiceProviderOfficeZoneGetAssignedListResponse(OCIDataResponse):
    """Response to ServiceProviderOfficeZoneGetAssignedListRequest.
        Contains a table of all Office Zones assigned to the
        service provider. The column headings are: \"Name\", \"Description\" and \"Default\".

    Attributes:

        office_zone_table (OCITable):

    """

    office_zone_table: OCITable = field(metadata={"alias": "officeZoneTable"})


@dataclass(kw_only=True)
class ServiceProviderPasswordRulesGetResponseRI(OCIDataResponse):
    """Response to ServiceProviderPasswordRulesGetRequestRI.
        Contains the group, department administrator and/or user password
        rules setting.

        The following element is only used in AS data mode:
        forcePasswordChangeAfterReset, value \"false\" is returned in XS data mode
        reenableLogin
        lockOutInMinutes

    Attributes:

        rules_apply_to (str):

        allow_web_add_external_authentication_users (bool):

        disallow_user_id (bool):

        disallow_old_password (bool):

        disallow_reversed_old_password (bool):

        restrict_min_digits (bool):

        min_digits (int):

        restrict_min_upper_case_letters (bool):

        min_upper_case_letters (int):

        restrict_min_lower_case_letters (bool):

        min_lower_case_letters (int):

        restrict_min_non_alphanumeric_characters (bool):

        min_non_alphanumeric_characters (int):

        min_length (int):

        max_failed_login_attempts (int):

        password_expires_days (int):

        send_login_disabled_notify_email (bool):

        login_disabled_notify_email_address (Optional[str]):

        disallow_rules_modification (bool):

        disallow_previous_passwords (bool):

        number_of_previous_passwords (int):

        force_password_change_after_reset (bool):

        use_password_validation_service (bool):

        reenable_login (bool):

        lock_out_in_minutes (int):

    """

    rules_apply_to: str = field(metadata={"alias": "rulesApplyTo"})

    allow_web_add_external_authentication_users: bool = field(
        metadata={"alias": "allowWebAddExternalAuthenticationUsers"}
    )

    disallow_user_id: bool = field(metadata={"alias": "disallowUserId"})

    disallow_old_password: bool = field(metadata={"alias": "disallowOldPassword"})

    disallow_reversed_old_password: bool = field(
        metadata={"alias": "disallowReversedOldPassword"}
    )

    restrict_min_digits: bool = field(metadata={"alias": "restrictMinDigits"})

    min_digits: int = field(metadata={"alias": "minDigits"})

    restrict_min_upper_case_letters: bool = field(
        metadata={"alias": "restrictMinUpperCaseLetters"}
    )

    min_upper_case_letters: int = field(metadata={"alias": "minUpperCaseLetters"})

    restrict_min_lower_case_letters: bool = field(
        metadata={"alias": "restrictMinLowerCaseLetters"}
    )

    min_lower_case_letters: int = field(metadata={"alias": "minLowerCaseLetters"})

    restrict_min_non_alphanumeric_characters: bool = field(
        metadata={"alias": "restrictMinNonAlphanumericCharacters"}
    )

    min_non_alphanumeric_characters: int = field(
        metadata={"alias": "minNonAlphanumericCharacters"}
    )

    min_length: int = field(metadata={"alias": "minLength"})

    max_failed_login_attempts: int = field(metadata={"alias": "maxFailedLoginAttempts"})

    password_expires_days: int = field(metadata={"alias": "passwordExpiresDays"})

    send_login_disabled_notify_email: bool = field(
        metadata={"alias": "sendLoginDisabledNotifyEmail"}
    )

    login_disabled_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "loginDisabledNotifyEmailAddress"}
    )

    disallow_rules_modification: bool = field(
        metadata={"alias": "disallowRulesModification"}
    )

    disallow_previous_passwords: bool = field(
        metadata={"alias": "disallowPreviousPasswords"}
    )

    number_of_previous_passwords: int = field(
        metadata={"alias": "numberOfPreviousPasswords"}
    )

    force_password_change_after_reset: bool = field(
        metadata={"alias": "forcePasswordChangeAfterReset"}
    )

    use_password_validation_service: bool = field(
        metadata={"alias": "usePasswordValidationService"}
    )

    reenable_login: bool = field(metadata={"alias": "reenableLogin"})

    lock_out_in_minutes: int = field(metadata={"alias": "lockOutInMinutes"})


@dataclass(kw_only=True)
class ServiceProviderPortalPasscodeRulesGetResponseRI(OCIDataResponse):
    """Response to ServiceProviderPortalPasscodeRulesGetRequestRI.
        Contains the service provider's passcode rules setting.

        The following elements are only used in AS data mode:
          numberOfRepeatedDigits
          disallowRepeatedPatterns
          disallowContiguousSequences
          numberOfAscendingDigits
          numberOfDescendingDigits
          numberOfPreviousPasscodes
          enableDefaultPasscode
          defaultPasscode
          reenableLogin
          lockOutInMinutes

    Attributes:

        disallow_repeated_digits (bool):

        number_of_repeated_digits (int):

        disallow_repeated_patterns (bool):

        disallow_contiguous_sequences (bool):

        number_of_ascending_digits (int):

        number_of_descending_digits (int):

        disallow_user_number (bool):

        disallow_reversed_user_number (bool):

        disallow_old_passcode (bool):

        number_of_previous_passcodes (int):

        disallow_reversed_old_passcode (bool):

        min_code_length (int):

        max_code_length (int):

        disable_login_after_max_failed_login_attempts (bool):

        max_failed_login_attempts (Optional[int]):

        expire_password (bool):

        passcode_expires_days (Optional[int]):

        send_login_disabled_notify_email (bool):

        login_disabled_notify_email_address (Optional[str]):

        enable_default_passcode (bool):

        default_passcode (Optional[str]):

        reenable_login (bool):

        lock_out_in_minutes (int):

    """

    disallow_repeated_digits: bool = field(metadata={"alias": "disallowRepeatedDigits"})

    number_of_repeated_digits: int = field(metadata={"alias": "numberOfRepeatedDigits"})

    disallow_repeated_patterns: bool = field(
        metadata={"alias": "disallowRepeatedPatterns"}
    )

    disallow_contiguous_sequences: bool = field(
        metadata={"alias": "disallowContiguousSequences"}
    )

    number_of_ascending_digits: int = field(
        metadata={"alias": "numberOfAscendingDigits"}
    )

    number_of_descending_digits: int = field(
        metadata={"alias": "numberOfDescendingDigits"}
    )

    disallow_user_number: bool = field(metadata={"alias": "disallowUserNumber"})

    disallow_reversed_user_number: bool = field(
        metadata={"alias": "disallowReversedUserNumber"}
    )

    disallow_old_passcode: bool = field(metadata={"alias": "disallowOldPasscode"})

    number_of_previous_passcodes: int = field(
        metadata={"alias": "numberOfPreviousPasscodes"}
    )

    disallow_reversed_old_passcode: bool = field(
        metadata={"alias": "disallowReversedOldPasscode"}
    )

    min_code_length: int = field(metadata={"alias": "minCodeLength"})

    max_code_length: int = field(metadata={"alias": "maxCodeLength"})

    disable_login_after_max_failed_login_attempts: bool = field(
        metadata={"alias": "disableLoginAfterMaxFailedLoginAttempts"}
    )

    max_failed_login_attempts: Optional[int] = field(
        default=None, metadata={"alias": "maxFailedLoginAttempts"}
    )

    expire_password: bool = field(metadata={"alias": "expirePassword"})

    passcode_expires_days: Optional[int] = field(
        default=None, metadata={"alias": "passcodeExpiresDays"}
    )

    send_login_disabled_notify_email: bool = field(
        metadata={"alias": "sendLoginDisabledNotifyEmail"}
    )

    login_disabled_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "loginDisabledNotifyEmailAddress"}
    )

    enable_default_passcode: bool = field(metadata={"alias": "enableDefaultPasscode"})

    default_passcode: Optional[str] = field(
        default=None, metadata={"alias": "defaultPasscode"}
    )

    reenable_login: bool = field(metadata={"alias": "reenableLogin"})

    lock_out_in_minutes: int = field(metadata={"alias": "lockOutInMinutes"})


@dataclass(kw_only=True)
class ServiceProviderPreferredCarrierGetAvailableCountryCodeListResponse(
    OCIDataResponse
):
    """Response to a ServiceProviderPreferredCarrierGetAvailableCountryCodeListRequest.
        Contains the default country code and the list of unused country codes for a service provider / enterprise.

    Attributes:

        default_country_code (Optional[str]):

        country_code (Optional[List[str]]):

    """

    default_country_code: Optional[str] = field(
        default=None, metadata={"alias": "defaultCountryCode"}
    )

    country_code: Optional[List[str]] = field(
        default=None, metadata={"alias": "countryCode"}
    )


@dataclass(kw_only=True)
class ServiceProviderPreferredCarrierGetCarrierListResponse(OCIDataResponse):
    """Response to a ServiceProviderPreferredCarrierGetCarrierListRequest.
        Contains the lists of carriers for a specified country code for a service provider / enterprise.

    Attributes:

        intra_lata_carrier (Optional[List[str]]):

        inter_lata_carrier (Optional[List[str]]):

        international_carrier (Optional[List[str]]):

    """

    intra_lata_carrier: Optional[List[str]] = field(
        default=None, metadata={"alias": "intraLataCarrier"}
    )

    inter_lata_carrier: Optional[List[str]] = field(
        default=None, metadata={"alias": "interLataCarrier"}
    )

    international_carrier: Optional[List[str]] = field(
        default=None, metadata={"alias": "internationalCarrier"}
    )


@dataclass(kw_only=True)
class ServiceProviderPreferredCarrierGetListResponse(OCIDataResponse):
    """Response to a ServiceProviderPreferredCarrierGetListRequest. Contains a table with one row per carrier.
        The table columns are: \"Country Code\", \"Intra-Lata PIC\", \"Inter-Lata PIC\", \"International PIC\".

    Attributes:

        service_provider_carrier_table (OCITable):

    """

    service_provider_carrier_table: OCITable = field(
        metadata={"alias": "serviceProviderCarrierTable"}
    )


@dataclass(kw_only=True)
class ServiceProviderPreferredCarrierGetResponse(OCIDataResponse):
    """Response to a ServiceProviderPreferredCarrierGetRequest.
        Contains the currently configured carriers for a specified country code for a service provider / enterprise.

    Attributes:

        intra_lata_carrier (Optional[str]):

        inter_lata_carrier (Optional[str]):

        international_carrier (Optional[str]):

    """

    intra_lata_carrier: Optional[str] = field(
        default=None, metadata={"alias": "intraLataCarrier"}
    )

    inter_lata_carrier: Optional[str] = field(
        default=None, metadata={"alias": "interLataCarrier"}
    )

    international_carrier: Optional[str] = field(
        default=None, metadata={"alias": "internationalCarrier"}
    )


@dataclass(kw_only=True)
class ServiceProviderRouteListEnterpriseTrunkNumberPrefixGetAvailableListResponse(
    OCIDataResponse
):
    """Response to ServiceProviderRouteListEnterpriseTrunkNumberPrefixGetAvailableListRequest.
        Contains a list of available number prefixes not yet assigned to any group.
        The column headings are \"Number Prefix\"\",\"Is Active\", \"Extension Range Start\" and \"Extension Range End\".

    Attributes:

        available_number_prefix_table (OCITable):

    """

    available_number_prefix_table: OCITable = field(
        metadata={"alias": "availableNumberPrefixTable"}
    )


@dataclass(kw_only=True)
class ServiceProviderRouteListEnterpriseTrunkNumberPrefixGetSummaryListResponse(
    OCIDataResponse
):
    """Response to ServiceProviderRouteListEnterpriseTrunkPrefixGetSummaryListRequest.
        The column headings are \"Number Prefix\", \"Group Id\" \",\"Is Active\", \"Extension Range Start\" and \"Extension Range End\".

    Attributes:

        prefix_summary_table (OCITable):

    """

    prefix_summary_table: OCITable = field(metadata={"alias": "prefixSummaryTable"})


@dataclass(kw_only=True)
class ServiceProviderRouteListEnterpriseTrunkNumberRangeGetAvailableListResponse(
    OCIDataResponse
):
    """Response to ServiceProviderRouteListEnterpriseTrunkNumberRangeGetAvailableListRequest. Contains a list of available number ranges not yet assigned to any group.
        The column headings are \"Number Range Start\", \"Number Range End\",\"Is Active\" and \"Extension Length\".

    Attributes:

        available_number_range_table (OCITable):

    """

    available_number_range_table: OCITable = field(
        metadata={"alias": "availableNumberRangeTable"}
    )


@dataclass(kw_only=True)
class ServiceProviderRouteListEnterpriseTrunkNumberRangeGetSummaryListResponse(
    OCIDataResponse
):
    """Response to ServiceProviderRouteListEnterpriseTrunkNumberRangeGetSummaryListRequest.
        The column headings are \"Number Range Start\", \"Number Range End\", \"Group Id\", \"Is Active\" and \"Extension Length\".

    Attributes:

        number_range_summary_table (OCITable):

    """

    number_range_summary_table: OCITable = field(
        metadata={"alias": "numberRangeSummaryTable"}
    )


@dataclass(kw_only=True)
class ServiceProviderRoutePointExternalSystemGetAssignedGroupListResponse(
    OCIDataResponse
):
    """Response to ServiceProviderRoutePointExternalSystemGetAssignedGroupListRequest.
        Contains a table with column headings: \"Group Id\", \"Group Name\"
        and a row for each group.

    Attributes:

        group_table (OCITable):

    """

    group_table: OCITable = field(metadata={"alias": "groupTable"})


@dataclass(kw_only=True)
class ServiceProviderRoutePointExternalSystemGetAssignedListResponse(OCIDataResponse):
    """Response to the ServiceProviderRoutePointExternalSystemGetAssignedListRequest.
        Contains a table of all Route Point External Systems assigned to the
        service provider.  The column headings are: \"Name\" and \"Description\".

    Attributes:

        external_system_table (OCITable):

    """

    external_system_table: OCITable = field(metadata={"alias": "externalSystemTable"})


@dataclass(kw_only=True)
class ServiceProviderRoutingProfileGetResponse(OCIDataResponse):
    """Response to ServiceProviderRoutingProfileGetRequest.

    Attributes:

        routing_profile (Optional[str]):

    """

    routing_profile: Optional[str] = field(
        default=None, metadata={"alias": "routingProfile"}
    )


@dataclass(kw_only=True)
class ServiceProviderSIPAuthenticationPasswordRulesGetResponseRI(OCIDataResponse):
    """Response to ServiceProviderSIPAuthenticationPasswordRulesGetRequestRI.
        Contains the SIP authentication password rules for the service provider.

    Attributes:

        use_service_provider_settings (bool):

        disallow_authentication_name (bool):

        disallow_old_password (bool):

        disallow_reversed_old_password (bool):

        restrict_min_digits (bool):

        min_digits (int):

        restrict_min_upper_case_letters (bool):

        min_upper_case_letters (int):

        restrict_min_lower_case_letters (bool):

        min_lower_case_letters (int):

        restrict_min_non_alphanumeric_characters (bool):

        min_non_alphanumeric_characters (int):

        min_length (int):

        send_permanent_lockout_notification (bool):

        permanent_lockout_notify_email_address (Optional[str]):

        endpoint_authentication_lockout_type (str):

        endpoint_temporary_lockout_threshold (int):

        endpoint_wait_algorithm (str):

        endpoint_lockout_fixed_minutes (str):

        endpoint_permanent_lockout_threshold (int):

        trunk_group_temporary_lockout_threshold (int):

        trunk_group_authentication_lockout_type (str):

        trunk_group_wait_algorithm (str):

        trunk_group_lockout_fixed_minutes (str):

        trunk_group_permanent_lockout_threshold (int):

        use_password_validation_service (bool):

    """

    use_service_provider_settings: bool = field(
        metadata={"alias": "useServiceProviderSettings"}
    )

    disallow_authentication_name: bool = field(
        metadata={"alias": "disallowAuthenticationName"}
    )

    disallow_old_password: bool = field(metadata={"alias": "disallowOldPassword"})

    disallow_reversed_old_password: bool = field(
        metadata={"alias": "disallowReversedOldPassword"}
    )

    restrict_min_digits: bool = field(metadata={"alias": "restrictMinDigits"})

    min_digits: int = field(metadata={"alias": "minDigits"})

    restrict_min_upper_case_letters: bool = field(
        metadata={"alias": "restrictMinUpperCaseLetters"}
    )

    min_upper_case_letters: int = field(metadata={"alias": "minUpperCaseLetters"})

    restrict_min_lower_case_letters: bool = field(
        metadata={"alias": "restrictMinLowerCaseLetters"}
    )

    min_lower_case_letters: int = field(metadata={"alias": "minLowerCaseLetters"})

    restrict_min_non_alphanumeric_characters: bool = field(
        metadata={"alias": "restrictMinNonAlphanumericCharacters"}
    )

    min_non_alphanumeric_characters: int = field(
        metadata={"alias": "minNonAlphanumericCharacters"}
    )

    min_length: int = field(metadata={"alias": "minLength"})

    send_permanent_lockout_notification: bool = field(
        metadata={"alias": "sendPermanentLockoutNotification"}
    )

    permanent_lockout_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "permanentLockoutNotifyEmailAddress"}
    )

    endpoint_authentication_lockout_type: str = field(
        metadata={"alias": "endpointAuthenticationLockoutType"}
    )

    endpoint_temporary_lockout_threshold: int = field(
        metadata={"alias": "endpointTemporaryLockoutThreshold"}
    )

    endpoint_wait_algorithm: str = field(metadata={"alias": "endpointWaitAlgorithm"})

    endpoint_lockout_fixed_minutes: str = field(
        metadata={"alias": "endpointLockoutFixedMinutes"}
    )

    endpoint_permanent_lockout_threshold: int = field(
        metadata={"alias": "endpointPermanentLockoutThreshold"}
    )

    trunk_group_temporary_lockout_threshold: int = field(
        metadata={"alias": "trunkGroupTemporaryLockoutThreshold"}
    )

    trunk_group_authentication_lockout_type: str = field(
        metadata={"alias": "trunkGroupAuthenticationLockoutType"}
    )

    trunk_group_wait_algorithm: str = field(
        metadata={"alias": "trunkGroupWaitAlgorithm"}
    )

    trunk_group_lockout_fixed_minutes: str = field(
        metadata={"alias": "trunkGroupLockoutFixedMinutes"}
    )

    trunk_group_permanent_lockout_threshold: int = field(
        metadata={"alias": "trunkGroupPermanentLockoutThreshold"}
    )

    use_password_validation_service: bool = field(
        metadata={"alias": "usePasswordValidationService"}
    )


@dataclass(kw_only=True)
class ServiceProviderScheduleGetEventDetailListResponse(OCIDataResponse):
    """Response to ServiceProviderScheduleGetEventDetailListRequest.
        The response contains a list of ScheduleEvents.
        If the scheduleKey doesn't refer to an existing schedule on the AS, then the response will be empty.

    Attributes:

        schedule_events_list (Optional[List[ScheduleEvents]]):

    """

    schedule_events_list: Optional[List[ScheduleEvents]] = field(
        default=None, metadata={"alias": "scheduleEventsList"}
    )


@dataclass(kw_only=True)
class ServiceProviderScheduleGetEventListResponse(OCIDataResponse):
    """Response to ServiceProviderScheduleGetEventListRequest.
        The response contains a list of events.

    Attributes:

        event_name (Optional[List[str]]):

    """

    event_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "eventName"}
    )


@dataclass(kw_only=True)
class ServiceProviderScheduleGetEventResponse(OCIDataResponse):
    """Response to ServiceProviderScheduleGetEventRequest.
        The response contains the event of the service provider schedule.

    Attributes:

        start_date (int):

        all_day_event (Optional[bool]):

        start_time (Optional[HourMinute]):

        end_time (Optional[HourMinute]):

        end_date (int):

        recurrence (Optional[Recurrence]):

    """

    start_date: int = field(metadata={"alias": "startDate"})

    all_day_event: Optional[bool] = field(
        default=None, metadata={"alias": "allDayEvent"}
    )

    start_time: Optional[HourMinute] = field(
        default=None, metadata={"alias": "startTime"}
    )

    end_time: Optional[HourMinute] = field(default=None, metadata={"alias": "endTime"})

    end_date: int = field(metadata={"alias": "endDate"})

    recurrence: Optional[Recurrence] = field(
        default=None, metadata={"alias": "recurrence"}
    )


@dataclass(kw_only=True)
class ServiceProviderScheduleGetListResponse(OCIDataResponse):
    """Response to ServiceProviderScheduleGetListRequest.
        The response contains a list of service provider schedules.

    Attributes:

        schedule_key (Optional[List[ScheduleKey]]):

    """

    schedule_key: Optional[List[ScheduleKey]] = field(
        default=None, metadata={"alias": "scheduleKey"}
    )


@dataclass(kw_only=True)
class ServiceProviderServiceGetAuthorizationListResponse(OCIDataResponse):
    """Response to ServiceProviderServiceGetAuthorizationListRequest.
        Contains two tables, one for the group services and one for the user services.
        The Group Service table has column headings:
        \"Service Name\", \"Authorized\", \"Assigned\", \"Limited\", \"Quantity\", \"Allocated\", \"Licensed\", \"Service Pack Allocation\"
        The User Service table has column headings:
        \"Service Name\", \"Authorized\", \"Assigned\", \"Limited\", \"Quantity\", \"Allocated\", \"Licensed\", \"Service Pack Allocation\", \"User Assignable\", \"Service Pack Assignable\".

    Attributes:

        group_services_authorization_table (OCITable):

        user_services_authorization_table (OCITable):

    """

    group_services_authorization_table: OCITable = field(
        metadata={"alias": "groupServicesAuthorizationTable"}
    )

    user_services_authorization_table: OCITable = field(
        metadata={"alias": "userServicesAuthorizationTable"}
    )


@dataclass(kw_only=True)
class ServiceProviderServiceGetAuthorizationResponse(OCIDataResponse):
    """Response to ServiceProviderServiceGetAuthorizationRequest.
        If the feature was never licensed, then \"authorized\" is false and the remaining elements are not returned.
        If the service pack is available for use, \"authorized\" is true.
        \"authorizedQuantity\" can be unlimited or a quantity. In the case of a service pack, \"authorizedQuantity\" is the service pack's quantity.
        \"authorizable\" is applicable for user services and group services; it is not returned for service packs.

    Attributes:

        authorized (bool):

        authorized_quantity (Optional[UnboundedNonNegativeInt]):

        used_quantity (Optional[UnboundedNonNegativeInt]):

        authorizable (Optional[bool]):

    """

    authorized: bool = field(metadata={"alias": "authorized"})

    authorized_quantity: Optional[UnboundedNonNegativeInt] = field(
        default=None, metadata={"alias": "authorizedQuantity"}
    )

    used_quantity: Optional[UnboundedNonNegativeInt] = field(
        default=None, metadata={"alias": "usedQuantity"}
    )

    authorizable: Optional[bool] = field(
        default=None, metadata={"alias": "authorizable"}
    )


@dataclass(kw_only=True)
class ServiceProviderServiceGetUserAssignableListResponse(OCIDataResponse):
    """Response to ServiceProviderServiceGetUserAssignableListRequest.

    Attributes:

        service_name (Optional[List[str]]):

    """

    service_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "serviceName"}
    )


@dataclass(kw_only=True)
class ServiceProviderServicePackGetDetailListResponse(OCIDataResponse):
    """Response to ServiceProviderServicePackGetDetailListRequest. It contains the service pack details
        and the list of services in a table format. The column headings are \"Service\", \"Authorized\"
        \"Allocated\" and \"Available\".

    Attributes:

        service_pack_name (str):

        service_pack_description (Optional[str]):

        is_available_for_use (bool):

        service_pack_quantity (UnboundedPositiveInt):

        assigned_quantity (UnboundedNonNegativeInt):

        allowed_quantity (UnboundedPositiveInt):

        user_service_table (OCITable):

    """

    service_pack_name: str = field(metadata={"alias": "servicePackName"})

    service_pack_description: Optional[str] = field(
        default=None, metadata={"alias": "servicePackDescription"}
    )

    is_available_for_use: bool = field(metadata={"alias": "isAvailableForUse"})

    service_pack_quantity: UnboundedPositiveInt = field(
        metadata={"alias": "servicePackQuantity"}
    )

    assigned_quantity: UnboundedNonNegativeInt = field(
        metadata={"alias": "assignedQuantity"}
    )

    allowed_quantity: UnboundedPositiveInt = field(
        metadata={"alias": "allowedQuantity"}
    )

    user_service_table: OCITable = field(metadata={"alias": "userServiceTable"})


@dataclass(kw_only=True)
class ServiceProviderServicePackGetListResponse(OCIDataResponse):
    """Response to ServiceProviderServicePackGetListRequest.

    Attributes:

        service_pack_name (Optional[List[str]]):

    """

    service_pack_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "servicePackName"}
    )


@dataclass(kw_only=True)
class ServiceProviderServicePackGetServiceUsageListResponse(OCIDataResponse):
    """Response to ServiceProviderServicePackGetServiceUsageListRequest.
        The column headings are \"Service Pack Name\", \"Total Packs\" and \"Allocated to Groups\"

    Attributes:

        service_usage_table (OCITable):

    """

    service_usage_table: OCITable = field(metadata={"alias": "serviceUsageTable"})


@dataclass(kw_only=True)
class ServiceProviderServicePackGetUtilizationListResponse(OCIDataResponse):
    """Response to ServiceProviderServicePackGetUtilizationListRequest.
        For each service pack, a table of groups utilizing the pack is returned.
        The utilization table column headings are \"Group\", \"Total Packs\" and \"Assigned\".

    Attributes:

        service_pack_name (Optional[List[str]]):

        service_utilization_table (Optional[List[OCITable]]):

    """

    service_pack_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "servicePackName"}
    )

    service_utilization_table: Optional[List[OCITable]] = field(
        default=None, metadata={"alias": "serviceUtilizationTable"}
    )


@dataclass(kw_only=True)
class ServiceProviderServicePackMigrationTaskGetAvailableGroupListResponse(
    OCIDataResponse
):
    """Response to ServiceProviderServicePackMigrationTaskGetAvailableGroupListRequest.
        The groupTable column headings are: \"Group Id\", \"Group Name\", \"User Count\".

    Attributes:

        group_table (OCITable):

    """

    group_table: OCITable = field(metadata={"alias": "groupTable"})


@dataclass(kw_only=True)
class ServiceProviderServicePackMigrationTaskGetListResponse21(OCIDataResponse):
    """Response to ServiceProviderServicePackMigrationTaskGetListRequest21.
        Contains a table with  a row for each service pack migration task and column headings :
        \"Start Timestamp Milliseconds\", \"Name\", \"Status\", \"Error Count\", \"Users Processed\", \"Users Total\".
        The start timestamp column is the number of milliseconds since the standard base time known as \"the epoch\",
        namely January 1, 1970, 00:00:00 GMT. The status column is the task status which can be Awaiting edit, Pending,
        Processing, Terminating, Terminated, Stopped by system, Completed, or Expired.

    Attributes:

        task_table (OCITable):

    """

    task_table: OCITable = field(metadata={"alias": "taskTable"})


@dataclass(kw_only=True)
class ServiceProviderServicePackMigrationTaskGetResponse21(OCIDataResponse):
    """Response to ServiceProviderServicePackMigrationTaskGetRequest21.
        The groupTable column headings are: \"Group Id\", \"Group Name\", and \"User Count\".

    Attributes:

        task_name (str):

        start_timestamp (Optional[str]):

        actual_start_timestamp (Optional[str]):

        expire_after_num_hours (int):

        max_duration_hours (int):

        send_report_email (bool):

        report_delivery_email_address (Optional[str]):

        abort_on_error (bool):

        abort_error_threshold (Optional[int]):

        report_all_users (bool):

        automatically_increment_service_quantity (bool):

        error_count (int):

        status (str):

        groups_processed (int):

        groups_total (int):

        users_processed (int):

        users_total (int):

        user_selection_type (str):

        report_file_path_name (str):

        migrate_all_groups (Optional[bool]):

        group_table (Optional[OCITable]):

        user_selection_service_pack_name (Optional[List[str]]):

        user_selection_service_name (Optional[List[str]]):

        remove_service_pack_name (Optional[List[str]]):

        remove_service_name (Optional[List[str]]):

        assign_service_pack_name (Optional[List[str]]):

        assign_service_name (Optional[List[str]]):

    """

    task_name: str = field(metadata={"alias": "taskName"})

    start_timestamp: Optional[str] = field(
        default=None, metadata={"alias": "startTimestamp"}
    )

    actual_start_timestamp: Optional[str] = field(
        default=None, metadata={"alias": "actualStartTimestamp"}
    )

    expire_after_num_hours: int = field(metadata={"alias": "expireAfterNumHours"})

    max_duration_hours: int = field(metadata={"alias": "maxDurationHours"})

    send_report_email: bool = field(metadata={"alias": "sendReportEmail"})

    report_delivery_email_address: Optional[str] = field(
        default=None, metadata={"alias": "reportDeliveryEmailAddress"}
    )

    abort_on_error: bool = field(metadata={"alias": "abortOnError"})

    abort_error_threshold: Optional[int] = field(
        default=None, metadata={"alias": "abortErrorThreshold"}
    )

    report_all_users: bool = field(metadata={"alias": "reportAllUsers"})

    automatically_increment_service_quantity: bool = field(
        metadata={"alias": "automaticallyIncrementServiceQuantity"}
    )

    error_count: int = field(metadata={"alias": "errorCount"})

    status: str = field(metadata={"alias": "status"})

    groups_processed: int = field(metadata={"alias": "groupsProcessed"})

    groups_total: int = field(metadata={"alias": "groupsTotal"})

    users_processed: int = field(metadata={"alias": "usersProcessed"})

    users_total: int = field(metadata={"alias": "usersTotal"})

    user_selection_type: str = field(metadata={"alias": "userSelectionType"})

    report_file_path_name: str = field(metadata={"alias": "reportFilePathName"})

    migrate_all_groups: Optional[bool] = field(
        default=None, metadata={"alias": "migrateAllGroups"}
    )

    group_table: Optional[OCITable] = field(
        default=None, metadata={"alias": "groupTable"}
    )

    user_selection_service_pack_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "userSelectionServicePackName"}
    )

    user_selection_service_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "userSelectionServiceName"}
    )

    remove_service_pack_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "removeServicePackName"}
    )

    remove_service_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "removeServiceName"}
    )

    assign_service_pack_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "assignServicePackName"}
    )

    assign_service_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "assignServiceName"}
    )


@dataclass(kw_only=True)
class ServiceProviderServicePhoneNumberLookupResponse(OCIDataResponse):
    """Response to the ServiceProviderServicePhoneNumberLookupRequest.
        The column headings for the userTable are: \"Group Id\", \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\",
        \"Hiragana First Name\", \"Phone Number\", \"Extension\" and \"Department\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class ServiceProviderSessionAdmissionControlGetResponse(OCIDataResponse):
    """Response to the ServiceProviderSessionAdmissionControlGetRequest.
        The response contains the session admission control capacity allocated for the service provider.

    Attributes:

        restrict_aggregate_sessions (bool):

        max_sessions (Optional[int]):

        max_user_originating_sessions (Optional[int]):

        max_user_terminating_sessions (Optional[int]):

        count_intra_service_provider_sessions (bool):

    """

    restrict_aggregate_sessions: bool = field(
        metadata={"alias": "restrictAggregateSessions"}
    )

    max_sessions: Optional[int] = field(default=None, metadata={"alias": "maxSessions"})

    max_user_originating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "maxUserOriginatingSessions"}
    )

    max_user_terminating_sessions: Optional[int] = field(
        default=None, metadata={"alias": "maxUserTerminatingSessions"}
    )

    count_intra_service_provider_sessions: bool = field(
        metadata={"alias": "countIntraServiceProviderSessions"}
    )


@dataclass(kw_only=True)
class ServiceProviderSessionAdmissionControlWhiteListGetResponse(OCIDataResponse):
    """Response to the ServiceProviderSessionAdmissionControlWhiteListGetRequest.
        The response contains the White List information.

    Attributes:

        match_digit_pattern (Optional[List[str]]):

        enable_white_list (bool):

    """

    match_digit_pattern: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchDigitPattern"}
    )

    enable_white_list: bool = field(metadata={"alias": "enableWhiteList"})


@dataclass(kw_only=True)
class ServiceProviderStirShakenGetResponse23V2(OCIDataResponse):
    """Response to the ServiceProviderStirShakenGetRequest23V2.

    Attributes:

        use_parent_level_settings (bool):

        signing_policy (str):

        tagging_policy (str):

        signing_service_url (Optional[str]):

        tag_from_or_pai (str):

        verstat_tag (str):

        use_os_value_for_orig_id (bool):

        orig_uuid (Optional[str]):

        attestation_level (str):

        enable_verification (bool):

        verification_service_url (Optional[str]):

        verification_error_handling (str):

        proxy_verstat_to_cnam_subscribe (bool):

        use_unknown_headers_from_cnam_notify (bool):

        enable_signing_for_unscreened_trunk_group_originations (bool):

        enable_tagging_for_unscreened_trunk_group_originations (bool):

        unscreened_trunk_group_origination_attestation_level (str):

        include_tagged_headers_to_access_side (bool):

        proxy_identity_header_to_access_side (bool):

        check_directory_numbers_for_attestation (bool):

        match_unassigned_numbers_only (bool):

        enable_tagging_for_redirected_calls (bool):

        prefer_ingress_tagging (bool):

    """

    use_parent_level_settings: bool = field(
        metadata={"alias": "useParentLevelSettings"}
    )

    signing_policy: str = field(metadata={"alias": "signingPolicy"})

    tagging_policy: str = field(metadata={"alias": "taggingPolicy"})

    signing_service_url: Optional[str] = field(
        default=None, metadata={"alias": "signingServiceURL"}
    )

    tag_from_or_pai: str = field(metadata={"alias": "tagFromOrPAI"})

    verstat_tag: str = field(metadata={"alias": "verstatTag"})

    use_os_value_for_orig_id: bool = field(metadata={"alias": "useOSValueForOrigId"})

    orig_uuid: Optional[str] = field(default=None, metadata={"alias": "origUUID"})

    attestation_level: str = field(metadata={"alias": "attestationLevel"})

    enable_verification: bool = field(metadata={"alias": "enableVerification"})

    verification_service_url: Optional[str] = field(
        default=None, metadata={"alias": "verificationServiceURL"}
    )

    verification_error_handling: str = field(
        metadata={"alias": "verificationErrorHandling"}
    )

    proxy_verstat_to_cnam_subscribe: bool = field(
        metadata={"alias": "proxyVerstatToCNAMSubscribe"}
    )

    use_unknown_headers_from_cnam_notify: bool = field(
        metadata={"alias": "useUnknownHeadersFromCNAMNotify"}
    )

    enable_signing_for_unscreened_trunk_group_originations: bool = field(
        metadata={"alias": "enableSigningForUnscreenedTrunkGroupOriginations"}
    )

    enable_tagging_for_unscreened_trunk_group_originations: bool = field(
        metadata={"alias": "enableTaggingForUnscreenedTrunkGroupOriginations"}
    )

    unscreened_trunk_group_origination_attestation_level: str = field(
        metadata={"alias": "unscreenedTrunkGroupOriginationAttestationLevel"}
    )

    include_tagged_headers_to_access_side: bool = field(
        metadata={"alias": "includeTaggedHeadersToAccessSide"}
    )

    proxy_identity_header_to_access_side: bool = field(
        metadata={"alias": "proxyIdentityHeaderToAccessSide"}
    )

    check_directory_numbers_for_attestation: bool = field(
        metadata={"alias": "checkDirectoryNumbersForAttestation"}
    )

    match_unassigned_numbers_only: bool = field(
        metadata={"alias": "matchUnassignedNumbersOnly"}
    )

    enable_tagging_for_redirected_calls: bool = field(
        metadata={"alias": "enableTaggingForRedirectedCalls"}
    )

    prefer_ingress_tagging: bool = field(metadata={"alias": "preferIngressTagging"})


@dataclass(kw_only=True)
class ServiceProviderTemplateOnlyDeviceFileGetListResponse(OCIDataResponse):
    """Response to ServiceProviderTemplateOnlyDeviceFileGetListRequest.
        Contains a list of template files used to support a Visual Device Management device.

    Attributes:

        template_file_url (Optional[List[str]]):

    """

    template_file_url: Optional[List[str]] = field(
        default=None, metadata={"alias": "templateFileUrl"}
    )


@dataclass(kw_only=True)
class ServiceProviderThirdPartyEmergencyCallingGetResponse22(OCIDataResponse):
    """Response to the ServiceProviderThirdPartyEmergencyCallingGetRequest22.
        The response contains the third-party emergency call service settings for the service provider.

    Attributes:

        allow_activation (bool):

        customer_id (Optional[str]):

        has_group_enabled (bool):

        secret_key (Optional[str]):

    """

    allow_activation: bool = field(metadata={"alias": "allowActivation"})

    customer_id: Optional[str] = field(default=None, metadata={"alias": "customerId"})

    has_group_enabled: bool = field(metadata={"alias": "hasGroupEnabled"})

    secret_key: Optional[str] = field(default=None, metadata={"alias": "secretKey"})


@dataclass(kw_only=True)
class ServiceProviderTrunkGroupGetResponse23(OCIDataResponse):
    """Response to the ServiceProviderTrunkGroupGetRequest23.
        The response contains the maximum and bursting maximum permissible active trunk group calls for the service provider.

    Attributes:

        max_active_calls (UnboundedNonNegativeInt):

        bursting_max_active_calls (UnboundedNonNegativeInt):

        number_of_bursting_btl_us (UnboundedNonNegativeInt):

    """

    max_active_calls: UnboundedNonNegativeInt = field(
        metadata={"alias": "maxActiveCalls"}
    )

    bursting_max_active_calls: UnboundedNonNegativeInt = field(
        metadata={"alias": "burstingMaxActiveCalls"}
    )

    number_of_bursting_btl_us: UnboundedNonNegativeInt = field(
        metadata={"alias": "numberOfBurstingBTLUs"}
    )


@dataclass(kw_only=True)
class ServiceProviderVisualDeviceManagementGetDeviceInfoResponse(OCIDataResponse):
    """Response to ServiceProviderVisualDeviceManagementGetDeviceInfoRequest.

    Attributes:

        device_type (str):

        support_visual_device_management (bool):

        mac_address (Optional[str]):

        primary_user (Optional[PrimaryUserInfo]):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    support_visual_device_management: bool = field(
        metadata={"alias": "supportVisualDeviceManagement"}
    )

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})

    primary_user: Optional[PrimaryUserInfo] = field(
        default=None, metadata={"alias": "primaryUser"}
    )


@dataclass(kw_only=True)
class ServiceProviderVoiceMessagingGroupGetResponse(OCIDataResponse):
    """Response to ServiceProviderVoiceMessagingGroupGetRequest.
        Contains the service provider's or enterprise's voice messaging settings.

    Attributes:

        delivery_from_address (Optional[str]):

        notification_from_address (Optional[str]):

        voice_portal_lockout_from_address (Optional[str]):

        use_system_default_delivery_from_address (bool):

        use_system_default_notification_from_address (bool):

        use_system_default_voice_portal_lockout_from_address (bool):

    """

    delivery_from_address: Optional[str] = field(
        default=None, metadata={"alias": "deliveryFromAddress"}
    )

    notification_from_address: Optional[str] = field(
        default=None, metadata={"alias": "notificationFromAddress"}
    )

    voice_portal_lockout_from_address: Optional[str] = field(
        default=None, metadata={"alias": "voicePortalLockoutFromAddress"}
    )

    use_system_default_delivery_from_address: bool = field(
        metadata={"alias": "useSystemDefaultDeliveryFromAddress"}
    )

    use_system_default_notification_from_address: bool = field(
        metadata={"alias": "useSystemDefaultNotificationFromAddress"}
    )

    use_system_default_voice_portal_lockout_from_address: bool = field(
        metadata={"alias": "useSystemDefaultVoicePortalLockoutFromAddress"}
    )


@dataclass(kw_only=True)
class ServiceProviderVoiceMessagingGroupGetVoicePortalBrandingResponse16(
    OCIDataResponse
):
    """Response to the ServiceProviderVoiceMessagingGroupGetVoicePortalBrandingRequest16.

    Attributes:

        voice_portal_greeting_selection (str):

        voice_portal_greeting_file_description (Optional[str]):

        voice_portal_greeting_media_file_type (Optional[str]):

        voice_messaging_greeting_selection (str):

        voice_messaging_greeting_file_description (Optional[str]):

        voice_messaging_greeting_media_file_type (Optional[str]):

    """

    voice_portal_greeting_selection: str = field(
        metadata={"alias": "voicePortalGreetingSelection"}
    )

    voice_portal_greeting_file_description: Optional[str] = field(
        default=None, metadata={"alias": "voicePortalGreetingFileDescription"}
    )

    voice_portal_greeting_media_file_type: Optional[str] = field(
        default=None, metadata={"alias": "voicePortalGreetingMediaFileType"}
    )

    voice_messaging_greeting_selection: str = field(
        metadata={"alias": "voiceMessagingGreetingSelection"}
    )

    voice_messaging_greeting_file_description: Optional[str] = field(
        default=None, metadata={"alias": "voiceMessagingGreetingFileDescription"}
    )

    voice_messaging_greeting_media_file_type: Optional[str] = field(
        default=None, metadata={"alias": "voiceMessagingGreetingMediaFileType"}
    )


@dataclass(kw_only=True)
class ServiceProviderVoiceMessagingGroupGetVoicePortalResponse(OCIDataResponse):
    """Response to ServiceProviderVoiceMessagingGroupGetVoicePortalRequest.

    Attributes:

        voice_portal_scope (str):

    """

    voice_portal_scope: str = field(metadata={"alias": "voicePortalScope"})


@dataclass(kw_only=True)
class ServiceProviderXsiPolicyProfileGetAssignedGroupListResponse(OCIDataResponse):
    """Response to ServiceProviderXsiPolicyProfileGetAssignedGroupListRequest.
        Contains a table of group that have the group Xsi Policy Profile
        assigned. The column headings are: \"Group Id\", \"Group Name\".

    Attributes:

        group_table (OCITable):

    """

    group_table: OCITable = field(metadata={"alias": "groupTable"})


@dataclass(kw_only=True)
class ServiceProviderXsiPolicyProfileGetAssignedListResponse(OCIDataResponse):
    """Response to ServiceProviderXsiPolicyProfileGetAssignedListRequest.
        Contains a table of all Xsi Policy Profile assigned to.
        The column headings are: \"Name\", \"Level\", \"Description\" and \"Default\".

    Attributes:

        assigned_table (OCITable):

    """

    assigned_table: OCITable = field(metadata={"alias": "assignedTable"})


@dataclass(kw_only=True)
class ServiceProviderZoneCallingRestrictionsGetResponse(OCIDataResponse):
    """Response to ServiceProviderZoneCallingRestrictionsGetRequest

    Attributes:

        enable_zone_calling_restrictions (bool):

        enable_origination_roaming_restrictions (bool):

        enable_emergency_origination_roaming_restrictions (bool):

        enable_termination_roaming_restrictions (bool):

    """

    enable_zone_calling_restrictions: bool = field(
        metadata={"alias": "enableZoneCallingRestrictions"}
    )

    enable_origination_roaming_restrictions: bool = field(
        metadata={"alias": "enableOriginationRoamingRestrictions"}
    )

    enable_emergency_origination_roaming_restrictions: bool = field(
        metadata={"alias": "enableEmergencyOriginationRoamingRestrictions"}
    )

    enable_termination_roaming_restrictions: bool = field(
        metadata={"alias": "enableTerminationRoamingRestrictions"}
    )


@dataclass(kw_only=True)
class SystemASRParametersGetResponse23(OCIDataResponse):
    """Response to SystemASRParametersGetRequest23.
        Contains a list of system Application Server Registration parameters.

        The following elements are only used in AS data mode:
          enableCustomMessageControl, value \"false\" is returned in XS data mode
          customNumberOfUsersPerMessage, value \"10\" is returned in XS data mode
          customMessageIntervalMilliseconds, value \"100000\" is returned in XS data mode

    Attributes:

        max_transmissions (int):

        retransmission_delay_milli_seconds (int):

        listening_port (int):

        enable_custom_message_control (bool):

        custom_number_of_users_per_message (int):

        custom_message_interval_milliseconds (int):

    """

    max_transmissions: int = field(metadata={"alias": "maxTransmissions"})

    retransmission_delay_milli_seconds: int = field(
        metadata={"alias": "retransmissionDelayMilliSeconds"}
    )

    listening_port: int = field(metadata={"alias": "listeningPort"})

    enable_custom_message_control: bool = field(
        metadata={"alias": "enableCustomMessageControl"}
    )

    custom_number_of_users_per_message: int = field(
        metadata={"alias": "customNumberOfUsersPerMessage"}
    )

    custom_message_interval_milliseconds: int = field(
        metadata={"alias": "customMessageIntervalMilliseconds"}
    )


@dataclass(kw_only=True)
class SystemAccessDeviceCustomTagGetListResponse(OCIDataResponse):
    """Response to SystemAccessDeviceCustomTagGetListRequest.
        Contains a table of custom configuration tags managed by the Device Management System on a per-device profile basis.

        In AS data mode, the column headings are: \"Tag Name\", \"Tag Value\", \"Actual Tag Value\".
        In XS data mode, the column headings are: \"Tag Name\", \"Tag Value\", \"Is Encrypted\", \"Actual Tag Value\".

    Attributes:

        device_custom_tags_table (OCITable):

    """

    device_custom_tags_table: OCITable = field(
        metadata={"alias": "deviceCustomTagsTable"}
    )


@dataclass(kw_only=True)
class SystemAccessDeviceDeviceActivationGetResponse(OCIDataResponse):
    """Response to SystemAccessDeviceDeviceActivationGetRequest.
        The response contains the activation code (if available), the expiry time (if available) and the activation state.
        The expiryTime is represented as a timestamp, i.e. the number of milliseconds
        since January 1, 1970, 00:00:00 GMT.

    Attributes:

        activation_code (Optional[str]):

        expiry_time (Optional[int]):

        activation_state (str):

    """

    activation_code: Optional[str] = field(
        default=None, metadata={"alias": "activationCode"}
    )

    expiry_time: Optional[int] = field(default=None, metadata={"alias": "expiryTime"})

    activation_state: str = field(metadata={"alias": "activationState"})


@dataclass(kw_only=True)
class SystemAccessDeviceFileGetListResponse14sp8(OCIDataResponse):
    """Response to SystemAccessDeviceFileGetListRequest14sp8.
        Contains a table of device files managed by the Device Management System on a per-device profile basis.
        The column headings are: \"File Format\", \"Is Authenticated\", \"Access URL\", \"Repository URL\", \"Template URL\", \"Extended Capture URL\", \"Is File Linked\".

        The following column is only populated in AS data mode for leaf devices.
          \"Is File Linked\"

    Attributes:

        device_files_table (OCITable):

    """

    device_files_table: OCITable = field(metadata={"alias": "deviceFilesTable"})


@dataclass(kw_only=True)
class SystemAccessDeviceFileGetResponse20(OCIDataResponse):
    """Response to SystemAccessDeviceFileGetRequest20.

    Attributes:

        file_source (str):

        configuration_file_name (Optional[str]):

        access_url (str):

        repository_url (Optional[str]):

        template_url (Optional[str]):

        extended_capture_enabled (Optional[bool]):

        extended_capture_url (Optional[str]):

    """

    file_source: str = field(metadata={"alias": "fileSource"})

    configuration_file_name: Optional[str] = field(
        default=None, metadata={"alias": "configurationFileName"}
    )

    access_url: str = field(metadata={"alias": "accessUrl"})

    repository_url: Optional[str] = field(
        default=None, metadata={"alias": "repositoryUrl"}
    )

    template_url: Optional[str] = field(default=None, metadata={"alias": "templateUrl"})

    extended_capture_enabled: Optional[bool] = field(
        default=None, metadata={"alias": "extendedCaptureEnabled"}
    )

    extended_capture_url: Optional[str] = field(
        default=None, metadata={"alias": "extendedCaptureURL"}
    )


@dataclass(kw_only=True)
class SystemAccessDeviceGetAllResponse(OCIDataResponse):
    """Response to SystemAccessDeviceGetAllRequest.
        Contains a table of devices configured in the entire system.
        The column headings are: \"Service Provider Id\", \"Is Enterprise\", \"Group Id\",
        \"Device Name\", \"Device Type\", \"Net Address\", \"MAC Address\", \"Status\", \"Reseller Id\",
        \"Access Device External Id\".

        The following columns are only returned in AS data mode:
          \"Reseller Id\"
          \"Access Device External Id\"

    Attributes:

        access_device_table (OCITable):

    """

    access_device_table: OCITable = field(metadata={"alias": "accessDeviceTable"})


@dataclass(kw_only=True)
class SystemAccessDeviceGetAvailableCustomTagListResponse(OCIDataResponse):
    """Response to SystemAccessDeviceGetAvailableCustomTagListRequest.
        Contains a table of all available custom tags managed by the Device Management System on a per-device profile basis.

        In AS data mode, the column headings are: \"Tag Name\", \"Tag Value\", \"Tag Level\", \"Tag Set Name\", \"Region Name\".

        In XS data mode, the column headings are: \"Tag Name\", \"Tag Value\", \"Tag Level\", \"Tag Set Name\", \"Is Encrypted\".

        \"Tag Level\" can take the value: \"System Default\", \"System\", \"Service Provider\", \"Group\" or \"Device Profile\".

    Attributes:

        device_available_custom_tags_table (OCITable):

    """

    device_available_custom_tags_table: OCITable = field(
        metadata={"alias": "deviceAvailableCustomTagsTable"}
    )


@dataclass(kw_only=True)
class SystemAccessDeviceGetLinkedLeafDeviceListResponse22(OCIDataResponse):
    """Response to SystemAccessDeviceGetLinkedLeafDeviceListRequest22.

    Attributes:

        tree_device_link_id (str):

        leaf_device_key (Optional[List[AccessDeviceKey]]):

        support_links (Optional[List[str]]):

    """

    tree_device_link_id: str = field(metadata={"alias": "treeDeviceLinkId"})

    leaf_device_key: Optional[List[AccessDeviceKey]] = field(
        default=None, metadata={"alias": "leafDeviceKey"}
    )

    support_links: Optional[List[str]] = field(
        default=None, metadata={"alias": "supportLinks"}
    )


@dataclass(kw_only=True)
class SystemAccessDeviceGetLinkedTreeDeviceResponse(OCIDataResponse):
    """Response to SystemAccessDeviceGetLinkedTreeDeviceRequest.

    Attributes:

        tree_device_info (Optional[TreeDeviceInfo]):

    """

    tree_device_info: Optional[TreeDeviceInfo] = field(
        default=None, metadata={"alias": "treeDeviceInfo"}
    )


@dataclass(kw_only=True)
class SystemAccessDeviceGetListResponse14(OCIDataResponse):
    """Response to SystemAccessDeviceGetListRequest14.
        Contains a table of devices defined at the System-level.
        The column headings are:
        \"Device Name\", \"Device Type\", \"Available Ports\", \"Net Address\" and \"MAC Address\", \"Status\", \"Version\", and \"Access Device External Id\".

        The following columns are only returned in AS data mode:
          \"Access Device External Id\"

    Attributes:

        access_device_table (OCITable):

    """

    access_device_table: OCITable = field(metadata={"alias": "accessDeviceTable"})


@dataclass(kw_only=True)
class SystemAccessDeviceGetNativeTagsWithLogicListResponse(OCIDataResponse):
    """Response to SystemAccessDeviceGetNativeTagsWithLogicListRequest.
        Contains a table of all native tags with logic managed by the Device Management System on a per-device profile basis.

        The column headings are: \"Tag Name\", \"Tag Value\".

    Attributes:

        device_native_tags_with_logic_table (OCITable):

    """

    device_native_tags_with_logic_table: OCITable = field(
        metadata={"alias": "deviceNativeTagsWithLogicTable"}
    )


@dataclass(kw_only=True)
class SystemAccessDeviceGetPagedSortedListResponse(OCIDataResponse):
    """Response to SystemAccessDeviceGetPagedSortedListRequest.
        Contains a table of devices configured at system level.
        The column headings are: \"Device Name\", \"Device Type\", \"Available Ports\", \"Net Address\", \"MAC Address\", \"Status\", \"Version\", and \"Support Visual Device Management API\".
        When CloudPBX is not licensed, the column \"Support Visual Device Management API\" values are not returned.

    Attributes:

        access_device_table (OCITable):

    """

    access_device_table: OCITable = field(metadata={"alias": "accessDeviceTable"})


@dataclass(kw_only=True)
class SystemAccessDeviceGetResponse24V3(OCIDataResponse):
    """Response to SystemAccessDeviceGetRequest24V3

        The following elements are only used in AS data mode:
           version
           deviceName
           deviceExternalId

        The following elements are only used in AS data mode and not returned in XS data mode:
           isWebexTeamsDevice
           defaultPathHeader
           deviceCode
           deviceIPEI
           deviceIndex
           useDeviceCode
           authBearerSubject

    Attributes:

        device_type (str):

        protocol (str):

        net_address (Optional[str]):

        port (Optional[int]):

        outbound_proxy_server_net_address (Optional[str]):

        stun_server_net_address (Optional[str]):

        mac_address (Optional[str]):

        serial_number (Optional[str]):

        description (Optional[str]):

        number_of_ports (UnboundedPositiveInt):

        number_of_assigned_ports (int):

        status (str):

        physical_location (Optional[str]):

        transport_protocol (Optional[str]):

        use_custom_user_name_password (Optional[bool]):

        user_name (Optional[str]):

        version (Optional[str]):

        is_webex_teams_device (Optional[bool]):

        default_path_header (Optional[str]):

        device_name (str):

        device_external_id (Optional[str]):

        device_code (Optional[str]):

        device_ipei (Optional[str]):

        device_index (Optional[int]):

        use_device_code (Optional[bool]):

        auth_bearer_subject (Optional[str]):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    protocol: str = field(metadata={"alias": "protocol"})

    net_address: Optional[str] = field(default=None, metadata={"alias": "netAddress"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    outbound_proxy_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "outboundProxyServerNetAddress"}
    )

    stun_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "stunServerNetAddress"}
    )

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})

    serial_number: Optional[str] = field(
        default=None, metadata={"alias": "serialNumber"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    number_of_ports: UnboundedPositiveInt = field(metadata={"alias": "numberOfPorts"})

    number_of_assigned_ports: int = field(metadata={"alias": "numberOfAssignedPorts"})

    status: str = field(metadata={"alias": "status"})

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )

    transport_protocol: Optional[str] = field(
        default=None, metadata={"alias": "transportProtocol"}
    )

    use_custom_user_name_password: Optional[bool] = field(
        default=None, metadata={"alias": "useCustomUserNamePassword"}
    )

    user_name: Optional[str] = field(default=None, metadata={"alias": "userName"})

    version: Optional[str] = field(default=None, metadata={"alias": "version"})

    is_webex_teams_device: Optional[bool] = field(
        default=None, metadata={"alias": "isWebexTeamsDevice"}
    )

    default_path_header: Optional[str] = field(
        default=None, metadata={"alias": "defaultPathHeader"}
    )

    device_name: str = field(metadata={"alias": "deviceName"})

    device_external_id: Optional[str] = field(
        default=None, metadata={"alias": "deviceExternalId"}
    )

    device_code: Optional[str] = field(default=None, metadata={"alias": "deviceCode"})

    device_ipei: Optional[str] = field(default=None, metadata={"alias": "deviceIPEI"})

    device_index: Optional[int] = field(default=None, metadata={"alias": "deviceIndex"})

    use_device_code: Optional[bool] = field(
        default=None, metadata={"alias": "useDeviceCode"}
    )

    auth_bearer_subject: Optional[str] = field(
        default=None, metadata={"alias": "authBearerSubject"}
    )


@dataclass(kw_only=True)
class SystemAccessDeviceGetUserListResponse21sp1(OCIDataResponse):
    """Response to SystemAccessDeviceGetUserListRequest21sp1.
        The column headings for the deviceUserTable are: \"Line/Port\", \"Last Name\",
        \"First Name\", \"Phone Number\", \"Service Provider Id\", \"Group Id\", \"User Id\",
        \"User Type\", \"Endpoint Type\", \"Primary Line/Port\", \"Order\", \"Extension\", \"Department\", \"Email Address\", \"Private Identity\".
        If the identity/device profile is an identity, the table will contain a row for each TEL-URI in the Phone Number column.
        If the identity/device profile is a real device, rows for the alternate numbers are not included.
        The User Type column contains one of the enumerated UserType values.
        The Endpoint Type column contains one of the enumerated EndpointType21sp1 values.
        The value Mobility in Endpoint Type column is only applicable in AS data mode.
        The Private Identity column is empty is AS mode.

    Attributes:

        device_user_table (OCITable):

    """

    device_user_table: OCITable = field(metadata={"alias": "deviceUserTable"})


@dataclass(kw_only=True)
class SystemAccessDeviceMonitorGetDeviceTypeListResponse(OCIDataResponse):
    """Response to SystemAccessDeviceMonitorGetDeviceTypeListRequest.

    Attributes:

        device_type (Optional[List[str]]):

    """

    device_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "deviceType"}
    )


@dataclass(kw_only=True)
class SystemAccessDeviceMonitorParametersGetResponse(OCIDataResponse):
    """Response to SystemAccessDeviceMonitorParametersGetListRequest.
        Contains a list of system Access Device Monitor parameters.

    Attributes:

        polling_interval_minutes (int):

    """

    polling_interval_minutes: int = field(metadata={"alias": "pollingIntervalMinutes"})


@dataclass(kw_only=True)
class SystemAccessDeviceTagSetGetResponse(OCIDataResponse):
    """Response to SystemAccessDeviceTagSetGetRequest.
        The response includes a tag set name defined in the access device.

    Attributes:

        tag_set_name (Optional[str]):

    """

    tag_set_name: Optional[str] = field(default=None, metadata={"alias": "tagSetName"})


@dataclass(kw_only=True)
class SystemAccessDeviceTypeGetEnhancedConfigurableListResponse(OCIDataResponse):
    """Response to SystemAccessDeviceTypeGetEnhancedConfigurableListRequest.
        Contains a table with columns: \"Access Device Type\", \"Enhanced Configuration Type\", \"Supports Reset\".
        The \"Enhanced Configuration Type\" column contains one of the AccessDeviceEnhancedConfigurationType14
        enumerated values.
        The \"Supports Reset\" column is a boolean flag indicating the device can be remotely reset.

    Attributes:

        device_type_table (OCITable):

    """

    device_type_table: OCITable = field(metadata={"alias": "deviceTypeTable"})


@dataclass(kw_only=True)
class SystemAccessDeviceTypeGetListResponse(OCIDataResponse):
    """Response to SystemAccessDeviceTypeGetListRequest.

    Attributes:

        device_type (List[str]):

    """

    device_type: List[str] = field(metadata={"alias": "deviceType"})


@dataclass(kw_only=True)
class SystemAccountingGetChargingFunctionElementServerListResponse(OCIDataResponse):
    """Response to SystemAccountingGetChargingFunctionElementServerListRequest. The accounting charging function element Server table column
        headings are: \"Address\", \"Extended Net Address\", \"Type\", \"Description\".

    Attributes:

        charging_function_element_server_table (OCITable):

    """

    charging_function_element_server_table: OCITable = field(
        metadata={"alias": "chargingFunctionElementServerTable"}
    )


@dataclass(kw_only=True)
class SystemAccountingGetRadiusServerListResponse(OCIDataResponse):
    """Response to SystemAccountingGetRadiusServerListRequest. The Radius Server table
        column headings are: \"Net Address\", \"Port\", \"Description\"

    Attributes:

        radius_server_table (OCITable):

    """

    radius_server_table: OCITable = field(metadata={"alias": "radiusServerTable"})


@dataclass(kw_only=True)
class SystemAccountingInhibitedAttributeValuePairCodeGetListResponse(OCIDataResponse):
    """Response to
        SystemAccountingInhibitedAttributeValuePairCodeGetListRequest. Contains a 2 column
        table with column headings \"Attribute Value Pair Code\" and \"Vendor Id\".

    Attributes:

        inhibited_attribute_value_pair_code_table (OCITable):

    """

    inhibited_attribute_value_pair_code_table: OCITable = field(
        metadata={"alias": "inhibitedAttributeValuePairCodeTable"}
    )


@dataclass(kw_only=True)
class SystemAdminGetListResponse(OCIDataResponse):
    """Response to SystemAdminGetListRequest.
        Contains a 6 column table with column headings \"Administrator ID\",
        \"Last Name\", \"First Name\", \"Type\", \"Read Only\", \"Language\".

    Attributes:

        system_admin_table (OCITable):

    """

    system_admin_table: OCITable = field(metadata={"alias": "systemAdminTable"})


@dataclass(kw_only=True)
class SystemAdminGetResponse22(OCIDataResponse):
    """Response to the SystemAdminGetRequest22.
        The response contains the system or provisioning administrators profile information.

        The following elements are only used in AS data mode and ignored in XS data mode.
        accountDisabled
        lastAuthenticatedDate

    Attributes:

        first_name (Optional[str]):

        last_name (Optional[str]):

        language (str):

        admin_type (str):

        read_only (bool):

        account_disabled (bool):

        last_authenticated_date (str):

    """

    first_name: Optional[str] = field(default=None, metadata={"alias": "firstName"})

    last_name: Optional[str] = field(default=None, metadata={"alias": "lastName"})

    language: str = field(metadata={"alias": "language"})

    admin_type: str = field(metadata={"alias": "adminType"})

    read_only: bool = field(metadata={"alias": "readOnly"})

    account_disabled: bool = field(metadata={"alias": "accountDisabled"})

    last_authenticated_date: str = field(metadata={"alias": "lastAuthenticatedDate"})


@dataclass(kw_only=True)
class SystemAdviceOfChargeCostInformationSourceGetListResponse(OCIDataResponse):
    """Response to SystemAdviceOfChargeCostInformationSourceGetListRequest.
        Contains a table with column headings: \"PeerIdentity\", \"Priority\"

    Attributes:

        cost_information_source_table (OCITable):

    """

    cost_information_source_table: OCITable = field(
        metadata={"alias": "costInformationSourceTable"}
    )


@dataclass(kw_only=True)
class SystemAdviceOfChargeGetResponse25(OCIDataResponse):
    """Response to SystemAdviceOfChargeGetRequest25.
        Contains a list of system Advice of Charge parameters.

    Attributes:

        delay_between_notification_seconds (int):

        incoming_aoc_handling (str):

        use_ocs_enquiry (bool):

        ocs_enquiry_type (str):

        proxy_ao_c_body (bool):

    """

    delay_between_notification_seconds: int = field(
        metadata={"alias": "delayBetweenNotificationSeconds"}
    )

    incoming_aoc_handling: str = field(metadata={"alias": "incomingAocHandling"})

    use_ocs_enquiry: bool = field(metadata={"alias": "useOCSEnquiry"})

    ocs_enquiry_type: str = field(metadata={"alias": "OCSEnquiryType"})

    proxy_ao_c_body: bool = field(metadata={"alias": "proxyAoCBody"})


@dataclass(kw_only=True)
class SystemAliasGetListResponse(OCIDataResponse):
    """Response to SystemAliasGetListRequest. Contains the list of all network alias' for
        the Application Server.

    Attributes:

        alias_net_address (Optional[List[str]]):

    """

    alias_net_address: Optional[List[str]] = field(
        default=None, metadata={"alias": "aliasNetAddress"}
    )


@dataclass(kw_only=True)
class SystemAlternateUserIdGetListResponse(OCIDataResponse):
    """Response to SystemAlternateUserIdGetListRequest.
        The \"User Type\" column contains the corresponding enumerated UserType value.
        Contains a table of alternate user ids, the column headings are:
          \"User Id\", \"Alternate User Id\", \"Group Id\", \"Organization Id\", \"Reseller Id\" and \"User Type\".

        The following columns are only returned in AS data mode:
          \"Reseller Id\"

    Attributes:

        alternate_user_id_table (OCITable):

    """

    alternate_user_id_table: OCITable = field(
        metadata={"alias": "alternateUserIdTable"}
    )


@dataclass(kw_only=True)
class SystemAnonymousCallRejectionGetResponse(OCIDataResponse):
    """Response to the SystemAnonymousCallRejectionGetRequest.
        The response contains the anonymous call rejection system.\".

    Attributes:

        pai_required (bool):

        screen_only_local_calls (bool):

    """

    pai_required: bool = field(metadata={"alias": "paiRequired"})

    screen_only_local_calls: bool = field(metadata={"alias": "screenOnlyLocalCalls"})


@dataclass(kw_only=True)
class SystemApplicationControllerGetListResponse(OCIDataResponse):
    """Response to the SystemApplicationControllerGetListRequest.
      Contains a table with column headings: \"Name\", \"Subscriber Id\", \"Channel Set Id\", \"Status\".
      The column values for \"Status\" can either be \"ready\" or \"notReady\".

    Attributes:

        application_controller_table (OCITable):

    """

    application_controller_table: OCITable = field(
        metadata={"alias": "applicationControllerTable"}
    )


@dataclass(kw_only=True)
class SystemAuthenticationLockoutSettingsGetResponse(OCIDataResponse):
    """Response to SystemAuthenticationLockoutSettingsGetRequest.
       Contains the authentication lockout settings in the system.

    Attributes:

        counter_reset_interval_days (int):

        counter_reset_hour (int):

        counter_reset_minute (int):

        emergency_sip_bypass_allowed (bool):

    """

    counter_reset_interval_days: int = field(
        metadata={"alias": "counterResetIntervalDays"}
    )

    counter_reset_hour: int = field(metadata={"alias": "counterResetHour"})

    counter_reset_minute: int = field(metadata={"alias": "counterResetMinute"})

    emergency_sip_bypass_allowed: bool = field(
        metadata={"alias": "emergencySIPBypassAllowed"}
    )


@dataclass(kw_only=True)
class SystemAutoDisableAccountsGetResponse(OCIDataResponse):
    """Response to the SystemAutoDisableAccountsGetRequest.

    Attributes:

        account_inactivity_timeout_days (int):

        enable_auto_disable_accounts (bool):

        enable_auto_disable_accounts_system_admin_level (bool):

        enable_auto_disable_accounts_provisioning_admin_level (bool):

        enable_auto_disable_accounts_reseller_admin_level (bool):

        enable_auto_disable_accounts_svc_provider_admin_level (bool):

        enable_auto_disable_accounts_group_admin_level (bool):

        enable_auto_disable_accounts_department_admin_level (bool):

    """

    account_inactivity_timeout_days: int = field(
        metadata={"alias": "accountInactivityTimeoutDays"}
    )

    enable_auto_disable_accounts: bool = field(
        metadata={"alias": "enableAutoDisableAccounts"}
    )

    enable_auto_disable_accounts_system_admin_level: bool = field(
        metadata={"alias": "enableAutoDisableAccountsSystemAdminLevel"}
    )

    enable_auto_disable_accounts_provisioning_admin_level: bool = field(
        metadata={"alias": "enableAutoDisableAccountsProvisioningAdminLevel"}
    )

    enable_auto_disable_accounts_reseller_admin_level: bool = field(
        metadata={"alias": "enableAutoDisableAccountsResellerAdminLevel"}
    )

    enable_auto_disable_accounts_svc_provider_admin_level: bool = field(
        metadata={"alias": "enableAutoDisableAccountsSvcProviderAdminLevel"}
    )

    enable_auto_disable_accounts_group_admin_level: bool = field(
        metadata={"alias": "enableAutoDisableAccountsGroupAdminLevel"}
    )

    enable_auto_disable_accounts_department_admin_level: bool = field(
        metadata={"alias": "enableAutoDisableAccountsDepartmentAdminLevel"}
    )


@dataclass(kw_only=True)
class SystemAutomaticCallbackGetReleaseCauseListResponse(OCIDataResponse):
    """Response to SystemAutomaticCallbackGetReleaseCauseListRequest.

    Attributes:

        release_cause (Optional[List[str]]):

    """

    release_cause: Optional[List[str]] = field(
        default=None, metadata={"alias": "releaseCause"}
    )


@dataclass(kw_only=True)
class SystemAutomaticCallbackGetResponse17(OCIDataResponse):
    """Response to SystemAutomaticCallbackGetRequest17.

    Attributes:

        monitor_minutes (int):

        max_monitors_per_originator (int):

        max_callback_rings (int):

        max_monitors_per_terminator (int):

        terminator_idle_guard_seconds (int):

        callback_method (str):

        polling_interval_seconds (int):

        activation_digit (int):

    """

    monitor_minutes: int = field(metadata={"alias": "monitorMinutes"})

    max_monitors_per_originator: int = field(
        metadata={"alias": "maxMonitorsPerOriginator"}
    )

    max_callback_rings: int = field(metadata={"alias": "maxCallbackRings"})

    max_monitors_per_terminator: int = field(
        metadata={"alias": "maxMonitorsPerTerminator"}
    )

    terminator_idle_guard_seconds: int = field(
        metadata={"alias": "terminatorIdleGuardSeconds"}
    )

    callback_method: str = field(metadata={"alias": "callbackMethod"})

    polling_interval_seconds: int = field(metadata={"alias": "pollingIntervalSeconds"})

    activation_digit: int = field(metadata={"alias": "activationDigit"})


@dataclass(kw_only=True)
class SystemAutomaticCollectCallGetResponse22(OCIDataResponse):
    """Response to the SystemAutomaticCollectCallGetRequest22.
        Returns system Automatic Collect Call service settings.

    Attributes:

        enable_automatic_collect_call (bool):

        enable_connect_tone (bool):

        include_country_code_in_cic (bool):

    """

    enable_automatic_collect_call: bool = field(
        metadata={"alias": "enableAutomaticCollectCall"}
    )

    enable_connect_tone: bool = field(metadata={"alias": "enableConnectTone"})

    include_country_code_in_cic: bool = field(
        metadata={"alias": "includeCountryCodeInCic"}
    )


@dataclass(kw_only=True)
class SystemAutomaticCollectCallPrefixDigitsGetListResponse(OCIDataResponse):
    """Response to the SystemAutomaticCollectCallPrefixDigitsGetListRequest.
        Contains a table with column headings: \"Country Code\", \"Prefix\".

    Attributes:

        prefix_table (OCITable):

    """

    prefix_table: OCITable = field(metadata={"alias": "prefixTable"})


@dataclass(kw_only=True)
class SystemBroadCloudGetResponse22(OCIDataResponse):
    """Response to the SystemBroadCloudGetRequest22.
        The response contains the system interface attributes for Messaging Server/BroadCloud.

    Attributes:

        provisioning_url (Optional[str]):

        provisioning_user_id (Optional[str]):

        enable_synchronization (bool):

        proxy_host (Optional[str]):

        proxy_port (int):

    """

    provisioning_url: Optional[str] = field(
        default=None, metadata={"alias": "provisioningUrl"}
    )

    provisioning_user_id: Optional[str] = field(
        default=None, metadata={"alias": "provisioningUserId"}
    )

    enable_synchronization: bool = field(metadata={"alias": "enableSynchronization"})

    proxy_host: Optional[str] = field(default=None, metadata={"alias": "proxyHost"})

    proxy_port: int = field(metadata={"alias": "proxyPort"})


@dataclass(kw_only=True)
class SystemBroadWorksAnywhereGetResponse(OCIDataResponse):
    """The response to a SystemBroadWorksAnywhereGetRequest.

    Attributes:

        enable_transfer_notification (bool):

    """

    enable_transfer_notification: bool = field(
        metadata={"alias": "enableTransferNotification"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGeographicalPoolGetListResponse(OCIDataResponse):
    """Response to the SystemBroadWorksMobilityGeographicalPoolGetListRequest.
        Contains a table with column headings: \"Pool\", \"Country Code\", \"Is Default\", \"Description\".

    Attributes:

        geographical_pool_table (OCITable):

    """

    geographical_pool_table: OCITable = field(
        metadata={"alias": "geographicalPoolTable"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGeographicalPoolIMRNGetListResponse(OCIDataResponse):
    """Response to SystemBroadWorksMobilityGeographicalPoolIMRNGetListRequest.

    Attributes:

        country_code (str):

        imrn_number (Optional[List[str]]):

    """

    country_code: str = field(metadata={"alias": "countryCode"})

    imrn_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "imrnNumber"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGeographicalPoolPrefixGetListResponse(OCIDataResponse):
    """Response to the SystemBroadWorksMobilityGetGeographicalPoolPrefixListRequest.

    Attributes:

        country_code (str):

        prefix (Optional[List[str]]):

    """

    country_code: str = field(metadata={"alias": "countryCode"})

    prefix: Optional[List[str]] = field(default=None, metadata={"alias": "prefix"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGetIMRNListResponse(OCIDataResponse):
    """Response to SystemBroadWorksMobilityDnGetListRequest.

    Attributes:

        imrn_number (Optional[List[str]]):

    """

    imrn_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "imrnNumber"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGetMobileNetworkIMRNListResponse(OCIDataResponse):
    """Response to SystemBroadWorksMobilityGetMobileNetworkIMRNListRequest.

    Attributes:

        imrn_number (Optional[List[str]]):

    """

    imrn_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "imrnNumber"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityGetResponse22V3(OCIDataResponse):
    """The response to a SystemBroadWorksMobilityGetRequest22V3.

    Attributes:

        enable_location_services (bool):

        enable_msrn_lookup (bool):

        enable_mobile_state_checking (bool):

        deny_call_originations (bool):

        deny_call_terminations (bool):

        imrn_timeout_millisecnds (int):

        enable_internal_clid_delivery (bool):

        include_redirect_for_mobility_termination (bool):

        enable_internal_clid_delivery_access_locations (bool):

        enable_enhanced_unreachable_state_checking (bool):

        enable_network_call_barring_status_check (bool):

        network_translation_index (Optional[str]):

    """

    enable_location_services: bool = field(metadata={"alias": "enableLocationServices"})

    enable_msrn_lookup: bool = field(metadata={"alias": "enableMSRNLookup"})

    enable_mobile_state_checking: bool = field(
        metadata={"alias": "enableMobileStateChecking"}
    )

    deny_call_originations: bool = field(metadata={"alias": "denyCallOriginations"})

    deny_call_terminations: bool = field(metadata={"alias": "denyCallTerminations"})

    imrn_timeout_millisecnds: int = field(metadata={"alias": "imrnTimeoutMillisecnds"})

    enable_internal_clid_delivery: bool = field(
        metadata={"alias": "enableInternalCLIDDelivery"}
    )

    include_redirect_for_mobility_termination: bool = field(
        metadata={"alias": "includeRedirectForMobilityTermination"}
    )

    enable_internal_clid_delivery_access_locations: bool = field(
        metadata={"alias": "enableInternalCLIDDeliveryAccessLocations"}
    )

    enable_enhanced_unreachable_state_checking: bool = field(
        metadata={"alias": "enableEnhancedUnreachableStateChecking"}
    )

    enable_network_call_barring_status_check: bool = field(
        metadata={"alias": "enableNetworkCallBarringStatusCheck"}
    )

    network_translation_index: Optional[str] = field(
        default=None, metadata={"alias": "networkTranslationIndex"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityMobileNetworkGetListResponse(OCIDataResponse):
    """The response to a SystemBroadWorksMobilityMobileNetworkGetListRequest.
        Contains a table with column headings: \"Name\", \"SCF Signaling Net Address\", \"SCF Signaling Port\"

    Attributes:

        mobile_network_table (OCITable):

    """

    mobile_network_table: OCITable = field(metadata={"alias": "mobileNetworkTable"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityMobileNetworkGetResponse(OCIDataResponse):
    """The response to a SystemBroadWorksMobilityMobileNetworkGetRequest.

    Attributes:

        scf_signaling_net_address (Optional[str]):

        scf_signaling_port (Optional[int]):

        refresh_period_seconds (int):

        max_consecutive_failures (int):

        max_response_wait_time_milliseconds (int):

        enable_announcement_suppression (bool):

        service_access_code_list_name (Optional[str]):

    """

    scf_signaling_net_address: Optional[str] = field(
        default=None, metadata={"alias": "scfSignalingNetAddress"}
    )

    scf_signaling_port: Optional[int] = field(
        default=None, metadata={"alias": "scfSignalingPort"}
    )

    refresh_period_seconds: int = field(metadata={"alias": "refreshPeriodSeconds"})

    max_consecutive_failures: int = field(metadata={"alias": "maxConsecutiveFailures"})

    max_response_wait_time_milliseconds: int = field(
        metadata={"alias": "maxResponseWaitTimeMilliseconds"}
    )

    enable_announcement_suppression: bool = field(
        metadata={"alias": "enableAnnouncementSuppression"}
    )

    service_access_code_list_name: Optional[str] = field(
        default=None, metadata={"alias": "serviceAccessCodeListName"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityMobileSubscriberDirectoryNumberGetSummaryListResponse(
    OCIDataResponse
):
    """Response to SystemBroadWorksMobilityMobileSubscriberDirectoryNumberGetSummaryListRequest.
        The response contains a table with columns: \"Mobile Number\", \"Mobile Network\", \"Service Provider Id\",
        \"Is Enterprise\", \"Group Id\", \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\",
        \"Hiragana First Name\", \"Phone Number\", \"Extension\" and \"Reseller Id\".

        The following columns are only returned in AS data mode:
             \"Reseller Id\"

    Attributes:

        mobile_subscriber_directory_numbers_summary_table (OCITable):

    """

    mobile_subscriber_directory_numbers_summary_table: OCITable = field(
        metadata={"alias": "mobileSubscriberDirectoryNumbersSummaryTable"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityServiceAccessCodeGetListResponse21(OCIDataResponse):
    """Response to SystemBroadWorksMobilityServiceAccessCodeGetListRequest21.
        Contains a table with column headings: \"Country Code\", \"Service Access Code\", \"Description\"

    Attributes:

        service_access_code_table (OCITable):

    """

    service_access_code_table: OCITable = field(
        metadata={"alias": "serviceAccessCodeTable"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksMobilityServiceAccessCodeListGetListResponse(OCIDataResponse):
    """Response to SystemBroadWorksMobilityServiceAccessCodeListGetListRequest.

    Attributes:

        name (Optional[List[str]]):

    """

    name: Optional[List[str]] = field(default=None, metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemBroadWorksMobilityServiceAccessCodeListUsageGetResponse(OCIDataResponse):
    """Response to SystemBroadWorksMobilityServiceAccessCodeListUsageGetRequest.

    Attributes:

        mobile_network_name (Optional[List[str]]):

    """

    mobile_network_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "mobileNetworkName"}
    )


@dataclass(kw_only=True)
class SystemBroadWorksReceptionistEnterpriseGetResponse(OCIDataResponse):
    """Response to SystemBroadWorksReceptionistEnterpriseGetRequest.
        Contains a list of BroadWorks Receptionist - Enterprise parameters.

    Attributes:

        max_monitored_users (int):

    """

    max_monitored_users: int = field(metadata={"alias": "maxMonitoredUsers"})


@dataclass(kw_only=True)
class SystemBusyLampFieldGetResponse23V2(OCIDataResponse):
    """Response to SystemBusyLampFieldGetRequest23V2.

        The following elements are only used in AS data mode:
         forceUseOfTCP
         enableRedundancy, value \"false\" is returned in XS data mode
         redundancyTaskDelayMilliseconds, value \"10000\" is returned in XS data mode
         redundancyTaskIntervalMilliseconds, value of \"1000\" is returned in XS data mode
         maxNumberOfSubscriptionsPerRedundancyTaskInterval, value of \"50\" is returned in XS data mode
         ignoreUnansweredTerminatingCalls, value \"false\" is returned in XS data mode

    Attributes:

        display_local_user_identity_last_name_first (bool):

        force_use_of_tcp (bool):

        enable_redundancy (bool):

        redundancy_task_delay_milliseconds (int):

        redundancy_task_interval_milliseconds (int):

        max_number_of_subscriptions_per_redundancy_task_interval (int):

        ignore_unanswered_terminating_calls (bool):

    """

    display_local_user_identity_last_name_first: bool = field(
        metadata={"alias": "displayLocalUserIdentityLastNameFirst"}
    )

    force_use_of_tcp: bool = field(metadata={"alias": "forceUseOfTCP"})

    enable_redundancy: bool = field(metadata={"alias": "enableRedundancy"})

    redundancy_task_delay_milliseconds: int = field(
        metadata={"alias": "redundancyTaskDelayMilliseconds"}
    )

    redundancy_task_interval_milliseconds: int = field(
        metadata={"alias": "redundancyTaskIntervalMilliseconds"}
    )

    max_number_of_subscriptions_per_redundancy_task_interval: int = field(
        metadata={"alias": "maxNumberOfSubscriptionsPerRedundancyTaskInterval"}
    )

    ignore_unanswered_terminating_calls: bool = field(
        metadata={"alias": "ignoreUnansweredTerminatingCalls"}
    )


@dataclass(kw_only=True)
class SystemBwDiameterBaseDataGetResponse22(OCIDataResponse):
    """Response to SystemBwDiameterBaseDataGetRequest22.
        Contains a list of System Diameter base parameters.

    Attributes:

        xs_realm (Optional[str]):

        xs_listening_port (int):

        xs_listening_port_enabled (bool):

        xs_listening_secure_port (int):

        xs_listening_secure_port_enabled (bool):

        ps_realm (Optional[str]):

        ps_listening_port (int):

        ps_listening_port_enabled (bool):

        ps_listening_secure_port (int):

        ps_listening_secure_port_enabled (bool):

        ps_relay_through_xs (bool):

        xs_relay_listening_port (int):

        tc_timer_seconds (int):

        tw_timer_seconds (int):

        request_timer_seconds (int):

        busy_peer_detection_outstanding_txn_count (int):

        busy_peer_restore_outstanding_txn_count (int):

        dynamic_entry_inactivity_timer_hours (int):

        advertised_offline_billing_application (str):

        advertised_online_billing_application (str):

        peer_discovery_mode (str):

        default_port (int):

        default_secure_port (int):

    """

    xs_realm: Optional[str] = field(default=None, metadata={"alias": "xsRealm"})

    xs_listening_port: int = field(metadata={"alias": "xsListeningPort"})

    xs_listening_port_enabled: bool = field(
        metadata={"alias": "xsListeningPortEnabled"}
    )

    xs_listening_secure_port: int = field(metadata={"alias": "xsListeningSecurePort"})

    xs_listening_secure_port_enabled: bool = field(
        metadata={"alias": "xsListeningSecurePortEnabled"}
    )

    ps_realm: Optional[str] = field(default=None, metadata={"alias": "psRealm"})

    ps_listening_port: int = field(metadata={"alias": "psListeningPort"})

    ps_listening_port_enabled: bool = field(
        metadata={"alias": "psListeningPortEnabled"}
    )

    ps_listening_secure_port: int = field(metadata={"alias": "psListeningSecurePort"})

    ps_listening_secure_port_enabled: bool = field(
        metadata={"alias": "psListeningSecurePortEnabled"}
    )

    ps_relay_through_xs: bool = field(metadata={"alias": "psRelayThroughXs"})

    xs_relay_listening_port: int = field(metadata={"alias": "xsRelayListeningPort"})

    tc_timer_seconds: int = field(metadata={"alias": "tcTimerSeconds"})

    tw_timer_seconds: int = field(metadata={"alias": "twTimerSeconds"})

    request_timer_seconds: int = field(metadata={"alias": "requestTimerSeconds"})

    busy_peer_detection_outstanding_txn_count: int = field(
        metadata={"alias": "busyPeerDetectionOutstandingTxnCount"}
    )

    busy_peer_restore_outstanding_txn_count: int = field(
        metadata={"alias": "busyPeerRestoreOutstandingTxnCount"}
    )

    dynamic_entry_inactivity_timer_hours: int = field(
        metadata={"alias": "dynamicEntryInactivityTimerHours"}
    )

    advertised_offline_billing_application: str = field(
        metadata={"alias": "advertisedOfflineBillingApplication"}
    )

    advertised_online_billing_application: str = field(
        metadata={"alias": "advertisedOnlineBillingApplication"}
    )

    peer_discovery_mode: str = field(metadata={"alias": "peerDiscoveryMode"})

    default_port: int = field(metadata={"alias": "defaultPort"})

    default_secure_port: int = field(metadata={"alias": "defaultSecurePort"})


@dataclass(kw_only=True)
class SystemBwDiameterPeerGetListResponse(OCIDataResponse):
    """Contains a 6 column table with column headings 'Instance', 'Identity', 'IP Address', 'Port', 'Enabled' and 'Secure'. One row is present for each peer.

    Attributes:

        peer_table (OCITable):

    """

    peer_table: OCITable = field(metadata={"alias": "peerTable"})


@dataclass(kw_only=True)
class SystemBwDiameterRoutingPeerGetListResponse(OCIDataResponse):
    """Contains a 6 column table with column headings 'Instance', 'Realm',  'ApplicationID', 'Identity, 'Priority', and 'Weight'.  One row is present for each Diameter Routing Peer.

    Attributes:

        routing_peer_table (OCITable):

    """

    routing_peer_table: OCITable = field(metadata={"alias": "routingPeerTable"})


@dataclass(kw_only=True)
class SystemBwDiameterRoutingRealmGetListResponse(OCIDataResponse):
    """Contains a 4 column table with column headings 'Instance', 'Realm', 'ApplicationID', and 'Default'.  One row is present for each Diameter routing realm.

    Attributes:

        routing_realm_table (OCITable):

    """

    routing_realm_table: OCITable = field(metadata={"alias": "routingRealmTable"})


@dataclass(kw_only=True)
class SystemCLIDDeliveryPrefixGetListResponse(OCIDataResponse):
    """Response to SystemCLIDDeliveryPrefixGetListRequest.

    Attributes:

        prefix (Optional[List[str]]):

    """

    prefix: Optional[List[str]] = field(default=None, metadata={"alias": "prefix"})


@dataclass(kw_only=True)
class SystemCPEConfigGetFileServerListResponse14sp6(OCIDataResponse):
    """Response to SystemCPEConfigGetFileServerListRequest14sp6. The table columns are:
        \"Device Type\", \"File Repository Name\", \"Directory\", \"Extended File Repository Name\".

    Attributes:

        file_server_table (OCITable):

    """

    file_server_table: OCITable = field(metadata={"alias": "fileServerTable"})


@dataclass(kw_only=True)
class SystemCPEConfigParametersGetResponse21(OCIDataResponse):
    """Response to SystemCPEConfigParametersGetRequest21.
        Contains a list of system CPE Config parameters.

        The following elements are only used in AS data mode:
          allowDeviceCredentialsRetrieval, value \"false\" is returned in XS data mode

    Attributes:

        enable_ip_device_management (bool):

        ftp_connect_timeout_seconds (int):

        ftp_file_transfer_timeout_seconds (int):

        pause_between_file_rebuild_milliseconds (int):

        device_access_app_server_cluster_name (Optional[str]):

        min_time_between_reset_milliseconds (int):

        always_push_files_on_rebuild (bool):

        max_file_operation_retry_attempts (int):

        enable_auto_rebuild_config (bool):

        event_queue_size (int):

        allow_device_credentials_retrieval (bool):

    """

    enable_ip_device_management: bool = field(
        metadata={"alias": "enableIPDeviceManagement"}
    )

    ftp_connect_timeout_seconds: int = field(
        metadata={"alias": "ftpConnectTimeoutSeconds"}
    )

    ftp_file_transfer_timeout_seconds: int = field(
        metadata={"alias": "ftpFileTransferTimeoutSeconds"}
    )

    pause_between_file_rebuild_milliseconds: int = field(
        metadata={"alias": "pauseBetweenFileRebuildMilliseconds"}
    )

    device_access_app_server_cluster_name: Optional[str] = field(
        default=None, metadata={"alias": "deviceAccessAppServerClusterName"}
    )

    min_time_between_reset_milliseconds: int = field(
        metadata={"alias": "minTimeBetweenResetMilliseconds"}
    )

    always_push_files_on_rebuild: bool = field(
        metadata={"alias": "alwaysPushFilesOnRebuild"}
    )

    max_file_operation_retry_attempts: int = field(
        metadata={"alias": "maxFileOperationRetryAttempts"}
    )

    enable_auto_rebuild_config: bool = field(
        metadata={"alias": "enableAutoRebuildConfig"}
    )

    event_queue_size: int = field(metadata={"alias": "eventQueueSize"})

    allow_device_credentials_retrieval: bool = field(
        metadata={"alias": "allowDeviceCredentialsRetrieval"}
    )


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingBrandingGetResponse(OCIDataResponse):
    """Response to the SystemCallCenterEnhancedReportingBrandingGetRequest.

    Attributes:

        branding_choice (str):

        custom_branding_file_description (Optional[str]):

    """

    branding_choice: str = field(metadata={"alias": "brandingChoice"})

    custom_branding_file_description: Optional[str] = field(
        default=None, metadata={"alias": "customBrandingFileDescription"}
    )


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingDataTemplateGetListResponse(OCIDataResponse):
    """Response to SystemCallCenterEnhancedReportingDataTemplateGetListRequest.

    Attributes:

        info (Optional[List[CallCenterReportDataTemplateInfo]]):

    """

    info: Optional[List[CallCenterReportDataTemplateInfo]] = field(
        default=None, metadata={"alias": "info"}
    )


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingGetResponse(OCIDataResponse):
    """Response to SystemCallCenterEnhancedReportingGetRequest.

    Attributes:

        archive_reports (bool):

        report_application_url (Optional[str]):

        repository_application_url (Optional[str]):

    """

    archive_reports: bool = field(metadata={"alias": "archiveReports"})

    report_application_url: Optional[str] = field(
        default=None, metadata={"alias": "reportApplicationURL"}
    )

    repository_application_url: Optional[str] = field(
        default=None, metadata={"alias": "repositoryApplicationURL"}
    )


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingReportTemplateGetListResponse(OCIDataResponse):
    """Response to SystemCallCenterEnhancedReportingReportTemplateGetListRequest.
        Contains a table with column headings: \"Name\", \"Description\", \"Is Custom\", \"Type\" and \"Enabled\"

    Attributes:

        report_template_table (OCITable):

    """

    report_template_table: OCITable = field(metadata={"alias": "reportTemplateTable"})


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingReportTemplateGetResponse(OCIDataResponse):
    """Response to SystemCallCenterEnhancedReportingReportTemplateGetRequest.

    Attributes:

        description (Optional[str]):

        data_template (str):

        filter_number (Optional[int]):

        xslt_template_description (str):

        scope (str):

        is_enabled (bool):

        is_realtime_report (Optional[bool]):

        call_completion_threshold_param (Optional[str]):

        short_duration_threshold_param (Optional[str]):

        service_level_threshold_param (Optional[str]):

        service_level_inclusions_param (Optional[str]):

        service_level_objective_threshold_param (Optional[str]):

        abandoned_call_threshold_param (Optional[str]):

        service_level_threshold_param_number (Optional[int]):

        abandoned_call_threshold_param_number (Optional[int]):

        filter_value (Optional[List[str]]):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    data_template: str = field(metadata={"alias": "dataTemplate"})

    filter_number: Optional[int] = field(
        default=None, metadata={"alias": "filterNumber"}
    )

    xslt_template_description: str = field(
        metadata={"alias": "xsltTemplateDescription"}
    )

    scope: str = field(metadata={"alias": "scope"})

    is_enabled: bool = field(metadata={"alias": "isEnabled"})

    is_realtime_report: Optional[bool] = field(
        default=None, metadata={"alias": "isRealtimeReport"}
    )

    call_completion_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "callCompletionThresholdParam"}
    )

    short_duration_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "shortDurationThresholdParam"}
    )

    service_level_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelThresholdParam"}
    )

    service_level_inclusions_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelInclusionsParam"}
    )

    service_level_objective_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelObjectiveThresholdParam"}
    )

    abandoned_call_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "abandonedCallThresholdParam"}
    )

    service_level_threshold_param_number: Optional[int] = field(
        default=None, metadata={"alias": "serviceLevelThresholdParamNumber"}
    )

    abandoned_call_threshold_param_number: Optional[int] = field(
        default=None, metadata={"alias": "abandonedCallThresholdParamNumber"}
    )

    filter_value: Optional[List[str]] = field(
        default=None, metadata={"alias": "filterValue"}
    )


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingScheduledReportGetActiveListResponse(
    OCIDataResponse
):
    """Response to SystemCallCenterEnhancedReportingScheduledReportGetActiveListRequest
        Contains a table with column headings : \"Scheduled Report Name\", \"Description\",
        \"Service Provider Id\", \"Is Enterprise\", \"Group Id\", \"Created By\", \"Is Supervisor Report\",
        \"Report Template Name\", \"Report Template Level\" and \"Recurring\".
        The \"Created By\" can be either \"Administrator\" or user id if created by supervisor.
        The possible values for \"Recurring\" are \"None\", \"Daily\", \"Weekly\", \"Monthly\" and \"Yearly\".
        The possible values for \"Report Template Level\" are \"System\", \"Enterprise\" and \"Group\".
        For the rows with \"Is Enterprise\" column value \"true\", the \"Group Id\" column will be empty.

    Attributes:

        scheduled_report_table (OCITable):

    """

    scheduled_report_table: OCITable = field(metadata={"alias": "scheduledReportTable"})


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingScheduledReportGetCompletedListResponse(
    OCIDataResponse
):
    """Response to SystemCallCenterEnhancedReportingScheduledReportGetCompletedListRequest
        Contains a table with column headings : \"Scheduled Report Name\", \"Description\",
        \"Service Provider Id\", \"Is Enterprise\", \"Group Id\", \"Created By\", \"Is Supervisor Report\",
        \"Report Template Name\", \"Report Template Level\" and \"Recurring\".
        The \"Created By\" can be either \"Administrator\" or user id if created by supervisor.
        The possible values for \"Recurring\" are \"None\", \"Daily\", \"Weekly\", \"Monthly\" and \"Yearly\".
        The possible values for \"Report Template Level\" are \"System\", \"Enterprise\" and \"Group\".
        For the rows with \"Is Enterprise\" column value \"true\", the \"Group Id\" column will be empty.

    Attributes:

        scheduled_report_table (OCITable):

    """

    scheduled_report_table: OCITable = field(metadata={"alias": "scheduledReportTable"})


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingScheduledReportGetListResponse(OCIDataResponse):
    """Response to SystemCallCenterEnhancedReportingScheduledReportGetListRequest.
        Contains a table with column headings : \"Scheduled Report Name\", \"Description\",
        \"Service Provider Id\", \"Is Enterprise\", \"Group Id\", \"Created By\", \"Is Supervisor Report\",  \"Status\",
        \"Report Template Name\", \"Report Template Level\" and \"Recurring\".
        The \"Created By\" can be either \"Administrator\" or user id if created by supervisor.
        The possible values for \"Status\" are \"Active\", and \"Completed\".
        The possible values for \"Recurring\" are \"None\", \"Daily\", \"Weekly\", \"Monthly\" and \"Yearly\".
        The possible values for \"Report Template Level\" are \"System\", \"Enterprise\" and \"Group\".
        For the rows with \"Is Enterprise\" column value \"true\", the \"Group Id\" column will be empty.

    Attributes:

        scheduled_report_table (OCITable):

    """

    scheduled_report_table: OCITable = field(metadata={"alias": "scheduledReportTable"})


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingScheduledReportGetReportTemplateUsageListResponse(
    OCIDataResponse
):
    """Response to SystemCallCenterEnhancedReportingScheduledReportGetReportTemplateUsageListRequest.
        Contains a table with column headings: \"Schedule Name\", \"Organization Type\", \"Service Provider Id\",
        \"Group Id\", \"Created By\", \"Created By Supervisor\", and \"Is Active\".
         The \"Organization Type\" is either \"Service Provider\" or \"Enterprise\".
         The \"Created By\" can be either \"Administrator\" or user id if created by supervisor.
         The possible values for \"Created By Supervisor\" are \"true\" and \"false\".

    Attributes:

        schedule_report_table (OCITable):

    """

    schedule_report_table: OCITable = field(metadata={"alias": "scheduleReportTable"})


@dataclass(kw_only=True)
class SystemCallCenterEnhancedReportingScheduledTaskParametersGetResponse25(
    OCIDataResponse
):
    """Response to SystemCallCenterEnhancedReportingScheduledTaskParametersGetRequest25.

    Attributes:

        scheduled_report_search_interval_minutes (int):

        maximum_scheduled_reports_per_interval (int):

        delete_scheduled_report_days_after_completion (int):

        call_center_event_mode (str):

        use_dialed_address_for_remote_number (bool):

    """

    scheduled_report_search_interval_minutes: int = field(
        metadata={"alias": "scheduledReportSearchIntervalMinutes"}
    )

    maximum_scheduled_reports_per_interval: int = field(
        metadata={"alias": "maximumScheduledReportsPerInterval"}
    )

    delete_scheduled_report_days_after_completion: int = field(
        metadata={"alias": "deleteScheduledReportDaysAfterCompletion"}
    )

    call_center_event_mode: str = field(metadata={"alias": "callCenterEventMode"})

    use_dialed_address_for_remote_number: bool = field(
        metadata={"alias": "useDialedAddressForRemoteNumber"}
    )


@dataclass(kw_only=True)
class SystemCallCenterEventRecordingFileParametersGetResponse(OCIDataResponse):
    """Response to SystemCallCenterEventRecordingFileParametersGetRequest.
        Contains a list of system Call Center Event Recording File parameters.

    Attributes:

        file_retention_time_days (int):

        file_rotation_period_minutes (str):

        file_rotation_offset_minutes (int):

        remote_url (Optional[str]):

        remote_user_id (Optional[str]):

    """

    file_retention_time_days: int = field(metadata={"alias": "fileRetentionTimeDays"})

    file_rotation_period_minutes: str = field(
        metadata={"alias": "fileRotationPeriodMinutes"}
    )

    file_rotation_offset_minutes: int = field(
        metadata={"alias": "fileRotationOffsetMinutes"}
    )

    remote_url: Optional[str] = field(default=None, metadata={"alias": "remoteUrl"})

    remote_user_id: Optional[str] = field(
        default=None, metadata={"alias": "remoteUserId"}
    )


@dataclass(kw_only=True)
class SystemCallCenterGetResponse21(OCIDataResponse):
    """Response to SystemCallCenterGetRequest21.

    Attributes:

        default_from_address (str):

        statistics_sampling_period_minutes (int):

        default_enable_guard_timer (bool):

        default_guard_timer_seconds (int):

        force_agent_unavailable_on_dnd_activation (bool):

        force_agent_unavailable_on_personal_calls (bool):

        force_agent_unavailable_on_bounced_call_limit (bool):

        number_consecutive_bounced_calls_to_force_agent_unavailable (int):

        force_agent_unavailable_on_not_reachable (bool):

        default_play_ring_when_offer_call (bool):

        uniform_call_distribution_policy_scope (str):

        call_handling_sampling_period_minutes (int):

        call_handling_minimum_sampling_size (int):

        play_tone_to_agent_for_emergency_call (bool):

        emergency_call_clid_prefix (str):

        threshold_crossing_notification_email_guard_timer_seconds (int):

        allow_agent_device_initiated_forward (bool):

    """

    default_from_address: str = field(metadata={"alias": "defaultFromAddress"})

    statistics_sampling_period_minutes: int = field(
        metadata={"alias": "statisticsSamplingPeriodMinutes"}
    )

    default_enable_guard_timer: bool = field(
        metadata={"alias": "defaultEnableGuardTimer"}
    )

    default_guard_timer_seconds: int = field(
        metadata={"alias": "defaultGuardTimerSeconds"}
    )

    force_agent_unavailable_on_dnd_activation: bool = field(
        metadata={"alias": "forceAgentUnavailableOnDNDActivation"}
    )

    force_agent_unavailable_on_personal_calls: bool = field(
        metadata={"alias": "forceAgentUnavailableOnPersonalCalls"}
    )

    force_agent_unavailable_on_bounced_call_limit: bool = field(
        metadata={"alias": "forceAgentUnavailableOnBouncedCallLimit"}
    )

    number_consecutive_bounced_calls_to_force_agent_unavailable: int = field(
        metadata={"alias": "numberConsecutiveBouncedCallsToForceAgentUnavailable"}
    )

    force_agent_unavailable_on_not_reachable: bool = field(
        metadata={"alias": "forceAgentUnavailableOnNotReachable"}
    )

    default_play_ring_when_offer_call: bool = field(
        metadata={"alias": "defaultPlayRingWhenOfferCall"}
    )

    uniform_call_distribution_policy_scope: str = field(
        metadata={"alias": "uniformCallDistributionPolicyScope"}
    )

    call_handling_sampling_period_minutes: int = field(
        metadata={"alias": "callHandlingSamplingPeriodMinutes"}
    )

    call_handling_minimum_sampling_size: int = field(
        metadata={"alias": "callHandlingMinimumSamplingSize"}
    )

    play_tone_to_agent_for_emergency_call: bool = field(
        metadata={"alias": "playToneToAgentForEmergencyCall"}
    )

    emergency_call_clid_prefix: str = field(
        metadata={"alias": "emergencyCallCLIDPrefix"}
    )

    threshold_crossing_notification_email_guard_timer_seconds: int = field(
        metadata={"alias": "thresholdCrossingNotificationEmailGuardTimerSeconds"}
    )

    allow_agent_device_initiated_forward: bool = field(
        metadata={"alias": "allowAgentDeviceInitiatedForward"}
    )


@dataclass(kw_only=True)
class SystemCallMeNowGetResponse(OCIDataResponse):
    """Response to SystemCallMeNowGetRequest.

    Attributes:

        passcode_length (int):

        passcode_timeout_seconds (int):

    """

    passcode_length: int = field(metadata={"alias": "passcodeLength"})

    passcode_timeout_seconds: int = field(metadata={"alias": "passcodeTimeoutSeconds"})


@dataclass(kw_only=True)
class SystemCallNotifyGetResponse(OCIDataResponse):
    """Response to SystemCallNotifyGetRequest.

    Attributes:

        default_from_address (str):

        use_short_subject_line (bool):

        use_dn_in_mail_body (bool):

    """

    default_from_address: str = field(metadata={"alias": "defaultFromAddress"})

    use_short_subject_line: bool = field(metadata={"alias": "useShortSubjectLine"})

    use_dn_in_mail_body: bool = field(metadata={"alias": "useDnInMailBody"})


@dataclass(kw_only=True)
class SystemCallProcessingGetPolicyResponse24V2(OCIDataResponse):
    """Response to SystemCallProcessingGetPolicyRequest24V2.
      The following elements are only used in AS data mode:
          enableDialableCallerID
          allowConfigurableCLIDForRedirectingIdentity
          enterpriseCallsCLIDPolicy, value \"Use Location Code plus Extension\" is returned in XS data mode.
          enterpriseGroupCallsCLIDPolicy, value \"Use Location\" is returned in XS data mode.
          serviceProviderGroupCallsCLIDPolicy, value \"Use Location\" is returned in XS data mode.
          enablePhoneListLookup, value \"false\" is returned in XS data mode.
          useMaxConcurrentTerminatingAlertingRequests, value \"false\" is returned in XS data mode.
          maxConcurrentTerminatingAlertingRequests, value \"10\" is returned in XS data mode.
          delayTimerToRemoveCancelledCallsInSeconds, value \"4\" is returned in XS data mode.
          includeRedirectionsInMaximumNumberOfConcurrentCalls, value \"false\" is returned in XS data mode.
          useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable, value \"false\" is returned in XS data mode.
          useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable, value \"false\" is returned in XS data mode.
          allowMobileDNForRedirectingIdentity, value \"false\" is returned in XS data mode.
          conferenceDisableClampTones, value \"false\" is returned in XS data mode.
          useMaxCallsPerSecond, value \"false\" is returned in XS data mode.
          maxCallsPerSecond, value \"1\" is returned in XS data mode.
          forceTreatmentOnMaximumRedirectionDepth, value \"false\" is returned in XS data mode.
          enableUserSelectionOfExternalCLIDPolicy, value \"false\" is returned in XS data mode.
          enableUserConfigurableCLIDModification, value \"false\" is returned in XS data mode.
      The following elements are only used in XS data mode and not returned in AS data mode:
         routeOverrideDomain
         routeOverridePrefix

    Attributes:

        use_max_simultaneous_calls (bool):

        max_simultaneous_calls (int):

        use_max_simultaneous_video_calls (bool):

        max_simultaneous_video_calls (int):

        use_max_call_time_for_answered_calls (bool):

        max_call_time_for_answered_calls_minutes (int):

        use_max_call_time_for_unanswered_calls (bool):

        max_call_time_for_unanswered_calls_minutes (int):

        media_policy_selection (str):

        supported_media_set_name (Optional[str]):

        network_usage_selection (str):

        enforce_group_calling_line_identity_restriction (bool):

        enforce_enterprise_calling_line_identity_restriction (bool):

        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):

        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):

        override_clid_restriction_for_private_call_category (bool):

        use_enterprise_clid_for_private_call_category (bool):

        enable_enterprise_extension_dialing (bool):

        conference_uri (Optional[str]):

        max_conference_parties (int):

        use_max_concurrent_redirected_calls (bool):

        max_concurrent_redirected_calls (int):

        use_max_find_me_follow_me_depth (bool):

        max_find_me_follow_me_depth (int):

        max_redirection_depth (int):

        use_max_concurrent_find_me_follow_me_invocations (bool):

        max_concurrent_find_me_follow_me_invocations (int):

        clid_policy (str):

        emergency_clid_policy (str):

        allow_alternate_numbers_for_redirecting_identity (bool):

        block_calling_name_for_external_calls (bool):

        enable_dialable_caller_id (bool):

        allow_configurable_clid_for_redirecting_identity (bool):

        enterprise_calls_clid_policy (str):

        enterprise_group_calls_clid_policy (str):

        service_provider_group_calls_clid_policy (str):

        enable_phone_list_lookup (bool):

        use_max_concurrent_terminating_alerting_requests (bool):

        max_concurrent_terminating_alerting_requests (int):

        delay_timer_to_remove_cancelled_calls_in_seconds (int):

        include_redirections_in_maximum_number_of_concurrent_calls (bool):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):

        route_override_domain (Optional[str]):

        route_override_prefix (Optional[str]):

        allow_mobile_dn_for_redirecting_identity (bool):

        conference_disable_clamp_tones (bool):

        use_max_calls_per_second (bool):

        max_calls_per_second (int):

        force_treatment_on_maximum_redirection_depth (bool):

        enable_user_selection_of_external_clid_policy (bool):

        enable_user_configurable_clid_modification (bool):

    """

    use_max_simultaneous_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: int = field(metadata={"alias": "maxSimultaneousCalls"})

    use_max_simultaneous_video_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: int = field(
        metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    media_policy_selection: str = field(metadata={"alias": "mediaPolicySelection"})

    supported_media_set_name: Optional[str] = field(
        default=None, metadata={"alias": "supportedMediaSetName"}
    )

    network_usage_selection: str = field(metadata={"alias": "networkUsageSelection"})

    enforce_group_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"}
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"}
    )

    override_clid_restriction_for_private_call_category: bool = field(
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"}
    )

    use_enterprise_clid_for_private_call_category: bool = field(
        metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    enable_enterprise_extension_dialing: bool = field(
        metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    conference_uri: Optional[str] = field(
        default=None, metadata={"alias": "conferenceURI"}
    )

    max_conference_parties: int = field(metadata={"alias": "maxConferenceParties"})

    use_max_concurrent_redirected_calls: bool = field(
        metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: int = field(
        metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_find_me_follow_me_depth: bool = field(
        metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: int = field(
        metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: int = field(metadata={"alias": "maxRedirectionDepth"})

    use_max_concurrent_find_me_follow_me_invocations: bool = field(
        metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: int = field(
        metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    emergency_clid_policy: str = field(metadata={"alias": "emergencyClidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: bool = field(
        metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    enable_dialable_caller_id: bool = field(
        metadata={"alias": "enableDialableCallerID"}
    )

    allow_configurable_clid_for_redirecting_identity: bool = field(
        metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    enterprise_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: str = field(
        metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    enable_phone_list_lookup: bool = field(metadata={"alias": "enablePhoneListLookup"})

    use_max_concurrent_terminating_alerting_requests: bool = field(
        metadata={"alias": "useMaxConcurrentTerminatingAlertingRequests"}
    )

    max_concurrent_terminating_alerting_requests: int = field(
        metadata={"alias": "maxConcurrentTerminatingAlertingRequests"}
    )

    delay_timer_to_remove_cancelled_calls_in_seconds: int = field(
        metadata={"alias": "delayTimerToRemoveCancelledCallsInSeconds"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: bool = field(
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"}
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: bool = field(
        metadata={"alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"}
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: bool = field(
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        }
    )

    route_override_domain: Optional[str] = field(
        default=None, metadata={"alias": "routeOverrideDomain"}
    )

    route_override_prefix: Optional[str] = field(
        default=None, metadata={"alias": "routeOverridePrefix"}
    )

    allow_mobile_dn_for_redirecting_identity: bool = field(
        metadata={"alias": "allowMobileDNForRedirectingIdentity"}
    )

    conference_disable_clamp_tones: bool = field(
        metadata={"alias": "conferenceDisableClampTones"}
    )

    use_max_calls_per_second: bool = field(metadata={"alias": "useMaxCallsPerSecond"})

    max_calls_per_second: int = field(metadata={"alias": "maxCallsPerSecond"})

    force_treatment_on_maximum_redirection_depth: bool = field(
        metadata={"alias": "forceTreatmentOnMaximumRedirectionDepth"}
    )

    enable_user_selection_of_external_clid_policy: bool = field(
        metadata={"alias": "enableUserSelectionOfExternalCLIDPolicy"}
    )

    enable_user_configurable_clid_modification: bool = field(
        metadata={"alias": "enableUserConfigurableCLIDModification"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileAutoAttendantProfileGetResponse22V2(
    OCIDataResponse
):
    """Response to SystemCallProcessingPolicyProfileAutoAttendantProfileGetRequest22V2.
        The following elements are only used in AS data mode:
          useMaxCallsPerSecond, value \"false\" is returned in XS data mode.
          maxCallsPerSecond, value \"1\" is returned in XS data mode.

    Attributes:

        use_clid_policy (bool):

        clid_policy (str):

        allow_alternate_numbers_for_redirecting_identity (bool):

        use_group_name (bool):

        block_calling_name_for_external_calls (bool):

        allow_configurable_clid_for_redirecting_identity (bool):

        allow_department_clid_name_override (bool):

        enterprise_calls_clid_policy (str):

        enterprise_group_calls_clid_policy (str):

        service_provider_group_calls_clid_policy (str):

        use_call_limits_policy (bool):

        use_max_simultaneous_calls (bool):

        max_simultaneous_calls (int):

        use_max_simultaneous_video_calls (bool):

        max_simultaneous_video_calls (int):

        use_max_call_time_for_answered_calls (bool):

        max_call_time_for_answered_calls_minutes (int):

        use_max_concurrent_redirected_calls (bool):

        max_concurrent_redirected_calls (int):

        max_redirection_depth (int):

        use_translation_routing_policy (bool):

        network_usage_selection (str):

        enable_enterprise_extension_dialing (bool):

        enforce_group_calling_line_identity_restriction (bool):

        enforce_enterprise_calling_line_identity_restriction (bool):

        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):

        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):

        override_clid_restriction_for_private_call_category (bool):

        use_enterprise_clid_for_private_call_category (bool):

        use_incoming_clid_policy (bool):

        enable_dialable_caller_id (bool):

        include_redirections_in_maximum_number_of_concurrent_calls (bool):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):

        use_max_calls_per_second (bool):

        max_calls_per_second (int):

    """

    use_clid_policy: bool = field(metadata={"alias": "useCLIDPolicy"})

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: bool = field(
        metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: bool = field(metadata={"alias": "useGroupName"})

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: bool = field(
        metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: bool = field(
        metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: str = field(
        metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: bool = field(metadata={"alias": "useCallLimitsPolicy"})

    use_max_simultaneous_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: int = field(metadata={"alias": "maxSimultaneousCalls"})

    use_max_simultaneous_video_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: int = field(
        metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: bool = field(
        metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: int = field(
        metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    max_redirection_depth: int = field(metadata={"alias": "maxRedirectionDepth"})

    use_translation_routing_policy: bool = field(
        metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: str = field(metadata={"alias": "networkUsageSelection"})

    enable_enterprise_extension_dialing: bool = field(
        metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"}
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"}
    )

    override_clid_restriction_for_private_call_category: bool = field(
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"}
    )

    use_enterprise_clid_for_private_call_category: bool = field(
        metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    use_incoming_clid_policy: bool = field(metadata={"alias": "useIncomingCLIDPolicy"})

    enable_dialable_caller_id: bool = field(
        metadata={"alias": "enableDialableCallerID"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: bool = field(
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"}
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: bool = field(
        metadata={"alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"}
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: bool = field(
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        }
    )

    use_max_calls_per_second: bool = field(metadata={"alias": "useMaxCallsPerSecond"})

    max_calls_per_second: int = field(metadata={"alias": "maxCallsPerSecond"})


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileBroadWorksAnywhereProfileGetResponse22V2(
    OCIDataResponse
):
    """Response to SystemCallProcessingPolicyProfileBroadWorksAnywhereProfileGetRequest22V2.
        The following elements are only used in AS data mode:
          useMaxCallsPerSecond, value \"false\" is returned in XS data mode.
          maxCallsPerSecond, value \"1\" is returned in XS data mode.

    Attributes:

        use_clid_policy (bool):

        clid_policy (str):

        allow_alternate_numbers_for_redirecting_identity (bool):

        use_group_name (bool):

        block_calling_name_for_external_calls (bool):

        allow_configurable_clid_for_redirecting_identity (bool):

        allow_department_clid_name_override (bool):

        enterprise_calls_clid_policy (str):

        enterprise_group_calls_clid_policy (str):

        service_provider_group_calls_clid_policy (str):

        use_call_limits_policy (bool):

        use_max_simultaneous_calls (bool):

        max_simultaneous_calls (int):

        use_max_simultaneous_video_calls (bool):

        max_simultaneous_video_calls (int):

        use_max_concurrent_redirected_calls (bool):

        max_concurrent_redirected_calls (int):

        max_redirection_depth (int):

        use_translation_routing_policy (bool):

        network_usage_selection (str):

        enable_enterprise_extension_dialing (bool):

        enforce_group_calling_line_identity_restriction (bool):

        enforce_enterprise_calling_line_identity_restriction (bool):

        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):

        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):

        override_clid_restriction_for_private_call_category (bool):

        use_enterprise_clid_for_private_call_category (bool):

        use_incoming_clid_policy (bool):

        enable_dialable_caller_id (bool):

        include_redirections_in_maximum_number_of_concurrent_calls (bool):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):

        use_max_calls_per_second (bool):

        max_calls_per_second (int):

    """

    use_clid_policy: bool = field(metadata={"alias": "useCLIDPolicy"})

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: bool = field(
        metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: bool = field(metadata={"alias": "useGroupName"})

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: bool = field(
        metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: bool = field(
        metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: str = field(
        metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: bool = field(metadata={"alias": "useCallLimitsPolicy"})

    use_max_simultaneous_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: int = field(metadata={"alias": "maxSimultaneousCalls"})

    use_max_simultaneous_video_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: int = field(
        metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_concurrent_redirected_calls: bool = field(
        metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: int = field(
        metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    max_redirection_depth: int = field(metadata={"alias": "maxRedirectionDepth"})

    use_translation_routing_policy: bool = field(
        metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: str = field(metadata={"alias": "networkUsageSelection"})

    enable_enterprise_extension_dialing: bool = field(
        metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"}
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"}
    )

    override_clid_restriction_for_private_call_category: bool = field(
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"}
    )

    use_enterprise_clid_for_private_call_category: bool = field(
        metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    use_incoming_clid_policy: bool = field(metadata={"alias": "useIncomingCLIDPolicy"})

    enable_dialable_caller_id: bool = field(
        metadata={"alias": "enableDialableCallerID"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: bool = field(
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"}
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: bool = field(
        metadata={"alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"}
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: bool = field(
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        }
    )

    use_max_calls_per_second: bool = field(metadata={"alias": "useMaxCallsPerSecond"})

    max_calls_per_second: int = field(metadata={"alias": "maxCallsPerSecond"})


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileCallCenterProfileGetResponse22V2(
    OCIDataResponse
):
    """Response to SystemCallProcessingPolicyProfileCallCenterProfileGetRequest22V2.
        The following elements are only used in AS data mode:
          useMaxCallsPerSecond, value \"false\" is returned in XS data mode.
          maxCallsPerSecond, value \"1\" is returned in XS data mode.

    Attributes:

        use_clid_policy (bool):

        clid_policy (str):

        allow_alternate_numbers_for_redirecting_identity (bool):

        use_group_name (bool):

        block_calling_name_for_external_calls (bool):

        allow_configurable_clid_for_redirecting_identity (bool):

        allow_department_clid_name_override (bool):

        enterprise_calls_clid_policy (str):

        enterprise_group_calls_clid_policy (str):

        service_provider_group_calls_clid_policy (str):

        use_call_limits_policy (bool):

        use_max_simultaneous_calls (bool):

        max_simultaneous_calls (int):

        use_max_simultaneous_video_calls (bool):

        max_simultaneous_video_calls (int):

        use_max_concurrent_redirected_calls (bool):

        max_concurrent_redirected_calls (int):

        use_max_find_me_follow_me_depth (bool):

        max_find_me_follow_me_depth (int):

        use_max_concurrent_find_me_follow_me_invocations (bool):

        max_concurrent_find_me_follow_me_invocations (int):

        max_redirection_depth (int):

        use_translation_routing_policy (bool):

        network_usage_selection (str):

        enable_enterprise_extension_dialing (bool):

        enforce_group_calling_line_identity_restriction (bool):

        enforce_enterprise_calling_line_identity_restriction (bool):

        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):

        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):

        override_clid_restriction_for_private_call_category (bool):

        use_incoming_clid_policy (bool):

        enable_dialable_caller_id (bool):

        include_redirections_in_maximum_number_of_concurrent_calls (bool):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):

        use_max_calls_per_second (bool):

        max_calls_per_second (int):

    """

    use_clid_policy: bool = field(metadata={"alias": "useCLIDPolicy"})

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: bool = field(
        metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: bool = field(metadata={"alias": "useGroupName"})

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: bool = field(
        metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: bool = field(
        metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: str = field(
        metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: bool = field(metadata={"alias": "useCallLimitsPolicy"})

    use_max_simultaneous_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: int = field(metadata={"alias": "maxSimultaneousCalls"})

    use_max_simultaneous_video_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: int = field(
        metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_concurrent_redirected_calls: bool = field(
        metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: int = field(
        metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_find_me_follow_me_depth: bool = field(
        metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: int = field(
        metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    use_max_concurrent_find_me_follow_me_invocations: bool = field(
        metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: int = field(
        metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    max_redirection_depth: int = field(metadata={"alias": "maxRedirectionDepth"})

    use_translation_routing_policy: bool = field(
        metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: str = field(metadata={"alias": "networkUsageSelection"})

    enable_enterprise_extension_dialing: bool = field(
        metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"}
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"}
    )

    override_clid_restriction_for_private_call_category: bool = field(
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"}
    )

    use_incoming_clid_policy: bool = field(metadata={"alias": "useIncomingCLIDPolicy"})

    enable_dialable_caller_id: bool = field(
        metadata={"alias": "enableDialableCallerID"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: bool = field(
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"}
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: bool = field(
        metadata={"alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"}
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: bool = field(
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        }
    )

    use_max_calls_per_second: bool = field(metadata={"alias": "useMaxCallsPerSecond"})

    max_calls_per_second: int = field(metadata={"alias": "maxCallsPerSecond"})


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileCollaborateProfileGetResponse22V2(
    OCIDataResponse
):
    """Response to SystemCallProcessingPolicyProfileCollaborateProfileGetRequest22V2.
        The following elements are only used in AS data mode:
          useMaxCallsPerSecond, value \"false\" is returned in XS data mode.
          maxCallsPerSecond, value \"1\" is returned in XS data mode.

    Attributes:

        use_clid_policy (bool):

        clid_policy (str):

        emergency_clid_policy (str):

        allow_alternate_numbers_for_redirecting_identity (bool):

        use_group_name (bool):

        block_calling_name_for_external_calls (bool):

        allow_configurable_clid_for_redirecting_identity (bool):

        allow_department_clid_name_override (bool):

        enterprise_calls_clid_policy (str):

        enterprise_group_calls_clid_policy (str):

        service_provider_group_calls_clid_policy (str):

        use_call_limits_policy (bool):

        use_max_simultaneous_calls (bool):

        max_simultaneous_calls (int):

        use_max_simultaneous_video_calls (bool):

        max_simultaneous_video_calls (int):

        use_max_call_time_for_answered_calls (bool):

        max_call_time_for_answered_calls_minutes (int):

        use_max_call_time_for_unanswered_calls (bool):

        max_call_time_for_unanswered_calls_minutes (int):

        use_max_concurrent_redirected_calls (bool):

        max_concurrent_redirected_calls (int):

        max_redirection_depth (int):

        use_translation_routing_policy (bool):

        network_usage_selection (str):

        enable_enterprise_extension_dialing (bool):

        enforce_group_calling_line_identity_restriction (bool):

        enforce_enterprise_calling_line_identity_restriction (bool):

        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):

        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):

        override_clid_restriction_for_private_call_category (bool):

        use_enterprise_clid_for_private_call_category (bool):

        use_incoming_clid_policy (bool):

        enable_dialable_caller_id (bool):

        include_redirections_in_maximum_number_of_concurrent_calls (bool):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):

        use_max_calls_per_second (bool):

        max_calls_per_second (int):

    """

    use_clid_policy: bool = field(metadata={"alias": "useCLIDPolicy"})

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    emergency_clid_policy: str = field(metadata={"alias": "emergencyClidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: bool = field(
        metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: bool = field(metadata={"alias": "useGroupName"})

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: bool = field(
        metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: bool = field(
        metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: str = field(
        metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: bool = field(metadata={"alias": "useCallLimitsPolicy"})

    use_max_simultaneous_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: int = field(metadata={"alias": "maxSimultaneousCalls"})

    use_max_simultaneous_video_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: int = field(
        metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: bool = field(
        metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: int = field(
        metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    max_redirection_depth: int = field(metadata={"alias": "maxRedirectionDepth"})

    use_translation_routing_policy: bool = field(
        metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: str = field(metadata={"alias": "networkUsageSelection"})

    enable_enterprise_extension_dialing: bool = field(
        metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"}
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"}
    )

    override_clid_restriction_for_private_call_category: bool = field(
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"}
    )

    use_enterprise_clid_for_private_call_category: bool = field(
        metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    use_incoming_clid_policy: bool = field(metadata={"alias": "useIncomingCLIDPolicy"})

    enable_dialable_caller_id: bool = field(
        metadata={"alias": "enableDialableCallerID"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: bool = field(
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"}
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: bool = field(
        metadata={"alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"}
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: bool = field(
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        }
    )

    use_max_calls_per_second: bool = field(metadata={"alias": "useMaxCallsPerSecond"})

    max_calls_per_second: int = field(metadata={"alias": "maxCallsPerSecond"})


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileFindMeFollowMeProfileGetResponse22V2(
    OCIDataResponse
):
    """Response to SystemCallProcessingPolicyProfileFindMeFollowMeProfileGetRequest22V2.
        The following elements are only used in AS data mode:
          useMaxCallsPerSecond, value \"false\" is returned in XS data mode.
          maxCallsPerSecond, value \"1\" is returned in XS data mode.

    Attributes:

        use_clid_policy (bool):

        clid_policy (str):

        allow_alternate_numbers_for_redirecting_identity (bool):

        use_group_name (bool):

        block_calling_name_for_external_calls (bool):

        allow_configurable_clid_for_redirecting_identity (bool):

        allow_department_clid_name_override (bool):

        enterprise_calls_clid_policy (str):

        enterprise_group_calls_clid_policy (str):

        service_provider_group_calls_clid_policy (str):

        use_call_limits_policy (bool):

        use_max_simultaneous_calls (bool):

        max_simultaneous_calls (int):

        use_max_simultaneous_video_calls (bool):

        max_simultaneous_video_calls (int):

        use_max_call_time_for_unanswered_calls (bool):

        max_call_time_for_unanswered_calls_minutes (int):

        use_max_concurrent_redirected_calls (bool):

        max_concurrent_redirected_calls (int):

        use_max_concurrent_find_me_follow_me_invocations (bool):

        max_concurrent_find_me_follow_me_invocations (int):

        use_max_find_me_follow_me_depth (bool):

        max_find_me_follow_me_depth (int):

        max_redirection_depth (int):

        use_translation_routing_policy (bool):

        network_usage_selection (str):

        enable_enterprise_extension_dialing (bool):

        enforce_group_calling_line_identity_restriction (bool):

        enforce_enterprise_calling_line_identity_restriction (bool):

        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):

        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):

        override_clid_restriction_for_private_call_category (bool):

        use_incoming_clid_policy (bool):

        enable_dialable_caller_id (bool):

        include_redirections_in_maximum_number_of_concurrent_calls (bool):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):

        use_max_calls_per_second (bool):

        max_calls_per_second (int):

    """

    use_clid_policy: bool = field(metadata={"alias": "useCLIDPolicy"})

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: bool = field(
        metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: bool = field(metadata={"alias": "useGroupName"})

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: bool = field(
        metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: bool = field(
        metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: str = field(
        metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: bool = field(metadata={"alias": "useCallLimitsPolicy"})

    use_max_simultaneous_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: int = field(metadata={"alias": "maxSimultaneousCalls"})

    use_max_simultaneous_video_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: int = field(
        metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_unanswered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: bool = field(
        metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: int = field(
        metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_concurrent_find_me_follow_me_invocations: bool = field(
        metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: int = field(
        metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    use_max_find_me_follow_me_depth: bool = field(
        metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: int = field(
        metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: int = field(metadata={"alias": "maxRedirectionDepth"})

    use_translation_routing_policy: bool = field(
        metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: str = field(metadata={"alias": "networkUsageSelection"})

    enable_enterprise_extension_dialing: bool = field(
        metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"}
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"}
    )

    override_clid_restriction_for_private_call_category: bool = field(
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"}
    )

    use_incoming_clid_policy: bool = field(metadata={"alias": "useIncomingCLIDPolicy"})

    enable_dialable_caller_id: bool = field(
        metadata={"alias": "enableDialableCallerID"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: bool = field(
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"}
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: bool = field(
        metadata={"alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"}
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: bool = field(
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        }
    )

    use_max_calls_per_second: bool = field(metadata={"alias": "useMaxCallsPerSecond"})

    max_calls_per_second: int = field(metadata={"alias": "maxCallsPerSecond"})


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileFlexibleSeatingHostProfileGetResponse22V2(
    OCIDataResponse
):
    """Response to SystemCallProcessingPolicyProfileFlexibleSeatingHostProfileGetRequest22V2.
        The following elements are only used in AS data mode:
          useMaxCallsPerSecond, value \"false\" is returned in XS data mode.
          maxCallsPerSecond, value \"1\" is returned in XS data mode

    Attributes:

        use_clid_policy (bool):

        clid_policy (str):

        emergency_clid_policy (str):

        use_group_name (bool):

        block_calling_name_for_external_calls (bool):

        allow_configurable_clid_for_redirecting_identity (Optional[bool]):

        allow_department_clid_name_override (bool):

        enterprise_calls_clid_policy (str):

        enterprise_group_calls_clid_policy (str):

        service_provider_group_calls_clid_policy (str):

        use_call_limits_policy (bool):

        use_max_simultaneous_calls (bool):

        max_simultaneous_calls (int):

        use_max_simultaneous_video_calls (bool):

        max_simultaneous_video_calls (int):

        use_max_call_time_for_answered_calls (bool):

        max_call_time_for_answered_calls_minutes (int):

        use_max_call_time_for_unanswered_calls (bool):

        max_call_time_for_unanswered_calls_minutes (int):

        use_translation_routing_policy (bool):

        network_usage_selection (str):

        enable_enterprise_extension_dialing (bool):

        enforce_group_calling_line_identity_restriction (bool):

        enforce_enterprise_calling_line_identity_restriction (bool):

        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):

        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):

        override_clid_restriction_for_private_call_category (bool):

        use_enterprise_clid_for_private_call_category (bool):

        include_redirections_in_maximum_number_of_concurrent_calls (bool):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):

        use_max_calls_per_second (bool):

        max_calls_per_second (int):

    """

    use_clid_policy: bool = field(metadata={"alias": "useCLIDPolicy"})

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    emergency_clid_policy: str = field(metadata={"alias": "emergencyClidPolicy"})

    use_group_name: bool = field(metadata={"alias": "useGroupName"})

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: Optional[bool] = field(
        default=None, metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: bool = field(
        metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: str = field(
        metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: bool = field(metadata={"alias": "useCallLimitsPolicy"})

    use_max_simultaneous_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: int = field(metadata={"alias": "maxSimultaneousCalls"})

    use_max_simultaneous_video_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: int = field(
        metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_translation_routing_policy: bool = field(
        metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: str = field(metadata={"alias": "networkUsageSelection"})

    enable_enterprise_extension_dialing: bool = field(
        metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"}
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"}
    )

    override_clid_restriction_for_private_call_category: bool = field(
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"}
    )

    use_enterprise_clid_for_private_call_category: bool = field(
        metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: bool = field(
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"}
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: bool = field(
        metadata={"alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"}
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: bool = field(
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        }
    )

    use_max_calls_per_second: bool = field(metadata={"alias": "useMaxCallsPerSecond"})

    max_calls_per_second: int = field(metadata={"alias": "maxCallsPerSecond"})


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileGetAssignedNCOSListResponse(OCIDataResponse):
    """Response to the
        SystemCallProcessingPolicyProfileGetAssignedNCOSListRequest.
        The response contains a table of all Network Classes of Service that
        contain the specific CAllP Policy Profile. The column headings
        are \"Name\" and \"Description\".

    Attributes:

        network_class_of_service_table (OCITable):

    """

    network_class_of_service_table: OCITable = field(
        metadata={"alias": "networkClassOfServiceTable"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileGetListResponse(OCIDataResponse):
    """Response to the SystemCallProcessingPolicyProfileGetListRequest.
        The response contains a table of all Call Processing Policy Profiles
        in the system. The column headings are \"Name\" and \"Description\".

    Attributes:

        call_processing_policy_profiles_table (OCITable):

    """

    call_processing_policy_profiles_table: OCITable = field(
        metadata={"alias": "callProcessingPolicyProfilesTable"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileGetResponse21(OCIDataResponse):
    """Response to a SystemCallProcessingPolicyProfileGetRequest21.

    Attributes:

        description (Optional[str]):

        assigned_subscriber_type (Optional[List[str]]):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    assigned_subscriber_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "assignedSubscriberType"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileGroupPagingProfileGetResponse22(OCIDataResponse):
    """Response to SystemCallProcessingPolicyProfileGroupPagingProfileGetRequest22.

    Attributes:

        use_clid_policy (bool):

        clid_policy (str):

        use_group_name (bool):

        block_calling_name_for_external_calls (bool):

        allow_configurable_clid_for_redirecting_identity (bool):

        allow_department_clid_name_override (bool):

        enterprise_calls_clid_policy (str):

        enterprise_group_calls_clid_policy (str):

        service_provider_group_calls_clid_policy (str):

        use_call_limits_policy (bool):

        use_max_call_time_for_answered_calls (bool):

        max_call_time_for_answered_calls_minutes (int):

        use_max_call_time_for_unanswered_calls (bool):

        max_call_time_for_unanswered_calls_minutes (int):

        use_max_concurrent_redirected_calls (bool):

        max_concurrent_redirected_calls (int):

        use_max_find_me_follow_me_depth (bool):

        max_find_me_follow_me_depth (int):

        max_redirection_depth (int):

        use_translation_routing_policy (bool):

        network_usage_selection (str):

        enable_enterprise_extension_dialing (bool):

        enforce_group_calling_line_identity_restriction (bool):

        enforce_enterprise_calling_line_identity_restriction (bool):

        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):

        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):

        override_clid_restriction_for_private_call_category (bool):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):

    """

    use_clid_policy: bool = field(metadata={"alias": "useCLIDPolicy"})

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    use_group_name: bool = field(metadata={"alias": "useGroupName"})

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: bool = field(
        metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: bool = field(
        metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: str = field(
        metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: bool = field(metadata={"alias": "useCallLimitsPolicy"})

    use_max_call_time_for_answered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: bool = field(
        metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: int = field(
        metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_find_me_follow_me_depth: bool = field(
        metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: int = field(
        metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: int = field(metadata={"alias": "maxRedirectionDepth"})

    use_translation_routing_policy: bool = field(
        metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: str = field(metadata={"alias": "networkUsageSelection"})

    enable_enterprise_extension_dialing: bool = field(
        metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"}
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"}
    )

    override_clid_restriction_for_private_call_category: bool = field(
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"}
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: bool = field(
        metadata={"alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"}
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: bool = field(
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        }
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileHuntGroupProfileGetResponse22V2(OCIDataResponse):
    """Response to SystemCallProcessingPolicyProfileHuntGroupProfileGetRequest22V2.
        The following elements are only used in AS data mode:
          useMaxCallsPerSecond, value \"false\" is returned in XS data mode.
          maxCallsPerSecond, value \"1\" is returned in XS data mode.

    Attributes:

        use_clid_policy (bool):

        clid_policy (str):

        allow_alternate_numbers_for_redirecting_identity (bool):

        use_group_name (bool):

        block_calling_name_for_external_calls (bool):

        allow_configurable_clid_for_redirecting_identity (bool):

        allow_department_clid_name_override (bool):

        enterprise_calls_clid_policy (str):

        enterprise_group_calls_clid_policy (str):

        service_provider_group_calls_clid_policy (str):

        use_call_limits_policy (bool):

        use_max_simultaneous_calls (bool):

        max_simultaneous_calls (int):

        use_max_simultaneous_video_calls (bool):

        max_simultaneous_video_calls (int):

        use_max_call_time_for_unanswered_calls (bool):

        max_call_time_for_unanswered_calls_minutes (int):

        use_max_concurrent_redirected_calls (bool):

        max_concurrent_redirected_calls (int):

        use_max_concurrent_find_me_follow_me_invocations (bool):

        max_concurrent_find_me_follow_me_invocations (int):

        use_max_find_me_follow_me_depth (bool):

        max_find_me_follow_me_depth (int):

        max_redirection_depth (int):

        use_translation_routing_policy (bool):

        network_usage_selection (str):

        enable_enterprise_extension_dialing (bool):

        enforce_group_calling_line_identity_restriction (bool):

        enforce_enterprise_calling_line_identity_restriction (bool):

        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):

        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):

        override_clid_restriction_for_private_call_category (bool):

        use_incoming_clid_policy (bool):

        enable_dialable_caller_id (bool):

        include_redirections_in_maximum_number_of_concurrent_calls (bool):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):

        use_max_calls_per_second (bool):

        max_calls_per_second (int):

    """

    use_clid_policy: bool = field(metadata={"alias": "useCLIDPolicy"})

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: bool = field(
        metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: bool = field(metadata={"alias": "useGroupName"})

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: bool = field(
        metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: bool = field(
        metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: str = field(
        metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: bool = field(metadata={"alias": "useCallLimitsPolicy"})

    use_max_simultaneous_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: int = field(metadata={"alias": "maxSimultaneousCalls"})

    use_max_simultaneous_video_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: int = field(
        metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_unanswered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: bool = field(
        metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: int = field(
        metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_concurrent_find_me_follow_me_invocations: bool = field(
        metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: int = field(
        metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    use_max_find_me_follow_me_depth: bool = field(
        metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: int = field(
        metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: int = field(metadata={"alias": "maxRedirectionDepth"})

    use_translation_routing_policy: bool = field(
        metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: str = field(metadata={"alias": "networkUsageSelection"})

    enable_enterprise_extension_dialing: bool = field(
        metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"}
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"}
    )

    override_clid_restriction_for_private_call_category: bool = field(
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"}
    )

    use_incoming_clid_policy: bool = field(metadata={"alias": "useIncomingCLIDPolicy"})

    enable_dialable_caller_id: bool = field(
        metadata={"alias": "enableDialableCallerID"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: bool = field(
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"}
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: bool = field(
        metadata={"alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"}
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: bool = field(
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        }
    )

    use_max_calls_per_second: bool = field(metadata={"alias": "useMaxCallsPerSecond"})

    max_calls_per_second: int = field(metadata={"alias": "maxCallsPerSecond"})


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileInstantGroupCallProfileGetResponse22(
    OCIDataResponse
):
    """Response to SystemCallProcessingPolicyProfileInstantGroupCallProfileGetRequest22.

    Attributes:

        use_clid_policy (bool):

        clid_policy (str):

        allow_alternate_numbers_for_redirecting_identity (bool):

        use_group_name (bool):

        block_calling_name_for_external_calls (bool):

        allow_configurable_clid_for_redirecting_identity (bool):

        allow_department_clid_name_override (bool):

        enterprise_calls_clid_policy (str):

        enterprise_group_calls_clid_policy (str):

        service_provider_group_calls_clid_policy (str):

        use_call_limits_policy (bool):

        use_max_call_time_for_answered_calls (bool):

        max_call_time_for_answered_calls_minutes (int):

        use_max_call_time_for_unanswered_calls (bool):

        max_call_time_for_unanswered_calls_minutes (int):

        use_max_concurrent_redirected_calls (bool):

        max_concurrent_redirected_calls (int):

        use_max_find_me_follow_me_depth (bool):

        max_find_me_follow_me_depth (int):

        max_redirection_depth (int):

        use_translation_routing_policy (bool):

        network_usage_selection (str):

        enable_enterprise_extension_dialing (bool):

        enforce_group_calling_line_identity_restriction (bool):

        enforce_enterprise_calling_line_identity_restriction (bool):

        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):

        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):

        override_clid_restriction_for_private_call_category (bool):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):

    """

    use_clid_policy: bool = field(metadata={"alias": "useCLIDPolicy"})

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: bool = field(
        metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: bool = field(metadata={"alias": "useGroupName"})

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: bool = field(
        metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: bool = field(
        metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: str = field(
        metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: bool = field(metadata={"alias": "useCallLimitsPolicy"})

    use_max_call_time_for_answered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: bool = field(
        metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: int = field(
        metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_find_me_follow_me_depth: bool = field(
        metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: int = field(
        metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: int = field(metadata={"alias": "maxRedirectionDepth"})

    use_translation_routing_policy: bool = field(
        metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: str = field(metadata={"alias": "networkUsageSelection"})

    enable_enterprise_extension_dialing: bool = field(
        metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"}
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"}
    )

    override_clid_restriction_for_private_call_category: bool = field(
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"}
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: bool = field(
        metadata={"alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"}
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: bool = field(
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        }
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileMeetMeConferencingProfileGetResponse22V2(
    OCIDataResponse
):
    """Response to SystemCallProcessingPolicyProfileMeetMeConferencingProfileGetRequest22V2.
        The following elements are only used in AS data mode:
          useMaxCallsPerSecond, value \"false\" is returned in XS data mode.
          maxCallsPerSecond, value \"1\" is returned in XS data mode.

    Attributes:

        use_clid_policy (bool):

        clid_policy (str):

        emergency_clid_policy (str):

        allow_alternate_numbers_for_redirecting_identity (bool):

        use_group_name (bool):

        block_calling_name_for_external_calls (bool):

        allow_configurable_clid_for_redirecting_identity (bool):

        allow_department_clid_name_override (bool):

        enterprise_calls_clid_policy (str):

        enterprise_group_calls_clid_policy (str):

        service_provider_group_calls_clid_policy (str):

        use_call_limits_policy (bool):

        use_max_simultaneous_calls (bool):

        max_simultaneous_calls (int):

        use_max_simultaneous_video_calls (bool):

        max_simultaneous_video_calls (int):

        use_max_call_time_for_answered_calls (bool):

        max_call_time_for_answered_calls_minutes (int):

        use_max_call_time_for_unanswered_calls (bool):

        max_call_time_for_unanswered_calls_minutes (int):

        use_max_concurrent_redirected_calls (bool):

        max_concurrent_redirected_calls (int):

        max_redirection_depth (int):

        use_translation_routing_policy (bool):

        network_usage_selection (str):

        enable_enterprise_extension_dialing (bool):

        enforce_group_calling_line_identity_restriction (bool):

        enforce_enterprise_calling_line_identity_restriction (bool):

        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):

        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):

        override_clid_restriction_for_private_call_category (bool):

        use_enterprise_clid_for_private_call_category (bool):

        use_incoming_clid_policy (bool):

        enable_dialable_caller_id (bool):

        include_redirections_in_maximum_number_of_concurrent_calls (bool):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):

        use_max_calls_per_second (bool):

        max_calls_per_second (int):

    """

    use_clid_policy: bool = field(metadata={"alias": "useCLIDPolicy"})

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    emergency_clid_policy: str = field(metadata={"alias": "emergencyClidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: bool = field(
        metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: bool = field(metadata={"alias": "useGroupName"})

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: bool = field(
        metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: bool = field(
        metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: str = field(
        metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: bool = field(metadata={"alias": "useCallLimitsPolicy"})

    use_max_simultaneous_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: int = field(metadata={"alias": "maxSimultaneousCalls"})

    use_max_simultaneous_video_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: int = field(
        metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: bool = field(
        metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: int = field(
        metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    max_redirection_depth: int = field(metadata={"alias": "maxRedirectionDepth"})

    use_translation_routing_policy: bool = field(
        metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: str = field(metadata={"alias": "networkUsageSelection"})

    enable_enterprise_extension_dialing: bool = field(
        metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"}
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"}
    )

    override_clid_restriction_for_private_call_category: bool = field(
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"}
    )

    use_enterprise_clid_for_private_call_category: bool = field(
        metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    use_incoming_clid_policy: bool = field(metadata={"alias": "useIncomingCLIDPolicy"})

    enable_dialable_caller_id: bool = field(
        metadata={"alias": "enableDialableCallerID"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: bool = field(
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"}
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: bool = field(
        metadata={"alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"}
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: bool = field(
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        }
    )

    use_max_calls_per_second: bool = field(metadata={"alias": "useMaxCallsPerSecond"})

    max_calls_per_second: int = field(metadata={"alias": "maxCallsPerSecond"})


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileRoutePointProfileGetResponse22V2(
    OCIDataResponse
):
    """Response to SystemCallProcessingPolicyProfileRoutePointProfileGetRequest22V2.
        The following elements are only used in AS data mode:
          useMaxCallsPerSecond, value \"false\" is returned in XS data mode.
          maxCallsPerSecond, value \"1\" is returned in XS data mode.

    Attributes:

        use_clid_policy (bool):

        clid_policy (str):

        emergency_clid_policy (str):

        allow_alternate_numbers_for_redirecting_identity (bool):

        use_group_name (bool):

        block_calling_name_for_external_calls (bool):

        allow_configurable_clid_for_redirecting_identity (bool):

        allow_department_clid_name_override (bool):

        enterprise_calls_clid_policy (str):

        enterprise_group_calls_clid_policy (str):

        service_provider_group_calls_clid_policy (str):

        use_call_limits_policy (bool):

        use_max_simultaneous_calls (bool):

        max_simultaneous_calls (int):

        use_max_simultaneous_video_calls (bool):

        max_simultaneous_video_calls (int):

        use_max_concurrent_redirected_calls (bool):

        max_concurrent_redirected_calls (int):

        use_max_concurrent_find_me_follow_me_invocations (bool):

        max_concurrent_find_me_follow_me_invocations (int):

        use_max_find_me_follow_me_depth (bool):

        max_find_me_follow_me_depth (int):

        max_redirection_depth (int):

        use_translation_routing_policy (bool):

        network_usage_selection (str):

        enable_enterprise_extension_dialing (bool):

        enforce_group_calling_line_identity_restriction (bool):

        enforce_enterprise_calling_line_identity_restriction (bool):

        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):

        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):

        override_clid_restriction_for_private_call_category (bool):

        use_enterprise_clid_for_private_call_category (bool):

        use_incoming_clid_policy (bool):

        enable_dialable_caller_id (bool):

        include_redirections_in_maximum_number_of_concurrent_calls (bool):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):

        use_max_calls_per_second (bool):

        max_calls_per_second (int):

    """

    use_clid_policy: bool = field(metadata={"alias": "useCLIDPolicy"})

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    emergency_clid_policy: str = field(metadata={"alias": "emergencyClidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: bool = field(
        metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: bool = field(metadata={"alias": "useGroupName"})

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: bool = field(
        metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: bool = field(
        metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: str = field(
        metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: bool = field(metadata={"alias": "useCallLimitsPolicy"})

    use_max_simultaneous_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: int = field(metadata={"alias": "maxSimultaneousCalls"})

    use_max_simultaneous_video_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: int = field(
        metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_concurrent_redirected_calls: bool = field(
        metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: int = field(
        metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_concurrent_find_me_follow_me_invocations: bool = field(
        metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: int = field(
        metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    use_max_find_me_follow_me_depth: bool = field(
        metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: int = field(
        metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: int = field(metadata={"alias": "maxRedirectionDepth"})

    use_translation_routing_policy: bool = field(
        metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: str = field(metadata={"alias": "networkUsageSelection"})

    enable_enterprise_extension_dialing: bool = field(
        metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"}
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"}
    )

    override_clid_restriction_for_private_call_category: bool = field(
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"}
    )

    use_enterprise_clid_for_private_call_category: bool = field(
        metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    use_incoming_clid_policy: bool = field(metadata={"alias": "useIncomingCLIDPolicy"})

    enable_dialable_caller_id: bool = field(
        metadata={"alias": "enableDialableCallerID"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: bool = field(
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"}
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: bool = field(
        metadata={"alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"}
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: bool = field(
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        }
    )

    use_max_calls_per_second: bool = field(metadata={"alias": "useMaxCallsPerSecond"})

    max_calls_per_second: int = field(metadata={"alias": "maxCallsPerSecond"})


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileTrunkGroupPilotProfileGetResponse22V3(
    OCIDataResponse
):
    """Response to SystemCallProcessingPolicyProfileTrunkGroupPilotProfileGetRequest22V3.
        The following elements are only used in AS data mode:
          useMaxCallsPerSecond, value \"false\" is returned in XS data mode.
          maxCallsPerSecond, value \"1\" is returned in XS data mode.

    Attributes:

        use_clid_policy (bool):

        clid_policy (str):

        emergency_clid_policy (str):

        allow_alternate_numbers_for_redirecting_identity (bool):

        use_group_name (bool):

        block_calling_name_for_external_calls (bool):

        allow_configurable_clid_for_redirecting_identity (bool):

        allow_department_clid_name_override (bool):

        enterprise_calls_clid_policy (str):

        enterprise_group_calls_clid_policy (str):

        service_provider_group_calls_clid_policy (str):

        use_media_policy (bool):

        media_policy_selection (str):

        supported_media_set_name (Optional[str]):

        use_call_limits_policy (bool):

        use_max_simultaneous_calls (bool):

        max_simultaneous_calls (int):

        use_max_simultaneous_video_calls (bool):

        max_simultaneous_video_calls (int):

        use_max_call_time_for_answered_calls (bool):

        max_call_time_for_answered_calls_minutes (int):

        use_max_call_time_for_unanswered_calls (bool):

        max_call_time_for_unanswered_calls_minutes (int):

        use_max_concurrent_redirected_calls (bool):

        max_concurrent_redirected_calls (int):

        use_max_concurrent_find_me_follow_me_invocations (bool):

        max_concurrent_find_me_follow_me_invocations (int):

        use_max_find_me_follow_me_depth (bool):

        max_find_me_follow_me_depth (int):

        max_redirection_depth (int):

        use_translation_routing_policy (bool):

        network_usage_selection (str):

        enable_enterprise_extension_dialing (bool):

        enforce_group_calling_line_identity_restriction (bool):

        enforce_enterprise_calling_line_identity_restriction (bool):

        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):

        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):

        override_clid_restriction_for_private_call_category (bool):

        use_enterprise_clid_for_private_call_category (bool):

        use_incoming_clid_policy (bool):

        enable_dialable_caller_id (bool):

        use_max_concurrent_terminating_alerting_requests (bool):

        max_concurrent_terminating_alerting_requests (int):

        include_redirections_in_maximum_number_of_concurrent_calls (bool):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):

        allow_mobile_dn_for_redirecting_identity (bool):

        use_max_calls_per_second (bool):

        max_calls_per_second (int):

    """

    use_clid_policy: bool = field(metadata={"alias": "useCLIDPolicy"})

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    emergency_clid_policy: str = field(metadata={"alias": "emergencyClidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: bool = field(
        metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: bool = field(metadata={"alias": "useGroupName"})

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: bool = field(
        metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: bool = field(
        metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: str = field(
        metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_media_policy: bool = field(metadata={"alias": "useMediaPolicy"})

    media_policy_selection: str = field(metadata={"alias": "mediaPolicySelection"})

    supported_media_set_name: Optional[str] = field(
        default=None, metadata={"alias": "supportedMediaSetName"}
    )

    use_call_limits_policy: bool = field(metadata={"alias": "useCallLimitsPolicy"})

    use_max_simultaneous_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: int = field(metadata={"alias": "maxSimultaneousCalls"})

    use_max_simultaneous_video_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: int = field(
        metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: bool = field(
        metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: int = field(
        metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_concurrent_find_me_follow_me_invocations: bool = field(
        metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: int = field(
        metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    use_max_find_me_follow_me_depth: bool = field(
        metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: int = field(
        metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: int = field(metadata={"alias": "maxRedirectionDepth"})

    use_translation_routing_policy: bool = field(
        metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: str = field(metadata={"alias": "networkUsageSelection"})

    enable_enterprise_extension_dialing: bool = field(
        metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"}
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"}
    )

    override_clid_restriction_for_private_call_category: bool = field(
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"}
    )

    use_enterprise_clid_for_private_call_category: bool = field(
        metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    use_incoming_clid_policy: bool = field(metadata={"alias": "useIncomingCLIDPolicy"})

    enable_dialable_caller_id: bool = field(
        metadata={"alias": "enableDialableCallerID"}
    )

    use_max_concurrent_terminating_alerting_requests: bool = field(
        metadata={"alias": "useMaxConcurrentTerminatingAlertingRequests"}
    )

    max_concurrent_terminating_alerting_requests: int = field(
        metadata={"alias": "maxConcurrentTerminatingAlertingRequests"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: bool = field(
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"}
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: bool = field(
        metadata={"alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"}
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: bool = field(
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        }
    )

    allow_mobile_dn_for_redirecting_identity: bool = field(
        metadata={"alias": "allowMobileDNForRedirectingIdentity"}
    )

    use_max_calls_per_second: bool = field(metadata={"alias": "useMaxCallsPerSecond"})

    max_calls_per_second: int = field(metadata={"alias": "maxCallsPerSecond"})


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileUserProfileGetResponse22V3(OCIDataResponse):
    """Response to SystemCallProcessingPolicyProfileUserProfileGetRequest22V3.
        The following elements are only used in AS data mode:
          useMaxCallsPerSecond, value \"false\" is returned in XS data mode.
          maxCallsPerSecond, value \"1\" is returned in XS data mode.

    Attributes:

        use_clid_policy (bool):

        clid_policy (str):

        emergency_clid_policy (str):

        allow_alternate_numbers_for_redirecting_identity (bool):

        use_group_name (bool):

        block_calling_name_for_external_calls (bool):

        allow_configurable_clid_for_redirecting_identity (bool):

        allow_department_clid_name_override (bool):

        enterprise_calls_clid_policy (str):

        enterprise_group_calls_clid_policy (str):

        service_provider_group_calls_clid_policy (str):

        use_media_policy (bool):

        media_policy_selection (str):

        supported_media_set_name (Optional[str]):

        use_call_limits_policy (bool):

        use_max_simultaneous_calls (bool):

        max_simultaneous_calls (int):

        use_max_simultaneous_video_calls (bool):

        max_simultaneous_video_calls (int):

        use_max_call_time_for_answered_calls (bool):

        max_call_time_for_answered_calls_minutes (int):

        use_max_call_time_for_unanswered_calls (bool):

        max_call_time_for_unanswered_calls_minutes (int):

        use_max_concurrent_redirected_calls (bool):

        max_concurrent_redirected_calls (int):

        use_max_concurrent_find_me_follow_me_invocations (bool):

        max_concurrent_find_me_follow_me_invocations (int):

        use_max_find_me_follow_me_depth (bool):

        max_find_me_follow_me_depth (int):

        max_redirection_depth (int):

        use_translation_routing_policy (bool):

        network_usage_selection (str):

        enable_enterprise_extension_dialing (bool):

        enforce_group_calling_line_identity_restriction (bool):

        enforce_enterprise_calling_line_identity_restriction (bool):

        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):

        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):

        override_clid_restriction_for_private_call_category (bool):

        use_enterprise_clid_for_private_call_category (bool):

        use_incoming_clid_policy (bool):

        enable_dialable_caller_id (bool):

        use_phone_list_lookup_policy (bool):

        enable_phone_list_lookup (bool):

        use_max_concurrent_terminating_alerting_requests (bool):

        max_concurrent_terminating_alerting_requests (int):

        include_redirections_in_maximum_number_of_concurrent_calls (bool):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):

        allow_mobile_dn_for_redirecting_identity (bool):

        use_max_calls_per_second (bool):

        max_calls_per_second (int):

    """

    use_clid_policy: bool = field(metadata={"alias": "useCLIDPolicy"})

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    emergency_clid_policy: str = field(metadata={"alias": "emergencyClidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: bool = field(
        metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: bool = field(metadata={"alias": "useGroupName"})

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: bool = field(
        metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: bool = field(
        metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: str = field(
        metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_media_policy: bool = field(metadata={"alias": "useMediaPolicy"})

    media_policy_selection: str = field(metadata={"alias": "mediaPolicySelection"})

    supported_media_set_name: Optional[str] = field(
        default=None, metadata={"alias": "supportedMediaSetName"}
    )

    use_call_limits_policy: bool = field(metadata={"alias": "useCallLimitsPolicy"})

    use_max_simultaneous_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: int = field(metadata={"alias": "maxSimultaneousCalls"})

    use_max_simultaneous_video_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: int = field(
        metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: bool = field(
        metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: int = field(
        metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_concurrent_find_me_follow_me_invocations: bool = field(
        metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: int = field(
        metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    use_max_find_me_follow_me_depth: bool = field(
        metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: int = field(
        metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: int = field(metadata={"alias": "maxRedirectionDepth"})

    use_translation_routing_policy: bool = field(
        metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: str = field(metadata={"alias": "networkUsageSelection"})

    enable_enterprise_extension_dialing: bool = field(
        metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"}
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"}
    )

    override_clid_restriction_for_private_call_category: bool = field(
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"}
    )

    use_enterprise_clid_for_private_call_category: bool = field(
        metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    use_incoming_clid_policy: bool = field(metadata={"alias": "useIncomingCLIDPolicy"})

    enable_dialable_caller_id: bool = field(
        metadata={"alias": "enableDialableCallerID"}
    )

    use_phone_list_lookup_policy: bool = field(
        metadata={"alias": "usePhoneListLookupPolicy"}
    )

    enable_phone_list_lookup: bool = field(metadata={"alias": "enablePhoneListLookup"})

    use_max_concurrent_terminating_alerting_requests: bool = field(
        metadata={"alias": "useMaxConcurrentTerminatingAlertingRequests"}
    )

    max_concurrent_terminating_alerting_requests: int = field(
        metadata={"alias": "maxConcurrentTerminatingAlertingRequests"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: bool = field(
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"}
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: bool = field(
        metadata={"alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"}
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: bool = field(
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        }
    )

    allow_mobile_dn_for_redirecting_identity: bool = field(
        metadata={"alias": "allowMobileDNForRedirectingIdentity"}
    )

    use_max_calls_per_second: bool = field(metadata={"alias": "useMaxCallsPerSecond"})

    max_calls_per_second: int = field(metadata={"alias": "maxCallsPerSecond"})


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileVoicePortalProfileGetResponse22V2(
    OCIDataResponse
):
    """Response to SystemCallProcessingPolicyProfileVoicePortalProfileGetRequest22V2.
        The following elements are only used in AS data mode:
          useMaxCallsPerSecond, value \"false\" is returned in XS data mode.
          maxCallsPerSecond, value \"1\" is returned in XS data mode.

    Attributes:

        use_clid_policy (bool):

        clid_policy (str):

        use_group_name (bool):

        block_calling_name_for_external_calls (bool):

        allow_configurable_clid_for_redirecting_identity (bool):

        allow_department_clid_name_override (bool):

        enterprise_calls_clid_policy (str):

        enterprise_group_calls_clid_policy (str):

        service_provider_group_calls_clid_policy (str):

        use_call_limits_policy (bool):

        use_max_simultaneous_calls (bool):

        max_simultaneous_calls (int):

        use_max_simultaneous_video_calls (bool):

        max_simultaneous_video_calls (int):

        use_max_call_time_for_answered_calls (bool):

        max_call_time_for_answered_calls_minutes (int):

        max_redirection_depth (int):

        use_translation_routing_policy (bool):

        network_usage_selection (str):

        enable_enterprise_extension_dialing (bool):

        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):

        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):

        include_redirections_in_maximum_number_of_concurrent_calls (bool):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):

        use_max_calls_per_second (Optional[bool]):

        max_calls_per_second (Optional[int]):

    """

    use_clid_policy: bool = field(metadata={"alias": "useCLIDPolicy"})

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    use_group_name: bool = field(metadata={"alias": "useGroupName"})

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: bool = field(
        metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: bool = field(
        metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: str = field(
        metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: bool = field(metadata={"alias": "useCallLimitsPolicy"})

    use_max_simultaneous_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: int = field(metadata={"alias": "maxSimultaneousCalls"})

    use_max_simultaneous_video_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: int = field(
        metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    max_redirection_depth: int = field(metadata={"alias": "maxRedirectionDepth"})

    use_translation_routing_policy: bool = field(
        metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: str = field(metadata={"alias": "networkUsageSelection"})

    enable_enterprise_extension_dialing: bool = field(
        metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"}
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: bool = field(
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"}
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: bool = field(
        metadata={"alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"}
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: bool = field(
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        }
    )

    use_max_calls_per_second: Optional[bool] = field(
        default=None, metadata={"alias": "useMaxCallsPerSecond"}
    )

    max_calls_per_second: Optional[int] = field(
        default=None, metadata={"alias": "maxCallsPerSecond"}
    )


@dataclass(kw_only=True)
class SystemCallProcessingPolicyProfileVoiceXMLProfileGetResponse22V2(OCIDataResponse):
    """Response to SystemCallProcessingPolicyProfileVoiceXMLProfileGetRequest22V2.
        The following elements are only used in AS data mode:
          useMaxCallsPerSecond, value \"false\" is returned in XS data mode.
          maxCallsPerSecond, value \"1\" is returned in XS data mode.

    Attributes:

        use_clid_policy (bool):

        clid_policy (str):

        emergency_clid_policy (str):

        allow_alternate_numbers_for_redirecting_identity (bool):

        use_group_name (bool):

        block_calling_name_for_external_calls (bool):

        allow_configurable_clid_for_redirecting_identity (bool):

        allow_department_clid_name_override (bool):

        enterprise_calls_clid_policy (str):

        enterprise_group_calls_clid_policy (str):

        service_provider_group_calls_clid_policy (str):

        use_call_limits_policy (bool):

        use_max_simultaneous_calls (bool):

        max_simultaneous_calls (int):

        use_max_simultaneous_video_calls (bool):

        max_simultaneous_video_calls (int):

        use_max_call_time_for_answered_calls (bool):

        max_call_time_for_answered_calls_minutes (int):

        use_max_call_time_for_unanswered_calls (bool):

        max_call_time_for_unanswered_calls_minutes (int):

        use_max_concurrent_redirected_calls (bool):

        max_concurrent_redirected_calls (int):

        max_redirection_depth (int):

        use_translation_routing_policy (bool):

        network_usage_selection (str):

        enable_enterprise_extension_dialing (bool):

        enforce_group_calling_line_identity_restriction (bool):

        enforce_enterprise_calling_line_identity_restriction (bool):

        allow_enterprise_group_call_typing_for_private_dialing_plan (bool):

        allow_enterprise_group_call_typing_for_public_dialing_plan (bool):

        override_clid_restriction_for_private_call_category (bool):

        use_enterprise_clid_for_private_call_category (bool):

        use_incoming_clid_policy (bool):

        enable_dialable_caller_id (bool):

        include_redirections_in_maximum_number_of_concurrent_calls (bool):

        use_user_phone_number_for_group_calls_when_internal_clid_unavailable (bool):

        use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable (bool):

        use_max_calls_per_second (bool):

        max_calls_per_second (int):

    """

    use_clid_policy: bool = field(metadata={"alias": "useCLIDPolicy"})

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    emergency_clid_policy: str = field(metadata={"alias": "emergencyClidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: bool = field(
        metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: bool = field(metadata={"alias": "useGroupName"})

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    allow_configurable_clid_for_redirecting_identity: bool = field(
        metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: bool = field(
        metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    enterprise_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseCallsCLIDPolicy"}
    )

    enterprise_group_calls_clid_policy: str = field(
        metadata={"alias": "enterpriseGroupCallsCLIDPolicy"}
    )

    service_provider_group_calls_clid_policy: str = field(
        metadata={"alias": "serviceProviderGroupCallsCLIDPolicy"}
    )

    use_call_limits_policy: bool = field(metadata={"alias": "useCallLimitsPolicy"})

    use_max_simultaneous_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: int = field(metadata={"alias": "maxSimultaneousCalls"})

    use_max_simultaneous_video_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: int = field(
        metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    use_max_concurrent_redirected_calls: bool = field(
        metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: int = field(
        metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    max_redirection_depth: int = field(metadata={"alias": "maxRedirectionDepth"})

    use_translation_routing_policy: bool = field(
        metadata={"alias": "useTranslationRoutingPolicy"}
    )

    network_usage_selection: str = field(metadata={"alias": "networkUsageSelection"})

    enable_enterprise_extension_dialing: bool = field(
        metadata={"alias": "enableEnterpriseExtensionDialing"}
    )

    enforce_group_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceGroupCallingLineIdentityRestriction"}
    )

    enforce_enterprise_calling_line_identity_restriction: bool = field(
        metadata={"alias": "enforceEnterpriseCallingLineIdentityRestriction"}
    )

    allow_enterprise_group_call_typing_for_private_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPrivateDialingPlan"}
    )

    allow_enterprise_group_call_typing_for_public_dialing_plan: bool = field(
        metadata={"alias": "allowEnterpriseGroupCallTypingForPublicDialingPlan"}
    )

    override_clid_restriction_for_private_call_category: bool = field(
        metadata={"alias": "overrideCLIDRestrictionForPrivateCallCategory"}
    )

    use_enterprise_clid_for_private_call_category: bool = field(
        metadata={"alias": "useEnterpriseCLIDForPrivateCallCategory"}
    )

    use_incoming_clid_policy: bool = field(metadata={"alias": "useIncomingCLIDPolicy"})

    enable_dialable_caller_id: bool = field(
        metadata={"alias": "enableDialableCallerID"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: bool = field(
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"}
    )

    use_user_phone_number_for_group_calls_when_internal_clid_unavailable: bool = field(
        metadata={"alias": "useUserPhoneNumberForGroupCallsWhenInternalCLIDUnavailable"}
    )

    use_user_phone_number_for_enterprise_calls_when_internal_clid_unavailable: bool = field(
        metadata={
            "alias": "useUserPhoneNumberForEnterpriseCallsWhenInternalCLIDUnavailable"
        }
    )

    use_max_calls_per_second: bool = field(metadata={"alias": "useMaxCallsPerSecond"})

    max_calls_per_second: int = field(metadata={"alias": "maxCallsPerSecond"})


@dataclass(kw_only=True)
class SystemCallRecordingGetPlatformListResponse22V2(OCIDataResponse):
    """Response to SystemCallRecordingGetPlatformListRequest22V2.
         Contains the default system Call Recording platform, default reseller Call Recording Platform (when applicable in AS data mode) and a table with columns headings
     \"Name\", \"Net Address\", \"Port\", \"Transport Type\", \"Media Stream\", \"Description\", \"Schema Version\", \"Support Video Rec\", \"Reseller Id\", \"Route\".
         The system default recording platform also appears in the table with the other platforms.

         The port can be empty if it is not defined in the recording platform.
         The possible values for \"Support Video Rec\" can be either true or false.
         Schema version values include: 1.0, 2.0, 3.0

    Attributes:

        system_default (Optional[str]):

        reseller_default (Optional[str]):

        call_recording_platform_table (OCITable):

    """

    system_default: Optional[str] = field(
        default=None, metadata={"alias": "systemDefault"}
    )

    reseller_default: Optional[str] = field(
        default=None, metadata={"alias": "resellerDefault"}
    )

    call_recording_platform_table: OCITable = field(
        metadata={"alias": "callRecordingPlatformTable"}
    )


@dataclass(kw_only=True)
class SystemCallRecordingGetPlatformUsageResponse22(OCIDataResponse):
    """Response to SystemCallRecordingGetPlatformUsageRequest.
        The response contains a table with columns headings \"Organization Id\",
        \"Organization Type\", \"Group Id\".

    Attributes:

        group_table (OCITable):

    """

    group_table: OCITable = field(metadata={"alias": "groupTable"})


@dataclass(kw_only=True)
class SystemCallRecordingGetResponse23(OCIDataResponse):
    """Response to SystemCallRecordingGetRequest23.

        The following elements are only used in AS data mode:
          continueCallAfterRecordingFailure, value \"false\" is returned in XS data mode
          maxResponseWaitTimeMilliseconds, value \"50\" is returned in XS data mode
          continueCallAfterVideoRecordingFailure, value \"false\" is returned in XS data mode
          useContinueCallAfterRecordingFailureForOnDemandMode, value \"false\" is returned in XS data mode
          useContinueCallAfterRecordingFailureForOnDemandUserInitiatedStartMode, value \"false\" is returned in XS data mode

    Attributes:

        continue_call_after_recording_failure (bool):

        max_response_wait_time_milliseconds (int):

        continue_call_after_video_recording_failure (bool):

        use_continue_call_after_recording_failure_for_on_demand_mode (bool):

        use_continue_call_after_recording_failure_for_on_demand_user_initiated_start_mode (bool):

        restrict_call_recording_provisioning_access (bool):

    """

    continue_call_after_recording_failure: bool = field(
        metadata={"alias": "continueCallAfterRecordingFailure"}
    )

    max_response_wait_time_milliseconds: int = field(
        metadata={"alias": "maxResponseWaitTimeMilliseconds"}
    )

    continue_call_after_video_recording_failure: bool = field(
        metadata={"alias": "continueCallAfterVideoRecordingFailure"}
    )

    use_continue_call_after_recording_failure_for_on_demand_mode: bool = field(
        metadata={"alias": "useContinueCallAfterRecordingFailureForOnDemandMode"}
    )

    use_continue_call_after_recording_failure_for_on_demand_user_initiated_start_mode: bool = field(
        metadata={
            "alias": "useContinueCallAfterRecordingFailureForOnDemandUserInitiatedStartMode"
        }
    )

    restrict_call_recording_provisioning_access: bool = field(
        metadata={"alias": "restrictCallRecordingProvisioningAccess"}
    )


@dataclass(kw_only=True)
class SystemCallReturnGetResponse(OCIDataResponse):
    """Response to SystemCallReturnGetRequest.

    Attributes:

        two_level_activation (bool):

        provide_date (bool):

        last_unanswered_call_only (bool):

        confirmation_key (Optional[str]):

        allow_restricted_number (bool):

        delete_number_after_answered_call_return (bool):

    """

    two_level_activation: bool = field(metadata={"alias": "twoLevelActivation"})

    provide_date: bool = field(metadata={"alias": "provideDate"})

    last_unanswered_call_only: bool = field(
        metadata={"alias": "lastUnansweredCallOnly"}
    )

    confirmation_key: Optional[str] = field(
        default=None, metadata={"alias": "confirmationKey"}
    )

    allow_restricted_number: bool = field(metadata={"alias": "allowRestrictedNumber"})

    delete_number_after_answered_call_return: bool = field(
        metadata={"alias": "deleteNumberAfterAnsweredCallReturn"}
    )


@dataclass(kw_only=True)
class SystemCallTypeGetListResponse(OCIDataResponse):
    """Response to SystemCallTypeGetListRequest.

    Attributes:

        call_type (List[str]):

    """

    call_type: List[str] = field(metadata={"alias": "callType"})


@dataclass(kw_only=True)
class SystemCallTypeGetMappingListResponse(OCIDataResponse):
    """Response to SystemCallTypeGetMappingListRequest. The table columns are:
        \"Country Code\", \"Digit Map\", \"Call Type\" and \"Ignore AS Emergency Route\".
        The following column is returned only in AS Mode:
        \"Ignore AS Emergency Route\"

    Attributes:

        call_type_mapping (OCITable):

    """

    call_type_mapping: OCITable = field(metadata={"alias": "callTypeMapping"})


@dataclass(kw_only=True)
class SystemCallWaitingGetResponse(OCIDataResponse):
    """Response to SystemCallWaitingGetRequest.

    Attributes:

        play_distinctive_ringback (bool):

    """

    play_distinctive_ringback: bool = field(
        metadata={"alias": "playDistinctiveRingback"}
    )


@dataclass(kw_only=True)
class SystemCallingNameRetrievalGetResponse24(OCIDataResponse):
    """Response to SystemCallingNameRetrievalGetRequest24.

    Attributes:

        trigger_cnam_queries_for_all_network_calls (bool):

        trigger_cnam_queries_for_group_and_enterprise_calls (bool):

        query_protocol (str):

        query_timeout_milliseconds (int):

        sip_external_database_net_address (Optional[str]):

        sip_external_database_port (Optional[int]):

        sip_external_database_transport (str):

        soap_external_database_net_address (Optional[str]):

        calling_name_source (str):

        route_advance_timer (int):

        retry_failed_cnam_server_interval (int):

        ignore_restricted_presentation_indicator (bool):

        supports_dnssrv (bool):

    """

    trigger_cnam_queries_for_all_network_calls: bool = field(
        metadata={"alias": "triggerCNAMQueriesForAllNetworkCalls"}
    )

    trigger_cnam_queries_for_group_and_enterprise_calls: bool = field(
        metadata={"alias": "triggerCNAMQueriesForGroupAndEnterpriseCalls"}
    )

    query_protocol: str = field(metadata={"alias": "queryProtocol"})

    query_timeout_milliseconds: int = field(
        metadata={"alias": "queryTimeoutMilliseconds"}
    )

    sip_external_database_net_address: Optional[str] = field(
        default=None, metadata={"alias": "sipExternalDatabaseNetAddress"}
    )

    sip_external_database_port: Optional[int] = field(
        default=None, metadata={"alias": "sipExternalDatabasePort"}
    )

    sip_external_database_transport: str = field(
        metadata={"alias": "sipExternalDatabaseTransport"}
    )

    soap_external_database_net_address: Optional[str] = field(
        default=None, metadata={"alias": "soapExternalDatabaseNetAddress"}
    )

    calling_name_source: str = field(metadata={"alias": "callingNameSource"})

    route_advance_timer: int = field(metadata={"alias": "routeAdvanceTimer"})

    retry_failed_cnam_server_interval: int = field(
        metadata={"alias": "retryFailedCNAMServerInterval"}
    )

    ignore_restricted_presentation_indicator: bool = field(
        metadata={"alias": "ignoreRestrictedPresentationIndicator"}
    )

    supports_dnssrv: bool = field(metadata={"alias": "supportsDNSSRV"})


@dataclass(kw_only=True)
class SystemCallingPartyCategoryGetListResponse(OCIDataResponse):
    """Response to SystemCallingPartyCategoryGetListRequest.
        Contains a table of Calling Party Category defined in system.
        The column headings are: \"Category Name\", \"User Category\", \"Collect Call\", \"Default\" and \"Web Display Key\".

    Attributes:

        calling_party_category_table (OCITable):

    """

    calling_party_category_table: OCITable = field(
        metadata={"alias": "callingPartyCategoryTable"}
    )


@dataclass(kw_only=True)
class SystemCallingPartyCategoryGetResponse(OCIDataResponse):
    """Response to SystemCallingPartyCategoryGetRequest.
        Contains information of a Calling Party Category defined in system.

    Attributes:

        cpc_value (Optional[str]):

        isup_oli_value (Optional[int]):

        gtd_oli_value (Optional[str]):

        user_category (bool):

        pay_phone (bool):

        operator (bool):

        default (bool):

        collect_call (bool):

        web_display_key (Optional[str]):

    """

    cpc_value: Optional[str] = field(default=None, metadata={"alias": "cpcValue"})

    isup_oli_value: Optional[int] = field(
        default=None, metadata={"alias": "isupOliValue"}
    )

    gtd_oli_value: Optional[str] = field(
        default=None, metadata={"alias": "gtdOliValue"}
    )

    user_category: bool = field(metadata={"alias": "userCategory"})

    pay_phone: bool = field(metadata={"alias": "payPhone"})

    operator: bool = field(metadata={"alias": "operator"})

    default: bool = field(metadata={"alias": "default"})

    collect_call: bool = field(metadata={"alias": "collectCall"})

    web_display_key: Optional[str] = field(
        default=None, metadata={"alias": "webDisplayKey"}
    )


@dataclass(kw_only=True)
class SystemClassmarkGetListResponse(OCIDataResponse):
    """Response to SystemClassmarkGetListRequest.
        Contains a table of with the column headings: \"Class Mark\", \"Value\" and \"Web Display Key\".

    Attributes:

        classmark_table (OCITable):

    """

    classmark_table: OCITable = field(metadata={"alias": "classmarkTable"})


@dataclass(kw_only=True)
class SystemClassmarkGetUtilizationListResponse(OCIDataResponse):
    """Response to SystemClassmarkGetUtilizationListRequest.
        Contains a table with the column headings: \"User Id\", \"Group Id\", \"Service Provider Id\",
        \"Last Name\", \"First Name\", and \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        classmark_user_table (OCITable):

    """

    classmark_user_table: OCITable = field(metadata={"alias": "classmarkUserTable"})


@dataclass(kw_only=True)
class SystemClientIdentityGetListResponse(OCIDataResponse):
    """Response to SystemClientIdentityGetListRequest.
        Returns a table with column headings:
         \"Client Identity\".

    Attributes:

        client_identity_table (OCITable):

    """

    client_identity_table: OCITable = field(metadata={"alias": "clientIdentityTable"})


@dataclass(kw_only=True)
class SystemClientSessionParametersGetResponse(OCIDataResponse):
    """Response to SystemClientSessionParametersGetRequest.
        Contains a list of system Client Session (web and CLI) parameters.

    Attributes:

        enable_inactivity_timeout (bool):

        inactivity_timeout_minutes (int):

    """

    enable_inactivity_timeout: bool = field(
        metadata={"alias": "enableInactivityTimeout"}
    )

    inactivity_timeout_minutes: int = field(
        metadata={"alias": "inactivityTimeoutMinutes"}
    )


@dataclass(kw_only=True)
class SystemCodecGetListResponse(OCIDataResponse):
    """Response to SystemCodecGetListRequest.

    Attributes:

        codec (Optional[List[str]]):

    """

    codec: Optional[List[str]] = field(default=None, metadata={"alias": "codec"})


@dataclass(kw_only=True)
class SystemCollaborateGetResponse20sp1V2(OCIDataResponse):
    """Response to SystemCollaborateGetRequest20sp1V2.

    Attributes:

        collaborate_room_id_length (int):

        instant_room_idle_timeout_seconds (int):

        collaborate_room_maximum_duration_minutes (int):

        support_outdial (bool):

        max_collaborate_room_participants (int):

        collaborate_active_talker_refresh_interval_seconds (int):

        terminate_collaborate_after_grace_period (bool):

        collaborate_grace_period (CollaborateGracePeriodDuration):

        enable_active_collaborate_notification (bool):

        collaborate_from_address (Optional[str]):

    """

    collaborate_room_id_length: int = field(
        metadata={"alias": "collaborateRoomIdLength"}
    )

    instant_room_idle_timeout_seconds: int = field(
        metadata={"alias": "instantRoomIdleTimeoutSeconds"}
    )

    collaborate_room_maximum_duration_minutes: int = field(
        metadata={"alias": "collaborateRoomMaximumDurationMinutes"}
    )

    support_outdial: bool = field(metadata={"alias": "supportOutdial"})

    max_collaborate_room_participants: int = field(
        metadata={"alias": "maxCollaborateRoomParticipants"}
    )

    collaborate_active_talker_refresh_interval_seconds: int = field(
        metadata={"alias": "collaborateActiveTalkerRefreshIntervalSeconds"}
    )

    terminate_collaborate_after_grace_period: bool = field(
        metadata={"alias": "terminateCollaborateAfterGracePeriod"}
    )

    collaborate_grace_period: CollaborateGracePeriodDuration = field(
        metadata={"alias": "collaborateGracePeriod"}
    )

    enable_active_collaborate_notification: bool = field(
        metadata={"alias": "enableActiveCollaborateNotification"}
    )

    collaborate_from_address: Optional[str] = field(
        default=None, metadata={"alias": "collaborateFromAddress"}
    )


@dataclass(kw_only=True)
class SystemCommunicationBarringAlternateCallIndicatorGetListResponse(OCIDataResponse):
    """Response to a SystemCommunicationBarringAlternateCallIndicatorGetListRequest. Contains a table with one row per Communication Barring Alternate Call Indicator.  The table column headings are: \"Alternate Call Indicator\" and \"Network Server Alternate Call Indicator\".

    Attributes:

        alternate_call_indicator_table (OCITable):

    """

    alternate_call_indicator_table: OCITable = field(
        metadata={"alias": "alternateCallIndicatorTable"}
    )


@dataclass(kw_only=True)
class SystemCommunicationBarringCallTypeGetListResponse(OCIDataResponse):
    """Response to a SystemCommunicationBarringCallTypeGetListRequest. Contains a table with one row per Communication Barring Call Type.  The table column headings are: \"Call Type\" and \"Network Server Call Type\".

    Attributes:

        call_type_table (OCITable):

    """

    call_type_table: OCITable = field(metadata={"alias": "callTypeTable"})


@dataclass(kw_only=True)
class SystemCommunicationBarringCriteriaGetListResponse(OCIDataResponse):
    """Response to the SystemCommunicationBarringCriteriaGetListRequest.
        The response contains a table of all Communication Barring Criteria
        in the system. The column headings are \"Name\" and \"Description\".

    Attributes:

        criteria_table (OCITable):

    """

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class SystemCommunicationBarringCriteriaGetResponse19sp1(OCIDataResponse):
    """Response to the SystemCommunicationBarringCriteriaGetRequest19sp1.
        The response contains the Communication Barring Criteria information.

    Attributes:

        description (Optional[str]):

        match_call_type (Optional[List[str]]):

        match_alternate_call_indicator (Optional[List[str]]):

        match_virtual_on_net_call_type (Optional[List[str]]):

        match_public_network (bool):

        match_private_network (bool):

        match_local_category (bool):

        match_national_category (bool):

        match_interlata_category (bool):

        match_intralata_category (bool):

        match_international_category (bool):

        match_private_category (bool):

        match_emergency_category (bool):

        match_other_category (bool):

        match_inter_network (bool):

        match_inter_hosting_ne (bool):

        match_inter_as (bool):

        match_intra_as (bool):

        match_charge_calls (bool):

        match_no_charge_calls (bool):

        match_group_calls (bool):

        match_enterprise_calls (bool):

        match_network_calls (bool):

        match_network_url_calls (bool):

        match_repair_calls (bool):

        match_emergency_calls (bool):

        match_internal_calls (bool):

        match_location (str):

        match_roaming (str):

        time_schedule (Optional[str]):

        holiday_schedule (Optional[str]):

        match_number_portability_status (Optional[List[str]]):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    match_call_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchCallType"}
    )

    match_alternate_call_indicator: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchAlternateCallIndicator"}
    )

    match_virtual_on_net_call_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchVirtualOnNetCallType"}
    )

    match_public_network: bool = field(metadata={"alias": "matchPublicNetwork"})

    match_private_network: bool = field(metadata={"alias": "matchPrivateNetwork"})

    match_local_category: bool = field(metadata={"alias": "matchLocalCategory"})

    match_national_category: bool = field(metadata={"alias": "matchNationalCategory"})

    match_interlata_category: bool = field(metadata={"alias": "matchInterlataCategory"})

    match_intralata_category: bool = field(metadata={"alias": "matchIntralataCategory"})

    match_international_category: bool = field(
        metadata={"alias": "matchInternationalCategory"}
    )

    match_private_category: bool = field(metadata={"alias": "matchPrivateCategory"})

    match_emergency_category: bool = field(metadata={"alias": "matchEmergencyCategory"})

    match_other_category: bool = field(metadata={"alias": "matchOtherCategory"})

    match_inter_network: bool = field(metadata={"alias": "matchInterNetwork"})

    match_inter_hosting_ne: bool = field(metadata={"alias": "matchInterHostingNE"})

    match_inter_as: bool = field(metadata={"alias": "matchInterAS"})

    match_intra_as: bool = field(metadata={"alias": "matchIntraAS"})

    match_charge_calls: bool = field(metadata={"alias": "matchChargeCalls"})

    match_no_charge_calls: bool = field(metadata={"alias": "matchNoChargeCalls"})

    match_group_calls: bool = field(metadata={"alias": "matchGroupCalls"})

    match_enterprise_calls: bool = field(metadata={"alias": "matchEnterpriseCalls"})

    match_network_calls: bool = field(metadata={"alias": "matchNetworkCalls"})

    match_network_url_calls: bool = field(metadata={"alias": "matchNetworkURLCalls"})

    match_repair_calls: bool = field(metadata={"alias": "matchRepairCalls"})

    match_emergency_calls: bool = field(metadata={"alias": "matchEmergencyCalls"})

    match_internal_calls: bool = field(metadata={"alias": "matchInternalCalls"})

    match_location: str = field(metadata={"alias": "matchLocation"})

    match_roaming: str = field(metadata={"alias": "matchRoaming"})

    time_schedule: Optional[str] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[str] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    match_number_portability_status: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchNumberPortabilityStatus"}
    )


@dataclass(kw_only=True)
class SystemCommunicationBarringDigitPatternCriteriaGetListResponse(OCIDataResponse):
    """Response to the SystemCommunicationBarringDigitPatternCriteriaGetListRequest.
        The response contains a table of all Digit Pattern Criteria defined at the system level. The column headings are \"Name\" and \"Description\"

    Attributes:

        criteria_table (OCITable):

    """

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class SystemCommunicationBarringDigitPatternCriteriaGetPatternListResponse(
    OCIDataResponse
):
    """Response to the SystemCommunicationBarringDigitPatternCriteriaGetPatternListRequest.
        The response contains the Digit Pattern Criteria information.

    Attributes:

        match_digit_pattern (Optional[List[str]]):

    """

    match_digit_pattern: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchDigitPattern"}
    )


@dataclass(kw_only=True)
class SystemCommunicationBarringDigitPatternCriteriaGetResponse(OCIDataResponse):
    """The response to a SystemCommunicationBarringDigitPatternCriteriaGetRequest.

    Attributes:

        description (Optional[Nillable[str]]):

        digit_pattern (Optional[List[str]]):

    """

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    digit_pattern: Optional[List[str]] = field(
        default=None, metadata={"alias": "digitPattern"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class SystemCommunicationBarringGetResponse21sp1(OCIDataResponse):
    """Response to SystemCommunicationBarringGetRequest21sp1.
        The following elements are only used in AS data mode:
        vmCallbackScreening, value \"false\" is returned in XS data mode.

    Attributes:

        direct_transfer_screening (bool):

        vm_callback_screening (bool):

    """

    direct_transfer_screening: bool = field(
        metadata={"alias": "directTransferScreening"}
    )

    vm_callback_screening: bool = field(metadata={"alias": "vmCallbackScreening"})


@dataclass(kw_only=True)
class SystemCommunicationBarringIncomingCriteriaGetListResponse(OCIDataResponse):
    """Response to the SystemCommunicationBarringIncomingCriteriaGetListRequest.
        The response contains a table of all Communication Barring Incoming Criteria
        in the system. The column headings are \"Name\" and \"Description\".

    Attributes:

        criteria_table (OCITable):

    """

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class SystemCommunicationBarringIncomingCriteriaGetResponse22(OCIDataResponse):
    """Response to the SystemCommunicationBarringIncomingCriteriaGetRequest.
        The response contains the Communication Barring Incoming Criteria information.

    Attributes:

        description (Optional[str]):

        time_schedule (Optional[str]):

        holiday_schedule (Optional[str]):

        match_number_portability_status (Optional[List[str]]):

        call_tagged_as_spam (bool):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    time_schedule: Optional[str] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[str] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    match_number_portability_status: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchNumberPortabilityStatus"}
    )

    call_tagged_as_spam: bool = field(metadata={"alias": "callTaggedAsSpam"})


@dataclass(kw_only=True)
class SystemCommunicationBarringProfileGetCriteriaUsageListResponse(OCIDataResponse):
    """Response to the SystemCommunicationBarringProfileGetCriteriaUsageListRequest.
        The response contains a table of system Communication Barring Profiles that
        use the specific Communication Barring Criteria. The column headings
        are \"Name\" and \"Description\"

    Attributes:

        profile_table (OCITable):

    """

    profile_table: OCITable = field(metadata={"alias": "profileTable"})


@dataclass(kw_only=True)
class SystemCommunicationBarringProfileGetDigitPatternCriteriaUsageListResponse(
    OCIDataResponse
):
    """Response to the SystemCommunicationBarringProfileGetDigitPatternCriteriaUsageListRequest.
        The response contains a table of all Profiles that use the specific Digit Pattern Criteria. The column headings are \"Name\" and \"Description\"

    Attributes:

        profile_table (OCITable):

    """

    profile_table: OCITable = field(metadata={"alias": "profileTable"})


@dataclass(kw_only=True)
class SystemCommunicationBarringProfileGetIncomingCriteriaUsageListResponse(
    OCIDataResponse
):
    """Response to the SystemCommunicationBarringProfileGetIncomingCriteriaUsageListRequest.
        The response contains a table of system Communication Barring Profiles that
        use the specific Communication Barring Incoming Criteria. The column headings
        are \"Name\" and \"Description\"

    Attributes:

        profile_table (OCITable):

    """

    profile_table: OCITable = field(metadata={"alias": "profileTable"})


@dataclass(kw_only=True)
class SystemCommunicationBarringProfileGetListResponse(OCIDataResponse):
    """Response to the SystemCommunicationBarringProfileGetListRequest.
        The response contains a table of all Communication Barring Profiles
        in the system. The column headings are \"Name\" and \"Description\"

    Attributes:

        profile_table (OCITable):

    """

    profile_table: OCITable = field(metadata={"alias": "profileTable"})


@dataclass(kw_only=True)
class SystemCommunicationBarringProfileGetResponse19sp1V2(OCIDataResponse):
    """Response to the SystemCommunicationBarringProfileGetRequest19sp1V2.
        The response contains the Communication Barring Profile information.
        The incoming rules are returned in ascending priority order.
        The following elements are only used in AS data mode:
           callMeNowDefaultAction
           callMeNowDefaultCallTimeout
           callMeNowRule
       applyToAttendedCallTransfers

    Attributes:

        description (Optional[str]):

        originating_default_action (str):

        originating_default_treatment_id (Optional[str]):

        originating_default_transfer_number (Optional[str]):

        originating_default_call_timeout (Optional[int]):

        originating_rule (Optional[List[CommunicationBarringOriginatingRule]]):

        redirecting_default_action (str):

        redirecting_default_call_timeout (Optional[int]):

        redirecting_rule (Optional[List[CommunicationBarringRedirectingRule]]):

        incoming_default_action (str):

        incoming_default_call_timeout (Optional[int]):

        incoming_rule (Optional[List[CommunicationBarringIncomingRule19sp1]]):

        call_me_now_default_action (str):

        call_me_now_default_call_timeout (Optional[int]):

        call_me_now_rule (Optional[List[CommunicationBarringCallMeNowRule]]):

        apply_to_attended_call_transfers (bool):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    originating_default_action: str = field(
        metadata={"alias": "originatingDefaultAction"}
    )

    originating_default_treatment_id: Optional[str] = field(
        default=None, metadata={"alias": "originatingDefaultTreatmentId"}
    )

    originating_default_transfer_number: Optional[str] = field(
        default=None, metadata={"alias": "originatingDefaultTransferNumber"}
    )

    originating_default_call_timeout: Optional[int] = field(
        default=None, metadata={"alias": "originatingDefaultCallTimeout"}
    )

    originating_rule: Optional[List[CommunicationBarringOriginatingRule]] = field(
        default=None, metadata={"alias": "originatingRule"}
    )

    redirecting_default_action: str = field(
        metadata={"alias": "redirectingDefaultAction"}
    )

    redirecting_default_call_timeout: Optional[int] = field(
        default=None, metadata={"alias": "redirectingDefaultCallTimeout"}
    )

    redirecting_rule: Optional[List[CommunicationBarringRedirectingRule]] = field(
        default=None, metadata={"alias": "redirectingRule"}
    )

    incoming_default_action: str = field(metadata={"alias": "incomingDefaultAction"})

    incoming_default_call_timeout: Optional[int] = field(
        default=None, metadata={"alias": "incomingDefaultCallTimeout"}
    )

    incoming_rule: Optional[List[CommunicationBarringIncomingRule19sp1]] = field(
        default=None, metadata={"alias": "incomingRule"}
    )

    call_me_now_default_action: str = field(
        metadata={"alias": "callMeNowDefaultAction"}
    )

    call_me_now_default_call_timeout: Optional[int] = field(
        default=None, metadata={"alias": "callMeNowDefaultCallTimeout"}
    )

    call_me_now_rule: Optional[List[CommunicationBarringCallMeNowRule]] = field(
        default=None, metadata={"alias": "callMeNowRule"}
    )

    apply_to_attended_call_transfers: bool = field(
        metadata={"alias": "applyToAttendedCallTransfers"}
    )


@dataclass(kw_only=True)
class SystemCommunicationBarringServiceProviderGetCriteriaUsageListResponse(
    OCIDataResponse
):
    """Response to the SystemCommunicationBarringServiceProviderGetCriteriaUsageListRequest.
        The response contains a table of all Service Providers that use the specific Communication Barring criteria. The column headings are \"Service Provider Id\", \"Service Provider Name\" and \"Is Enterprise\"

    Attributes:

        service_provider_table (OCITable):

    """

    service_provider_table: OCITable = field(metadata={"alias": "serviceProviderTable"})


@dataclass(kw_only=True)
class SystemCommunicationBarringServiceProviderGetIncomingCriteriaUsageListResponse(
    OCIDataResponse
):
    """Response to the SystemCommunicationBarringServiceProviderGetIncomingCriteriaUsageListRequest.
        The response contains a table of all Service Providers that use the specific Communication Barring Incoming criteria. The column headings are \"Service Provider Id\", \"Service Provider Name\" and \"Is Enterprise\"

    Attributes:

        service_provider_table (OCITable):

    """

    service_provider_table: OCITable = field(metadata={"alias": "serviceProviderTable"})


@dataclass(kw_only=True)
class SystemCommunicationBarringUserControlGetResponse(OCIDataResponse):
    """Response to the SystemCommunicationBarringUserControlGetRequest.
        Contains the settings to whole system for Communication Barring User-Control

    Attributes:

        enable_lockout (bool):

        max_number_of_failed_attempts (int):

        lockout_minutes (int):

    """

    enable_lockout: bool = field(metadata={"alias": "enableLockout"})

    max_number_of_failed_attempts: int = field(
        metadata={"alias": "maxNumberOfFailedAttempts"}
    )

    lockout_minutes: int = field(metadata={"alias": "lockoutMinutes"})


@dataclass(kw_only=True)
class SystemConfigurableFileSystemGetResponse23V2(OCIDataResponse):
    """Response to SystemConfigurableFileSystemGetRequest23V2.
        Contains the File System parameters.
        The following elements are only used in AS data mode:
            protocolFile-secure
        value \"false\" is returned in XS data mode

    Attributes:

        media_directory (str):

        protocol_file (Optional[object]):

        protocol_web_dav (Optional[object]):

    """

    media_directory: str = field(metadata={"alias": "mediaDirectory"})

    protocol_file: Optional[object] = field(
        default=None, metadata={"alias": "protocolFile"}
    )

    protocol_web_dav: Optional[object] = field(
        default=None, metadata={"alias": "protocolWebDAV"}
    )


@dataclass(kw_only=True)
class SystemConfigurableTreatmentGetListResponse(OCIDataResponse):
    """Response to a SystemConfigurableTreatmentGetListRequest. Contains a table with one row per treatment.
        The table columns are: \"Treatment Id\", \"Description\".

    Attributes:

        treatment_table (OCITable):

    """

    treatment_table: OCITable = field(metadata={"alias": "treatmentTable"})


@dataclass(kw_only=True)
class SystemConfigurableTreatmentGetResponse24(OCIDataResponse):
    """Response to the SystemConfigurableTreatmentGetRequest24.
        The response contains the treatment configurable information.

        The following elements are only used in AS data mode and not returned in XS data mode:
          warnCode
          warnText

        The following elements are only used in AS data mode:
          accessSendWarningHeader, value \"false\" is returned in XS data mode
          networkSendWarningHeader, value \"false\" is returned in XS data mode

    Attributes:

        description (Optional[str]):

        charge_indicator (str):

        access_sip_status_code (Optional[int]):

        access_sip_status_message (Optional[str]):

        network_sip_status_code (Optional[int]):

        network_sip_status_message (Optional[str]):

        q850_cause_value (Optional[int]):

        q850_text (Optional[str]):

        access_treatment_audio_file (Optional[str]):

        access_treatment_video_file (Optional[str]):

        network_treatment_audio_file (Optional[str]):

        network_treatment_video_file (Optional[str]):

        cdr_termination_cause (Optional[str]):

        route_advance (bool):

        internal_release_cause (Optional[str]):

        access_send_reason_header (bool):

        network_send_reason_header (bool):

        warn_code (Optional[int]):

        warn_text (Optional[str]):

        access_send_warning_header (bool):

        network_send_warning_header (bool):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    charge_indicator: str = field(metadata={"alias": "chargeIndicator"})

    access_sip_status_code: Optional[int] = field(
        default=None, metadata={"alias": "accessSIPStatusCode"}
    )

    access_sip_status_message: Optional[str] = field(
        default=None, metadata={"alias": "accessSIPStatusMessage"}
    )

    network_sip_status_code: Optional[int] = field(
        default=None, metadata={"alias": "networkSIPStatusCode"}
    )

    network_sip_status_message: Optional[str] = field(
        default=None, metadata={"alias": "networkSIPStatusMessage"}
    )

    q850_cause_value: Optional[int] = field(
        default=None, metadata={"alias": "q850CauseValue"}
    )

    q850_text: Optional[str] = field(default=None, metadata={"alias": "q850Text"})

    access_treatment_audio_file: Optional[str] = field(
        default=None, metadata={"alias": "accessTreatmentAudioFile"}
    )

    access_treatment_video_file: Optional[str] = field(
        default=None, metadata={"alias": "accessTreatmentVideoFile"}
    )

    network_treatment_audio_file: Optional[str] = field(
        default=None, metadata={"alias": "networkTreatmentAudioFile"}
    )

    network_treatment_video_file: Optional[str] = field(
        default=None, metadata={"alias": "networkTreatmentVideoFile"}
    )

    cdr_termination_cause: Optional[str] = field(
        default=None, metadata={"alias": "cdrTerminationCause"}
    )

    route_advance: bool = field(metadata={"alias": "routeAdvance"})

    internal_release_cause: Optional[str] = field(
        default=None, metadata={"alias": "internalReleaseCause"}
    )

    access_send_reason_header: bool = field(
        metadata={"alias": "accessSendReasonHeader"}
    )

    network_send_reason_header: bool = field(
        metadata={"alias": "networkSendReasonHeader"}
    )

    warn_code: Optional[int] = field(default=None, metadata={"alias": "warnCode"})

    warn_text: Optional[str] = field(default=None, metadata={"alias": "warnText"})

    access_send_warning_header: bool = field(
        metadata={"alias": "accessSendWarningHeader"}
    )

    network_send_warning_header: bool = field(
        metadata={"alias": "networkSendWarningHeader"}
    )


@dataclass(kw_only=True)
class SystemConnectedLineIdentificationPresentationGetResponse(OCIDataResponse):
    """Response to SystemConnectedLineIdentificationPresentationGetRequest.

    Attributes:

        enforce_user_service_assignment (bool):

    """

    enforce_user_service_assignment: bool = field(
        metadata={"alias": "enforceUserServiceAssignment"}
    )


@dataclass(kw_only=True)
class SystemCountryCodeGetListResponse(OCIDataResponse):
    """Response to a SystemCountryCodeGetListRequest. Contains the default country code
        and a table with one row per country code.  The table columns are
        \"Country Code\", \"Country Name\", \"Off Hook Warning Seconds\",
        \"Ring Period Milliseconds\", \"National Prefix\", \"Use Prefix\",
        \"Maximum Call Waiting Tones\", \"Time Between Call Waiting Tones Milliseconds\"
        and \"Disable National Prefix for OffNet Calls\".

        The following columns are only returned in AS data mode:
          \"Disable National Prefix for OffNet Calls\"

    Attributes:

        default_country_code (str):

        country_code_table (OCITable):

    """

    default_country_code: str = field(metadata={"alias": "defaultCountryCode"})

    country_code_table: OCITable = field(metadata={"alias": "countryCodeTable"})


@dataclass(kw_only=True)
class SystemCrInterfaceGetResponse22(OCIDataResponse):
    """Response to the SystemCrInterfaceGetRequest22.

    Attributes:

        cr_audit_enabled (bool):

        cr_audit_interval_milliseconds (int):

        cr_audit_timeout_milliseconds (int):

        cr_connection_enabled (bool):

        cr_connection_timeout_milliseconds (int):

        cr_tcp_connection_timeout_seconds (int):

        cr_number_of_reconnection_attempts (int):

    """

    cr_audit_enabled: bool = field(metadata={"alias": "crAuditEnabled"})

    cr_audit_interval_milliseconds: int = field(
        metadata={"alias": "crAuditIntervalMilliseconds"}
    )

    cr_audit_timeout_milliseconds: int = field(
        metadata={"alias": "crAuditTimeoutMilliseconds"}
    )

    cr_connection_enabled: bool = field(metadata={"alias": "crConnectionEnabled"})

    cr_connection_timeout_milliseconds: int = field(
        metadata={"alias": "crConnectionTimeoutMilliseconds"}
    )

    cr_tcp_connection_timeout_seconds: int = field(
        metadata={"alias": "crTcpConnectionTimeoutSeconds"}
    )

    cr_number_of_reconnection_attempts: int = field(
        metadata={"alias": "crNumberOfReconnectionAttempts"}
    )


@dataclass(kw_only=True)
class SystemCustomerOriginatedTraceGetResponse(OCIDataResponse):
    """Response to SystemCustomerOriginatedTraceGetRequest.

    Attributes:

        screen_malicious_callers (bool):

    """

    screen_malicious_callers: bool = field(metadata={"alias": "screenMaliciousCallers"})


@dataclass(kw_only=True)
class SystemDTMFTransmissionGetResponse(OCIDataResponse):
    """Response to the SystemDTMFTransmissionGetRequest.

    Attributes:

        transmission_method (str):

        signaling_content_type (Optional[str]):

    """

    transmission_method: str = field(metadata={"alias": "transmissionMethod"})

    signaling_content_type: Optional[str] = field(
        default=None, metadata={"alias": "signalingContentType"}
    )


@dataclass(kw_only=True)
class SystemDeviceActivationPolicyGetResponse(OCIDataResponse):
    """Response to SystemDeviceActivationPolicyGetRequest.

    Attributes:

        allow_activation_code_request_by_user (bool):

        send_activation_code_in_email (bool):

    """

    allow_activation_code_request_by_user: bool = field(
        metadata={"alias": "allowActivationCodeRequestByUser"}
    )

    send_activation_code_in_email: bool = field(
        metadata={"alias": "sendActivationCodeInEmail"}
    )


@dataclass(kw_only=True)
class SystemDeviceFamilyExportResponse(OCIDataResponse):
    """Response to SystemDeviceFamilyExportRequest.

    Attributes:

        file (str):

    """

    file: str = field(metadata={"alias": "file"})


@dataclass(kw_only=True)
class SystemDeviceFamilyGetListResponse(OCIDataResponse):
    """Response to SystemDeviceFamilyGetListRequest.
        The response includes a table of device family defined in the system.
        Column headings are: \"Device Family Name\", \"Reseller Id\".

        The following columns are only returned in AS data mode:
          \"Reseller Id\"

    Attributes:

        device_family_table (OCITable):

    """

    device_family_table: OCITable = field(metadata={"alias": "deviceFamilyTable"})


@dataclass(kw_only=True)
class SystemDeviceFamilyGetResponse(OCIDataResponse):
    """Response to SystemDeviceFamilyGetRequest.
        The response includes the tag sets and device types associated to a device family defined in the system.
        Column headings for deviceTypeTable are : Device Type(s)
        Column headings for tagSetTable are :Tag Set(s)

    Attributes:

        device_type_table (OCITable):

        tag_set_table (OCITable):

    """

    device_type_table: OCITable = field(metadata={"alias": "deviceTypeTable"})

    tag_set_table: OCITable = field(metadata={"alias": "tagSetTable"})


@dataclass(kw_only=True)
class SystemDeviceFamilyImportDryRunResponse(OCIDataResponse):
    """Response to SystemDeviceFamilyImportDryRunRequest.

    Attributes:

        file (str):

        difference_found (bool):

    """

    file: str = field(metadata={"alias": "file"})

    difference_found: bool = field(metadata={"alias": "differenceFound"})


@dataclass(kw_only=True)
class SystemDeviceManagementAutoRebuildConfigGetListResponse(OCIDataResponse):
    """Response to SystemDeviceManagementAutoRebuildConfigGetListRequest.
        Contains a table with column headings: \"OCI Request Prefix\", \"Auto Rebuild Enabled\".
        \"OCI Request Prefix\" is the prefix of the OCI request name.  It does
        not include the request's version '17.sp4, 18...' since the disabled
        flag applies to the whole series of requests, independent of the
        version.
        \"Auto Rebuild Enabled\": 'True' if the request prefix triggers DM events
        automatically.  Otherwise, automatic DM events are not generated.

    Attributes:

        auto_rebuild_config_table (OCITable):

    """

    auto_rebuild_config_table: OCITable = field(
        metadata={"alias": "autoRebuildConfigTable"}
    )


@dataclass(kw_only=True)
class SystemDeviceManagementEventGetListResponse22(OCIDataResponse):
    """Response to SystemDeviceManagementEventGetListRequest22.
        Contains a table with column headings: \"Event Id\", \"Status\", \"Action\",
        \"Level\", \"Type\", \"Additional Info\", \"Is Local\", \"Completion %\",
        \"Pushed/ Same Hash/ Not Pushed\", \"Login Id\", \"Start Time\",
        \"Process Time\", \"Rx Time\", \"Total Time\", \"Request\", \"Priority\",
        \"Tracking Id\", \"End Time\".
        \"Event Id\" is a unique identifier for the event.
        \"Status\" can be: Pending, Queued, In Progress,
        Process On Other Host, Stale, Completed, Canceled.
        \"Action\" can be: Delete, Download, Rebuild, Reset, Upload.
        \"Level\" can be: Device, Device Type, Device Type Group, Group, User.
        \"Type\" can be: Automatic, Manual.
        \"Additional Info\" includes the affected device type, device or group.
        It depends on the level of the event:
          Device Profile: \"Device Name\" \"Service Provider Id\" \"Group Id\"
          Device Type: \"Device Type Name\"
          Device Type Service Provider: \"Service Provider Id\" \"Device Type Name\"
          Service Provider: \"Service Provider Id\"
          Device Type Group: \"Service Provider Id\" \"Group Id\" \"Device Type Name\"
          Group: \"Service Provider Id\" \"Group Id\"
          User: \"User Id\"
        \"Is Local\" is set to \"yes\" if the event is processed on the server
        who received the request, \"no\" otherwise meaning that the event is
        processed on another server.
        \"Completion %\" provides an estimate of the completion of the event.
        A percentage is given, the current number of completed expanded event,
        and the total number of expanded event.
        \"Pushed/ Same Hash/ Not Pushed\" gives the total number of files that
        were pushed, not pushed because of same hash, and not pushed when
        processing the event.
        \"LoginId\" is the user or admin id who triggered the event.
        \"Start Time\" is the date when the event's processing started.  The
        display shows the month, day, hours, minutes, and seconds (MM-dd hh:mm:ss).
        \"Process Time\" is the time taken to process the event in hours,
        minutes, seconds, and milliseconds (hhhh:mm:ss.SSS).
        \"Rx Time\" is the date when the event was received via OCI-P and
        stored in the system.  The display shows the month, day, hours,
        minutes, and seconds (MM-dd hh:mm:ss).
        \"Total Time\" is the total time the event was in the system, from the
        moment it was received and stored until its processing ended, in
        hours, minutes, seconds, and milliseconds (hhhh:mm:ss.SSS).
        \"Request\" is the name of the OCI-P request that triggered the event.
        \"Priority\" is the priority of the event.
        \"Tracking Id\" is the tracking id of the OCI-P request that triggered the event.
        \"End Time\" is the difference, measured in milliseconds, between the
        event's end time and midnight, January 1, 1970 UTC

    Attributes:

        event_table (OCITable):

    """

    event_table: OCITable = field(metadata={"alias": "eventTable"})


@dataclass(kw_only=True)
class SystemDeviceManagementGetAccessDeviceCountForDeviceTypeResponse(OCIDataResponse):
    """Response to SystemDeviceManagementGetAccessDeviceCountForDeviceTypeRequest.

    Attributes:

        access_device_count (int):

    """

    access_device_count: int = field(metadata={"alias": "accessDeviceCount"})


@dataclass(kw_only=True)
class SystemDeviceManagementGetEventStatusSummaryCountResponse(OCIDataResponse):
    """Response to SystemDeviceManagementGetEventStatusSummaryCountRequest.
        The column headings are \"Action, \"Pending\", \"Queued Internally\", and \"Completed\"

    Attributes:

        status_count_table (OCITable):

    """

    status_count_table: OCITable = field(metadata={"alias": "statusCountTable"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagGetListResponse(OCIDataResponse):
    """Response to SystemDeviceManagementTagGetListRequest.
        Contains a table of custom configuration tags managed by the Device Management System.
        In AS data mode, the column headings are: \"Tag Name\", \"Tag Value\", \"Is Overridable\".
        In XS data mode, the column headings are: \"Tag Name\", \"Tag Value\", \"Is Overridable\", \"Is Encrypted\".

    Attributes:

        tags_table (OCITable):

    """

    tags_table: OCITable = field(metadata={"alias": "tagsTable"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetCountryGetListResponse(OCIDataResponse):
    """Response to SystemDeviceManagementTagSetCountryGetListRequest.
        The response includes the list of countries defined in a region of a specified tag set.

    Attributes:

        country_name (Optional[List[str]]):

    """

    country_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "countryName"}
    )


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetExportResponse(OCIDataResponse):
    """Response to SystemDeviceManagementTagSetExportRequest.

    Attributes:

        file (str):

    """

    file: str = field(metadata={"alias": "file"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetGetListResponse22(OCIDataResponse):
    """Response to SystemDeviceManagementTagSetGetListRequest22.
        The response includes a table of tag set names defined in the system.
        Column headings are: \"Tag Set Name\", \"Reseller Id\".

        The following columns are only returned in AS data mode:
          \"Reseller Id\"
        The system default tag set name is not part of this response.

    Attributes:

        tag_set_table (OCITable):

    """

    tag_set_table: OCITable = field(metadata={"alias": "tagSetTable"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetImportDryRunResponse(OCIDataResponse):
    """Response to SystemDeviceManagementTagSetImportDryRunRequest.

    Attributes:

        file (str):

        difference_found (bool):

    """

    file: str = field(metadata={"alias": "file"})

    difference_found: bool = field(metadata={"alias": "differenceFound"})


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetRegionGetListResponse(OCIDataResponse):
    """Response to SystemDeviceManagementTagSetGetListRequest.
        The response includes the list of region names defined in the specified tag set.

    Attributes:

        region_name (Optional[List[str]]):

    """

    region_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "regionName"}
    )


@dataclass(kw_only=True)
class SystemDeviceManagementTagSetRegionTagGetListResponse(OCIDataResponse):
    """Response to SystemDeviceManagementTagSetRegionTagGetListRequest.
        The column headings for the tagsTable are: \"Tag Name\", \"Tag Value\".

    Attributes:

        tags_table (OCITable):

    """

    tags_table: OCITable = field(metadata={"alias": "tagsTable"})


@dataclass(kw_only=True)
class SystemDeviceProfileAuthenticationLockoutGetResponse(OCIDataResponse):
    """Response to SystemDeviceProfileAuthenticationLockoutGetRequest.
        The column headings for the lockoutTable are: \"Organization Id\", \"Organization Type\", \"Group Id\", \"Identity/Device Profile Name\",  \" Identity/Device Profile Type\",  \"Lockout Started\", \"Lockout Expires\", \"Lockout Count\". Lockout times are shown in the system GMT time. When a permanent lockout is shown, the \"Lockout Expires\" column is empty and the \"Lockout Count\" column contains the word Permanent.

    Attributes:

        lockout_table (OCITable):

    """

    lockout_table: OCITable = field(metadata={"alias": "lockoutTable"})


@dataclass(kw_only=True)
class SystemDeviceProfileAuthenticationPasswordRulesGetResponseRI(OCIDataResponse):
    """Response to SystemDeviceProfileAuthenticationPasswordRulesGetRequestRI.
        Contains the device profile authentication password rules for the system.

    Attributes:

        disallow_authentication_name (bool):

        disallow_old_password (bool):

        disallow_reversed_old_password (bool):

        restrict_min_digits (bool):

        min_digits (int):

        restrict_min_upper_case_letters (bool):

        min_upper_case_letters (int):

        restrict_min_lower_case_letters (bool):

        min_lower_case_letters (int):

        restrict_min_non_alphanumeric_characters (bool):

        min_non_alphanumeric_characters (int):

        min_length (int):

        send_permanent_lockout_notification (bool):

        permanent_lockout_notify_email_address (Optional[str]):

        device_profile_authentication_lockout_type (str):

        device_profile_temporary_lockout_threshold (int):

        device_profile_wait_algorithm (str):

        device_profile_lockout_fixed_minutes (str):

        device_profile_permanent_lockout_threshold (int):

        use_password_validation_service (bool):

    """

    disallow_authentication_name: bool = field(
        metadata={"alias": "disallowAuthenticationName"}
    )

    disallow_old_password: bool = field(metadata={"alias": "disallowOldPassword"})

    disallow_reversed_old_password: bool = field(
        metadata={"alias": "disallowReversedOldPassword"}
    )

    restrict_min_digits: bool = field(metadata={"alias": "restrictMinDigits"})

    min_digits: int = field(metadata={"alias": "minDigits"})

    restrict_min_upper_case_letters: bool = field(
        metadata={"alias": "restrictMinUpperCaseLetters"}
    )

    min_upper_case_letters: int = field(metadata={"alias": "minUpperCaseLetters"})

    restrict_min_lower_case_letters: bool = field(
        metadata={"alias": "restrictMinLowerCaseLetters"}
    )

    min_lower_case_letters: int = field(metadata={"alias": "minLowerCaseLetters"})

    restrict_min_non_alphanumeric_characters: bool = field(
        metadata={"alias": "restrictMinNonAlphanumericCharacters"}
    )

    min_non_alphanumeric_characters: int = field(
        metadata={"alias": "minNonAlphanumericCharacters"}
    )

    min_length: int = field(metadata={"alias": "minLength"})

    send_permanent_lockout_notification: bool = field(
        metadata={"alias": "sendPermanentLockoutNotification"}
    )

    permanent_lockout_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "permanentLockoutNotifyEmailAddress"}
    )

    device_profile_authentication_lockout_type: str = field(
        metadata={"alias": "deviceProfileAuthenticationLockoutType"}
    )

    device_profile_temporary_lockout_threshold: int = field(
        metadata={"alias": "deviceProfileTemporaryLockoutThreshold"}
    )

    device_profile_wait_algorithm: str = field(
        metadata={"alias": "deviceProfileWaitAlgorithm"}
    )

    device_profile_lockout_fixed_minutes: str = field(
        metadata={"alias": "deviceProfileLockoutFixedMinutes"}
    )

    device_profile_permanent_lockout_threshold: int = field(
        metadata={"alias": "deviceProfilePermanentLockoutThreshold"}
    )

    use_password_validation_service: bool = field(
        metadata={"alias": "usePasswordValidationService"}
    )


@dataclass(kw_only=True)
class SystemDeviceTypeExportResponse(OCIDataResponse):
    """Response to SystemDeviceTypeExportRequest.

    Attributes:

        file (str):

    """

    file: str = field(metadata={"alias": "file"})


@dataclass(kw_only=True)
class SystemDeviceTypeGetAvailableListResponse22V2(OCIDataResponse):
    """Response to SystemDeviceTypeGetAvailableListRequest22V2.

        Note: element numberOfPorts is only used by devices types with static line ordering enabled

    Attributes:

        device_type (Optional[List[str]]):

        type_info (Optional[List[object]]):

    """

    device_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "deviceType"}
    )

    type_info: Optional[List[object]] = field(
        default=None, metadata={"alias": "typeInfo"}
    )


@dataclass(kw_only=True)
class SystemDeviceTypeGetResponse22V7(OCIDataResponse):
    """Response to SystemDeviceTypeGetRequest22V7.

        The following elements are only used in AS data mode:
          resellerId

    Attributes:

        is_obsolete (bool):

        profile (str):

        web_based_config_url (Optional[str]):

        static_registration_capable (bool):

        cpe_device_options (Optional[CPEDeviceOptionsRead22V6]):

        protocol_choice (List[str]):

        is_ip_address_optional (bool):

        use_domain (bool):

        is_mobility_manager_device (bool):

        device_type_configuration_option (Optional[str]):

        static_line_ordering (Optional[bool]):

        reseller_id (Optional[str]):

    """

    is_obsolete: bool = field(metadata={"alias": "isObsolete"})

    profile: str = field(metadata={"alias": "profile"})

    web_based_config_url: Optional[str] = field(
        default=None, metadata={"alias": "webBasedConfigURL"}
    )

    static_registration_capable: bool = field(
        metadata={"alias": "staticRegistrationCapable"}
    )

    cpe_device_options: Optional[CPEDeviceOptionsRead22V6] = field(
        default=None, metadata={"alias": "cpeDeviceOptions"}
    )

    protocol_choice: List[str] = field(metadata={"alias": "protocolChoice"})

    is_ip_address_optional: bool = field(metadata={"alias": "isIpAddressOptional"})

    use_domain: bool = field(metadata={"alias": "useDomain"})

    is_mobility_manager_device: bool = field(
        metadata={"alias": "isMobilityManagerDevice"}
    )

    device_type_configuration_option: Optional[str] = field(
        default=None, metadata={"alias": "deviceTypeConfigurationOption"}
    )

    static_line_ordering: Optional[bool] = field(
        default=None, metadata={"alias": "staticLineOrdering"}
    )

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})


@dataclass(kw_only=True)
class SystemDeviceTypeImportDryRunResponse(OCIDataResponse):
    """Response to SystemDeviceTypeImportDryRunRequest.

    Attributes:

        file (str):

        difference_found (bool):

    """

    file: str = field(metadata={"alias": "file"})

    difference_found: bool = field(metadata={"alias": "differenceFound"})


@dataclass(kw_only=True)
class SystemDialPlanPolicyGetAccessCodeListResponse(OCIDataResponse):
    """Response to SystemDialPlanPolicyGetAccessCodeListRequest.
        Contains a table with column headings: \"Access Code\", \"Enable Secondary Dial Tone\", \"Description\"

    Attributes:

        access_code_table (OCITable):

    """

    access_code_table: OCITable = field(metadata={"alias": "accessCodeTable"})


@dataclass(kw_only=True)
class SystemDialPlanPolicyGetAccessCodeResponse(OCIDataResponse):
    """Response to SystemDialPlanPolicyGetAccessCodeRequest

    Attributes:

        include_code_for_network_translations_and_routing (bool):

        include_code_for_screening_services (bool):

        enable_secondary_dial_tone (bool):

        description (Optional[str]):

    """

    include_code_for_network_translations_and_routing: bool = field(
        metadata={"alias": "includeCodeForNetworkTranslationsAndRouting"}
    )

    include_code_for_screening_services: bool = field(
        metadata={"alias": "includeCodeForScreeningServices"}
    )

    enable_secondary_dial_tone: bool = field(
        metadata={"alias": "enableSecondaryDialTone"}
    )

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class SystemDialPlanPolicyGetResponse22V2(OCIDataResponse):
    """Response to SystemDialPlanPolicyGetRequest22V2
        The following elements are only used in AS data mode:
          overrideResolvedDeviceDigitMap
        The following elements are only used in AS data mode and not returned in XS data mode:
          deviceDigitMap
          performInternalTranslationsWithOAC
          permissiveOACDialing

    Attributes:

        requires_access_code_for_public_calls (bool):

        allow_e164_public_calls (bool):

        prefer_e164_number_format_for_callback_services (bool):

        public_digit_map (str):

        private_digit_map (Optional[str]):

        override_resolved_device_digit_map (bool):

        device_digit_map (Optional[str]):

        perform_internal_translations_with_oac (Optional[bool]):

        permissive_oac_dialing (Optional[bool]):

    """

    requires_access_code_for_public_calls: bool = field(
        metadata={"alias": "requiresAccessCodeForPublicCalls"}
    )

    allow_e164_public_calls: bool = field(metadata={"alias": "allowE164PublicCalls"})

    prefer_e164_number_format_for_callback_services: bool = field(
        metadata={"alias": "preferE164NumberFormatForCallbackServices"}
    )

    public_digit_map: str = field(metadata={"alias": "publicDigitMap"})

    private_digit_map: Optional[str] = field(
        default=None, metadata={"alias": "privateDigitMap"}
    )

    override_resolved_device_digit_map: bool = field(
        metadata={"alias": "overrideResolvedDeviceDigitMap"}
    )

    device_digit_map: Optional[str] = field(
        default=None, metadata={"alias": "deviceDigitMap"}
    )

    perform_internal_translations_with_oac: Optional[bool] = field(
        default=None, metadata={"alias": "performInternalTranslationsWithOAC"}
    )

    permissive_oac_dialing: Optional[bool] = field(
        default=None, metadata={"alias": "permissiveOACDialing"}
    )


@dataclass(kw_only=True)
class SystemDialableCallerIDCriteriaGetResponse(OCIDataResponse):
    """Response to the SystemDialableCallerIDCriteriaGetRequest.
        The response contains the Dialable Caller ID Criteria information.

    Attributes:

        description (Optional[str]):

        prefix_digits (Optional[str]):

        match_call_type (Optional[List[str]]):

        match_alternate_call_indicator (Optional[List[str]]):

        match_local_category (bool):

        match_national_category (bool):

        match_interlata_category (bool):

        match_intralata_category (bool):

        match_international_category (bool):

        match_private_category (bool):

        match_emergency_category (bool):

        match_other_category (bool):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    prefix_digits: Optional[str] = field(
        default=None, metadata={"alias": "prefixDigits"}
    )

    match_call_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchCallType"}
    )

    match_alternate_call_indicator: Optional[List[str]] = field(
        default=None, metadata={"alias": "matchAlternateCallIndicator"}
    )

    match_local_category: bool = field(metadata={"alias": "matchLocalCategory"})

    match_national_category: bool = field(metadata={"alias": "matchNationalCategory"})

    match_interlata_category: bool = field(metadata={"alias": "matchInterlataCategory"})

    match_intralata_category: bool = field(metadata={"alias": "matchIntralataCategory"})

    match_international_category: bool = field(
        metadata={"alias": "matchInternationalCategory"}
    )

    match_private_category: bool = field(metadata={"alias": "matchPrivateCategory"})

    match_emergency_category: bool = field(metadata={"alias": "matchEmergencyCategory"})

    match_other_category: bool = field(metadata={"alias": "matchOtherCategory"})


@dataclass(kw_only=True)
class SystemDialableCallerIDGetResponse(OCIDataResponse):
    """Response to the SystemDialableCallerIDGetRequest.
        The criteria table?s column headings are ?Active?, \"Name\", \"Description\", ?Prefix Digits?, and ?Priority?.

    Attributes:

        criteria_table (OCITable):

    """

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class SystemDigitCollectionGetResponse13mp4(OCIDataResponse):
    """Response to SystemDigitCollectionGetRequest13mp4.

    Attributes:

        access_code (Optional[str]):

        public_digit_map (str):

        private_digit_map (Optional[str]):

    """

    access_code: Optional[str] = field(default=None, metadata={"alias": "accessCode"})

    public_digit_map: str = field(metadata={"alias": "publicDigitMap"})

    private_digit_map: Optional[str] = field(
        default=None, metadata={"alias": "privateDigitMap"}
    )


@dataclass(kw_only=True)
class SystemDnGetSummaryListResponse(OCIDataResponse):
    """Response to SystemDnGetSummaryListRequest.
        The column headings are \"Phone Numbers, \"Service Provider Id\", \"Is Enterprise\" and \"Reseller Id\".

        The following columns are only returned in AS data mode:
          \"Reseller Id\"

    Attributes:

        dn_summary_table (OCITable):

    """

    dn_summary_table: OCITable = field(metadata={"alias": "dnSummaryTable"})


@dataclass(kw_only=True)
class SystemDnGetUtilizationListResponse(OCIDataResponse):
    """Response to SystemDnUtilizationGetListRequest.
        The table columns are: \"Service Provider Id\", \"Phone Numbers\", \"Assigned to Groups\",
        \"Percentage Assigned\", \"Is Enterprise\", \"Activated on Groups\", \"Reseller Id\".

            The following columns are only returned in AS data mode:
          \"Reseller Id\"

    Attributes:

        dn_utilization_table (OCITable):

    """

    dn_utilization_table: OCITable = field(metadata={"alias": "dnUtilizationTable"})


@dataclass(kw_only=True)
class SystemDnGetUtilizationResponse14sp3(OCIDataResponse):
    """Response to SystemDnGetUtilizationRequest14sp3.
          The isActivated element is only included when the DN is
    assigned to a user.

      Attributes:

          service_provider_id (str):

          group_id (Optional[str]):

          user_id (Optional[str]):

          user_type (Optional[str]):

          is_group_calling_line_id (bool):

          is_activated (Optional[bool]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    user_id: Optional[str] = field(default=None, metadata={"alias": "userId"})

    user_type: Optional[str] = field(default=None, metadata={"alias": "userType"})

    is_group_calling_line_id: bool = field(metadata={"alias": "isGroupCallingLineId"})

    is_activated: Optional[bool] = field(
        default=None, metadata={"alias": "isActivated"}
    )


@dataclass(kw_only=True)
class SystemDomainGetAssignedServiceProviderListResponse(OCIDataResponse):
    """Response to SystemDomainGetAssignedServiceProviderListRequest.
        The table columns are: \"Service Provider Id\", \"Service Provider Name\", \"Is Enterprise\" and \"Reseller Id\".
        The following columns are only returned in AS data mode:
          \"Reseller Id\"

    Attributes:

        service_provider_table (OCITable):

    """

    service_provider_table: OCITable = field(metadata={"alias": "serviceProviderTable"})


@dataclass(kw_only=True)
class SystemDomainGetListResponse22V2(OCIDataResponse):
    """Contains a table of all matching system-level domain names and all matching reseller level domains.
        The column headings are: \"Domain Name\" and \"Reseller Id\".

    Attributes:

        system_default_domain (Optional[str]):

        domain_table (OCITable):

    """

    system_default_domain: Optional[str] = field(
        default=None, metadata={"alias": "systemDefaultDomain"}
    )

    domain_table: OCITable = field(metadata={"alias": "domainTable"})


@dataclass(kw_only=True)
class SystemDomainParametersGetResponse(OCIDataResponse):
    """Response to SystemDomainParametersGetRequest.
        Contains the system Domain parameters.

        The following elements are only used in AS data mode:
          useAliasForDomain, value \"false\" is returned in XS data mode.

    Attributes:

        use_alias_for_domain (bool):

        default_domain (Optional[str]):

    """

    use_alias_for_domain: bool = field(metadata={"alias": "useAliasForDomain"})

    default_domain: Optional[str] = field(
        default=None, metadata={"alias": "defaultDomain"}
    )


@dataclass(kw_only=True)
class SystemEmergencyCallDDoSProtectionGetResponse(OCIDataResponse):
    """Response to the SystemEmergencyCallDDoSProtectionGetRequest.

    Attributes:

        enabled (bool):

        sample_interval_seconds (int):

        protection_rate (Optional[int]):

        protection_action (str):

    """

    enabled: bool = field(metadata={"alias": "enabled"})

    sample_interval_seconds: int = field(metadata={"alias": "sampleIntervalSeconds"})

    protection_rate: Optional[int] = field(
        default=None, metadata={"alias": "protectionRate"}
    )

    protection_action: str = field(metadata={"alias": "protectionAction"})


@dataclass(kw_only=True)
class SystemEmergencyCallNotificationGetResponse(OCIDataResponse):
    """Response to SystemEmergencyCallNotificationGetResponse.

    Attributes:

        default_from_address (str):

    """

    default_from_address: str = field(metadata={"alias": "defaultFromAddress"})


@dataclass(kw_only=True)
class SystemEmergencyZonesGetResponse(OCIDataResponse):
    """Response to SystemEmergencyZonesGetRequest.

    Attributes:

        default_from_address (str):

    """

    default_from_address: str = field(metadata={"alias": "defaultFromAddress"})


@dataclass(kw_only=True)
class SystemEndpointGetListResponse(OCIDataResponse):
    """Response to SystemEndpointGetListRequest.
        The column headings for the endpointTable are: \"Organization Id\", \"Organization Type\", \"Group Id\", \"Line/Port\", \"Last Name\",\"First Name\", \"User Id\", \"User Type\", \"Phone Number\", \"Extension\", \"Device Type\", \"Device Name\", \"Net Address\", \"MAC Address\", \"Department\", \"Email Address\", \"Reseller Id\".
        Possible values for User Type are \"User\", \"CCBasic\", \"CCStandard\", \"CCPremium\", \"RP\", \"MOH\", \"MOHVideo\".

        The following columns are only returned in AS data mode:
          \"Reseller Id\"

    Attributes:

        endpoint_table (OCITable):

    """

    endpoint_table: OCITable = field(metadata={"alias": "endpointTable"})


@dataclass(kw_only=True)
class SystemEnhancedCallLogsActiveSchemaInstanceGetListResponse(OCIDataResponse):
    """Response to SystemEnhancedCallLogsSchemaInstanceActualUsageGetListRequest.
      Contains a table with column headings: \"Instance Name\", \"Active Users\".

    Attributes:

        schema_instance_usage_table (OCITable):

    """

    schema_instance_usage_table: OCITable = field(
        metadata={"alias": "schemaInstanceUsageTable"}
    )


@dataclass(kw_only=True)
class SystemEnhancedCallLogsGetResponse22V2(OCIDataResponse):
    """Response to SystemEnhancedCallLogsGetRequest22V2.

    Attributes:

        default_schema (Optional[str]):

        max_non_paged_response_size (int):

        ecl_query_application_url (Optional[str]):

        ecl_query_data_repository_url (Optional[str]):

    """

    default_schema: Optional[str] = field(
        default=None, metadata={"alias": "defaultSchema"}
    )

    max_non_paged_response_size: int = field(
        metadata={"alias": "maxNonPagedResponseSize"}
    )

    ecl_query_application_url: Optional[str] = field(
        default=None, metadata={"alias": "eclQueryApplicationURL"}
    )

    ecl_query_data_repository_url: Optional[str] = field(
        default=None, metadata={"alias": "eclQueryDataRepositoryURL"}
    )


@dataclass(kw_only=True)
class SystemEnhancedCallLogsSchemaInstanceGetListResponse(OCIDataResponse):
    """Response to SystemEnhancedCallLogsSchemaInstanceGetListRequest.
      Contains a table with column headings: \"Instance Name\", \"Actual Users\", \"Potential Users\".

    Attributes:

        schema_instance_usage_table (OCITable):

    """

    schema_instance_usage_table: OCITable = field(
        metadata={"alias": "schemaInstanceUsageTable"}
    )


@dataclass(kw_only=True)
class SystemEnterpriseTrunkGetResponse(OCIDataResponse):
    """Response to SystemEnterpriseTrunkGetRequest.

    Attributes:

        enable_holdover_of_highwater_call_counts (bool):

        holdover_period (str):

        time_zone_offset_minutes (str):

    """

    enable_holdover_of_highwater_call_counts: bool = field(
        metadata={"alias": "enableHoldoverOfHighwaterCallCounts"}
    )

    holdover_period: str = field(metadata={"alias": "holdoverPeriod"})

    time_zone_offset_minutes: str = field(metadata={"alias": "timeZoneOffsetMinutes"})


@dataclass(kw_only=True)
class SystemExecutiveGetResponse24(OCIDataResponse):
    """Response to SystemExecutiveGetRequest.

    Attributes:

        treat_virtual_on_net_calls_as_internal (bool):

        consider_executive_on_hook_for_assistant_calls (bool):

    """

    treat_virtual_on_net_calls_as_internal: bool = field(
        metadata={"alias": "treatVirtualOnNetCallsAsInternal"}
    )

    consider_executive_on_hook_for_assistant_calls: bool = field(
        metadata={"alias": "considerExecutiveOnHookForAssistantCalls"}
    )


@dataclass(kw_only=True)
class SystemExpensiveCallNotificationGetResponse(OCIDataResponse):
    """Response to SystemExpensiveCallNotificationGetRequest.

    Attributes:

        enable_post_announcement_delay_timer (bool):

        post_announcement_delay_seconds (int):

    """

    enable_post_announcement_delay_timer: bool = field(
        metadata={"alias": "enablePostAnnouncementDelayTimer"}
    )

    post_announcement_delay_seconds: int = field(
        metadata={"alias": "postAnnouncementDelaySeconds"}
    )


@dataclass(kw_only=True)
class SystemExpensiveCallTypeGetListResponse16sp1(OCIDataResponse):
    """Response to SystemExpensiveCallTypeGetListRequest16sp1.
        The column headings are:
        \"Alternate Call Indicator\", \"Treatment Audio File\".

    Attributes:

        alternate_call_indicator_table (OCITable):

    """

    alternate_call_indicator_table: OCITable = field(
        metadata={"alias": "alternateCallIndicatorTable"}
    )


@dataclass(kw_only=True)
class SystemExtensionLengthGetResponse(OCIDataResponse):
    """Response to SystemExtensionLengthGetRequest.

    Attributes:

        min_extension_length (int):

        max_extension_length (int):

    """

    min_extension_length: int = field(metadata={"alias": "minExtensionLength"})

    max_extension_length: int = field(metadata={"alias": "maxExtensionLength"})


@dataclass(kw_only=True)
class SystemExternalAuthenticationGetACLListResponse(OCIDataResponse):
    """Response to SystemExternalAuthenticationGetACLListRequest. The table columns are:
        \"Net Address\" and \"Description\".

    Attributes:

        acl_table (OCITable):

    """

    acl_table: OCITable = field(metadata={"alias": "aclTable"})


@dataclass(kw_only=True)
class SystemExternalEmergencyRoutingParametersGetResponse13mp13(OCIDataResponse):
    """Response to SystemExternalEmergencyRoutingParametersGetRequest13mp13.
        Contains a list of system External Emergency Routing parameters.

    Attributes:

        service_uri (Optional[str]):

        default_emergency_number (Optional[str]):

        is_active (bool):

        supports_dnssrv (bool):

        connection_timeout_seconds (int):

    """

    service_uri: Optional[str] = field(default=None, metadata={"alias": "serviceURI"})

    default_emergency_number: Optional[str] = field(
        default=None, metadata={"alias": "defaultEmergencyNumber"}
    )

    is_active: bool = field(metadata={"alias": "isActive"})

    supports_dnssrv: bool = field(metadata={"alias": "supportsDNSSRV"})

    connection_timeout_seconds: int = field(
        metadata={"alias": "connectionTimeoutSeconds"}
    )


@dataclass(kw_only=True)
class SystemFaxMessagingGetResponse(OCIDataResponse):
    """Response to SystemFAXMessagingGetRequest.

        The following elements are only used in AS data mode:
           statusDurationHours
           statusAuditIntervalHours

    Attributes:

        status_duration_hours (int):

        status_audit_interval_hours (int):

        maximum_concurrent_faxes_per_user (int):

    """

    status_duration_hours: int = field(metadata={"alias": "statusDurationHours"})

    status_audit_interval_hours: int = field(
        metadata={"alias": "statusAuditIntervalHours"}
    )

    maximum_concurrent_faxes_per_user: int = field(
        metadata={"alias": "maximumConcurrentFaxesPerUser"}
    )


@dataclass(kw_only=True)
class SystemFeatureAccessCodeGetListResponse21(OCIDataResponse):
    """Response to the SystemFeatureAccessCodeGetListRequest21.

        In release 20 the \"Call Recording\" FAC name is changed to
        \"Call Recording - Start\".

    Attributes:

        feature_access_code (Optional[List[FeatureAccessCodeReadEntry]]):

    """

    feature_access_code: Optional[List[FeatureAccessCodeReadEntry]] = field(
        default=None, metadata={"alias": "featureAccessCode"}
    )


@dataclass(kw_only=True)
class SystemFileGetContentResponse(OCIDataResponse):
    """Response to a SystemFileGetContentRequest. The fileContent length returned is limited to 128KBytes.

    Attributes:

        file_content (int):

    """

    file_content: int = field(metadata={"alias": "fileContent"})


@dataclass(kw_only=True)
class SystemFileRepositoryDeviceGetListResponse(OCIDataResponse):
    """Response to SystemFileRepositoryDeviceGetListRequest.
        Contains a table with column headings : \"Name\",\"Protocol\", \"Root Directory\", \"Extended File Capture Support\" in a row for each file repository.

    Attributes:

        file_repository_table (OCITable):

    """

    file_repository_table: OCITable = field(metadata={"alias": "fileRepositoryTable"})


@dataclass(kw_only=True)
class SystemFileRepositoryDeviceGetResponse22(OCIDataResponse):
    """Response to SystemFileRepositoryDeviceGetRequest22.

    Attributes:

        root_directory (Optional[str]):

        port (Optional[int]):

        protocol_web_dav (Optional[FileRepositoryProtocolWebDAV20]):

        protocol_ftp (Optional[FileRepositoryProtocolFTP16]):

        protocol_sftp (Optional[FileRepositoryProtocolFTP16]):

        protocol_ftps (Optional[FileRepositoryProtocolFTP16]):

    """

    root_directory: Optional[str] = field(
        default=None, metadata={"alias": "rootDirectory"}
    )

    port: Optional[int] = field(default=None, metadata={"alias": "port"})

    protocol_web_dav: Optional[FileRepositoryProtocolWebDAV20] = field(
        default=None, metadata={"alias": "protocolWebDAV"}
    )

    protocol_ftp: Optional[FileRepositoryProtocolFTP16] = field(
        default=None, metadata={"alias": "protocolFTP"}
    )

    protocol_sftp: Optional[FileRepositoryProtocolFTP16] = field(
        default=None, metadata={"alias": "protocolSFTP"}
    )

    protocol_ftps: Optional[FileRepositoryProtocolFTP16] = field(
        default=None, metadata={"alias": "protocolFTPS"}
    )


@dataclass(kw_only=True)
class SystemFileRepositoryDeviceUserGetListResponse(OCIDataResponse):
    """Response to SystemFileRepositoryDeviceUserGetListRequest.
        Contains a table with column headings : \"User Name\",\"Allow Get\",\"Allow Delete\",\"Allow Put\" in a row for each file repository user.

    Attributes:

        file_repository_user_table (OCITable):

    """

    file_repository_user_table: OCITable = field(
        metadata={"alias": "fileRepositoryUserTable"}
    )


@dataclass(kw_only=True)
class SystemFileRepositoryDeviceUserGetResponse(OCIDataResponse):
    """Response to SystemFileRepositoryDeviceUserGetRequest.

    Attributes:

        allow_put (bool):

        allow_delete (bool):

        allow_get (bool):

    """

    allow_put: bool = field(metadata={"alias": "allowPut"})

    allow_delete: bool = field(metadata={"alias": "allowDelete"})

    allow_get: bool = field(metadata={"alias": "allowGet"})


@dataclass(kw_only=True)
class SystemGETSAvpCodeMapGetListResponse(OCIDataResponse):
    """Response to SystemGETSAvpCodeMapGetListRequest.
        The table columns are: \"AVP Code\" and \"Vendor ID\".

    Attributes:

        avp_code_table (OCITable):

    """

    avp_code_table: OCITable = field(metadata={"alias": "avpCodeTable"})


@dataclass(kw_only=True)
class SystemGETSGetResponse22(OCIDataResponse):
    """Response to SystemGETSGetRequest22.

    Attributes:

        enabled (bool):

        enable_require_resource_priority (bool):

        send_access_resource_priority (bool):

        call_identifier_mode (str):

        default_priority_avp (int):

        signaling_dscp (int):

        default_r_value (str):

        bypass_ro_release (bool):

        ignore_resource_priorities_when_gets_disabled (bool):

    """

    enabled: bool = field(metadata={"alias": "enabled"})

    enable_require_resource_priority: bool = field(
        metadata={"alias": "enableRequireResourcePriority"}
    )

    send_access_resource_priority: bool = field(
        metadata={"alias": "sendAccessResourcePriority"}
    )

    call_identifier_mode: str = field(metadata={"alias": "callIdentifierMode"})

    default_priority_avp: int = field(metadata={"alias": "defaultPriorityAVP"})

    signaling_dscp: int = field(metadata={"alias": "signalingDSCP"})

    default_r_value: str = field(metadata={"alias": "defaultRValue"})

    bypass_ro_release: bool = field(metadata={"alias": "bypassRoRelease"})

    ignore_resource_priorities_when_gets_disabled: bool = field(
        metadata={"alias": "ignoreResourcePrioritiesWhenGETSDisabled"}
    )


@dataclass(kw_only=True)
class SystemGETSNumberGetListResponse(OCIDataResponse):
    """Response to SystemGETSNumberGetListRequest.
        The table columns are: \"Number\", \"Type\" and \"Description\".

    Attributes:

        reserved_number_table (OCITable):

    """

    reserved_number_table: OCITable = field(metadata={"alias": "reservedNumberTable"})


@dataclass(kw_only=True)
class SystemGETSReservedFeatureAccessCodeGetListResponse(OCIDataResponse):
    """Response to SystemGETSReservedFeatureAccessCodeGetListRequest.
        The table columns are: \"Code\" and \"Description\".

    Attributes:

        reserved_code_table (OCITable):

    """

    reserved_code_table: OCITable = field(metadata={"alias": "reservedCodeTable"})


@dataclass(kw_only=True)
class SystemGETSResourcePriorityGetListResponse(OCIDataResponse):
    """Response to SystemGETSResourcePriorityGetListRequest.
        The table columns are: \"Priority Value\", \"Priority Level\" and \"Priority Class\".

    Attributes:

        resource_priority_table (OCITable):

    """

    resource_priority_table: OCITable = field(
        metadata={"alias": "resourcePriorityTable"}
    )


@dataclass(kw_only=True)
class SystemGETSSessionPriorityMapGetListResponse(OCIDataResponse):
    """Response to SystemGETSSessionPriorityMapGetListRequest.
        The table columns are: \"Priority Level\" and \"Session Priority Value\".

    Attributes:

        session_priority_table (OCITable):

    """

    session_priority_table: OCITable = field(metadata={"alias": "sessionPriorityTable"})


@dataclass(kw_only=True)
class SystemGeographicRedundancyPeerSipConnectionMonitoringGetResponse(OCIDataResponse):
    """Response to SystemGeographicRedundancyPeerSipConnectionMonitoringGetRequest.
        Contains a list of Peer SIP Connection Monitoring system parameters.

    Attributes:

        enabled (bool):

        heartbeat_interval (int):

        heartbeat_timeout (int):

    """

    enabled: bool = field(metadata={"alias": "enabled"})

    heartbeat_interval: int = field(metadata={"alias": "heartbeatInterval"})

    heartbeat_timeout: int = field(metadata={"alias": "heartbeatTimeout"})


@dataclass(kw_only=True)
class SystemGeographicRedundancyProxyGetResponse(OCIDataResponse):
    """Response to SystemGeographicRedundancyProxyGetRequest.
        Contains a list of Geographic Redundancy Proxy system parameters.

    Attributes:

        enabled (bool):

    """

    enabled: bool = field(metadata={"alias": "enabled"})


@dataclass(kw_only=True)
class SystemGeographicRedundancyUnreachableFromPrimaryGetUserListResponse22(
    OCIDataResponse
):
    """Response to SystemGeographicRedundancyUnreachableFromPrimaryGetUserListRequest22.
        The Unreachable From Primary User table column headings are: \"User ID\", \"Lineport\".
        The optional totalNumberOfUnreachableFromPrimaryUsers is returned only when the userListSizeLimit is set in the request and
        if the total number of unreachable from primary users is greater than the value of userListSizeLimit.

    Attributes:

        unreachable_from_primary_user_table (OCITable):

        total_number_of_unreachable_from_primary_users (Optional[int]):

    """

    unreachable_from_primary_user_table: OCITable = field(
        metadata={"alias": "unreachableFromPrimaryUserTable"}
    )

    total_number_of_unreachable_from_primary_users: Optional[int] = field(
        default=None, metadata={"alias": "totalNumberOfUnreachableFromPrimaryUsers"}
    )


@dataclass(kw_only=True)
class SystemGetAvailableLeafDeviceListResponse22(OCIDataResponse):
    """Response to SystemGetAvailableLeafDeviceListRequest22.

    Attributes:

        leaf_device_key (Optional[List[AccessDeviceKey]]):

        support_links (Optional[List[str]]):

    """

    leaf_device_key: Optional[List[AccessDeviceKey]] = field(
        default=None, metadata={"alias": "leafDeviceKey"}
    )

    support_links: Optional[List[str]] = field(
        default=None, metadata={"alias": "supportLinks"}
    )


@dataclass(kw_only=True)
class SystemGetAvailableTreeDeviceListResponse(OCIDataResponse):
    """Response to SystemGetAvailableTreeDeviceListRequest.

    Attributes:

        tree_device_info (Optional[List[TreeDeviceInfo]]):

    """

    tree_device_info: Optional[List[TreeDeviceInfo]] = field(
        default=None, metadata={"alias": "treeDeviceInfo"}
    )


@dataclass(kw_only=True)
class SystemGetRegistrationContactListResponse21sp1(OCIDataResponse):
    """Response to SystemGetRegistrationContactListRequest. The table columns are: \"Service Provider Id\", \"Group Id\", \"User Id\", \"Line/Port\",
        \"Endpoint Type\", \"Order\", \"URI\", \"Expiration\", \"Contact\", \"Device Level\", \"Device Name\", \"Public Net Address\",
        \"Public Port\", \"Private Net Address\", \"Private Port\", \"User Agent\", \"Reseller Id\", \"Path Header\".
        The Endpoint Type column contains one of the enumerated RegistrationEndpointType21sp1 values.
        The value Mobility in Endpoint Type column is only applicable in AS data mode.
        The following columns are only returned in AS data mode:
          \"Reseller Id\"

    Attributes:

        registration_table (OCITable):

    """

    registration_table: OCITable = field(metadata={"alias": "registrationTable"})


@dataclass(kw_only=True)
class SystemGroupNightForwardingGetResponse(OCIDataResponse):
    """Response to SystemGroupNightForwardingGetRequest.

    Attributes:

        night_forward_inter_group_calls_within_enterprise (bool):

    """

    night_forward_inter_group_calls_within_enterprise: bool = field(
        metadata={"alias": "nightForwardInterGroupCallsWithinEnterprise"}
    )


@dataclass(kw_only=True)
class SystemHPBXAlternateCarrierSelectionGetCarrierListResponse(OCIDataResponse):
    """Response to the SystemHPBXAlternateCarrierSelectionGetCarrierListRequest.
        Contains a table with column headings:
         \"Carrier Name\", \"Carrier Prefix\", \"Carrier Domain\", \"Carrier Type\"
        The possible values for Carrier Type are \"Local And Distant\" and \"Distant\".

    Attributes:

        hpbx_alternate_carriers_table (OCITable):

    """

    hpbx_alternate_carriers_table: OCITable = field(
        metadata={"alias": "HPBXAlternateCarriersTable"}
    )


@dataclass(kw_only=True)
class SystemHPBXMobileTerminationGetResponse(OCIDataResponse):
    """Response to the SystemHPBXMobileTerminationGetRequest.
        Contains the hPBX mobile termination related configuration parameters.

    Attributes:

        routing_prefix (Optional[str]):

    """

    routing_prefix: Optional[str] = field(
        default=None, metadata={"alias": "routingPrefix"}
    )


@dataclass(kw_only=True)
class SystemHomeNetworkGetListResponse(OCIDataResponse):
    """Response to the SystemHomeNetworkGetListRequest.

    Attributes:

        msc_address (Optional[List[str]]):

    """

    msc_address: Optional[List[str]] = field(
        default=None, metadata={"alias": "mscAddress"}
    )


@dataclass(kw_only=True)
class SystemHuntGroupGetResponse21(OCIDataResponse):
    """Response to SystemHuntGroupGetRequest21.

    Attributes:

        remove_hunt_group_name_from_clid (bool):

        uniform_call_distribution_policy_scope (str):

        allow_agent_device_initiated_forward (bool):

    """

    remove_hunt_group_name_from_clid: bool = field(
        metadata={"alias": "removeHuntGroupNameFromCLID"}
    )

    uniform_call_distribution_policy_scope: str = field(
        metadata={"alias": "uniformCallDistributionPolicyScope"}
    )

    allow_agent_device_initiated_forward: bool = field(
        metadata={"alias": "allowAgentDeviceInitiatedForward"}
    )


@dataclass(kw_only=True)
class SystemInCallServiceActivationGetResponse17(OCIDataResponse):
    """Response to SystemInCallServiceActivationGetRequest17.

    Attributes:

        default_flash_activation_digits (str):

        default_call_transfer_activation_digits (str):

    """

    default_flash_activation_digits: str = field(
        metadata={"alias": "defaultFlashActivationDigits"}
    )

    default_call_transfer_activation_digits: str = field(
        metadata={"alias": "defaultCallTransferActivationDigits"}
    )


@dataclass(kw_only=True)
class SystemIntegratedIMPGetResponse25(OCIDataResponse):
    """Response to the SystemIntegratedIMPGetRequest25.
        The response contains the system Integrated IMP service attributes.

        The following elements are only used in AS data mode:
          boshURL
          propagateImpErrorDetails

    Attributes:

        service_domain (Optional[str]):

        service_port (Optional[int]):

        add_service_provider_in_imp_user_id (bool):

        bosh_url (Optional[str]):

        allow_imp_password_retrieval (bool):

        propagate_imp_error_details (bool):

    """

    service_domain: Optional[str] = field(
        default=None, metadata={"alias": "serviceDomain"}
    )

    service_port: Optional[int] = field(default=None, metadata={"alias": "servicePort"})

    add_service_provider_in_imp_user_id: bool = field(
        metadata={"alias": "addServiceProviderInIMPUserId"}
    )

    bosh_url: Optional[str] = field(default=None, metadata={"alias": "boshURL"})

    allow_imp_password_retrieval: bool = field(
        metadata={"alias": "allowImpPasswordRetrieval"}
    )

    propagate_imp_error_details: bool = field(
        metadata={"alias": "propagateImpErrorDetails"}
    )


@dataclass(kw_only=True)
class SystemInterceptUserGetDnListResponse(OCIDataResponse):
    """Response to SystemInterceptUserGetDnListRequest.
          The Intercept User DN List.

    Attributes:

        intercept_user_list (Optional[List[InterceptDNListEntry]]):

    """

    intercept_user_list: Optional[List[InterceptDNListEntry]] = field(
        default=None, metadata={"alias": "interceptUserList"}
    )


@dataclass(kw_only=True)
class SystemInterceptUserGetResponse(OCIDataResponse):
    """Response to the SystemInterceptUserGetRequest.

    Attributes:

        emergency_and_repair_intercept (bool):

    """

    emergency_and_repair_intercept: bool = field(
        metadata={"alias": "emergencyAndRepairIntercept"}
    )


@dataclass(kw_only=True)
class SystemInventoryReportGetResponse(OCIDataResponse):
    """Response to SystemInventoryReportGetRequest.

    Attributes:

        default_from_address (str):

    """

    default_from_address: str = field(metadata={"alias": "defaultFromAddress"})


@dataclass(kw_only=True)
class SystemLanguageGetListResponse(OCIDataResponse):
    """Response to SystemLanguageGetListRequest.
        The language table column headings are: \"Language\", \"Locale\" and \"Encoding\".

    Attributes:

        default_language (str):

        language_table (OCITable):

    """

    default_language: str = field(metadata={"alias": "defaultLanguage"})

    language_table: OCITable = field(metadata={"alias": "languageTable"})


@dataclass(kw_only=True)
class SystemLegacyAutomaticCallbackGetLineTypeListResponse(OCIDataResponse):
    """Response to SystemLegacyAutomaticCallbackGetLineTypeListRequest. Returns a 3 column
        table with column headings: \"Line Type\", \"Match\" and \"No Match\". The possible values
        for the \"Match\" and \"No Match\" columns are \"Accept\" and \"Deny\".

    Attributes:

        line_type_table (OCITable):

    """

    line_type_table: OCITable = field(metadata={"alias": "lineTypeTable"})


@dataclass(kw_only=True)
class SystemLegacyAutomaticCallbackGetResponse(OCIDataResponse):
    """Response to SystemLegacyAutomaticCallbackGetRequest.

    Attributes:

        max_monitors_per_originator (int):

        max_monitors_per_terminator (int):

        t2_minutes (int):

        t4_seconds (int):

        t5_seconds (int):

        t6_minutes (int):

        t7_minutes (int):

        t8_seconds (int):

        t_ring_seconds (int):

        t10_o_minutes (int):

        t10_t_minutes (int):

    """

    max_monitors_per_originator: int = field(
        metadata={"alias": "maxMonitorsPerOriginator"}
    )

    max_monitors_per_terminator: int = field(
        metadata={"alias": "maxMonitorsPerTerminator"}
    )

    t2_minutes: int = field(metadata={"alias": "t2Minutes"})

    t4_seconds: int = field(metadata={"alias": "t4Seconds"})

    t5_seconds: int = field(metadata={"alias": "t5Seconds"})

    t6_minutes: int = field(metadata={"alias": "t6Minutes"})

    t7_minutes: int = field(metadata={"alias": "t7Minutes"})

    t8_seconds: int = field(metadata={"alias": "t8Seconds"})

    t_ring_seconds: int = field(metadata={"alias": "tRingSeconds"})

    t10_o_minutes: int = field(metadata={"alias": "t10OMinutes"})

    t10_t_minutes: int = field(metadata={"alias": "t10TMinutes"})


@dataclass(kw_only=True)
class SystemLicensingGetResponse21sp1(OCIDataResponse):
    """Response to SystemLicensingGetRequest21sp1. The subscriber license table columns are: \"Name\", \"Licensed\", \"Used\" and \"Available\".
        The group service license table columns are: \"Name\", \"Licensed\", \"Used\" and \"Available\".
        The virtual service license table columns are: \"Name\", \"Licensed\", \"Used\" and \"Available\".
        The user service license table columns are: \"Name\", \"Licensed\", \"Used\", \"Available\", \"Used By Hosted Users\", \"Used By Trunk Users\", and \"Expiration Date\".
        The system param license table columns are: \"Name\", \"Licensed\", \"Used\", Available\".

    Attributes:

        license_strictness (str):

        group_userlimit (int):

        expiration_date (Optional[str]):

        host_id (Optional[List[str]]):

        license_name (Optional[List[str]]):

        number_of_trunk_users (int):

        system_id (Optional[str]):

        subscriber_license_table (OCITable):

        group_service_license_table (OCITable):

        virtual_service_license_table (OCITable):

        user_service_license_table (OCITable):

        system_param_license_table (OCITable):

    """

    license_strictness: str = field(metadata={"alias": "licenseStrictness"})

    group_userlimit: int = field(metadata={"alias": "groupUserlimit"})

    expiration_date: Optional[str] = field(
        default=None, metadata={"alias": "expirationDate"}
    )

    host_id: Optional[List[str]] = field(default=None, metadata={"alias": "hostId"})

    license_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "licenseName"}
    )

    number_of_trunk_users: int = field(metadata={"alias": "numberOfTrunkUsers"})

    system_id: Optional[str] = field(default=None, metadata={"alias": "systemId"})

    subscriber_license_table: OCITable = field(
        metadata={"alias": "subscriberLicenseTable"}
    )

    group_service_license_table: OCITable = field(
        metadata={"alias": "groupServiceLicenseTable"}
    )

    virtual_service_license_table: OCITable = field(
        metadata={"alias": "virtualServiceLicenseTable"}
    )

    user_service_license_table: OCITable = field(
        metadata={"alias": "userServiceLicenseTable"}
    )

    system_param_license_table: OCITable = field(
        metadata={"alias": "systemParamLicenseTable"}
    )


@dataclass(kw_only=True)
class SystemLicensingGetSystemLicenseListResponse22V2(OCIDataResponse):
    """Response to SystemLicensingGetSystemLicenseListRequest22V2.

    Attributes:

        license (Optional[List[str]]):

    """

    license: Optional[List[str]] = field(default=None, metadata={"alias": "license"})


@dataclass(kw_only=True)
class SystemLocationBasedCallingRestrictionsGetResponse24(OCIDataResponse):
    """Response to SystemLocationBasedCallingRestrictionsGetRequest24.

    Attributes:

        physical_location_indicator (str):

        enforce_msc_validation (bool):

        enable_office_zone_announcement (bool):

        enhance_office_zone (bool):

        enable_mcc_mnc_based_location (bool):

        mcc_mnc_roaming_network_translation_index (Optional[str]):

        default_mcc_mnc_based_location (str):

    """

    physical_location_indicator: str = field(
        metadata={"alias": "physicalLocationIndicator"}
    )

    enforce_msc_validation: bool = field(metadata={"alias": "enforceMscValidation"})

    enable_office_zone_announcement: bool = field(
        metadata={"alias": "enableOfficeZoneAnnouncement"}
    )

    enhance_office_zone: bool = field(metadata={"alias": "enhanceOfficeZone"})

    enable_mcc_mnc_based_location: bool = field(
        metadata={"alias": "enableMccMncBasedLocation"}
    )

    mcc_mnc_roaming_network_translation_index: Optional[str] = field(
        default=None, metadata={"alias": "mccMncRoamingNetworkTranslationIndex"}
    )

    default_mcc_mnc_based_location: str = field(
        metadata={"alias": "defaultMccMncBasedLocation"}
    )


@dataclass(kw_only=True)
class SystemMGCPDeviceTypeGetListResponse(OCIDataResponse):
    """Response to SystemMGCPDeviceTypeGetListRequest.
        Contains a table of identity/ device profile types configured in the system.
        The column headings are: \"Device Type\", \"Profile\", \"Is Obsolete\".

    Attributes:

        device_type_table (OCITable):

    """

    device_type_table: OCITable = field(metadata={"alias": "deviceTypeTable"})


@dataclass(kw_only=True)
class SystemMGCPDeviceTypeGetResponse(OCIDataResponse):
    """Response to SystemMGCPDeviceTypeGetRequest.

    Attributes:

        is_obsolete (bool):

        profile (str):

        number_of_ports (UnboundedPositiveInt):

        protocol_choice (List[str]):

    """

    is_obsolete: bool = field(metadata={"alias": "isObsolete"})

    profile: str = field(metadata={"alias": "profile"})

    number_of_ports: UnboundedPositiveInt = field(metadata={"alias": "numberOfPorts"})

    protocol_choice: List[str] = field(metadata={"alias": "protocolChoice"})


@dataclass(kw_only=True)
class SystemMailParametersGetResponse22(OCIDataResponse):
    """Response to SystemMailParametersGetListRequest22.
        Contains a list of system Mail parameters.

    Attributes:

        primary_server_net_address (Optional[str]):

        secondary_server_net_address (Optional[str]):

        default_from_address (str):

        default_subject (Optional[str]):

        support_dnssrv_for_mail_server_access (bool):

        secure_mode (str):

        port (Optional[int]):

    """

    primary_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "primaryServerNetAddress"}
    )

    secondary_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "secondaryServerNetAddress"}
    )

    default_from_address: str = field(metadata={"alias": "defaultFromAddress"})

    default_subject: Optional[str] = field(
        default=None, metadata={"alias": "defaultSubject"}
    )

    support_dnssrv_for_mail_server_access: bool = field(
        metadata={"alias": "supportDNSSRVForMailServerAccess"}
    )

    secure_mode: str = field(metadata={"alias": "secureMode"})

    port: Optional[int] = field(default=None, metadata={"alias": "port"})


@dataclass(kw_only=True)
class SystemMaliciousCallTraceGetResponse(OCIDataResponse):
    """Response to the SystemMaliciousCallTraceGetRequest.
        The response contains the Malicious Call Trace system parameters and the list of users
        that use the Malicious Call Trace feature.

        The column headings are \"Service Provider Id\",
        \"Group Id\", \"User Id\", \"Last Name\", \"First Name\", \"Phone Number\", \"Trace Type\", \"Status\",
        \"Hiragana Last Name\" and \"Hiragana First Name\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        play_mct_warning_announcement (bool):

        user_table (OCITable):

    """

    play_mct_warning_announcement: bool = field(
        metadata={"alias": "playMCTWarningAnnouncement"}
    )

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class SystemMccMncHomeNetworkGetListResponse(OCIDataResponse):
    """Response to SystemMccMncHomeNetworkGetListRequest.
        The table column is: \"Home Networks\".

    Attributes:

        home_networks_table (OCITable):

    """

    home_networks_table: OCITable = field(metadata={"alias": "homeNetworksTable"})


@dataclass(kw_only=True)
class SystemMediaGetListResponse(OCIDataResponse):
    """Response to SystemMediaGetListRequest. The column headings are
        \"Media Name\", \"Codec\", \"Media Type\", \"Bandwidth Enforcement Type\" and \"Bandwidth\".

    Attributes:

        media_table (OCITable):

    """

    media_table: OCITable = field(metadata={"alias": "mediaTable"})


@dataclass(kw_only=True)
class SystemMediaGroupCodecGetListResponse(OCIDataResponse):
    """Response to SystemMediaGroupCodecGetListRequest.
        Contains a table of media assigned to the media group.
        The column headings are: \"Codec Name\", \"Codec Weight\".

    Attributes:

        codec_table (OCITable):

    """

    codec_table: OCITable = field(metadata={"alias": "codecTable"})


@dataclass(kw_only=True)
class SystemMediaGroupGetListResponse(OCIDataResponse):
    """Response to SystemMediaGroupGetListRequest.
        The response includes an array of media groups defined in the system.

    Attributes:

        name (Optional[List[str]]):

    """

    name: Optional[List[str]] = field(default=None, metadata={"alias": "name"})


@dataclass(kw_only=True)
class SystemMediaGroupUsageListResponse(OCIDataResponse):
    """Response to SystemMediaGroupUsageListRequest.
        Contains a table of SAC groups associated with the media group.
        The column headings are: \"SAC Group Name\", \"Organization Id\", \"Organization Type\", and \"Group Id\".
        The \"Group Id\" will be empty for enterprise SAC groups.

    Attributes:

        usage_table (OCITable):

    """

    usage_table: OCITable = field(metadata={"alias": "usageTable"})


@dataclass(kw_only=True)
class SystemMediaServerGetListResponse(OCIDataResponse):
    """Response to SystemMediaServerGetListRequest. The Media Server table column
        headings are: \"Net Address\", \"Port\", \"Transport\", \"Description\".

    Attributes:

        media_server_table (OCITable):

    """

    media_server_table: OCITable = field(metadata={"alias": "mediaServerTable"})


@dataclass(kw_only=True)
class SystemMediaServerParametersGetResponse(OCIDataResponse):
    """Response to SystemMediaServerParametersGetListRequest.
        Contains a list of system Media Server parameters.

    Attributes:

        media_server_response_timer_milliseconds (int):

        media_server_selection_route_timer_milliseconds (int):

        use_static_media_server_device (bool):

    """

    media_server_response_timer_milliseconds: int = field(
        metadata={"alias": "mediaServerResponseTimerMilliseconds"}
    )

    media_server_selection_route_timer_milliseconds: int = field(
        metadata={"alias": "mediaServerSelectionRouteTimerMilliseconds"}
    )

    use_static_media_server_device: bool = field(
        metadata={"alias": "useStaticMediaServerDevice"}
    )


@dataclass(kw_only=True)
class SystemMediaSetGetListResponse(OCIDataResponse):
    """Response to SystemMediaSetGetRequest.

    Attributes:

        media_set_name (Optional[List[str]]):

    """

    media_set_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "mediaSetName"}
    )


@dataclass(kw_only=True)
class SystemMediaSetGetResponse(OCIDataResponse):
    """Response to SystemMediaSetGetRequest.
        Returns a list of media names in the set.

    Attributes:

        media_name (List[str]):

    """

    media_name: List[str] = field(metadata={"alias": "mediaName"})


@dataclass(kw_only=True)
class SystemMeetMeConferencingGetResponse19(OCIDataResponse):
    """Response to SystemMeetMeConferencingGetRequest19.

    Attributes:

        conference_id_length (int):

        moderator_pin_length (int):

        enable_conference_end_date_restriction (bool):

        conference_end_date_restriction_months (int):

        delete_expired_conferences_after_hold_period (bool):

        expired_conference_hold_period_days (int):

        recording_web_app_url (Optional[str]):

        recording_file_format (str):

        terminate_after_grace_period (bool):

        conference_grace_period_minutes (MeetMeConferencingConferenceDuration):

        conference_participant_early_entry_minutes (int):

        enable_conference_expiry_notification (bool):

        enable_active_conference_notification (bool):

        conference_from_address (str):

        conference_active_talker_refresh_interval_seconds (int):

    """

    conference_id_length: int = field(metadata={"alias": "conferenceIdLength"})

    moderator_pin_length: int = field(metadata={"alias": "moderatorPinLength"})

    enable_conference_end_date_restriction: bool = field(
        metadata={"alias": "enableConferenceEndDateRestriction"}
    )

    conference_end_date_restriction_months: int = field(
        metadata={"alias": "conferenceEndDateRestrictionMonths"}
    )

    delete_expired_conferences_after_hold_period: bool = field(
        metadata={"alias": "deleteExpiredConferencesAfterHoldPeriod"}
    )

    expired_conference_hold_period_days: int = field(
        metadata={"alias": "expiredConferenceHoldPeriodDays"}
    )

    recording_web_app_url: Optional[str] = field(
        default=None, metadata={"alias": "recordingWebAppURL"}
    )

    recording_file_format: str = field(metadata={"alias": "recordingFileFormat"})

    terminate_after_grace_period: bool = field(
        metadata={"alias": "terminateAfterGracePeriod"}
    )

    conference_grace_period_minutes: MeetMeConferencingConferenceDuration = field(
        metadata={"alias": "conferenceGracePeriodMinutes"}
    )

    conference_participant_early_entry_minutes: int = field(
        metadata={"alias": "conferenceParticipantEarlyEntryMinutes"}
    )

    enable_conference_expiry_notification: bool = field(
        metadata={"alias": "enableConferenceExpiryNotification"}
    )

    enable_active_conference_notification: bool = field(
        metadata={"alias": "enableActiveConferenceNotification"}
    )

    conference_from_address: str = field(metadata={"alias": "conferenceFromAddress"})

    conference_active_talker_refresh_interval_seconds: int = field(
        metadata={"alias": "conferenceActiveTalkerRefreshIntervalSeconds"}
    )


@dataclass(kw_only=True)
class SystemMigratedUsersGetListResponse22(OCIDataResponse):
    """Response to SystemMigratedUsersGetListRequest22.
        The optional totalNumberOfMigratedUsers is returned only when the userListSizeLimit is set in the request and
        if the total number of migrated users is greater than the value of userListSizeLimit.

    Attributes:

        user_id (Optional[List[str]]):

        total_number_of_migrated_users (Optional[int]):

    """

    user_id: Optional[List[str]] = field(default=None, metadata={"alias": "userId"})

    total_number_of_migrated_users: Optional[int] = field(
        default=None, metadata={"alias": "totalNumberOfMigratedUsers"}
    )


@dataclass(kw_only=True)
class SystemMultimediaPolicyGetResponse(OCIDataResponse):
    """Response to SystemMultimediaPolicyGetRequest

    Attributes:

        restrict_non_audio_video_media_types (bool):

    """

    restrict_non_audio_video_media_types: bool = field(
        metadata={"alias": "restrictNonAudioVideoMediaTypes"}
    )


@dataclass(kw_only=True)
class SystemMusicOnHoldGetResponse(OCIDataResponse):
    """Response to SystemMusicOnHoldGetRequest.

    Attributes:

        delay_milliseconds (int):

    """

    delay_milliseconds: int = field(metadata={"alias": "delayMilliseconds"})


@dataclass(kw_only=True)
class SystemNetworkAdministratorParametersGetResponse(OCIDataResponse):
    """Response to the SystemNetworkAdministratorParametersGetRequest.
        The response contains the network administrator settings for the system.

    Attributes:

        enabled (bool):

        cache_refresh_interval_in_minutes (int):

    """

    enabled: bool = field(metadata={"alias": "enabled"})

    cache_refresh_interval_in_minutes: int = field(
        metadata={"alias": "cacheRefreshIntervalInMinutes"}
    )


@dataclass(kw_only=True)
class SystemNetworkClassOfServiceGetAssignedServiceProviderListResponse(
    OCIDataResponse
):
    """Response to the
        SystemNetworkClassOfServiceGetAssignedServiceProviderListRequest.
        The response contains a table of all Service Providers that have
        the given Network Class of Service assigned. The column headings are
        \"Service Provider Id\", \"Service Provider Name\" and \"Is Enterprise\".

    Attributes:

        service_provider_table (OCITable):

    """

    service_provider_table: OCITable = field(metadata={"alias": "serviceProviderTable"})


@dataclass(kw_only=True)
class SystemNetworkClassOfServiceGetAssignedSystemVoicePortalListResponse(
    OCIDataResponse
):
    """Response to the
        SystemNetworkClassOfServiceGetAssignedSystemVoicePortalListRequest.
        The response contains a table of system voice portals that have
        the given Network Class of Service assigned. The column headings are
        \"System Voice Portal Id\" and \"Name\".

    Attributes:

        system_voice_portal_table (OCITable):

    """

    system_voice_portal_table: OCITable = field(
        metadata={"alias": "systemVoicePortalTable"}
    )


@dataclass(kw_only=True)
class SystemNetworkClassOfServiceGetCommunicationBarringProfileUsageListResponse(
    OCIDataResponse
):
    """Response to the SystemNetworkClassOfServiceGetCommunicationBarringProfileUsageListRequest.
        The response contains a table of all Network Classes of Service that
        contain the specific Communication Barring Profile. The column headings
        are \"Name\" and \"Description\"

    Attributes:

        network_class_of_service_table (OCITable):

    """

    network_class_of_service_table: OCITable = field(
        metadata={"alias": "networkClassOfServiceTable"}
    )


@dataclass(kw_only=True)
class SystemNetworkClassOfServiceGetListResponse(OCIDataResponse):
    """Response to the SystemNetworkClassOfServiceGetListRequest.
        The response contains a table of all Network Classes of Service
        in the system. The column headings are \"Name\" and \"Description\"

    Attributes:

        network_class_of_service_table (OCITable):

    """

    network_class_of_service_table: OCITable = field(
        metadata={"alias": "networkClassOfServiceTable"}
    )


@dataclass(kw_only=True)
class SystemNetworkClassOfServiceGetResponse19sp1(OCIDataResponse):
    """Response to the SystemNetworkClassOfServiceGetRequest19sp1.
        The response contains the Network Class of Service information.

    Attributes:

        description (Optional[str]):

        communication_barring_profile0 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        communication_barring_profile1 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        communication_barring_profile2 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        communication_barring_profile3 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        communication_barring_profile4 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        communication_barring_profile5 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        communication_barring_profile6 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        communication_barring_profile7 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        communication_barring_profile8 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        communication_barring_profile9 (Optional[NetworkClassOfServiceCommunicationBarringProfile]):

        network_translation_index (Optional[str]):

        call_processing_policy_profile_name (Optional[str]):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    communication_barring_profile0: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile0"})

    communication_barring_profile1: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile1"})

    communication_barring_profile2: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile2"})

    communication_barring_profile3: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile3"})

    communication_barring_profile4: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile4"})

    communication_barring_profile5: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile5"})

    communication_barring_profile6: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile6"})

    communication_barring_profile7: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile7"})

    communication_barring_profile8: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile8"})

    communication_barring_profile9: Optional[
        NetworkClassOfServiceCommunicationBarringProfile
    ] = field(default=None, metadata={"alias": "communicationBarringProfile9"})

    network_translation_index: Optional[str] = field(
        default=None, metadata={"alias": "networkTranslationIndex"}
    )

    call_processing_policy_profile_name: Optional[str] = field(
        default=None, metadata={"alias": "callProcessingPolicyProfileName"}
    )


@dataclass(kw_only=True)
class SystemNetworkDeviceMonitorParametersGetResponse(OCIDataResponse):
    """Response to SystemNetworkDeviceMonitorParametersGetListRequest.
        Contains a list of system Network Device Polling parameters.

    Attributes:

        polling_interval_minutes (int):

        failed_polling_interval_minutes (int):

    """

    polling_interval_minutes: int = field(metadata={"alias": "pollingIntervalMinutes"})

    failed_polling_interval_minutes: int = field(
        metadata={"alias": "failedPollingIntervalMinutes"}
    )


@dataclass(kw_only=True)
class SystemNetworkProgressionGetResponse(OCIDataResponse):
    """Response to SystemNetworkProgressionGetRequest.

    Attributes:

        is_active (bool):

        wait_period_seconds (int):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    wait_period_seconds: int = field(metadata={"alias": "waitPeriodSeconds"})


@dataclass(kw_only=True)
class SystemNetworkRoutingServerGetListResponse(OCIDataResponse):
    """Response to SystemNetworkRoutingServerGetListRequest. The routing Network Server table column
        headings are: \"Net Address\", \"Port\", \"Transport\", \"Poll\", \"OpState\", \"Description\".

    Attributes:

        network_routing_server_table (OCITable):

    """

    network_routing_server_table: OCITable = field(
        metadata={"alias": "networkRoutingServerTable"}
    )


@dataclass(kw_only=True)
class SystemNetworkServerSyncParametersGetResponse24V2(OCIDataResponse):
    """Response to SystemNetworkServerSyncParametersGetRequest24V2.
        Contains a list of system Network Server Sync parameters.
        The following elements are only used in AS data mode:
          syncTrunkGroups

    Attributes:

        enable_sync (bool):

        sync_line_ports (bool):

        sync_device_management_info (bool):

        sync_trunk_groups (bool):

        sync_connection_timeout_seconds (Optional[int]):

        sync_enterprise_numbers (bool):

    """

    enable_sync: bool = field(metadata={"alias": "enableSync"})

    sync_line_ports: bool = field(metadata={"alias": "syncLinePorts"})

    sync_device_management_info: bool = field(
        metadata={"alias": "syncDeviceManagementInfo"}
    )

    sync_trunk_groups: bool = field(metadata={"alias": "syncTrunkGroups"})

    sync_connection_timeout_seconds: Optional[int] = field(
        default=None, metadata={"alias": "syncConnectionTimeoutSeconds"}
    )

    sync_enterprise_numbers: bool = field(metadata={"alias": "syncEnterpriseNumbers"})


@dataclass(kw_only=True)
class SystemNetworkSynchingServerGetListResponse(OCIDataResponse):
    """Response to SystemNetworkSynchingServerGetListRequest. The Network Server table column
        headings are: \"Net Address\", \"Port\", \"Secure\", \"Description\", \"Order\".
        The following columns are only used in XS data mode and not returned in AS data mode:
          Order
        The following elements are only used in AS data mode and not returned in XS data mode:
          preferredNetworkServerNetAddress

    Attributes:

        preferred_network_server_net_address (Optional[str]):

        network_synching_server_table (OCITable):

    """

    preferred_network_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "preferredNetworkServerNetAddress"}
    )

    network_synching_server_table: OCITable = field(
        metadata={"alias": "networkSynchingServerTable"}
    )


@dataclass(kw_only=True)
class SystemNotificationOfReachabilityParametersGetResponse(OCIDataResponse):
    """Response to SystemNotificationOfReachabilityParametersGetRequest.
        Contains the system Notification of Reachability parameters.

    Attributes:

        enable_no_r (bool):

        always_send_third_party_v_mfor_unreachable (bool):

        disable_fa_cfor_third_party_voice_mail (bool):

    """

    enable_no_r: bool = field(metadata={"alias": "enableNoR"})

    always_send_third_party_v_mfor_unreachable: bool = field(
        metadata={"alias": "alwaysSendThirdPartyVMforUnreachable"}
    )

    disable_fa_cfor_third_party_voice_mail: bool = field(
        metadata={"alias": "disableFACforThirdPartyVoiceMail"}
    )


@dataclass(kw_only=True)
class SystemNumberActivationGetResponse21(OCIDataResponse):
    """Response to SystemNumberActivationGetRequest21.
        Contains the system number activation and enterprise trunk number range activation setting.

    Attributes:

        number_activation_mode (str):

        enable_enterprise_trunk_number_range_activation (bool):

    """

    number_activation_mode: str = field(metadata={"alias": "numberActivationMode"})

    enable_enterprise_trunk_number_range_activation: bool = field(
        metadata={"alias": "enableEnterpriseTrunkNumberRangeActivation"}
    )


@dataclass(kw_only=True)
class SystemNumberFormattingParametersGetResponse(OCIDataResponse):
    """Response to SystemNumberFormattingParametersGetRequest.
        Contains the system number formatting parameter.

    Attributes:

        apply_formatting_to_e164_numbers (bool):

    """

    apply_formatting_to_e164_numbers: bool = field(
        metadata={"alias": "applyFormattingToE164Numbers"}
    )


@dataclass(kw_only=True)
class SystemNumberPortabilityQueryDigitPatternGetListResponse(OCIDataResponse):
    """Response to the SystemNumberPortabilityQueryDigitPatternGetListRequest.
        Contains a table with column headings:
        \"Digit Pattern\", \"Status\".

    Attributes:

        status_digit_pattern_table (OCITable):

    """

    status_digit_pattern_table: OCITable = field(
        metadata={"alias": "statusDigitPatternTable"}
    )


@dataclass(kw_only=True)
class SystemNumberPortabilityQueryDigitPatternGetResponse(OCIDataResponse):
    """Response to the SystemNumberPortabilityQueryDigitPatternGetRequest.

    Attributes:

        status (str):

    """

    status: str = field(metadata={"alias": "status"})


@dataclass(kw_only=True)
class SystemNumberPortabilityQueryGetResponse(OCIDataResponse):
    """Response to the SystemNumberPortabilityQueryGetRequest.
        Returns system Number Portability Query Parameters.

    Attributes:

        continue_call_as_dialed_on_timeout_or_error (bool):

        number_portability_name_lookup_timeout_milliseconds (int):

    """

    continue_call_as_dialed_on_timeout_or_error: bool = field(
        metadata={"alias": "continueCallAsDialedOnTimeoutOrError"}
    )

    number_portability_name_lookup_timeout_milliseconds: int = field(
        metadata={"alias": "numberPortabilityNameLookupTimeoutMilliseconds"}
    )


@dataclass(kw_only=True)
class SystemNumberPortabilityQueryStatusGetListResponse(OCIDataResponse):
    """Response to the SystemNumberPortabilityQueryStatusGetListRequest.
        Contains a table with column headings:
        \"Status and Treatment File Name\".

    Attributes:

        status_table (OCITable):

    """

    status_table: OCITable = field(metadata={"alias": "statusTable"})


@dataclass(kw_only=True)
class SystemNumberPortabilityQueryStatusGetResponse(OCIDataResponse):
    """Response to the SystemNumberPortabilityQueryStatusGetRequest.

    Attributes:

        treatment_file_name (Optional[str]):

    """

    treatment_file_name: Optional[str] = field(
        default=None, metadata={"alias": "treatmentFileName"}
    )


@dataclass(kw_only=True)
class SystemOCICallControlApplicationGetACLListResponse(OCIDataResponse):
    """Response to SystemOCICallControlApplicationGetACLListRequest. The table columns are:
        \"Net Address\" and \"Description\".

    Attributes:

        acl_table (OCITable):

    """

    acl_table: OCITable = field(metadata={"alias": "aclTable"})


@dataclass(kw_only=True)
class SystemOCICallControlApplicationGetListResponse(OCIDataResponse):
    """Response to SystemOCICallControlApplicationGetListRequest. The table columns are:
        \"Application Id\", \"Enabled System Wide\", \"Description\" \"Notification Timeout Seconds\", \"Max Event Channels Per Set\"
        and \"Channel Set Grace Period Seconds\".

    Attributes:

        app_table (OCITable):

    """

    app_table: OCITable = field(metadata={"alias": "appTable"})


@dataclass(kw_only=True)
class SystemOCICallControlGetACLListResponse(OCIDataResponse):
    """Response to SystemOCICallControlGetACLListRequest. The table columns are:
        \"Net Address\" and \"Description\".

    Attributes:

        acl_table (OCITable):

    """

    acl_table: OCITable = field(metadata={"alias": "aclTable"})


@dataclass(kw_only=True)
class SystemOCIGetACLListResponse(OCIDataResponse):
    """Response to SystemOCIGetACLListRequest.
        Returns a 2 coulmn table with column headings:
          \"Net Address\" and \"Description\".

    Attributes:

        acl_table (OCITable):

    """

    acl_table: OCITable = field(metadata={"alias": "aclTable"})


@dataclass(kw_only=True)
class SystemOCIReportingGetACLListResponse(OCIDataResponse):
    """Response to SystemOCIReportingACLListGetRequest.
        Contains a table with one row per access control list entry.
        The table columns are \"Net Address\", \"Description\" and \"Restrict Messages\".

    Attributes:

        oci_reporting_acl_table (OCITable):

    """

    oci_reporting_acl_table: OCITable = field(
        metadata={"alias": "ociReportingACLTable"}
    )


@dataclass(kw_only=True)
class SystemOCIReportingGetMessageNameListResponse(OCIDataResponse):
    """Response to SystemOCIReportingGetMessageNameListRequest.

    Attributes:

        message_name_starts_with (Optional[List[str]]):

    """

    message_name_starts_with: Optional[List[str]] = field(
        default=None, metadata={"alias": "messageNameStartsWith"}
    )


@dataclass(kw_only=True)
class SystemOCIReportingParametersGetResponse22(OCIDataResponse):
    """Response to SystemOCIReportingParametersGetRequest22.
        Contains a list of system OCI Reporting parameters.

    Attributes:

        server_port (int):

        enable_connection_ping (bool):

        connection_ping_interval_seconds (int):

        alter_passwords (bool):

        enable_public_identity_reporting (bool):

        secure (bool):

    """

    server_port: int = field(metadata={"alias": "serverPort"})

    enable_connection_ping: bool = field(metadata={"alias": "enableConnectionPing"})

    connection_ping_interval_seconds: int = field(
        metadata={"alias": "connectionPingIntervalSeconds"}
    )

    alter_passwords: bool = field(metadata={"alias": "alterPasswords"})

    enable_public_identity_reporting: bool = field(
        metadata={"alias": "enablePublicIdentityReporting"}
    )

    secure: bool = field(metadata={"alias": "secure"})


@dataclass(kw_only=True)
class SystemOfficeZoneGetAssignedServiceProviderListResponse(OCIDataResponse):
    """Response to the
        SystemOfficeZoneGetAssignedServiceProviderListRequest.
        The response contains a table of all Service Providers that have the given Office Zone assigned. The column headings are
        \"Service Provider Id\", \"Service Provider Name\" and \"Is Enterprise\".

    Attributes:

        service_provider_table (OCITable):

    """

    service_provider_table: OCITable = field(metadata={"alias": "serviceProviderTable"})


@dataclass(kw_only=True)
class SystemOfficeZoneGetListResponse(OCIDataResponse):
    """Response to the SystemOfficeZoneGetListRequest.
        The response contains a table of all Office Zones
        in the system. The column headings are \"Name\" and \"Description\"

    Attributes:

        office_zone_table (OCITable):

    """

    office_zone_table: OCITable = field(metadata={"alias": "officeZoneTable"})


@dataclass(kw_only=True)
class SystemOfficeZoneGetResponse(OCIDataResponse):
    """Response to the SystemOfficeZoneGetRequest.
        The response contains the Office Zone information.

    Attributes:

        description (Optional[str]):

        zone_name (List[str]):

        primary_zone_name (str):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    zone_name: List[str] = field(metadata={"alias": "zoneName"})

    primary_zone_name: str = field(metadata={"alias": "primaryZoneName"})


@dataclass(kw_only=True)
class SystemOfficeZoneGetZoneUsageListResponse(OCIDataResponse):
    """Response to the SystemOfficeZoneGetZoneUsageListRequest.
        The response contains a table of all Office Zones that
        contain the specific Zone. The column headings
        are \"Name\" and \"Description\"

    Attributes:

        office_zone_table (OCITable):

    """

    office_zone_table: OCITable = field(metadata={"alias": "officeZoneTable"})


@dataclass(kw_only=True)
class SystemOutboundProxyCacheParametersGetResponse(OCIDataResponse):
    """Response to SystemOutboundProxyCacheParametersGetRequest.
        Contains a list of Outbound Proxy Cache system parameters.

    Attributes:

        eviction_timeout_minutes (int):

        refresh_timeout_minutes (int):

        audit_interval_minutes (int):

        maximum_cache_size (int):

        dns_type_default_value (Optional[str]):

        use_dns_srv_default_value (Optional[str]):

        srv_prefix_default_value (Optional[str]):

        outbound_proxy_default_value (Optional[str]):

        transport_type_default_value (Optional[str]):

        secure_rtp_default_value (Optional[str]):

    """

    eviction_timeout_minutes: int = field(metadata={"alias": "evictionTimeoutMinutes"})

    refresh_timeout_minutes: int = field(metadata={"alias": "refreshTimeoutMinutes"})

    audit_interval_minutes: int = field(metadata={"alias": "auditIntervalMinutes"})

    maximum_cache_size: int = field(metadata={"alias": "maximumCacheSize"})

    dns_type_default_value: Optional[str] = field(
        default=None, metadata={"alias": "dnsTypeDefaultValue"}
    )

    use_dns_srv_default_value: Optional[str] = field(
        default=None, metadata={"alias": "useDnsSrvDefaultValue"}
    )

    srv_prefix_default_value: Optional[str] = field(
        default=None, metadata={"alias": "srvPrefixDefaultValue"}
    )

    outbound_proxy_default_value: Optional[str] = field(
        default=None, metadata={"alias": "outboundProxyDefaultValue"}
    )

    transport_type_default_value: Optional[str] = field(
        default=None, metadata={"alias": "transportTypeDefaultValue"}
    )

    secure_rtp_default_value: Optional[str] = field(
        default=None, metadata={"alias": "secureRtpDefaultValue"}
    )


@dataclass(kw_only=True)
class SystemOutgoingCallingPlanCallTypeGetListResponse(OCIDataResponse):
    """Response to SystemOutgoingCallingPlanCallTypeGetListRequest.

    Attributes:

        call_type (List[str]):

    """

    call_type: List[str] = field(metadata={"alias": "callType"})


@dataclass(kw_only=True)
class SystemOutgoingCallingPlanCallTypeGetMappingListResponse(OCIDataResponse):
    """Response to SystemOutgoingCallingPlanCallTypeGetMappingListRequest. The table columns are:
        \"Country Code\", \"Digit Map\" and \"Call Type\".

    Attributes:

        call_type_mapping (OCITable):

    """

    call_type_mapping: OCITable = field(metadata={"alias": "callTypeMapping"})


@dataclass(kw_only=True)
class SystemOutgoingCallingPlanGetResponse17sp3(OCIDataResponse):
    """Response to SystemOutgoingCallingPlanGetRequest17sp3.

    Attributes:

        direct_transfer_screening (bool):

        enable_enhanced_toll_call_typing (bool):

    """

    direct_transfer_screening: bool = field(
        metadata={"alias": "directTransferScreening"}
    )

    enable_enhanced_toll_call_typing: bool = field(
        metadata={"alias": "enableEnhancedTollCallTyping"}
    )


@dataclass(kw_only=True)
class SystemPasswordRulesGetResponseRI(OCIDataResponse):
    """Response to SystemPasswordRulesGetRequestRI.
        Contains the password rules for System administrator, Provisioning Administrator,
        and/or Service Provider Administrator, Group Administrator, Department Administrator, user.
        The following element is only used in AS data mode:
        forcePasswordChangeAfterReset, value \"false\" is returned in XS data mode

        The two following enumeration values are only application in AS data mode:
        System, Provisioning Administrator. All other administrators and users use external authentication
        System, Provisioning Administrator. All other administrators and users use their organization's password rules
        In XS data mode
        only System, Provisioning Administrator. All other administrators and users use external authentication
        will be returned and it behave the same as
        System, Provisioning, Service Provider Administrator
        from the data type SystemPasswordRulesApplyTo

        The following element is only returned in AS data mode:
        enforceExternalAuthForRoutePoint
        reenableLogin
        lockOutInMinutes

    Attributes:

        rules_apply_to (str):

        allow_web_add_external_authentication_users (bool):

        disallow_user_id (bool):

        disallow_old_password (bool):

        disallow_reversed_old_password (bool):

        restrict_min_digits (bool):

        min_digits (int):

        restrict_min_upper_case_letters (bool):

        min_upper_case_letters (int):

        restrict_min_lower_case_letters (bool):

        min_lower_case_letters (int):

        restrict_min_non_alphanumeric_characters (bool):

        min_non_alphanumeric_characters (int):

        min_length (int):

        max_failed_login_attempts (int):

        password_expires_days (int):

        send_login_disabled_notify_email (bool):

        login_disabled_notify_email_address (Optional[str]):

        disallow_rules_modification (bool):

        disallow_previous_passwords (bool):

        number_of_previous_passwords (int):

        force_password_change_after_reset (bool):

        enforce_external_auth_for_route_point (Optional[bool]):

        use_password_validation_service (bool):

        reenable_login (bool):

        lock_out_in_minutes (int):

    """

    rules_apply_to: str = field(metadata={"alias": "rulesApplyTo"})

    allow_web_add_external_authentication_users: bool = field(
        metadata={"alias": "allowWebAddExternalAuthenticationUsers"}
    )

    disallow_user_id: bool = field(metadata={"alias": "disallowUserId"})

    disallow_old_password: bool = field(metadata={"alias": "disallowOldPassword"})

    disallow_reversed_old_password: bool = field(
        metadata={"alias": "disallowReversedOldPassword"}
    )

    restrict_min_digits: bool = field(metadata={"alias": "restrictMinDigits"})

    min_digits: int = field(metadata={"alias": "minDigits"})

    restrict_min_upper_case_letters: bool = field(
        metadata={"alias": "restrictMinUpperCaseLetters"}
    )

    min_upper_case_letters: int = field(metadata={"alias": "minUpperCaseLetters"})

    restrict_min_lower_case_letters: bool = field(
        metadata={"alias": "restrictMinLowerCaseLetters"}
    )

    min_lower_case_letters: int = field(metadata={"alias": "minLowerCaseLetters"})

    restrict_min_non_alphanumeric_characters: bool = field(
        metadata={"alias": "restrictMinNonAlphanumericCharacters"}
    )

    min_non_alphanumeric_characters: int = field(
        metadata={"alias": "minNonAlphanumericCharacters"}
    )

    min_length: int = field(metadata={"alias": "minLength"})

    max_failed_login_attempts: int = field(metadata={"alias": "maxFailedLoginAttempts"})

    password_expires_days: int = field(metadata={"alias": "passwordExpiresDays"})

    send_login_disabled_notify_email: bool = field(
        metadata={"alias": "sendLoginDisabledNotifyEmail"}
    )

    login_disabled_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "loginDisabledNotifyEmailAddress"}
    )

    disallow_rules_modification: bool = field(
        metadata={"alias": "disallowRulesModification"}
    )

    disallow_previous_passwords: bool = field(
        metadata={"alias": "disallowPreviousPasswords"}
    )

    number_of_previous_passwords: int = field(
        metadata={"alias": "numberOfPreviousPasswords"}
    )

    force_password_change_after_reset: bool = field(
        metadata={"alias": "forcePasswordChangeAfterReset"}
    )

    enforce_external_auth_for_route_point: Optional[bool] = field(
        default=None, metadata={"alias": "enforceExternalAuthForRoutePoint"}
    )

    use_password_validation_service: bool = field(
        metadata={"alias": "usePasswordValidationService"}
    )

    reenable_login: bool = field(metadata={"alias": "reenableLogin"})

    lock_out_in_minutes: int = field(metadata={"alias": "lockOutInMinutes"})


@dataclass(kw_only=True)
class SystemPasswordSecurityParametersGetResponse(OCIDataResponse):
    """Response to the SystemPasswordSecurityParametersGetResponse.
        The response contains the password security parameters for the system.

    Attributes:

        use_existing_hashing (bool):

        enforce_password_change_on_expiry (bool):

    """

    use_existing_hashing: bool = field(metadata={"alias": "useExistingHashing"})

    enforce_password_change_on_expiry: bool = field(
        metadata={"alias": "enforcePasswordChangeOnExpiry"}
    )


@dataclass(kw_only=True)
class SystemPerformanceMeasurementReportingGetFileServerListResponse22(OCIDataResponse):
    """Response to SystemPerformanceMeasurementReportingGetFileServerListRequest22. The table columns are:
        \"Repository URL\", \"User Id\", \"Passive\".

    Attributes:

        file_server_table (OCITable):

    """

    file_server_table: OCITable = field(metadata={"alias": "fileServerTable"})


@dataclass(kw_only=True)
class SystemPerformanceMeasurementReportingGetResponse24(OCIDataResponse):
    """Response to SystemPerformanceMeasurementReportingGetRequest24.

    Attributes:

        is_active (bool):

        reporting_interval (int):

        reset_measurements_after_each_report (bool):

        report_enterprise (bool):

        report_service_provider (bool):

        report_device (bool):

        report_table (bool):

        report_encoding (str):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    reporting_interval: int = field(metadata={"alias": "reportingInterval"})

    reset_measurements_after_each_report: bool = field(
        metadata={"alias": "resetMeasurementsAfterEachReport"}
    )

    report_enterprise: bool = field(metadata={"alias": "reportEnterprise"})

    report_service_provider: bool = field(metadata={"alias": "reportServiceProvider"})

    report_device: bool = field(metadata={"alias": "reportDevice"})

    report_table: bool = field(metadata={"alias": "reportTable"})

    report_encoding: str = field(metadata={"alias": "reportEncoding"})


@dataclass(kw_only=True)
class SystemPersonalAssistantGetResponse(OCIDataResponse):
    """Response to the SystemPersonalAssistantGetRequest.
        Returns system Personal Assistant Parameters.

    Attributes:

        transfer_to_attendant_key (str):

        transfer_to_voice_messaging_key (str):

    """

    transfer_to_attendant_key: str = field(metadata={"alias": "transferToAttendantKey"})

    transfer_to_voice_messaging_key: str = field(
        metadata={"alias": "transferToVoiceMessagingKey"}
    )


@dataclass(kw_only=True)
class SystemPhoneListsGetResponse(OCIDataResponse):
    """Response to the SystemPhoneListsGetRequest.

    Attributes:

        allow_special_numbers_in_phone_lists (bool):

    """

    allow_special_numbers_in_phone_lists: bool = field(
        metadata={"alias": "allowSpecialNumbersInPhoneLists"}
    )


@dataclass(kw_only=True)
class SystemPhysicalLocationGetResponse(OCIDataResponse):
    """Response to SystemPhysicalLocationGetRequest.
        Contains a list of system Physical Location parameters.

    Attributes:

        always_allow_emergency_calls (bool):

    """

    always_allow_emergency_calls: bool = field(
        metadata={"alias": "alwaysAllowEmergencyCalls"}
    )


@dataclass(kw_only=True)
class SystemPolicyGetDefaultResponse22(OCIDataResponse):
    """Response to SystemPolicyGetDefaultRequest22.
        Contains the default policy settings for the system.
        The following elements are only used in AS data mode:
            GroupAdminCommunicationBarringUserProfileAccess (This element is only used for groups in an Enterprise), value None is returned in XS mode
            GroupAdminVerifyTranslationAndRoutingAccess, value None is returned in XS mode
            ServiceProviderAdminVerifyTranslationAndRoutingAccess, value None is returned in XS mode
            GroupUserAutoAttendantNameDialingAccess, value None is returned in XS mode
        The following elements are only used in XS data mode:
            serviceProviderAdminCommunicationBarringAccess

    Attributes:

        group_calling_plan_access (str):

        group_extension_access (str):

        group_voice_messaging_access (str):

        group_department_admin_user_access (str):

        group_department_admin_trunk_group_access (str):

        group_department_admin_phone_number_extension_access (str):

        group_department_admin_calling_line_id_number_access (str):

        group_user_authentication_access (str):

        group_user_group_directory_access (str):

        group_user_profile_access (str):

        group_user_enhanced_call_logs_access (str):

        group_user_auto_attendant_name_dialing_access (str):

        group_admin_profile_access (str):

        group_admin_user_access (str):

        group_admin_admin_access (str):

        group_admin_department_access (str):

        group_admin_access_device_access (str):

        group_admin_enhanced_service_instance_access (str):

        group_admin_feature_access_code_access (str):

        group_admin_phone_number_extension_access (str):

        group_admin_calling_line_id_number_access (str):

        group_admin_service_access (str):

        group_admin_trunk_group_access (str):

        group_admin_verify_translation_and_routing_access (str):

        group_admin_session_admission_control_access (str):

        group_admin_office_zone_access (str):

        group_admin_number_activation_access (str):

        group_admin_dialable_caller_id_access (str):

        group_admin_communication_barring_user_profile_access (str):

        service_provider_admin_profile_access (str):

        service_provider_admin_group_access (str):

        service_provider_admin_user_access (str):

        service_provider_admin_admin_access (str):

        service_provider_admin_department_access (str):

        service_provider_admin_access_device_access (str):

        service_provider_admin_phone_number_extension_access (str):

        service_provider_admin_calling_line_id_number_access (str):

        service_provider_admin_service_access (str):

        service_provider_admin_service_pack_access (str):

        service_provider_admin_session_admission_control_access (str):

        service_provider_admin_verify_translation_and_routing_access (str):

        service_provider_admin_web_branding_access (str):

        service_provider_admin_office_zone_access (str):

        service_provider_admin_communication_barring_access (Optional[str]):

        enterprise_admin_network_policy_access (str):

        enterprise_admin_number_activation_access (str):

        service_provider_admin_dialable_caller_id_access (str):

    """

    group_calling_plan_access: str = field(metadata={"alias": "groupCallingPlanAccess"})

    group_extension_access: str = field(metadata={"alias": "groupExtensionAccess"})

    group_voice_messaging_access: str = field(
        metadata={"alias": "groupVoiceMessagingAccess"}
    )

    group_department_admin_user_access: str = field(
        metadata={"alias": "groupDepartmentAdminUserAccess"}
    )

    group_department_admin_trunk_group_access: str = field(
        metadata={"alias": "groupDepartmentAdminTrunkGroupAccess"}
    )

    group_department_admin_phone_number_extension_access: str = field(
        metadata={"alias": "groupDepartmentAdminPhoneNumberExtensionAccess"}
    )

    group_department_admin_calling_line_id_number_access: str = field(
        metadata={"alias": "groupDepartmentAdminCallingLineIdNumberAccess"}
    )

    group_user_authentication_access: str = field(
        metadata={"alias": "groupUserAuthenticationAccess"}
    )

    group_user_group_directory_access: str = field(
        metadata={"alias": "groupUserGroupDirectoryAccess"}
    )

    group_user_profile_access: str = field(metadata={"alias": "groupUserProfileAccess"})

    group_user_enhanced_call_logs_access: str = field(
        metadata={"alias": "groupUserEnhancedCallLogsAccess"}
    )

    group_user_auto_attendant_name_dialing_access: str = field(
        metadata={"alias": "groupUserAutoAttendantNameDialingAccess"}
    )

    group_admin_profile_access: str = field(
        metadata={"alias": "groupAdminProfileAccess"}
    )

    group_admin_user_access: str = field(metadata={"alias": "groupAdminUserAccess"})

    group_admin_admin_access: str = field(metadata={"alias": "groupAdminAdminAccess"})

    group_admin_department_access: str = field(
        metadata={"alias": "groupAdminDepartmentAccess"}
    )

    group_admin_access_device_access: str = field(
        metadata={"alias": "groupAdminAccessDeviceAccess"}
    )

    group_admin_enhanced_service_instance_access: str = field(
        metadata={"alias": "groupAdminEnhancedServiceInstanceAccess"}
    )

    group_admin_feature_access_code_access: str = field(
        metadata={"alias": "groupAdminFeatureAccessCodeAccess"}
    )

    group_admin_phone_number_extension_access: str = field(
        metadata={"alias": "groupAdminPhoneNumberExtensionAccess"}
    )

    group_admin_calling_line_id_number_access: str = field(
        metadata={"alias": "groupAdminCallingLineIdNumberAccess"}
    )

    group_admin_service_access: str = field(
        metadata={"alias": "groupAdminServiceAccess"}
    )

    group_admin_trunk_group_access: str = field(
        metadata={"alias": "groupAdminTrunkGroupAccess"}
    )

    group_admin_verify_translation_and_routing_access: str = field(
        metadata={"alias": "groupAdminVerifyTranslationAndRoutingAccess"}
    )

    group_admin_session_admission_control_access: str = field(
        metadata={"alias": "groupAdminSessionAdmissionControlAccess"}
    )

    group_admin_office_zone_access: str = field(
        metadata={"alias": "groupAdminOfficeZoneAccess"}
    )

    group_admin_number_activation_access: str = field(
        metadata={"alias": "groupAdminNumberActivationAccess"}
    )

    group_admin_dialable_caller_id_access: str = field(
        metadata={"alias": "groupAdminDialableCallerIDAccess"}
    )

    group_admin_communication_barring_user_profile_access: str = field(
        metadata={"alias": "groupAdminCommunicationBarringUserProfileAccess"}
    )

    service_provider_admin_profile_access: str = field(
        metadata={"alias": "serviceProviderAdminProfileAccess"}
    )

    service_provider_admin_group_access: str = field(
        metadata={"alias": "serviceProviderAdminGroupAccess"}
    )

    service_provider_admin_user_access: str = field(
        metadata={"alias": "serviceProviderAdminUserAccess"}
    )

    service_provider_admin_admin_access: str = field(
        metadata={"alias": "serviceProviderAdminAdminAccess"}
    )

    service_provider_admin_department_access: str = field(
        metadata={"alias": "serviceProviderAdminDepartmentAccess"}
    )

    service_provider_admin_access_device_access: str = field(
        metadata={"alias": "serviceProviderAdminAccessDeviceAccess"}
    )

    service_provider_admin_phone_number_extension_access: str = field(
        metadata={"alias": "serviceProviderAdminPhoneNumberExtensionAccess"}
    )

    service_provider_admin_calling_line_id_number_access: str = field(
        metadata={"alias": "serviceProviderAdminCallingLineIdNumberAccess"}
    )

    service_provider_admin_service_access: str = field(
        metadata={"alias": "serviceProviderAdminServiceAccess"}
    )

    service_provider_admin_service_pack_access: str = field(
        metadata={"alias": "serviceProviderAdminServicePackAccess"}
    )

    service_provider_admin_session_admission_control_access: str = field(
        metadata={"alias": "serviceProviderAdminSessionAdmissionControlAccess"}
    )

    service_provider_admin_verify_translation_and_routing_access: str = field(
        metadata={"alias": "serviceProviderAdminVerifyTranslationAndRoutingAccess"}
    )

    service_provider_admin_web_branding_access: str = field(
        metadata={"alias": "serviceProviderAdminWebBrandingAccess"}
    )

    service_provider_admin_office_zone_access: str = field(
        metadata={"alias": "serviceProviderAdminOfficeZoneAccess"}
    )

    service_provider_admin_communication_barring_access: Optional[str] = field(
        default=None,
        metadata={"alias": "serviceProviderAdminCommunicationBarringAccess"},
    )

    enterprise_admin_network_policy_access: str = field(
        metadata={"alias": "enterpriseAdminNetworkPolicyAccess"}
    )

    enterprise_admin_number_activation_access: str = field(
        metadata={"alias": "enterpriseAdminNumberActivationAccess"}
    )

    service_provider_admin_dialable_caller_id_access: str = field(
        metadata={"alias": "serviceProviderAdminDialableCallerIDAccess"}
    )


@dataclass(kw_only=True)
class SystemPortalPasscodeRulesGetResponseRI(OCIDataResponse):
    """Response to SystemPortalPasscodeRulesGetRequestRI.
        Contains the system passcode rules setting.

        The following elements are only used in AS data mode:
          numberOfRepeatedDigits
          disallowRepeatedPatterns
          disallowContiguousSequences
          numberOfAscendingDigits
          numberOfDescendingDigits
          numberOfPreviousPasscodes
          reenableLogin
          lockOutInMinutes

    Attributes:

        disallow_repeated_digits (bool):

        number_of_repeated_digits (int):

        disallow_repeated_patterns (bool):

        disallow_contiguous_sequences (bool):

        number_of_ascending_digits (int):

        number_of_descending_digits (int):

        disallow_user_number (bool):

        disallow_reversed_user_number (bool):

        disallow_old_passcode (bool):

        number_of_previous_passcodes (int):

        disallow_reversed_old_passcode (bool):

        min_code_length (int):

        max_code_length (int):

        disable_login_after_max_failed_login_attempts (bool):

        max_failed_login_attempts (Optional[int]):

        expire_password (bool):

        passcode_expires_days (Optional[int]):

        send_login_disabled_notify_email (bool):

        login_disabled_notify_email_address (Optional[str]):

        default_password (str):

        reenable_login (bool):

        lock_out_in_minutes (int):

    """

    disallow_repeated_digits: bool = field(metadata={"alias": "disallowRepeatedDigits"})

    number_of_repeated_digits: int = field(metadata={"alias": "numberOfRepeatedDigits"})

    disallow_repeated_patterns: bool = field(
        metadata={"alias": "disallowRepeatedPatterns"}
    )

    disallow_contiguous_sequences: bool = field(
        metadata={"alias": "disallowContiguousSequences"}
    )

    number_of_ascending_digits: int = field(
        metadata={"alias": "numberOfAscendingDigits"}
    )

    number_of_descending_digits: int = field(
        metadata={"alias": "numberOfDescendingDigits"}
    )

    disallow_user_number: bool = field(metadata={"alias": "disallowUserNumber"})

    disallow_reversed_user_number: bool = field(
        metadata={"alias": "disallowReversedUserNumber"}
    )

    disallow_old_passcode: bool = field(metadata={"alias": "disallowOldPasscode"})

    number_of_previous_passcodes: int = field(
        metadata={"alias": "numberOfPreviousPasscodes"}
    )

    disallow_reversed_old_passcode: bool = field(
        metadata={"alias": "disallowReversedOldPasscode"}
    )

    min_code_length: int = field(metadata={"alias": "minCodeLength"})

    max_code_length: int = field(metadata={"alias": "maxCodeLength"})

    disable_login_after_max_failed_login_attempts: bool = field(
        metadata={"alias": "disableLoginAfterMaxFailedLoginAttempts"}
    )

    max_failed_login_attempts: Optional[int] = field(
        default=None, metadata={"alias": "maxFailedLoginAttempts"}
    )

    expire_password: bool = field(metadata={"alias": "expirePassword"})

    passcode_expires_days: Optional[int] = field(
        default=None, metadata={"alias": "passcodeExpiresDays"}
    )

    send_login_disabled_notify_email: bool = field(
        metadata={"alias": "sendLoginDisabledNotifyEmail"}
    )

    login_disabled_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "loginDisabledNotifyEmailAddress"}
    )

    default_password: str = field(metadata={"alias": "defaultPassword"})

    reenable_login: bool = field(metadata={"alias": "reenableLogin"})

    lock_out_in_minutes: int = field(metadata={"alias": "lockOutInMinutes"})


@dataclass(kw_only=True)
class SystemPreferredCarrierGetGroupListResponse(OCIDataResponse):
    """Response to a SystemPreferredCarrierGetGroupListRequest.
        Contains a table with one row per group.
        The table columns are: \"Group Id\", \"Group Name\", \"Organization Id\", \"Organization Type\".
        The \"Organization Id\" column is populated with either a service provider Id or an enterprise Id.
        The \"Organization Type\" column is populated with one of the enumerated strings defined in the
        OrganizationType OCI data type.  Please see OCISchemaDataTypes.xsd for details on OrganizationType.

    Attributes:

        groups_using_carrier_table (OCITable):

    """

    groups_using_carrier_table: OCITable = field(
        metadata={"alias": "groupsUsingCarrierTable"}
    )


@dataclass(kw_only=True)
class SystemPreferredCarrierGetListResponse(OCIDataResponse):
    """Response to a SystemPreferredCarrierGetListRequest. Contains a table with one row per carrier.
        The table columns are: \"Carrier\", \"Country Code\", \"CIC\", \"Is Intra-Lata\", \"Is Inter-Lata\", \"Is International\".
        The value in the \"Is Intra-Lata\", \"Is Inter-Lata\", and \"Is International\" columns is one of \"true\" or \"false\".

    Attributes:

        system_carrier_table (OCITable):

    """

    system_carrier_table: OCITable = field(metadata={"alias": "systemCarrierTable"})


@dataclass(kw_only=True)
class SystemPreferredCarrierGetResponse(OCIDataResponse):
    """Response to a SystemPreferredCarrierGetRequest.
        Contains the attributes of a carrier.

    Attributes:

        cic (str):

        country_code (str):

        is_intra_lata (bool):

        is_inter_lata (bool):

        is_international (bool):

    """

    cic: str = field(metadata={"alias": "cic"})

    country_code: str = field(metadata={"alias": "countryCode"})

    is_intra_lata: bool = field(metadata={"alias": "isIntraLata"})

    is_inter_lata: bool = field(metadata={"alias": "isInterLata"})

    is_international: bool = field(metadata={"alias": "isInternational"})


@dataclass(kw_only=True)
class SystemPreferredCarrierGetUserListResponse(OCIDataResponse):
    """Response to a SystemPreferredCarrierGetUserListRequest.
        Contains a table with one row per user.
        The table columns are: \"User Id\", \"Service Provider Id\", \"Group Id\", \"Last Name\", \"First Name\", \"Phone Number\", \"Email Address\",
        \"Hiragana Last Name\", and \"Hiragana First Name\", \"Extension\", \"Department\".

    Attributes:

        users_using_carrier_table (OCITable):

    """

    users_using_carrier_table: OCITable = field(
        metadata={"alias": "usersUsingCarrierTable"}
    )


@dataclass(kw_only=True)
class SystemProvisioningValidationGetResponse25(OCIDataResponse):
    """Response to the SystemProvisioningValidationGetRequest25.

    Attributes:

        is_active (bool):

        is_network_server_query_active (bool):

        timeout_seconds (int):

        deny_mobility_number_as_redirection_destination (bool):

        deny_enterprise_number_as_network_location_destination (bool):

        deny_auto_attendant_identity_as_auto_attendant_transfer_number (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    is_network_server_query_active: bool = field(
        metadata={"alias": "isNetworkServerQueryActive"}
    )

    timeout_seconds: int = field(metadata={"alias": "timeoutSeconds"})

    deny_mobility_number_as_redirection_destination: bool = field(
        metadata={"alias": "denyMobilityNumberAsRedirectionDestination"}
    )

    deny_enterprise_number_as_network_location_destination: bool = field(
        metadata={"alias": "denyEnterpriseNumberAsNetworkLocationDestination"}
    )

    deny_auto_attendant_identity_as_auto_attendant_transfer_number: bool = field(
        metadata={"alias": "denyAutoAttendantIdentityAsAutoAttendantTransferNumber"}
    )


@dataclass(kw_only=True)
class SystemPushNotificationAllowedApplicationGetListResponse(OCIDataResponse):
    """Response to SystemPushNotificationAllowedApplicationGetListRequest.
        Contains a table with a row for each allowed push notification application with columns:
        \"Application Id\", \"Description\"

    Attributes:

        application_table (OCITable):

    """

    application_table: OCITable = field(metadata={"alias": "applicationTable"})


@dataclass(kw_only=True)
class SystemPushNotificationParametersGetResponse(OCIDataResponse):
    """Response to SystemPushNotificationParametersGetRequest.

        Contains a list of system push notification parameters.

    Attributes:

        enforce_allowed_application_list (bool):

        maximum_registrations_per_user (int):

        maximum_registration_age_days (int):

        new_call_timeout (int):

        subscription_events_per_second (int):

    """

    enforce_allowed_application_list: bool = field(
        metadata={"alias": "enforceAllowedApplicationList"}
    )

    maximum_registrations_per_user: int = field(
        metadata={"alias": "maximumRegistrationsPerUser"}
    )

    maximum_registration_age_days: int = field(
        metadata={"alias": "maximumRegistrationAgeDays"}
    )

    new_call_timeout: int = field(metadata={"alias": "newCallTimeout"})

    subscription_events_per_second: int = field(
        metadata={"alias": "subscriptionEventsPerSecond"}
    )


@dataclass(kw_only=True)
class SystemRedundancyParametersGetResponse16sp2(OCIDataResponse):
    """Response to SystemRedundancyParametersGetRequest16sp2.
        Contains a list of system Redundancy parameters.

    Attributes:

        roll_back_timer_minutes (int):

        send_sip_option_message_upon_migration (bool):

    """

    roll_back_timer_minutes: int = field(metadata={"alias": "rollBackTimerMinutes"})

    send_sip_option_message_upon_migration: bool = field(
        metadata={"alias": "sendSipOptionMessageUponMigration"}
    )


@dataclass(kw_only=True)
class SystemResourcePriorityGetResponse(OCIDataResponse):
    """Response to the SystemResourcePriorityGetRequest.
        The response contains the system Resource Priority service attributes.

    Attributes:

        send_resource_priority_to_network (bool):

        resource_priority (str):

    """

    send_resource_priority_to_network: bool = field(
        metadata={"alias": "sendResourcePriorityToNetwork"}
    )

    resource_priority: str = field(metadata={"alias": "resourcePriority"})


@dataclass(kw_only=True)
class SystemRoamingNetworkGetListResponse(OCIDataResponse):
    """Response to the SystemRoamingNetworkGetListRequest.
        Contains a table with columns: \"MSC Address\", \"Network Translation Index\".

    Attributes:

        roaming_network_table (OCITable):

    """

    roaming_network_table: OCITable = field(metadata={"alias": "roamingNetworkTable"})


@dataclass(kw_only=True)
class SystemRouteListEnterpriseTrunkNumberPrefixGetSummaryListResponse(OCIDataResponse):
    """Response to SystemRouteListEnterpriseTrunkNumberPrefixGetSummaryListRequest.
        The column headings are \"Number Prefix\", \"Service Provider Id\", \"Is Enterprise\", \"User Id\", \"Enterprise Trunk\",
        \"Is Active\", \"Reseller Id\" \", \"Extension Range Start\" and \"Extension Range End\".

    Attributes:

        prefix_summary_table (OCITable):

    """

    prefix_summary_table: OCITable = field(metadata={"alias": "prefixSummaryTable"})


@dataclass(kw_only=True)
class SystemRouteListEnterpriseTrunkNumberRangeGetSummaryListResponse(OCIDataResponse):
    """Response to SystemRouteListEnterpriseTrunkNumberRangeGetSummaryListRequest.
        The column headings are \"Number Range Start\", \"Number Range End\", \"Service Provider Id\", \"Is Enterprise\", \"User Id\", \"Enterprise Trunk\",
        \"Is Active\", \"Reseller Id\" and \"Extension Length\".

    Attributes:

        number_range_summary_table (OCITable):

    """

    number_range_summary_table: OCITable = field(
        metadata={"alias": "numberRangeSummaryTable"}
    )


@dataclass(kw_only=True)
class SystemRoutePointExternalSystemApplicationControllerGetResponse(OCIDataResponse):
    """Response to the SystemRoutePointExternalSystemApplicationControllerGetRequest.

    Attributes:

        application_controller (Optional[List[str]]):

    """

    application_controller: Optional[List[str]] = field(
        default=None, metadata={"alias": "applicationController"}
    )


@dataclass(kw_only=True)
class SystemRoutePointExternalSystemGetListResponse(OCIDataResponse):
    """Response to the SystemRoutePointExternalSystemGetListRequest.

      Contains a table with column headings:
      \"External System\", \"Description\".

    Attributes:

        external_system_table (OCITable):

    """

    external_system_table: OCITable = field(metadata={"alias": "externalSystemTable"})


@dataclass(kw_only=True)
class SystemRoutePointExternalSystemGetRoutePointListResponse(OCIDataResponse):
    """Response to the SystemRoutePointExternalSystemGetRoutePointListRequest.

    Attributes:

        service_user_id (Optional[List[str]]):

    """

    service_user_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "serviceUserId"}
    )


@dataclass(kw_only=True)
class SystemRoutingGetResponse(OCIDataResponse):
    """Response to SystemRoutingGetRequest.

    Attributes:

        is_route_round_robin (bool):

        route_timer_seconds (int):

        dns_resolved_address_selection_policy (str):

        stateful_expiration_minutes (int):

        max_addresses_per_hostname (int):

        max_addresses_during_setup (int):

    """

    is_route_round_robin: bool = field(metadata={"alias": "isRouteRoundRobin"})

    route_timer_seconds: int = field(metadata={"alias": "routeTimerSeconds"})

    dns_resolved_address_selection_policy: str = field(
        metadata={"alias": "dnsResolvedAddressSelectionPolicy"}
    )

    stateful_expiration_minutes: int = field(
        metadata={"alias": "statefulExpirationMinutes"}
    )

    max_addresses_per_hostname: int = field(
        metadata={"alias": "maxAddressesPerHostname"}
    )

    max_addresses_during_setup: int = field(
        metadata={"alias": "maxAddressesDuringSetup"}
    )


@dataclass(kw_only=True)
class SystemRoutingGetRouteDeviceListResponse(OCIDataResponse):
    """Response to SystemRoutingGetRouteDeviceListRequest. The column headings are \"Net Address\",
        \"Port\", \"Transport\" and \"Description\".

    Attributes:

        route_device_table (OCITable):

    """

    route_device_table: OCITable = field(metadata={"alias": "routeDeviceTable"})


@dataclass(kw_only=True)
class SystemRoutingGetRouteListResponse(OCIDataResponse):
    """Response to SystemRoutingGetRouteListRequest.

    Attributes:

        route_name (Optional[List[str]]):

    """

    route_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "routeName"}
    )


@dataclass(kw_only=True)
class SystemRoutingGetTranslationListResponse(OCIDataResponse):
    """Response to SystemRoutingGetTranslationListRequest. The column headings are \"Routing Digits\"
        and \"Route\".

    Attributes:

        routing_table (OCITable):

    """

    routing_table: OCITable = field(metadata={"alias": "routingTable"})


@dataclass(kw_only=True)
class SystemRoutingProfileGetListResponse(OCIDataResponse):
    """Response to SystemRoutingProfileGetListRequest.
        Returns a list of routing profiles defined in the system.

    Attributes:

        routing_profile (Optional[List[str]]):

    """

    routing_profile: Optional[List[str]] = field(
        default=None, metadata={"alias": "routingProfile"}
    )


@dataclass(kw_only=True)
class SystemRoutingProfileParametersGetResponse(OCIDataResponse):
    """Response to SystemRoutingProfileParametersGetRequest.
        Contains a list of Routing Profile parameters.

    Attributes:

        enable_permissive_routing (bool):

    """

    enable_permissive_routing: bool = field(
        metadata={"alias": "enablePermissiveRouting"}
    )


@dataclass(kw_only=True)
class SystemRuntimeDataPublicationGetResponse(OCIDataResponse):
    """Response to the SystemRuntimeDataPublicationGetRequest.
        The response contains the system call admission control parameters information.
        The following elements are only used in AS data mode:
          enableRuntimeDataSync, value \"false\" is returned in XS data mode.
          runtimeDataSyncIntervalInMilliSeconds value \"1000\" is returned in XS data mode.

    Attributes:

        enable_runtime_data_sync (bool):

        runtime_data_sync_interval_in_milli_seconds (int):

    """

    enable_runtime_data_sync: bool = field(metadata={"alias": "enableRuntimeDataSync"})

    runtime_data_sync_interval_in_milli_seconds: int = field(
        metadata={"alias": "runtimeDataSyncIntervalInMilliSeconds"}
    )


@dataclass(kw_only=True)
class SystemSIPAuthenticationEndpointLockoutGetResponse(OCIDataResponse):
    """Response to SystemSIPAuthenticationEndpointLockoutGetRequest.
        The column headings for the lockoutTable are:
           \"Organization Id\", \"Organization Type\", \"Group Id\", \"Line/Port\", \"User ID\", \"First Name\", \"Last Name\", \"Lockout Started\", \"Lockout Expires\", \"Lockout Count\". Lockout times are shown in the system GMT time. When a permanent lockout is shown, the \"Lockout Expires\" column is empty and the \"Lockout Count\" column contains the word Permanent.

    Attributes:

        lockout_table (OCITable):

    """

    lockout_table: OCITable = field(metadata={"alias": "lockoutTable"})


@dataclass(kw_only=True)
class SystemSIPAuthenticationPasswordRulesGetResponseRI(OCIDataResponse):
    """Response to SystemSIPAuthenticationPasswordRulesGetRequestRI.
        Contains the SIP authentication password rules for the system.

    Attributes:

        disallow_authentication_name (bool):

        disallow_old_password (bool):

        disallow_reversed_old_password (bool):

        restrict_min_digits (bool):

        min_digits (int):

        restrict_min_upper_case_letters (bool):

        min_upper_case_letters (int):

        restrict_min_lower_case_letters (bool):

        min_lower_case_letters (int):

        restrict_min_non_alphanumeric_characters (bool):

        min_non_alphanumeric_characters (int):

        min_length (int):

        send_permanent_lockout_notification (bool):

        permanent_lockout_notify_email_address (Optional[str]):

        endpoint_authentication_lockout_type (str):

        endpoint_temporary_lockout_threshold (int):

        endpoint_wait_algorithm (str):

        endpoint_lockout_fixed_minutes (str):

        endpoint_permanent_lockout_threshold (int):

        trunk_group_authentication_lockout_type (str):

        trunk_group_temporary_lockout_threshold (int):

        trunk_group_wait_algorithm (str):

        trunk_group_lockout_fixed_minutes (str):

        trunk_group_permanent_lockout_threshold (int):

        use_password_validation_service (bool):

    """

    disallow_authentication_name: bool = field(
        metadata={"alias": "disallowAuthenticationName"}
    )

    disallow_old_password: bool = field(metadata={"alias": "disallowOldPassword"})

    disallow_reversed_old_password: bool = field(
        metadata={"alias": "disallowReversedOldPassword"}
    )

    restrict_min_digits: bool = field(metadata={"alias": "restrictMinDigits"})

    min_digits: int = field(metadata={"alias": "minDigits"})

    restrict_min_upper_case_letters: bool = field(
        metadata={"alias": "restrictMinUpperCaseLetters"}
    )

    min_upper_case_letters: int = field(metadata={"alias": "minUpperCaseLetters"})

    restrict_min_lower_case_letters: bool = field(
        metadata={"alias": "restrictMinLowerCaseLetters"}
    )

    min_lower_case_letters: int = field(metadata={"alias": "minLowerCaseLetters"})

    restrict_min_non_alphanumeric_characters: bool = field(
        metadata={"alias": "restrictMinNonAlphanumericCharacters"}
    )

    min_non_alphanumeric_characters: int = field(
        metadata={"alias": "minNonAlphanumericCharacters"}
    )

    min_length: int = field(metadata={"alias": "minLength"})

    send_permanent_lockout_notification: bool = field(
        metadata={"alias": "sendPermanentLockoutNotification"}
    )

    permanent_lockout_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "permanentLockoutNotifyEmailAddress"}
    )

    endpoint_authentication_lockout_type: str = field(
        metadata={"alias": "endpointAuthenticationLockoutType"}
    )

    endpoint_temporary_lockout_threshold: int = field(
        metadata={"alias": "endpointTemporaryLockoutThreshold"}
    )

    endpoint_wait_algorithm: str = field(metadata={"alias": "endpointWaitAlgorithm"})

    endpoint_lockout_fixed_minutes: str = field(
        metadata={"alias": "endpointLockoutFixedMinutes"}
    )

    endpoint_permanent_lockout_threshold: int = field(
        metadata={"alias": "endpointPermanentLockoutThreshold"}
    )

    trunk_group_authentication_lockout_type: str = field(
        metadata={"alias": "trunkGroupAuthenticationLockoutType"}
    )

    trunk_group_temporary_lockout_threshold: int = field(
        metadata={"alias": "trunkGroupTemporaryLockoutThreshold"}
    )

    trunk_group_wait_algorithm: str = field(
        metadata={"alias": "trunkGroupWaitAlgorithm"}
    )

    trunk_group_lockout_fixed_minutes: str = field(
        metadata={"alias": "trunkGroupLockoutFixedMinutes"}
    )

    trunk_group_permanent_lockout_threshold: int = field(
        metadata={"alias": "trunkGroupPermanentLockoutThreshold"}
    )

    use_password_validation_service: bool = field(
        metadata={"alias": "usePasswordValidationService"}
    )


@dataclass(kw_only=True)
class SystemSIPAuthenticationTrunkGroupLockoutGetResponse(OCIDataResponse):
    """Response to SystemSIPAuthenticationTrunkGroupLockoutGetRequest.
        The column headings for the lockoutTable are:
           \"Organization Id\", \"Organization Type\", \"Group Id\", \"Trunk Group Name\", \"Lockout Started\", \"Lockout Expires\", \"Lockout Count\". Lockout times are shown in the system GMT time. When a permanent lockout is shown, the \"Lockout Expires\" column is empty and the \"Lockout Count\" column contains the word Permanent.

    Attributes:

        lockout_table (OCITable):

    """

    lockout_table: OCITable = field(metadata={"alias": "lockoutTable"})


@dataclass(kw_only=True)
class SystemSIPDeviceTypeFileGetListResponse14sp8(OCIDataResponse):
    """Response to SystemSIPDeviceTypeFileGetListRequest14sp8.
        Contains a table of device files managed by the Device Management System on a per-device type basis.
        The column headings are: \"File Format\", \"Is Authenticated\", \"Access URL\", \"Repository URL\", \"Template URL\".

    Attributes:

        device_type_files_table (OCITable):

    """

    device_type_files_table: OCITable = field(
        metadata={"alias": "deviceTypeFilesTable"}
    )


@dataclass(kw_only=True)
class SystemSIPDeviceTypeFileGetResponse22V2(OCIDataResponse):
    """Response to SystemSIPDeviceTypeFileGetRequest22V2.
          Take note:

          1. accessUrl may have undefined content.
          When it is the case, undefined content is put between [].
          It may also be set to \"Error Access FQDN Not Provisioned\" when the access FQDN is not set,
          or \"Error Access Context Name Not Provisioned\" when the context name is not set.

          2. repositoryUrl may be set to \"DEVICE_CONFIGURATION_FILE_REPOSITORY_MISSING\", if there is no file repository defined.

    Attributes:

        remote_file_format (str):

        file_category (str):

        file_customization (str):

        file_source (str):

        configuration_file_name (Optional[str]):

        use_http_digest_authentication (bool):

        mac_based_file_authentication (bool):

        user_name_password_file_authentication (bool):

        bearer_file_authentication (bool):

        mac_in_cert (bool):

        mac_in_non_request_uri (bool):

        mac_format_in_non_request_uri (Optional[str]):

        access_url (Optional[str]):

        repository_url (Optional[str]):

        template_url (Optional[str]):

        allow_http (bool):

        allow_https (bool):

        allow_tftp (bool):

        enable_caching (bool):

        allow_upload_from_device (bool):

        default_extended_file_capture_mode (Optional[bool]):

    """

    remote_file_format: str = field(metadata={"alias": "remoteFileFormat"})

    file_category: str = field(metadata={"alias": "fileCategory"})

    file_customization: str = field(metadata={"alias": "fileCustomization"})

    file_source: str = field(metadata={"alias": "fileSource"})

    configuration_file_name: Optional[str] = field(
        default=None, metadata={"alias": "configurationFileName"}
    )

    use_http_digest_authentication: bool = field(
        metadata={"alias": "useHttpDigestAuthentication"}
    )

    mac_based_file_authentication: bool = field(
        metadata={"alias": "macBasedFileAuthentication"}
    )

    user_name_password_file_authentication: bool = field(
        metadata={"alias": "userNamePasswordFileAuthentication"}
    )

    bearer_file_authentication: bool = field(
        metadata={"alias": "bearerFileAuthentication"}
    )

    mac_in_cert: bool = field(metadata={"alias": "macInCert"})

    mac_in_non_request_uri: bool = field(metadata={"alias": "macInNonRequestURI"})

    mac_format_in_non_request_uri: Optional[str] = field(
        default=None, metadata={"alias": "macFormatInNonRequestURI"}
    )

    access_url: Optional[str] = field(default=None, metadata={"alias": "accessUrl"})

    repository_url: Optional[str] = field(
        default=None, metadata={"alias": "repositoryUrl"}
    )

    template_url: Optional[str] = field(default=None, metadata={"alias": "templateUrl"})

    allow_http: bool = field(metadata={"alias": "allowHttp"})

    allow_https: bool = field(metadata={"alias": "allowHttps"})

    allow_tftp: bool = field(metadata={"alias": "allowTftp"})

    enable_caching: bool = field(metadata={"alias": "enableCaching"})

    allow_upload_from_device: bool = field(metadata={"alias": "allowUploadFromDevice"})

    default_extended_file_capture_mode: Optional[bool] = field(
        default=None, metadata={"alias": "defaultExtendedFileCaptureMode"}
    )


@dataclass(kw_only=True)
class SystemSIPDeviceTypeGetListResponse(OCIDataResponse):
    """Response to SystemSIPDeviceTypeGetListRequest.
        Contains a table of identity/ device profile types configured in the system.
        The column headings are: \"Device Type\", \"Profile\", \"Is Obsolete\" and \"Reseller Id\".

        The following columns are only returned in AS data mode:
          \"Reseller Id\"

    Attributes:

        device_type_table (OCITable):

    """

    device_type_table: OCITable = field(metadata={"alias": "deviceTypeTable"})


@dataclass(kw_only=True)
class SystemSIPDeviceTypeGetResponse23V13(OCIDataResponse):
    """Response to SystemSIPDeviceTypeGetRequest23V13.
        The following elements are only used in AS data mode:
          supportClientSessionInfo, should be set to \"false\" if not used
          supportCallInfoConferenceSubscriptionURI, should be set to \"false\" if not used
          supportRemotePartyInfo,should be set to \"false\" if not used
          supportVisualDeviceManagementRedirectLink, should be set to \"false\" if not used
          bypassMediaTreatment, should be set to \"false\" if not used
          supportCauseParameter, should be set to \"false\" if not used
          supportCallingPartyCategoryInOutboundFromHeader, should be set to \"true\" if not used
          resellerId
          supportVisualDeviceManagementAPI, should be set to \"false\" if not used
          supportPreferredAutoAndForcedAnswer, should be set to \"false\" if not used
          supportCiscoCallerIdDispositionHeader

        The following elements are only used in AS data mode and not returned in XS data mode:
          deviceCategory
          deviceFamily

        The following elements are only used in XS data mode:
          enhancedForICS, should be set to \"false\" if not used
          supports3G4GContinuity, should be set to \"false\" if not used
          publishesOwnPresence, should be set to \"false\" if not used
          locationNetwork, should be set to \"Fixed\" if not used
          allowTerminationBasedOnICSI, should be set to \"false\" if not used
          roamingMode, should be set to \"None\" if not used

    Attributes:

        is_obsolete (bool):

        number_of_ports (UnboundedPositiveInt):

        profile (str):

        registration_capable (bool):

        is_conference_device (bool):

        is_mobility_manager_device (bool):

        is_music_on_hold_device (bool):

        hold_normalization (str):

        hold_announcement_method (str):

        is_trusted (bool):

        e164_capable (bool):

        route_advance (bool):

        forwarding_override (bool):

        wireless_integration (bool):

        web_based_config_url (Optional[str]):

        is_video_capable (bool):

        pbx_integration (bool):

        static_registration_capable (bool):

        cpe_device_options (Optional[CPEDeviceOptionsRead22V6]):

        protocol_choice (List[str]):

        early_media_support (str):

        authenticate_refer (bool):

        auto_config_soft_client (bool):

        authentication_mode (str):

        requires_broad_works_digit_collection (bool):

        requires_broad_works_call_waiting_tone (bool):

        requires_mwi_subscription (bool):

        use_history_info_header_on_access_side (bool):

        advice_of_charge_capable (bool):

        reset_event (Optional[str]):

        reset_string (Optional[str]):

        support_call_center_mime_type (bool):

        trunk_mode (str):

        add_p_called_party_id (bool):

        support_identity_in_update_and_re_invite (bool):

        unscreened_presentation_identity_policy (str):

        enhanced_for_ics (Optional[bool]):

        support_emergency_disconnect_control (bool):

        device_type_configuration_option (str):

        support_rfc3398 (bool):

        static_line_ordering (bool):

        support_client_session_info (bool):

        support_call_info_conference_subscription_uri (bool):

        support_remote_party_info (bool):

        support_visual_device_management_redirect_link (bool):

        bypass_media_treatment (bool):

        supports3_g4_g_continuity (Optional[bool]):

        publishes_own_presence (Optional[bool]):

        support_cause_parameter (bool):

        location_network (Optional[str]):

        reseller_id (Optional[str]):

        allow_termination_based_on_icsi (Optional[bool]):

        roaming_mode (Optional[str]):

        support_calling_party_category_in_outbound_from_header (bool):

        support_visual_device_management_api (Optional[bool]):

        device_category (Optional[str]):

        device_family (Optional[str]):

        verstat_in_pai_header (Optional[bool]):

        verstat_in_from_header (Optional[bool]):

        support_preferred_auto_and_forced_answer (bool):

        support_cisco_caller_id_disposition_header (Optional[bool]):

    """

    is_obsolete: bool = field(metadata={"alias": "isObsolete"})

    number_of_ports: UnboundedPositiveInt = field(metadata={"alias": "numberOfPorts"})

    profile: str = field(metadata={"alias": "profile"})

    registration_capable: bool = field(metadata={"alias": "registrationCapable"})

    is_conference_device: bool = field(metadata={"alias": "isConferenceDevice"})

    is_mobility_manager_device: bool = field(
        metadata={"alias": "isMobilityManagerDevice"}
    )

    is_music_on_hold_device: bool = field(metadata={"alias": "isMusicOnHoldDevice"})

    hold_normalization: str = field(metadata={"alias": "holdNormalization"})

    hold_announcement_method: str = field(metadata={"alias": "holdAnnouncementMethod"})

    is_trusted: bool = field(metadata={"alias": "isTrusted"})

    e164_capable: bool = field(metadata={"alias": "E164Capable"})

    route_advance: bool = field(metadata={"alias": "routeAdvance"})

    forwarding_override: bool = field(metadata={"alias": "forwardingOverride"})

    wireless_integration: bool = field(metadata={"alias": "wirelessIntegration"})

    web_based_config_url: Optional[str] = field(
        default=None, metadata={"alias": "webBasedConfigURL"}
    )

    is_video_capable: bool = field(metadata={"alias": "isVideoCapable"})

    pbx_integration: bool = field(metadata={"alias": "PBXIntegration"})

    static_registration_capable: bool = field(
        metadata={"alias": "staticRegistrationCapable"}
    )

    cpe_device_options: Optional[CPEDeviceOptionsRead22V6] = field(
        default=None, metadata={"alias": "cpeDeviceOptions"}
    )

    protocol_choice: List[str] = field(metadata={"alias": "protocolChoice"})

    early_media_support: str = field(metadata={"alias": "earlyMediaSupport"})

    authenticate_refer: bool = field(metadata={"alias": "authenticateRefer"})

    auto_config_soft_client: bool = field(metadata={"alias": "autoConfigSoftClient"})

    authentication_mode: str = field(metadata={"alias": "authenticationMode"})

    requires_broad_works_digit_collection: bool = field(
        metadata={"alias": "requiresBroadWorksDigitCollection"}
    )

    requires_broad_works_call_waiting_tone: bool = field(
        metadata={"alias": "requiresBroadWorksCallWaitingTone"}
    )

    requires_mwi_subscription: bool = field(
        metadata={"alias": "requiresMWISubscription"}
    )

    use_history_info_header_on_access_side: bool = field(
        metadata={"alias": "useHistoryInfoHeaderOnAccessSide"}
    )

    advice_of_charge_capable: bool = field(metadata={"alias": "adviceOfChargeCapable"})

    reset_event: Optional[str] = field(default=None, metadata={"alias": "resetEvent"})

    reset_string: Optional[str] = field(default=None, metadata={"alias": "resetString"})

    support_call_center_mime_type: bool = field(
        metadata={"alias": "supportCallCenterMIMEType"}
    )

    trunk_mode: str = field(metadata={"alias": "trunkMode"})

    add_p_called_party_id: bool = field(metadata={"alias": "addPCalledPartyId"})

    support_identity_in_update_and_re_invite: bool = field(
        metadata={"alias": "supportIdentityInUpdateAndReInvite"}
    )

    unscreened_presentation_identity_policy: str = field(
        metadata={"alias": "unscreenedPresentationIdentityPolicy"}
    )

    enhanced_for_ics: Optional[bool] = field(
        default=None, metadata={"alias": "enhancedForICS"}
    )

    support_emergency_disconnect_control: bool = field(
        metadata={"alias": "supportEmergencyDisconnectControl"}
    )

    device_type_configuration_option: str = field(
        metadata={"alias": "deviceTypeConfigurationOption"}
    )

    support_rfc3398: bool = field(metadata={"alias": "supportRFC3398"})

    static_line_ordering: bool = field(metadata={"alias": "staticLineOrdering"})

    support_client_session_info: bool = field(
        metadata={"alias": "supportClientSessionInfo"}
    )

    support_call_info_conference_subscription_uri: bool = field(
        metadata={"alias": "supportCallInfoConferenceSubscriptionURI"}
    )

    support_remote_party_info: bool = field(
        metadata={"alias": "supportRemotePartyInfo"}
    )

    support_visual_device_management_redirect_link: bool = field(
        metadata={"alias": "supportVisualDeviceManagementRedirectLink"}
    )

    bypass_media_treatment: bool = field(metadata={"alias": "bypassMediaTreatment"})

    supports3_g4_g_continuity: Optional[bool] = field(
        default=None, metadata={"alias": "supports3G4GContinuity"}
    )

    publishes_own_presence: Optional[bool] = field(
        default=None, metadata={"alias": "publishesOwnPresence"}
    )

    support_cause_parameter: bool = field(metadata={"alias": "supportCauseParameter"})

    location_network: Optional[str] = field(
        default=None, metadata={"alias": "locationNetwork"}
    )

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    allow_termination_based_on_icsi: Optional[bool] = field(
        default=None, metadata={"alias": "allowTerminationBasedOnICSI"}
    )

    roaming_mode: Optional[str] = field(default=None, metadata={"alias": "roamingMode"})

    support_calling_party_category_in_outbound_from_header: bool = field(
        metadata={"alias": "supportCallingPartyCategoryInOutboundFromHeader"}
    )

    support_visual_device_management_api: Optional[bool] = field(
        default=None, metadata={"alias": "supportVisualDeviceManagementAPI"}
    )

    device_category: Optional[str] = field(
        default=None, metadata={"alias": "deviceCategory"}
    )

    device_family: Optional[str] = field(
        default=None, metadata={"alias": "deviceFamily"}
    )

    verstat_in_pai_header: Optional[bool] = field(
        default=None, metadata={"alias": "verstatInPAIHeader"}
    )

    verstat_in_from_header: Optional[bool] = field(
        default=None, metadata={"alias": "verstatInFromHeader"}
    )

    support_preferred_auto_and_forced_answer: bool = field(
        metadata={"alias": "supportPreferredAutoAndForcedAnswer"}
    )

    support_cisco_caller_id_disposition_header: Optional[bool] = field(
        default=None, metadata={"alias": "supportCiscoCallerIdDispositionHeader"}
    )


@dataclass(kw_only=True)
class SystemSIPDeviceTypeLanguageMappingGetListResponse(OCIDataResponse):
    """Response to SystemSIPDeviceTypeLanguageMappingGetListRequest.
        Contains a table of device type languages mapped to equivalent BroadWorks languages.
        The column headings are: \"BroadWorks Language\", \"Device Language\".

    Attributes:

        device_type_languages_table (OCITable):

    """

    device_type_languages_table: OCITable = field(
        metadata={"alias": "deviceTypeLanguagesTable"}
    )


@dataclass(kw_only=True)
class SystemSIPDeviceTypeServiceGetResponse(OCIDataResponse):
    """Response to SystemSIPDeviceTypeServiceGetRequest.
        Contains the list of device type services integrated to BroadWorks.

    Attributes:

        supports_polycom_phone_services (bool):

    """

    supports_polycom_phone_services: bool = field(
        metadata={"alias": "supportsPolycomPhoneServices"}
    )


@dataclass(kw_only=True)
class SystemSIPDiversionReasonGetResponse(OCIDataResponse):
    """Response to SystemSIPDiversionReasonGetRequest.
        Contains a table containing a list of diversion reasons and associated cause values.
        The column headings are: \"Diversion Reaon\", \"Cause Value\".

    Attributes:

        diversion_reason_table (OCITable):

    """

    diversion_reason_table: OCITable = field(metadata={"alias": "diversionReasonTable"})


@dataclass(kw_only=True)
class SystemSIPGetACLListResponse(OCIDataResponse):
    """Response to SystemSIPGetACLListRequest. The table columns are:
        \"Net Address\", \"Transport\" and \"Description\".

    Attributes:

        acl_table (OCITable):

    """

    acl_table: OCITable = field(metadata={"alias": "aclTable"})


@dataclass(kw_only=True)
class SystemSIPGetContentTypeListResponse(OCIDataResponse):
    """Response to SystemSIPGetContentTypeListRequest.
        Returns a 2 column table with column headings:
          \"Content Type\" and \"Supported Interface\".

    Attributes:

        content_type_table (OCITable):

    """

    content_type_table: OCITable = field(metadata={"alias": "contentTypeTable"})


@dataclass(kw_only=True)
class SystemSMDIGetACLListResponse(OCIDataResponse):
    """Response to SystemSMDIGetACLListRequest. The table columns are:
        \"Net Address\" and \"Description\".

    Attributes:

        acl_table (OCITable):

    """

    acl_table: OCITable = field(metadata={"alias": "aclTable"})


@dataclass(kw_only=True)
class SystemSMDIMessageDeskGetServerListResponse(OCIDataResponse):
    """Response to SystemMediaServerGetListRequest. The SMDI Server table column
        headings are: \"Device Name\", \"Net Address\", \"Port\" and \"Description\".

    Attributes:

        smdi_server_table (OCITable):

    """

    smdi_server_table: OCITable = field(metadata={"alias": "smdiServerTable"})


@dataclass(kw_only=True)
class SystemSMDIMessageDeskGetServerRouteListResponse(OCIDataResponse):
    """Response to SystemSMDIMessageDeskGetServerRouteListRequest.
        The SMDI Server route table column headings are: \"Destination\" and \"SMDI Servers\".

    Attributes:

        smdi_server_route_table (OCITable):

    """

    smdi_server_route_table: OCITable = field(
        metadata={"alias": "smdiServerRouteTable"}
    )


@dataclass(kw_only=True)
class SystemSMDIParametersGetResponse(OCIDataResponse):
    """Response to SystemSMDIParametersGetListRequest.
        Contains a list of system SMDI parameters.

    Attributes:

        enable_smdi (bool):

        listening_port (int):

        max_connections (int):

    """

    enable_smdi: bool = field(metadata={"alias": "enableSMDI"})

    listening_port: int = field(metadata={"alias": "listeningPort"})

    max_connections: int = field(metadata={"alias": "maxConnections"})


@dataclass(kw_only=True)
class SystemSMPPGetResponse22(OCIDataResponse):
    """Response to SystemSMPPGetRequest22.

    Attributes:

        primary_smpp_server_net_address (Optional[str]):

        primary_smpp_port (int):

        secondary_smpp_server_net_address (Optional[str]):

        secondary_smpp_port (int):

        system_id (Optional[str]):

        password (Optional[str]):

        version (str):

        system_type (Optional[str]):

        enable_mwi_customized_message (bool):

        support_message_payload (bool):

        max_short_message_length (int):

        use_gsm_mwi_ucs2_encoding (bool):

        include_only_new_message_count (bool):

    """

    primary_smpp_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "primarySMPPServerNetAddress"}
    )

    primary_smpp_port: int = field(metadata={"alias": "primarySMPPPort"})

    secondary_smpp_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "secondarySMPPServerNetAddress"}
    )

    secondary_smpp_port: int = field(metadata={"alias": "secondarySMPPPort"})

    system_id: Optional[str] = field(default=None, metadata={"alias": "systemId"})

    password: Optional[str] = field(default=None, metadata={"alias": "password"})

    version: str = field(metadata={"alias": "version"})

    system_type: Optional[str] = field(default=None, metadata={"alias": "systemType"})

    enable_mwi_customized_message: bool = field(
        metadata={"alias": "enableMWICustomizedMessage"}
    )

    support_message_payload: bool = field(metadata={"alias": "supportMessagePayload"})

    max_short_message_length: int = field(metadata={"alias": "maxShortMessageLength"})

    use_gsm_mwi_ucs2_encoding: bool = field(metadata={"alias": "useGsmMwiUcs2Encoding"})

    include_only_new_message_count: bool = field(
        metadata={"alias": "includeOnlyNewMessageCount"}
    )


@dataclass(kw_only=True)
class SystemScheduleGetEventListResponse(OCIDataResponse):
    """Response to SystemScheduleGetEventListRequest.
        The response contains a list of events.

    Attributes:

        event_name (Optional[List[str]]):

    """

    event_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "eventName"}
    )


@dataclass(kw_only=True)
class SystemScheduleGetEventResponse(OCIDataResponse):
    """Response to SystemScheduleGetEventRequest.
        The response contains the event of the system schedulable.

    Attributes:

        start_date (int):

        all_day_event (Optional[bool]):

        start_time (Optional[HourMinute]):

        end_time (Optional[HourMinute]):

        end_date (int):

        recurrence (Optional[Recurrence]):

    """

    start_date: int = field(metadata={"alias": "startDate"})

    all_day_event: Optional[bool] = field(
        default=None, metadata={"alias": "allDayEvent"}
    )

    start_time: Optional[HourMinute] = field(
        default=None, metadata={"alias": "startTime"}
    )

    end_time: Optional[HourMinute] = field(default=None, metadata={"alias": "endTime"})

    end_date: int = field(metadata={"alias": "endDate"})

    recurrence: Optional[Recurrence] = field(
        default=None, metadata={"alias": "recurrence"}
    )


@dataclass(kw_only=True)
class SystemScheduleGetListResponse(OCIDataResponse):
    """Response to SystemScheduleGetListRequest.
        The response contains a list of system schedules.

    Attributes:

        schedule_name (Optional[List[str]]):

        schedule_type (Optional[List[str]]):

    """

    schedule_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "scheduleName"}
    )

    schedule_type: Optional[List[str]] = field(
        default=None, metadata={"alias": "scheduleType"}
    )


@dataclass(kw_only=True)
class SystemSecurityClassificationGetClassificationResponse(OCIDataResponse):
    """Response to the SystemSecurityClassificationGetClassificationRequest.

    Attributes:

        audio_announcement_file_description (str):

        audio_announcement_file_type (str):

    """

    audio_announcement_file_description: str = field(
        metadata={"alias": "audioAnnouncementFileDescription"}
    )

    audio_announcement_file_type: str = field(
        metadata={"alias": "audioAnnouncementFileType"}
    )


@dataclass(kw_only=True)
class SystemSecurityClassificationGetClassificationTrunkGroupUsageListResponse(
    OCIDataResponse
):
    """Response to the SystemSecurityClassificationGetClassificationTrunkGroupUsageListRequest.
        Contains a table with column headings:
        \"Trunk Group Name\",\"Group ID\",\"Organization ID\" and \"Organization Type\"

    Attributes:

        usage_table (OCITable):

    """

    usage_table: OCITable = field(metadata={"alias": "usageTable"})


@dataclass(kw_only=True)
class SystemSecurityClassificationGetClassificationUserUsageListResponse(
    OCIDataResponse
):
    """Response to the SystemSecurityClassificationGetClassificationUserUsageListRequest.
        Contains a table with column headings:
        \"User ID\", \"Last Name\", \"First Name\", \"Phone Number\", \"Extension\", \"Service Provider Id\", \"Group Id\".

    Attributes:

        usage_table (OCITable):

    """

    usage_table: OCITable = field(metadata={"alias": "usageTable"})


@dataclass(kw_only=True)
class SystemSecurityClassificationGetResponse21(OCIDataResponse):
    """Response to the SystemSecurityClassificationGetRequest21.
        Contains a table with column headings:
        \"Name\", \"Priority\".

    Attributes:

        meet_me_annc_threshold (int):

        play_trunk_user_security_classification_announcement (bool):

        security_classification_table (OCITable):

    """

    meet_me_annc_threshold: int = field(metadata={"alias": "meetMeAnncThreshold"})

    play_trunk_user_security_classification_announcement: bool = field(
        metadata={"alias": "playTrunkUserSecurityClassificationAnnouncement"}
    )

    security_classification_table: OCITable = field(
        metadata={"alias": "SecurityClassificationTable"}
    )


@dataclass(kw_only=True)
class SystemSelectiveServicesGetResponse22(OCIDataResponse):
    """Response to SystemSelectiveServicesGetRequest22.

    Attributes:

        schedule_combination (str):

        screen_private_number (bool):

        empty_holiday_schedule_is_out_of_schedule (bool):

    """

    schedule_combination: str = field(metadata={"alias": "scheduleCombination"})

    screen_private_number: bool = field(metadata={"alias": "screenPrivateNumber"})

    empty_holiday_schedule_is_out_of_schedule: bool = field(
        metadata={"alias": "emptyHolidayScheduleIsOutOfSchedule"}
    )


@dataclass(kw_only=True)
class SystemServerAddressesGetResponse(OCIDataResponse):
    """Response to SystemServerAddressesGetRequest.
        Contains a list of system Server Addresses.
        See also:
          PrimaryInfoGetResponse
          PublicClusterGetFullyQualifiedDomainNameResponse
          ServingInfoGetResponse

    Attributes:

        web_server_cluster_public_fqdn (Optional[str]):

        application_server_cluster_primary_public_fqdn (Optional[str]):

        application_server_cluster_secondary_public_fqdn (Optional[str]):

        application_server_cluster_primary_private_fqdn (Optional[str]):

        application_server_cluster_secondary_private_fqdn (Optional[str]):

    """

    web_server_cluster_public_fqdn: Optional[str] = field(
        default=None, metadata={"alias": "webServerClusterPublicFQDN"}
    )

    application_server_cluster_primary_public_fqdn: Optional[str] = field(
        default=None, metadata={"alias": "applicationServerClusterPrimaryPublicFQDN"}
    )

    application_server_cluster_secondary_public_fqdn: Optional[str] = field(
        default=None, metadata={"alias": "applicationServerClusterSecondaryPublicFQDN"}
    )

    application_server_cluster_primary_private_fqdn: Optional[str] = field(
        default=None, metadata={"alias": "applicationServerClusterPrimaryPrivateFQDN"}
    )

    application_server_cluster_secondary_private_fqdn: Optional[str] = field(
        default=None, metadata={"alias": "applicationServerClusterSecondaryPrivateFQDN"}
    )


@dataclass(kw_only=True)
class SystemServiceActivationAccessCodeGetResponse(OCIDataResponse):
    """Response to SystemServiceActivationAccessCodeGetRequest.
        Contains Service Activation Access Code system parameters.

    Attributes:

        is_active (bool):

        terminating_access_code (Optional[str]):

        redirecting_access_code (Optional[str]):

        click_to_dial_access_code (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    terminating_access_code: Optional[str] = field(
        default=None, metadata={"alias": "terminatingAccessCode"}
    )

    redirecting_access_code: Optional[str] = field(
        default=None, metadata={"alias": "redirectingAccessCode"}
    )

    click_to_dial_access_code: Optional[str] = field(
        default=None, metadata={"alias": "clickToDialAccessCode"}
    )


@dataclass(kw_only=True)
class SystemServiceAttributeDefaultGetListResponse(OCIDataResponse):
    """Response to SystemServiceAttributeDefaultGetListRequest.
        Contains an array Service Attribute entries.

    Attributes:

        service_attribute_entry (List[ServiceAttributeEntryRead]):

    """

    service_attribute_entry: List[ServiceAttributeEntryRead] = field(
        metadata={"alias": "serviceAttributeEntry"}
    )


@dataclass(kw_only=True)
class SystemServiceCodeGetListResponse(OCIDataResponse):
    """Response to SystemServiceCodeGetListRequest.
        Contains a table of defined service codes
        The column headings are: \"Service Code\", and \"Description\".

    Attributes:

        service_code_table (OCITable):

    """

    service_code_table: OCITable = field(metadata={"alias": "serviceCodeTable"})


@dataclass(kw_only=True)
class SystemServicePackMigrationGetResponse(OCIDataResponse):
    """Response to the SystemServicePackMigrationGetRequest.
        The response contains the Service Pack Migration system level settings.

    Attributes:

        max_simultaneous_migration_tasks (int):

    """

    max_simultaneous_migration_tasks: int = field(
        metadata={"alias": "maxSimultaneousMigrationTasks"}
    )


@dataclass(kw_only=True)
class SystemServicePhoneNumberLookupResponse(OCIDataResponse):
    """Response to the SystemServicePhoneNumberLookupRequest.
        The column headings for the userTable are: \"Service Provider Id\", \"Is Enterprise\", \"Group Id\", \"User Id\",
        \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\", \"Phone Number\" and \"Extension\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class SystemSessionAdmissionControlGetResponse25(OCIDataResponse):
    """Response to the SystemSessionAdmissionControlGetRequest22V3.
        The response contains the session admission control settings for the system.

    Attributes:

        count_long_connections_to_media_server (bool):

        sac_handling_for_mo_h (str):

        block_vm_deposit_due_to_sac_limits (bool):

        sac_codec_selection_policy (str):

        count_call_to_mobile_number_for_sac_subscriber (bool):

        count_bw_anywhere_for_sac_subscriber (bool):

        count_ro_for_sac_subscriber (bool):

        exclude_bw_mobility_for_sac_subscriber (bool):

        enable_holdover_of_highwater_session_counts (bool):

        holdover_period_minutes (str):

        time_zone_offset_minutes (str):

        count_calls_redirected_to_external_destination (bool):

        release_bw_anywhere_devices_only (bool):

    """

    count_long_connections_to_media_server: bool = field(
        metadata={"alias": "countLongConnectionsToMediaServer"}
    )

    sac_handling_for_mo_h: str = field(metadata={"alias": "sacHandlingForMoH"})

    block_vm_deposit_due_to_sac_limits: bool = field(
        metadata={"alias": "blockVMDepositDueToSACLimits"}
    )

    sac_codec_selection_policy: str = field(
        metadata={"alias": "sacCodecSelectionPolicy"}
    )

    count_call_to_mobile_number_for_sac_subscriber: bool = field(
        metadata={"alias": "countCallToMobileNumberForSACSubscriber"}
    )

    count_bw_anywhere_for_sac_subscriber: bool = field(
        metadata={"alias": "countBWAnywhereForSACSubscriber"}
    )

    count_ro_for_sac_subscriber: bool = field(
        metadata={"alias": "countROForSACSubscriber"}
    )

    exclude_bw_mobility_for_sac_subscriber: bool = field(
        metadata={"alias": "excludeBWMobilityForSACSubscriber"}
    )

    enable_holdover_of_highwater_session_counts: bool = field(
        metadata={"alias": "enableHoldoverOfHighwaterSessionCounts"}
    )

    holdover_period_minutes: str = field(metadata={"alias": "holdoverPeriodMinutes"})

    time_zone_offset_minutes: str = field(metadata={"alias": "timeZoneOffsetMinutes"})

    count_calls_redirected_to_external_destination: bool = field(
        metadata={"alias": "countCallsRedirectedToExternalDestination"}
    )

    release_bw_anywhere_devices_only: bool = field(
        metadata={"alias": "releaseBWAnywhereDevicesOnly"}
    )


@dataclass(kw_only=True)
class SystemSessionAuditGetResponse23(OCIDataResponse):
    """Response to SystemSessionAuditGetRequest23.
        The following elements are only used in AS data mode:
        msAuditIntervalSeconds, value 1200 is returned in XS data mode

    Attributes:

        is_audit_active (bool):

        audit_interval_seconds (int):

        audit_timeout_seconds (int):

        release_call_on_audit_failure (bool):

        is_sip_refresh_allowed_on_audit (bool):

        allow_update_for_sip_refresh (bool):

        is_sip_session_timer_active (bool):

        sip_session_expires_minimum_seconds (int):

        enforce_sip_session_expires_maximum (bool):

        sip_session_expires_maximum_seconds (int):

        sip_session_expires_timer_seconds (int):

        always_use_session_timer_when_supported (bool):

        preferred_session_timer_refresher (str):

        enable_emergency_call_alarm_timer (bool):

        emergency_call_alarm_minutes (int):

        enable_emergency_call_cleanup_timer (bool):

        emergency_call_cleanup_minutes (int):

        always_allow_refresh_for_ms (bool):

        ms_audit_interval_seconds (int):

    """

    is_audit_active: bool = field(metadata={"alias": "isAuditActive"})

    audit_interval_seconds: int = field(metadata={"alias": "auditIntervalSeconds"})

    audit_timeout_seconds: int = field(metadata={"alias": "auditTimeoutSeconds"})

    release_call_on_audit_failure: bool = field(
        metadata={"alias": "releaseCallOnAuditFailure"}
    )

    is_sip_refresh_allowed_on_audit: bool = field(
        metadata={"alias": "isSIPRefreshAllowedOnAudit"}
    )

    allow_update_for_sip_refresh: bool = field(
        metadata={"alias": "allowUpdateForSIPRefresh"}
    )

    is_sip_session_timer_active: bool = field(
        metadata={"alias": "isSIPSessionTimerActive"}
    )

    sip_session_expires_minimum_seconds: int = field(
        metadata={"alias": "sipSessionExpiresMinimumSeconds"}
    )

    enforce_sip_session_expires_maximum: bool = field(
        metadata={"alias": "enforceSIPSessionExpiresMaximum"}
    )

    sip_session_expires_maximum_seconds: int = field(
        metadata={"alias": "sipSessionExpiresMaximumSeconds"}
    )

    sip_session_expires_timer_seconds: int = field(
        metadata={"alias": "sipSessionExpiresTimerSeconds"}
    )

    always_use_session_timer_when_supported: bool = field(
        metadata={"alias": "alwaysUseSessionTimerWhenSupported"}
    )

    preferred_session_timer_refresher: str = field(
        metadata={"alias": "preferredSessionTimerRefresher"}
    )

    enable_emergency_call_alarm_timer: bool = field(
        metadata={"alias": "enableEmergencyCallAlarmTimer"}
    )

    emergency_call_alarm_minutes: int = field(
        metadata={"alias": "emergencyCallAlarmMinutes"}
    )

    enable_emergency_call_cleanup_timer: bool = field(
        metadata={"alias": "enableEmergencyCallCleanupTimer"}
    )

    emergency_call_cleanup_minutes: int = field(
        metadata={"alias": "emergencyCallCleanupMinutes"}
    )

    always_allow_refresh_for_ms: bool = field(
        metadata={"alias": "alwaysAllowRefreshForMS"}
    )

    ms_audit_interval_seconds: int = field(metadata={"alias": "msAuditIntervalSeconds"})


@dataclass(kw_only=True)
class SystemShInterfaceParametersGetResponse17(OCIDataResponse):
    """Response to SystemShInterfaceParametersGetRequest.  Contains the Sh Interface system parameters.

    Attributes:

        hss_realm (Optional[str]):

        public_identity_refresh_delay_seconds (int):

    """

    hss_realm: Optional[str] = field(default=None, metadata={"alias": "hssRealm"})

    public_identity_refresh_delay_seconds: int = field(
        metadata={"alias": "publicIdentityRefreshDelaySeconds"}
    )


@dataclass(kw_only=True)
class SystemShInterfaceRefreshTaskGetResponse(OCIDataResponse):
    """Response to SystemShInterfaceRefreshTaskGetRequest.  Provides the status of the system refresh task.  If isRunning is false, numberPublicIdentityRefreshStarted and numberPublicIdentities are omitted.  If isRunning is true, numberPublicIdentities indicates the total number of public identities in the system that will be refreshed by the system refresh task; numberPublicIdentityRefreshesStarted indicates the total number of public identities for which a refresh has been started.

    Attributes:

        is_running (bool):

        number_public_identity_refreshes_started (Optional[int]):

        number_public_identities (Optional[int]):

    """

    is_running: bool = field(metadata={"alias": "isRunning"})

    number_public_identity_refreshes_started: Optional[int] = field(
        default=None, metadata={"alias": "numberPublicIdentityRefreshesStarted"}
    )

    number_public_identities: Optional[int] = field(
        default=None, metadata={"alias": "numberPublicIdentities"}
    )


@dataclass(kw_only=True)
class SystemSoftwareVersionGetResponse(OCIDataResponse):
    """Response to the SystemSoftwareVersionGetRequest.

    Attributes:

        version (str):

    """

    version: str = field(metadata={"alias": "version"})


@dataclass(kw_only=True)
class SystemSpeedDial100GetResponse17sp1(OCIDataResponse):
    """Response to the SystemSpeedDial100GetRequest17sp1.

    Attributes:

        prefix (Optional[str]):

    """

    prefix: Optional[str] = field(default=None, metadata={"alias": "prefix"})


@dataclass(kw_only=True)
class SystemStateOrProvinceGetListResponse(OCIDataResponse):
    """Contains a 2 column table with column headings 'Key' and 'Display Name' and a row
        for each state or province.

    Attributes:

        state_or_province_table (OCITable):

    """

    state_or_province_table: OCITable = field(
        metadata={"alias": "stateOrProvinceTable"}
    )


@dataclass(kw_only=True)
class SystemStirShakenCallerIdDispositionMappingGetResponse(OCIDataResponse):
    """Response to SystemStirShakenCallerIdDispositionMappingModifyRequest.
        Contains a table of Caller Id Disposition mapping.
        The column headings are: \"Verstat\", \"Attestation\", \"Disposition\".

    Attributes:

        caller_id_disposition_mapping_table (OCITable):

    """

    caller_id_disposition_mapping_table: OCITable = field(
        metadata={"alias": "callerIdDispositionMappingTable"}
    )


@dataclass(kw_only=True)
class SystemStirShakenGetResponse23V2(OCIDataResponse):
    """Response to the SystemStirShakenGetRequest23V2.

    Attributes:

        signing_policy (str):

        tagging_policy (str):

        sign_emergency_calls (bool):

        tag_emergency_calls (bool):

        signing_service_url (Optional[str]):

        tag_from_or_pai (str):

        verstat_tag (str):

        use_os_value_for_orig_id (bool):

        orig_uuid (Optional[str]):

        attestation_level (str):

        enable_verification (bool):

        verification_service_url (Optional[str]):

        verification_error_handling (str):

        proxy_verstat_to_cnam_subscribe (bool):

        use_unknown_headers_from_cnam_notify (bool):

        use_ts24229_headers (bool):

        enable_signing_for_unscreened_trunk_group_originations (bool):

        enable_tagging_for_unscreened_trunk_group_originations (bool):

        unscreened_trunk_group_origination_attestation_level (str):

        verify_gets_calls (bool):

        allow_partial_ingress_tagging (bool):

        include_verstat_to_mobile_network_locations (bool):

        allow_verstat_in_sipuri_with_phone_correction (bool):

        include_tagged_headers_to_access_side (bool):

        proxy_identity_header_to_access_side (bool):

        check_directory_numbers_for_attestation (bool):

        match_unassigned_numbers_only (bool):

        enable_tagging_for_redirected_calls (bool):

        prefer_ingress_tagging (bool):

    """

    signing_policy: str = field(metadata={"alias": "signingPolicy"})

    tagging_policy: str = field(metadata={"alias": "taggingPolicy"})

    sign_emergency_calls: bool = field(metadata={"alias": "signEmergencyCalls"})

    tag_emergency_calls: bool = field(metadata={"alias": "tagEmergencyCalls"})

    signing_service_url: Optional[str] = field(
        default=None, metadata={"alias": "signingServiceURL"}
    )

    tag_from_or_pai: str = field(metadata={"alias": "tagFromOrPAI"})

    verstat_tag: str = field(metadata={"alias": "verstatTag"})

    use_os_value_for_orig_id: bool = field(metadata={"alias": "useOSValueForOrigId"})

    orig_uuid: Optional[str] = field(default=None, metadata={"alias": "origUUID"})

    attestation_level: str = field(metadata={"alias": "attestationLevel"})

    enable_verification: bool = field(metadata={"alias": "enableVerification"})

    verification_service_url: Optional[str] = field(
        default=None, metadata={"alias": "verificationServiceURL"}
    )

    verification_error_handling: str = field(
        metadata={"alias": "verificationErrorHandling"}
    )

    proxy_verstat_to_cnam_subscribe: bool = field(
        metadata={"alias": "proxyVerstatToCNAMSubscribe"}
    )

    use_unknown_headers_from_cnam_notify: bool = field(
        metadata={"alias": "useUnknownHeadersFromCNAMNotify"}
    )

    use_ts24229_headers: bool = field(metadata={"alias": "useTS24229Headers"})

    enable_signing_for_unscreened_trunk_group_originations: bool = field(
        metadata={"alias": "enableSigningForUnscreenedTrunkGroupOriginations"}
    )

    enable_tagging_for_unscreened_trunk_group_originations: bool = field(
        metadata={"alias": "enableTaggingForUnscreenedTrunkGroupOriginations"}
    )

    unscreened_trunk_group_origination_attestation_level: str = field(
        metadata={"alias": "unscreenedTrunkGroupOriginationAttestationLevel"}
    )

    verify_gets_calls: bool = field(metadata={"alias": "verifyGETSCalls"})

    allow_partial_ingress_tagging: bool = field(
        metadata={"alias": "allowPartialIngressTagging"}
    )

    include_verstat_to_mobile_network_locations: bool = field(
        metadata={"alias": "includeVerstatToMobileNetworkLocations"}
    )

    allow_verstat_in_sipuri_with_phone_correction: bool = field(
        metadata={"alias": "allowVerstatInSIPURIWithPhoneCorrection"}
    )

    include_tagged_headers_to_access_side: bool = field(
        metadata={"alias": "includeTaggedHeadersToAccessSide"}
    )

    proxy_identity_header_to_access_side: bool = field(
        metadata={"alias": "proxyIdentityHeaderToAccessSide"}
    )

    check_directory_numbers_for_attestation: bool = field(
        metadata={"alias": "checkDirectoryNumbersForAttestation"}
    )

    match_unassigned_numbers_only: bool = field(
        metadata={"alias": "matchUnassignedNumbersOnly"}
    )

    enable_tagging_for_redirected_calls: bool = field(
        metadata={"alias": "enableTaggingForRedirectedCalls"}
    )

    prefer_ingress_tagging: bool = field(metadata={"alias": "preferIngressTagging"})


@dataclass(kw_only=True)
class SystemSubscriberGetCallProcessingParametersResponse18sp1(OCIDataResponse):
    """Response to the SystemSubscriberGetCallProcessingParametersRequest18sp1.

    Attributes:

        is_extended_calling_line_id_active (bool):

        is_ring_time_out_active (bool):

        ring_timeout_seconds (int):

        allow_emergency_remote_office_originations (bool):

        max_no_answer_number_of_rings (int):

        incoming_call_to_user_alias_mode (str):

        bypass_termination_loop_detection (bool):

        honor_clid_blocking_for_emergency_calls (bool):

        use_unicode_identity_name (bool):

    """

    is_extended_calling_line_id_active: bool = field(
        metadata={"alias": "isExtendedCallingLineIdActive"}
    )

    is_ring_time_out_active: bool = field(metadata={"alias": "isRingTimeOutActive"})

    ring_timeout_seconds: int = field(metadata={"alias": "ringTimeoutSeconds"})

    allow_emergency_remote_office_originations: bool = field(
        metadata={"alias": "allowEmergencyRemoteOfficeOriginations"}
    )

    max_no_answer_number_of_rings: int = field(
        metadata={"alias": "maxNoAnswerNumberOfRings"}
    )

    incoming_call_to_user_alias_mode: str = field(
        metadata={"alias": "incomingCallToUserAliasMode"}
    )

    bypass_termination_loop_detection: bool = field(
        metadata={"alias": "bypassTerminationLoopDetection"}
    )

    honor_clid_blocking_for_emergency_calls: bool = field(
        metadata={"alias": "honorCLIDBlockingForEmergencyCalls"}
    )

    use_unicode_identity_name: bool = field(
        metadata={"alias": "useUnicodeIdentityName"}
    )


@dataclass(kw_only=True)
class SystemSubscriberGetLoginParametersResponse(OCIDataResponse):
    """Response to the SystemSubscriberGetLoginParametersRequest.

    Attributes:

        max_failed_login_attempts (int):

        min_login_id_length (int):

    """

    max_failed_login_attempts: int = field(metadata={"alias": "maxFailedLoginAttempts"})

    min_login_id_length: int = field(metadata={"alias": "minLoginIdLength"})


@dataclass(kw_only=True)
class SystemSubscriberGetProvisioningParametersResponse24V2(OCIDataResponse):
    """Response to the SystemSubscriberGetProvisioningParametersRequest24V2.

    Attributes:

        configurable_clid_normalization (bool):

        include_default_domain (bool):

        min_auth_level_to_provision_alt_user_id (str):

    """

    configurable_clid_normalization: bool = field(
        metadata={"alias": "configurableCLIDNormalization"}
    )

    include_default_domain: bool = field(metadata={"alias": "includeDefaultDomain"})

    min_auth_level_to_provision_alt_user_id: str = field(
        metadata={"alias": "minAuthLevelToProvisionAltUserID"}
    )


@dataclass(kw_only=True)
class SystemSubscriptionLicenseReportingGetResponse(OCIDataResponse):
    """Response to SystemSubscriptionLicenseReportingGetRequest.

    Attributes:

        daily_report_scheduled_time (HourMinute):

    """

    daily_report_scheduled_time: HourMinute = field(
        metadata={"alias": "dailyReportScheduledTime"}
    )


@dataclass(kw_only=True)
class SystemSystemServiceCallProcessingPoliciesGetResponse(OCIDataResponse):
    """Response to SystemSystemServiceCallProcessingPoliciesGetRequest.

    Attributes:

        use_max_simultaneous_calls (bool):

        max_simultaneous_calls (int):

        use_max_simultaneous_video_calls (bool):

        max_simultaneous_video_calls (int):

        use_max_concurrent_redirected_calls (bool):

        max_concurrent_redirected_calls (int):

        use_max_call_time_for_answered_calls (bool):

        max_call_time_for_answered_calls_minutes (int):

    """

    use_max_simultaneous_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: int = field(metadata={"alias": "maxSimultaneousCalls"})

    use_max_simultaneous_video_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: int = field(
        metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_concurrent_redirected_calls: bool = field(
        metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: int = field(
        metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_call_time_for_answered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )


@dataclass(kw_only=True)
class SystemSystemServiceDnGetAvailableListResponse(OCIDataResponse):
    """Response to SystemSystemServiceDnGetAvailableListRequest.
        Contains a list of available DNs not yet assigned to any instance of system service.

    Attributes:

        available_dn (Optional[List[str]]):

    """

    available_dn: Optional[List[str]] = field(
        default=None, metadata={"alias": "availableDn"}
    )


@dataclass(kw_only=True)
class SystemSystemServiceDnGetSummaryListResponse(OCIDataResponse):
    """Response to SystemSystemServiceDnGetSummaryListRequest.
        The column headings are \"Phone Numbers\" and \"Assigned\".
        The possible values for \"Assigned\" are true, false.

    Attributes:

        dn_summary_table (OCITable):

    """

    dn_summary_table: OCITable = field(metadata={"alias": "dnSummaryTable"})


@dataclass(kw_only=True)
class SystemSystemServiceDnGetUsageListResponse(OCIDataResponse):
    """Response to SystemSystemServiceDnGetUsageListRequest.
        The table columns are:  \"Phone Number\", \"Id\",
        \"Name\", and \"System Service\".
        The possible values for \"System Service\" is \"System Voice Portal\".

    Attributes:

        dn_utilization_table (OCITable):

    """

    dn_utilization_table: OCITable = field(metadata={"alias": "dnUtilizationTable"})


@dataclass(kw_only=True)
class SystemSystemVoicePortalGetListResponse(OCIDataResponse):
    """Response to SystemSystemVoicePortalGetListRequest.
        The column headings are \"Default\", \"System Voice Portal Id\", \"Name\", \"Network Voice Portal Number\", \"System Voice Portal Number\" and \"Language\".
        The possible values for \"Default\" are true, false.

    Attributes:

        system_voice_portals_table (OCITable):

    """

    system_voice_portals_table: OCITable = field(
        metadata={"alias": "systemVoicePortalsTable"}
    )


@dataclass(kw_only=True)
class SystemSystemVoicePortalGetResponse23(OCIDataResponse):
    """Response to SystemSystemVoicePortalGetRequest23.

        The following elements are only used in AS data mode and ignored in XS data mode:
            networkClassOfService

    Attributes:

        name (str):

        calling_line_id_name (str):

        language (str):

        time_zone (str):

        phone_number (Optional[str]):

        public_user_identity (Optional[str]):

        network_voice_portal_number (Optional[str]):

        allow_identification_by_phone_number_or_voice_mail_aliases_on_login (bool):

        use_voice_portal_wizard (bool):

        is_default (bool):

        use_voice_portal_default_greeting (bool):

        voice_portal_greeting_file_description (Optional[str]):

        voice_portal_greeting_media_file_type (Optional[str]):

        use_voice_messaging_default_greeting (bool):

        voice_messaging_greeting_file_description (Optional[str]):

        voice_messaging_greeting_media_file_type (Optional[str]):

        express_mode (bool):

        network_class_of_service (Optional[str]):

    """

    name: str = field(metadata={"alias": "name"})

    calling_line_id_name: str = field(metadata={"alias": "callingLineIdName"})

    language: str = field(metadata={"alias": "language"})

    time_zone: str = field(metadata={"alias": "timeZone"})

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    public_user_identity: Optional[str] = field(
        default=None, metadata={"alias": "publicUserIdentity"}
    )

    network_voice_portal_number: Optional[str] = field(
        default=None, metadata={"alias": "networkVoicePortalNumber"}
    )

    allow_identification_by_phone_number_or_voice_mail_aliases_on_login: bool = field(
        metadata={"alias": "allowIdentificationByPhoneNumberOrVoiceMailAliasesOnLogin"}
    )

    use_voice_portal_wizard: bool = field(metadata={"alias": "useVoicePortalWizard"})

    is_default: bool = field(metadata={"alias": "isDefault"})

    use_voice_portal_default_greeting: bool = field(
        metadata={"alias": "useVoicePortalDefaultGreeting"}
    )

    voice_portal_greeting_file_description: Optional[str] = field(
        default=None, metadata={"alias": "voicePortalGreetingFileDescription"}
    )

    voice_portal_greeting_media_file_type: Optional[str] = field(
        default=None, metadata={"alias": "voicePortalGreetingMediaFileType"}
    )

    use_voice_messaging_default_greeting: bool = field(
        metadata={"alias": "useVoiceMessagingDefaultGreeting"}
    )

    voice_messaging_greeting_file_description: Optional[str] = field(
        default=None, metadata={"alias": "voiceMessagingGreetingFileDescription"}
    )

    voice_messaging_greeting_media_file_type: Optional[str] = field(
        default=None, metadata={"alias": "voiceMessagingGreetingMediaFileType"}
    )

    express_mode: bool = field(metadata={"alias": "expressMode"})

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )


@dataclass(kw_only=True)
class SystemTemplateOnlyDeviceFileGetListResponse(OCIDataResponse):
    """Response to SystemTemplateOnlyDeviceFileGetListRequest.
        Contains a list of template files used to support a Visual Device Management device.

    Attributes:

        template_file_url (Optional[List[str]]):

    """

    template_file_url: Optional[List[str]] = field(
        default=None, metadata={"alias": "templateFileUrl"}
    )


@dataclass(kw_only=True)
class SystemThirdPartyEmergencyCallingGetResponse24(OCIDataResponse):
    """Response to the SystemThirdPartyEmergencyCallingGetRequest24.
        The response contains the third-party emergency call service settings for the system.

    Attributes:

        primary_held_server_url (Optional[str]):

        secondary_held_server_url (Optional[str]):

        emergency_route_net_address (Optional[str]):

        emergency_route_port (Optional[int]):

        emergency_route_transport (Optional[str]):

    """

    primary_held_server_url: Optional[str] = field(
        default=None, metadata={"alias": "primaryHELDServerURL"}
    )

    secondary_held_server_url: Optional[str] = field(
        default=None, metadata={"alias": "secondaryHELDServerURL"}
    )

    emergency_route_net_address: Optional[str] = field(
        default=None, metadata={"alias": "emergencyRouteNetAddress"}
    )

    emergency_route_port: Optional[int] = field(
        default=None, metadata={"alias": "emergencyRoutePort"}
    )

    emergency_route_transport: Optional[str] = field(
        default=None, metadata={"alias": "emergencyRouteTransport"}
    )


@dataclass(kw_only=True)
class SystemThirdPartyIMPGetResponse19(OCIDataResponse):
    """Response to the SystemThirdPartyIMPGetRequest19.
        The response contains the system Third-Party IMP service attributes.

    Attributes:

        service_net_address (Optional[str]):

        service_port (Optional[int]):

        bosh_url (Optional[str]):

    """

    service_net_address: Optional[str] = field(
        default=None, metadata={"alias": "serviceNetAddress"}
    )

    service_port: Optional[int] = field(default=None, metadata={"alias": "servicePort"})

    bosh_url: Optional[str] = field(default=None, metadata={"alias": "boshURL"})


@dataclass(kw_only=True)
class SystemThirdPartyVoiceMailSupportGetDnListResponse(OCIDataResponse):
    """Response to SystemThirdPartyVoiceMailSupportGetDnListRequest.
       Contains a table with a row for each ThirdPartyVoiceMailSupport User DN and column headings:
       \"Phone Number\", \"Description\"

    Attributes:

        third_party_voice_mail_support_table (OCITable):

    """

    third_party_voice_mail_support_table: OCITable = field(
        metadata={"alias": "thirdPartyVoiceMailSupportTable"}
    )


@dataclass(kw_only=True)
class SystemThirdPartyVoiceMailSupportGetResponse17sp4(OCIDataResponse):
    """Response to SystemThirdPartyVoiceMailSupportGetRequest17sp4.

    Attributes:

        override_alt_caller_id_for_vm_retrieval (bool):

        strip_diversion_on_vm_destination_retrieval (bool):

    """

    override_alt_caller_id_for_vm_retrieval: bool = field(
        metadata={"alias": "overrideAltCallerIdForVMRetrieval"}
    )

    strip_diversion_on_vm_destination_retrieval: bool = field(
        metadata={"alias": "stripDiversionOnVMDestinationRetrieval"}
    )


@dataclass(kw_only=True)
class SystemTimeZoneGetListResponse20(OCIDataResponse):
    """Response to SystemTimeZoneGetListRequest20.
        Contains the configured time zone of the server processing the request and
        contains a 2 column table with column headings 'Key' and 'Display Name' and a row
        for each time zone.

    Attributes:

        server_time_zone (str):

        time_zone_table (OCITable):

    """

    server_time_zone: str = field(metadata={"alias": "serverTimeZone"})

    time_zone_table: OCITable = field(metadata={"alias": "timeZoneTable"})


@dataclass(kw_only=True)
class SystemTreatmentMappingAccessSIPStatusGetListResponse(OCIDataResponse):
    """Response to a SystemTreatmentMappingAccessSIPStatusGetListRequest. Contains a table with one row per mapping.
        The table columns are: \"SIP Status Code\", \"Treatment Id\".

    Attributes:

        treatment_mapping_table (OCITable):

    """

    treatment_mapping_table: OCITable = field(
        metadata={"alias": "treatmentMappingTable"}
    )


@dataclass(kw_only=True)
class SystemTreatmentMappingCallBlockingServiceGetListResponse24V2(OCIDataResponse):
    """Response to a SystemTreatmentMappingCallBlockingServiceGetListRequest24V2.
        Contains a table with one row per mapping.
        The table columns are: \"Service\", \"Treatment Id\".

        The Service column list the service or policy which is using corresponding treatment, and can be OCP, EOCP, ICP, ACR, SCR, SCA, AAC, Intercept, PTT, CommBarring, SAC, IncomingCommBarring, HierCommBarring, IncomHierCommBarring, BWMobilityDenyOrig, BWMobilityDenyTerm, ETRouteExhaust, CallPark, NumberPortability, ConcTerminatingAlertingPolicy, AutomaticCollectCall, ETRouteExhaustUnreachable, TCUG, RPAdmission, MaximumRedirectionDepthOnBusy, MaximumRedirectionDepthOnDiversion, ETRouteExhaustBusy.

    Attributes:

        treatment_mapping_table (OCITable):

    """

    treatment_mapping_table: OCITable = field(
        metadata={"alias": "treatmentMappingTable"}
    )


@dataclass(kw_only=True)
class SystemTreatmentMappingInternalReleaseCauseGetListResponse(OCIDataResponse):
    """Response to a SystemTreatmentMappingInternalReleaseCauseGetListRequest. Contains a table with one row per mapping.
        The table columns are: \"Internal Release Cause\", \"Treatment Id\".

    Attributes:

        treatment_mapping_table (OCITable):

    """

    treatment_mapping_table: OCITable = field(
        metadata={"alias": "treatmentMappingTable"}
    )


@dataclass(kw_only=True)
class SystemTreatmentMappingNetworkSIPStatusGetListResponse(OCIDataResponse):
    """Response to a SystemTreatmentMappingNetworkSIPStatusGetListRequest. Contains a table with one row per mapping.
        The table columns are: \"SIP Status Code\", \"Treatment Id\".

    Attributes:

        treatment_mapping_table (OCITable):

    """

    treatment_mapping_table: OCITable = field(
        metadata={"alias": "treatmentMappingTable"}
    )


@dataclass(kw_only=True)
class SystemTreatmentMappingNetworkServerTreatmentGetListResponse(OCIDataResponse):
    """Response to a SystemTreatmentMappingNetworkServerTreatmentGetListRequest. Contains a table with one row per mapping.
        The table columns are: \"NS Treatment\", \"Treatment Id\".

    Attributes:

        treatment_mapping_table (OCITable):

    """

    treatment_mapping_table: OCITable = field(
        metadata={"alias": "treatmentMappingTable"}
    )


@dataclass(kw_only=True)
class SystemTreatmentMappingQ850CauseGetListResponse(OCIDataResponse):
    """Response to a SystemTreatmentMappingQ850CauseGetListRequest. Contains a table with one row per mapping.
        The table columns are: \"Q850 Cause Value\", \"Treatment Id\".

    Attributes:

        treatment_mapping_table (OCITable):

    """

    treatment_mapping_table: OCITable = field(
        metadata={"alias": "treatmentMappingTable"}
    )


@dataclass(kw_only=True)
class SystemTrunkGroupGetResponse24(OCIDataResponse):
    """Response to SystemTrunkGroupGetRequest24.
        Following attributes are only used in IMS mode:
          implicitRegistrationSetSupportPolicy
          sipIdentityForPilotAndProxyTrunkModesPolicy
          useMostRecentEntryOnDeflection

    Attributes:

        enforce_clid_service_assignment_for_pilot_user (bool):

        terminate_unreachable_trigger_detection_on_receipt_of18x (bool):

        pilot_user_calling_line_asserted_identity_policy (str):

        enforce_out_of_dialog_pbx_redirection_policies (bool):

        unscreened_redirection_handling (str):

        enable_holdover_of_highwater_call_counts (bool):

        holdover_period (int):

        time_zone_offset_minutes (int):

        clid_source_for_screened_calls_policy (str):

        user_lookup_policy (str):

        out_of_dialog_pbx_redirection_clid_mapping (str):

        enforce_out_of_dialog_pbx_redirection_trunk_group_capacity (bool):

        implicit_registration_set_support_policy (str):

        sip_identity_for_pilot_and_proxy_trunk_modes_policy (str):

        support_connected_identity_policy (str):

        use_unmapped_sessions_for_trunk_users (bool):

        allow_pai_lookup_for_out_of_dialog_pbx_redirection (bool):

        out_of_dialog_pbx_redirection_originator_lookup_policy (str):

        allow_trunk_identity_for_all_originations (bool):

        use_most_recent_entry_on_deflection (bool):

    """

    enforce_clid_service_assignment_for_pilot_user: bool = field(
        metadata={"alias": "enforceCLIDServiceAssignmentForPilotUser"}
    )

    terminate_unreachable_trigger_detection_on_receipt_of18x: bool = field(
        metadata={"alias": "terminateUnreachableTriggerDetectionOnReceiptOf18x"}
    )

    pilot_user_calling_line_asserted_identity_policy: str = field(
        metadata={"alias": "pilotUserCallingLineAssertedIdentityPolicy"}
    )

    enforce_out_of_dialog_pbx_redirection_policies: bool = field(
        metadata={"alias": "enforceOutOfDialogPBXRedirectionPolicies"}
    )

    unscreened_redirection_handling: str = field(
        metadata={"alias": "unscreenedRedirectionHandling"}
    )

    enable_holdover_of_highwater_call_counts: bool = field(
        metadata={"alias": "enableHoldoverOfHighwaterCallCounts"}
    )

    holdover_period: int = field(metadata={"alias": "holdoverPeriod"})

    time_zone_offset_minutes: int = field(metadata={"alias": "timeZoneOffsetMinutes"})

    clid_source_for_screened_calls_policy: str = field(
        metadata={"alias": "clidSourceForScreenedCallsPolicy"}
    )

    user_lookup_policy: str = field(metadata={"alias": "userLookupPolicy"})

    out_of_dialog_pbx_redirection_clid_mapping: str = field(
        metadata={"alias": "outOfDialogPBXRedirectionCLIDMapping"}
    )

    enforce_out_of_dialog_pbx_redirection_trunk_group_capacity: bool = field(
        metadata={"alias": "enforceOutOfDialogPBXRedirectionTrunkGroupCapacity"}
    )

    implicit_registration_set_support_policy: str = field(
        metadata={"alias": "implicitRegistrationSetSupportPolicy"}
    )

    sip_identity_for_pilot_and_proxy_trunk_modes_policy: str = field(
        metadata={"alias": "sipIdentityForPilotAndProxyTrunkModesPolicy"}
    )

    support_connected_identity_policy: str = field(
        metadata={"alias": "supportConnectedIdentityPolicy"}
    )

    use_unmapped_sessions_for_trunk_users: bool = field(
        metadata={"alias": "useUnmappedSessionsForTrunkUsers"}
    )

    allow_pai_lookup_for_out_of_dialog_pbx_redirection: bool = field(
        metadata={"alias": "allowPAILookupForOutOfDialogPBXRedirection"}
    )

    out_of_dialog_pbx_redirection_originator_lookup_policy: str = field(
        metadata={"alias": "outOfDialogPBXRedirectionOriginatorLookupPolicy"}
    )

    allow_trunk_identity_for_all_originations: bool = field(
        metadata={"alias": "allowTrunkIdentityForAllOriginations"}
    )

    use_most_recent_entry_on_deflection: bool = field(
        metadata={"alias": "useMostRecentEntryOnDeflection"}
    )


@dataclass(kw_only=True)
class SystemTrunkGroupOptionsMessageResponseStatusCodeGetListResponse(OCIDataResponse):
    """Response to the SystemTrunkGroupOptionsMessageResponseStatusCodeGetListRequest.
        The response contains of the list of system level successful SIP OPTIONS message respoonse status codes.

    Attributes:

        status_code (Optional[List[str]]):

    """

    status_code: Optional[List[str]] = field(
        default=None, metadata={"alias": "statusCode"}
    )


@dataclass(kw_only=True)
class SystemTrunkGroupUserCreationTaskGetListResponse14sp4(OCIDataResponse):
    """Response to SystemTrunkGroupUserCreationTaskGetListRequest14sp4.
        Contains a table with a row for each user creation task and column headings :
        \"Trunk Group Name\", \"Group Id\", \"Organization Id\", \"Organization Type\", \"Name\", \"Status\", \"Users Created\", \"Total Users To Create\", \"Error Count\".
        The \"Organization Id\" column is populated with either a service provider Id or an enterprise Id.
        The \"Organization Type\" column is populated with one of the enumerated strings defined in the
        OrganizationType OCI data type.  Please see OCISchemaDataTypes.xsd for details on OrganizationType.

    Attributes:

        task_table (OCITable):

    """

    task_table: OCITable = field(metadata={"alias": "taskTable"})


@dataclass(kw_only=True)
class SystemTwoStageDialingGetDnListResponse(OCIDataResponse):
    """Response to SystemTwoStageDialingGetDnListRequest.
          The Two Stage Dialing DN List table column
          headings are: \"Phone Number\",  \"Description\".

    Attributes:

        phone_number_table (OCITable):

    """

    phone_number_table: OCITable = field(metadata={"alias": "phoneNumberTable"})


@dataclass(kw_only=True)
class SystemVerifyTranslationAndRoutingResponse(OCIDataResponse):
    """Represents a Verify Translation and Routing Test Call Result.

    Attributes:

        result (str): The Verify Translation and Routing log created by the request.

    """

    result: str = field(metadata={"alias": "Result"})


@dataclass(kw_only=True)
class SystemVideoServerGetListResponse(OCIDataResponse):
    """Response to SystemVideoServerGetListRequest. The Video Server table column
        headings are: \"Net Address\", \"Port\", \"Transport\", \"Description\".
        Transport types: udp, tcp, unspecified

    Attributes:

        video_server_table (OCITable):

    """

    video_server_table: OCITable = field(metadata={"alias": "videoServerTable"})


@dataclass(kw_only=True)
class SystemVideoServerParametersGetResponse(OCIDataResponse):
    """Response to SystemVideoServerParametersGetRequest.
        Contains a list of system video server parameters.

    Attributes:

        video_server_response_timer_milliseconds (int):

        video_server_selection_route_timer_milliseconds (int):

        use_static_video_server_device (bool):

    """

    video_server_response_timer_milliseconds: int = field(
        metadata={"alias": "videoServerResponseTimerMilliseconds"}
    )

    video_server_selection_route_timer_milliseconds: int = field(
        metadata={"alias": "videoServerSelectionRouteTimerMilliseconds"}
    )

    use_static_video_server_device: bool = field(
        metadata={"alias": "useStaticVideoServerDevice"}
    )


@dataclass(kw_only=True)
class SystemVirtualOnNetCallTypeGetListResponse(OCIDataResponse):
    """Response to SystemVirtualOnNetCallTypeGetListRequest.
        Contains a table with column headings:
        \"Virtual On-Net Call Type Name\", \"Virtual On-Net Call Type CDR Value\"
        in a row for each Virtual On-Net Call Type.

    Attributes:

        virtual_on_net_call_type_table (OCITable):

    """

    virtual_on_net_call_type_table: OCITable = field(
        metadata={"alias": "virtualOnNetCallTypeTable"}
    )


@dataclass(kw_only=True)
class SystemVisualDeviceManagementGetDeviceInfoResponse(OCIDataResponse):
    """Response to SystemVisualDeviceManagementGetDeviceInfoRequest.

    Attributes:

        device_type (str):

        support_visual_device_management (bool):

        mac_address (Optional[str]):

        primary_user (Optional[PrimaryUserInfo]):

    """

    device_type: str = field(metadata={"alias": "deviceType"})

    support_visual_device_management: bool = field(
        metadata={"alias": "supportVisualDeviceManagement"}
    )

    mac_address: Optional[str] = field(default=None, metadata={"alias": "macAddress"})

    primary_user: Optional[PrimaryUserInfo] = field(
        default=None, metadata={"alias": "primaryUser"}
    )


@dataclass(kw_only=True)
class SystemVoiceMessageSummaryUpdateGetResponse25(OCIDataResponse):
    """Response to SystemVoiceMessageSummaryUpdateGetRequest25.

    Attributes:

        send_saved_and_urgent_mwi_on_notification (bool):

        send_message_summary_update_on_register (bool):

        min_time_between_mwi_on_register (int):

        allow_multiple_users_per_account (bool):

    """

    send_saved_and_urgent_mwi_on_notification: bool = field(
        metadata={"alias": "sendSavedAndUrgentMWIOnNotification"}
    )

    send_message_summary_update_on_register: bool = field(
        metadata={"alias": "sendMessageSummaryUpdateOnRegister"}
    )

    min_time_between_mwi_on_register: int = field(
        metadata={"alias": "minTimeBetweenMWIOnRegister"}
    )

    allow_multiple_users_per_account: bool = field(
        metadata={"alias": "allowMultipleUsersPerAccount"}
    )


@dataclass(kw_only=True)
class SystemVoiceMessagingGroupGetResponseRI(OCIDataResponse):
    """Response to SystemVoiceMessagingGroupGetRequestRI.

        The following elements are only used in AS data mode:
           realDeleteForImap
           useDnInMailBody
           useShortSubjectLine
           maxMessageLengthMinutes
           maxMailboxLengthMinutes
           doesMessageAge
           holdPeriodDays
           mailServerNetAddress
           mailServerProtocol
           defaultDeliveryFromAddress
           defaultNotificationFromAddress
           useOutgoingMWIOnSMDI
           mwiDelayInSeconds
           voicePortalScope
           enterpriseVoicePortalLicensed
           networkWideMessaging
           useExternalRouting
           defaultExternalRoutingAddress
           vmOnlySystem
           clientInitiatedMailServerSessionTimeoutMinutes
           recordingAudioFileFormat
           allowVoicePortalAccessFromVMDepositMenu
           allowVoicePortalAutoLoginForMobileDevicesOnly
           selectMwiTemplatePerCaller

    Attributes:

        real_delete_for_imap (bool):

        use_dn_in_mail_body (bool):

        use_short_subject_line (bool):

        max_message_length_minutes (int):

        max_mailbox_length_minutes (int):

        does_message_age (bool):

        hold_period_days (int):

        mail_server_net_address (Optional[str]):

        mail_server_protocol (str):

        default_delivery_from_address (str):

        default_notification_from_address (str):

        default_voice_portal_lockout_from_address (str):

        use_outgoing_mwi_on_smdi (bool):

        mwi_delay_in_seconds (int):

        voice_portal_scope (str):

        enterprise_voice_portal_licensed (bool):

        network_wide_messaging (bool):

        use_external_routing (bool):

        default_external_routing_address (Optional[str]):

        vm_only_system (bool):

        client_initiated_mail_server_session_timeout_minutes (int):

        recording_audio_file_format (str):

        allow_voice_portal_access_from_vm_deposit_menu (bool):

        allow_voice_portal_auto_login_for_mobile_devices_only (bool):

        select_mwi_template_per_caller (bool):

    """

    real_delete_for_imap: bool = field(metadata={"alias": "realDeleteForImap"})

    use_dn_in_mail_body: bool = field(metadata={"alias": "useDnInMailBody"})

    use_short_subject_line: bool = field(metadata={"alias": "useShortSubjectLine"})

    max_message_length_minutes: int = field(
        metadata={"alias": "maxMessageLengthMinutes"}
    )

    max_mailbox_length_minutes: int = field(
        metadata={"alias": "maxMailboxLengthMinutes"}
    )

    does_message_age: bool = field(metadata={"alias": "doesMessageAge"})

    hold_period_days: int = field(metadata={"alias": "holdPeriodDays"})

    mail_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "mailServerNetAddress"}
    )

    mail_server_protocol: str = field(metadata={"alias": "mailServerProtocol"})

    default_delivery_from_address: str = field(
        metadata={"alias": "defaultDeliveryFromAddress"}
    )

    default_notification_from_address: str = field(
        metadata={"alias": "defaultNotificationFromAddress"}
    )

    default_voice_portal_lockout_from_address: str = field(
        metadata={"alias": "defaultVoicePortalLockoutFromAddress"}
    )

    use_outgoing_mwi_on_smdi: bool = field(metadata={"alias": "useOutgoingMWIOnSMDI"})

    mwi_delay_in_seconds: int = field(metadata={"alias": "mwiDelayInSeconds"})

    voice_portal_scope: str = field(metadata={"alias": "voicePortalScope"})

    enterprise_voice_portal_licensed: bool = field(
        metadata={"alias": "enterpriseVoicePortalLicensed"}
    )

    network_wide_messaging: bool = field(metadata={"alias": "networkWideMessaging"})

    use_external_routing: bool = field(metadata={"alias": "useExternalRouting"})

    default_external_routing_address: Optional[str] = field(
        default=None, metadata={"alias": "defaultExternalRoutingAddress"}
    )

    vm_only_system: bool = field(metadata={"alias": "vmOnlySystem"})

    client_initiated_mail_server_session_timeout_minutes: int = field(
        metadata={"alias": "clientInitiatedMailServerSessionTimeoutMinutes"}
    )

    recording_audio_file_format: str = field(
        metadata={"alias": "recordingAudioFileFormat"}
    )

    allow_voice_portal_access_from_vm_deposit_menu: bool = field(
        metadata={"alias": "allowVoicePortalAccessFromVMDepositMenu"}
    )

    allow_voice_portal_auto_login_for_mobile_devices_only: bool = field(
        metadata={"alias": "allowVoicePortalAutoLoginForMobileDevicesOnly"}
    )

    select_mwi_template_per_caller: bool = field(
        metadata={"alias": "selectMwiTemplatePerCaller"}
    )


@dataclass(kw_only=True)
class SystemVoiceMessagingGroupGetVoicePortalMenusResponse21(OCIDataResponse):
    """Response to SystemVoiceMessagingGroupGetVoicePortalMenusRequest21.

    Attributes:

        use_voice_portal_customization (bool):

        voice_portal_main_menu_keys (object):

        announcement_menu_keys (object):

        announcement_recording_menu_keys (object):

        greetings_menu_keys (object):

        conference_greeting_menu_keys (object):

        voice_messaging_menu_keys (object):

        play_greeting_menu_keys (object):

        change_busy_or_no_answer_greeting_menu_keys (object):

        change_extended_away_greeting_menu_keys (object):

        record_new_greeting_or_personalized_name_menu_keys (object):

        delete_all_messages_menu_keys (object):

        comm_pilot_express_profile_menu_keys (object):

        personalized_name_menu_keys (object):

        call_forwarding_options_menu_keys (object):

        change_call_forwarding_destination_menu_keys (object):

        voice_portal_calling_menu_keys (object):

        hoteling_menu_keys (object):

        passcode_menu_keys (object):

        play_messages_menu_keys (object):

        play_message_menu_keys (object):

        additional_message_options_menu_keys (object):

        forward_or_compose_message_menu_keys (object):

        reply_message_menu_keys (object):

        send_to_distribution_list_menu_keys (object):

        select_distribution_list_menu_keys (object):

        review_selected_distribution_list_menu_keys (object):

        send_message_to_selected_distribution_list_menu_keys (object):

        send_to_all_group_members_menu_keys (object):

        send_to_person_menu_keys (object):

        change_current_introduction_or_message_or_reply_menu_keys (object):

        voice_portal_login_menu_keys (object):

        fax_messaging_menu_keys (object):

        message_deposit_menu_keys (object):

        disable_message_deposit_menu_keys (object):

        greeting_only_forwarding_destination_menu_keys (object):

        personal_assistant_menu_keys (object):

    """

    use_voice_portal_customization: bool = field(
        metadata={"alias": "useVoicePortalCustomization"}
    )

    voice_portal_main_menu_keys: object = field(
        metadata={"alias": "voicePortalMainMenuKeys"}
    )

    announcement_menu_keys: object = field(metadata={"alias": "announcementMenuKeys"})

    announcement_recording_menu_keys: object = field(
        metadata={"alias": "announcementRecordingMenuKeys"}
    )

    greetings_menu_keys: object = field(metadata={"alias": "greetingsMenuKeys"})

    conference_greeting_menu_keys: object = field(
        metadata={"alias": "conferenceGreetingMenuKeys"}
    )

    voice_messaging_menu_keys: object = field(
        metadata={"alias": "voiceMessagingMenuKeys"}
    )

    play_greeting_menu_keys: object = field(metadata={"alias": "playGreetingMenuKeys"})

    change_busy_or_no_answer_greeting_menu_keys: object = field(
        metadata={"alias": "changeBusyOrNoAnswerGreetingMenuKeys"}
    )

    change_extended_away_greeting_menu_keys: object = field(
        metadata={"alias": "changeExtendedAwayGreetingMenuKeys"}
    )

    record_new_greeting_or_personalized_name_menu_keys: object = field(
        metadata={"alias": "recordNewGreetingOrPersonalizedNameMenuKeys"}
    )

    delete_all_messages_menu_keys: object = field(
        metadata={"alias": "deleteAllMessagesMenuKeys"}
    )

    comm_pilot_express_profile_menu_keys: object = field(
        metadata={"alias": "commPilotExpressProfileMenuKeys"}
    )

    personalized_name_menu_keys: object = field(
        metadata={"alias": "personalizedNameMenuKeys"}
    )

    call_forwarding_options_menu_keys: object = field(
        metadata={"alias": "callForwardingOptionsMenuKeys"}
    )

    change_call_forwarding_destination_menu_keys: object = field(
        metadata={"alias": "changeCallForwardingDestinationMenuKeys"}
    )

    voice_portal_calling_menu_keys: object = field(
        metadata={"alias": "voicePortalCallingMenuKeys"}
    )

    hoteling_menu_keys: object = field(metadata={"alias": "hotelingMenuKeys"})

    passcode_menu_keys: object = field(metadata={"alias": "passcodeMenuKeys"})

    play_messages_menu_keys: object = field(metadata={"alias": "playMessagesMenuKeys"})

    play_message_menu_keys: object = field(metadata={"alias": "playMessageMenuKeys"})

    additional_message_options_menu_keys: object = field(
        metadata={"alias": "additionalMessageOptionsMenuKeys"}
    )

    forward_or_compose_message_menu_keys: object = field(
        metadata={"alias": "forwardOrComposeMessageMenuKeys"}
    )

    reply_message_menu_keys: object = field(metadata={"alias": "replyMessageMenuKeys"})

    send_to_distribution_list_menu_keys: object = field(
        metadata={"alias": "sendToDistributionListMenuKeys"}
    )

    select_distribution_list_menu_keys: object = field(
        metadata={"alias": "selectDistributionListMenuKeys"}
    )

    review_selected_distribution_list_menu_keys: object = field(
        metadata={"alias": "reviewSelectedDistributionListMenuKeys"}
    )

    send_message_to_selected_distribution_list_menu_keys: object = field(
        metadata={"alias": "sendMessageToSelectedDistributionListMenuKeys"}
    )

    send_to_all_group_members_menu_keys: object = field(
        metadata={"alias": "sendToAllGroupMembersMenuKeys"}
    )

    send_to_person_menu_keys: object = field(metadata={"alias": "sendToPersonMenuKeys"})

    change_current_introduction_or_message_or_reply_menu_keys: object = field(
        metadata={"alias": "changeCurrentIntroductionOrMessageOrReplyMenuKeys"}
    )

    voice_portal_login_menu_keys: object = field(
        metadata={"alias": "voicePortalLoginMenuKeys"}
    )

    fax_messaging_menu_keys: object = field(metadata={"alias": "faxMessagingMenuKeys"})

    message_deposit_menu_keys: object = field(
        metadata={"alias": "messageDepositMenuKeys"}
    )

    disable_message_deposit_menu_keys: object = field(
        metadata={"alias": "disableMessageDepositMenuKeys"}
    )

    greeting_only_forwarding_destination_menu_keys: object = field(
        metadata={"alias": "greetingOnlyForwardingDestinationMenuKeys"}
    )

    personal_assistant_menu_keys: object = field(
        metadata={"alias": "personalAssistantMenuKeys"}
    )


@dataclass(kw_only=True)
class SystemWebexMeetingsCallTypeGetListResponse(OCIDataResponse):
    """Response to a SystemWebexMeetingsCallTypeGetListRequest. Contains a table with one row per Webex Meetings call type entry.  The table column headings are: \"Name\", \"NS Call Type\", \"Enforce NS Charge Field\" and \"Process As Internal For SAC-Subscriber\".

    Attributes:

        call_type_table (OCITable):

    """

    call_type_table: OCITable = field(metadata={"alias": "callTypeTable"})


@dataclass(kw_only=True)
class SystemXsiApplicationIdGetListResponse(OCIDataResponse):
    """Response to the SystemXsiApplicationIdGetListRequest
        Contains a table with column headings: \"Xsi Application Id\", \"Description\".

    Attributes:

        xsi_application_id_table (OCITable):

    """

    xsi_application_id_table: OCITable = field(
        metadata={"alias": "xsiApplicationIdTable"}
    )


@dataclass(kw_only=True)
class SystemXsiApplicationIdParameterGetResponse(OCIDataResponse):
    """Response to SystemXsiApplictionIdParameterGetRequest.
        Contains the Xsi application id system parameters.

    Attributes:

        screen_xsi_application_id (bool):

    """

    screen_xsi_application_id: bool = field(
        metadata={"alias": "screenXsiApplicationId"}
    )


@dataclass(kw_only=True)
class SystemXsiPolicyProfileGetAssignedServiceProviderListResponse(OCIDataResponse):
    """Response to SystemXsiPolicyProfileUsageGetListRequest.
        Contains a table with column headings: \"Organization ID\", \"Organization Name\", \"Organization Type\" and \"Reseller Id\".

    Attributes:

        sp_table (OCITable):

    """

    sp_table: OCITable = field(metadata={"alias": "spTable"})


@dataclass(kw_only=True)
class SystemXsiPolicyProfileGetListResponse(OCIDataResponse):
    """Response to the SystemXsiPolicyProfileGetListRequest
        Contains a table with column headings: \"Name\", \"Level\", \"Description\", \"Default\".

    Attributes:

        xsi_policy_profile_table (OCITable):

    """

    xsi_policy_profile_table: OCITable = field(
        metadata={"alias": "xsiPolicyProfileTable"}
    )


@dataclass(kw_only=True)
class SystemXsiPolicyProfileGetResponse(OCIDataResponse):
    """Response to the SystemXsiPolicyProfileGetRequest.
        The response contains the Xsi policy profile.

    Attributes:

        description (Optional[str]):

        max_target_subscription (int):

        default (bool):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    max_target_subscription: int = field(metadata={"alias": "maxTargetSubscription"})

    default: bool = field(metadata={"alias": "default"})


@dataclass(kw_only=True)
class SystemZoneCallingZonePhysicalLocationGetResponse(OCIDataResponse):
    """Response to SystemZoneCallingZonePhysicalLocationGetRequest.

    Attributes:

        physical_location (Optional[str]):

    """

    physical_location: Optional[str] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )


@dataclass(kw_only=True)
class SystemZoneGetListResponse(OCIDataResponse):
    """Response to the SystemZoneGetListRequest.

    Attributes:

        zone_name (Optional[List[str]]):

    """

    zone_name: Optional[List[str]] = field(default=None, metadata={"alias": "zoneName"})


@dataclass(kw_only=True)
class SystemZoneLocationBasedPhysicalLocationGetListResponse(OCIDataResponse):
    """Response to SystemZoneLocationBasedPhysicalLocationGetListRequest.

    Attributes:

        physical_location (Optional[List[str]]):

    """

    physical_location: Optional[List[str]] = field(
        default=None, metadata={"alias": "physicalLocation"}
    )


@dataclass(kw_only=True)
class SystemZoneNetAddressGetListResponse(OCIDataResponse):
    """Response to SystemZoneNetAddressGetListRequest.

    Attributes:

        net_address (Optional[List[str]]):

        net_address_range (Optional[List[IPAddressRange]]):

    """

    net_address: Optional[List[str]] = field(
        default=None, metadata={"alias": "netAddress"}
    )

    net_address_range: Optional[List[IPAddressRange]] = field(
        default=None, metadata={"alias": "netAddressRange"}
    )


@dataclass(kw_only=True)
class TutorialFlagGetResponse(OCIDataResponse):
    """Response to the TutorialFlagGetRequest.

    Attributes:

        enable_tutorial (bool):

    """

    enable_tutorial: bool = field(metadata={"alias": "enableTutorial"})


@dataclass(kw_only=True)
class UserAccessDeviceDeviceActivationGetListResponse(OCIDataResponse):
    """Response to UserAccessDeviceDeviceActivationGetListRequest.
        Contains a table of devices supporting device activation associated to a user.
        The column headings are: \"Device Name\", \"Device Level\", \"Device SP\", \"Device Group\", \"Endpoint Type\", \"Line Port\", \"Activation Status\", \"Activation Code\", \"Expiration Time\" and \"MAC Address\".

    Attributes:

        access_device_table (OCITable):

    """

    access_device_table: OCITable = field(metadata={"alias": "accessDeviceTable"})


@dataclass(kw_only=True)
class UserAccessDeviceFileGetListResponse(OCIDataResponse):
    """Response to UserAccessDeviceFileGetListRequest.
        Contains a table of user modifiable Device Management files.
        The column headings are: \"File Format\", \"Template URL\".

    Attributes:

        device_files_table (OCITable):

    """

    device_files_table: OCITable = field(metadata={"alias": "deviceFilesTable"})


@dataclass(kw_only=True)
class UserAccessDeviceFileGetResponse(OCIDataResponse):
    """Response to UserAccessDeviceFileGetRequest.

    Attributes:

        template_url (Optional[str]):

    """

    template_url: Optional[str] = field(default=None, metadata={"alias": "templateUrl"})


@dataclass(kw_only=True)
class UserAccessDeviceTagsGetResponse(OCIDataResponse):
    """Response to UserAccessDeviceTagsGetRequest.
        The response contains a table with columns: \"Tag Name\", and \"Tag Value\".

    Attributes:

        device_tags_table (OCITable):

    """

    device_tags_table: OCITable = field(metadata={"alias": "deviceTagsTable"})


@dataclass(kw_only=True)
class UserAdviceOfChargeGetResponse(OCIDataResponse):
    """Response to UserAdviceOfChargeGetRequest.

    Attributes:

        is_active (bool):

        aoc_type (str):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    aoc_type: str = field(metadata={"alias": "aocType"})


@dataclass(kw_only=True)
class UserAlternateNumbersGetResponse21(OCIDataResponse):
    """Response to UserAlternateNumbersGetRequest21.

    Attributes:

        distinctive_ring (bool):

        alternate_entry01 (Optional[AlternateNumberEntry21]):

        alternate_entry02 (Optional[AlternateNumberEntry21]):

        alternate_entry03 (Optional[AlternateNumberEntry21]):

        alternate_entry04 (Optional[AlternateNumberEntry21]):

        alternate_entry05 (Optional[AlternateNumberEntry21]):

        alternate_entry06 (Optional[AlternateNumberEntry21]):

        alternate_entry07 (Optional[AlternateNumberEntry21]):

        alternate_entry08 (Optional[AlternateNumberEntry21]):

        alternate_entry09 (Optional[AlternateNumberEntry21]):

        alternate_entry10 (Optional[AlternateNumberEntry21]):

    """

    distinctive_ring: bool = field(metadata={"alias": "distinctiveRing"})

    alternate_entry01: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry01"}
    )

    alternate_entry02: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry02"}
    )

    alternate_entry03: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry03"}
    )

    alternate_entry04: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry04"}
    )

    alternate_entry05: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry05"}
    )

    alternate_entry06: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry06"}
    )

    alternate_entry07: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry07"}
    )

    alternate_entry08: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry08"}
    )

    alternate_entry09: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry09"}
    )

    alternate_entry10: Optional[AlternateNumberEntry21] = field(
        default=None, metadata={"alias": "alternateEntry10"}
    )


@dataclass(kw_only=True)
class UserAlternateUserIdGetListResponse(OCIDataResponse):
    """Response to UserAlternateUserIdGetListRequest.
        Contains a table of the main user id and the alternate user ids, the column headings are: \"User Id\", \"Description\", \"Alternate\".
        The possible values for \"Alternate\" are \"true\" and \"false\".
        The \"Description\" is only present for alternate user Ids.

    Attributes:

        user_id_table (OCITable):

    """

    user_id_table: OCITable = field(metadata={"alias": "userIdTable"})


@dataclass(kw_only=True)
class UserAnnouncementFileGetAvailableListResponse(OCIDataResponse):
    """Response to UserAnnouncementFileGetAvailableListRequest.
        The response contains a table with columns: \"Name\", \"Media Type\", \"File Size\", \"Repository Type\", and \"Announcement File External Id\".
        The \"Name\" column contains the name of the announcement file.
        The \"Media Type\" column contains the media type of the announcement file with the possible values:
                WMA - Windows Media Audio file
                WAV - A WAV file
                3GP - A 3GP file
                MOV - A MOV file using a H.263 or H.264 codec.
        The \"File Size\" is in Kilobytes.
        The \"Repository Type\" column contains the type of repository for the announcement file such as \"User\" or \"Group\"
        The \"File Size\" column contains the file size in kB of the announcement file.
        The \"Announcement File External Id\" column contains the External Id of the announcement file.

        The following columns are populated in AS data mode only:
          \"Announcement File External Id\"

    Attributes:

        announcement_table (OCITable):

    """

    announcement_table: OCITable = field(metadata={"alias": "announcementTable"})


@dataclass(kw_only=True)
class UserAnnouncementFileGetListResponse(OCIDataResponse):
    """Response to UserAnnouncementFileGetListRequest.
        When requested, the response contains a table with columns: \"Name\",
        \"Media Type\", \"File Size\", \"Announcement File External Id\".
        The \"Name\" column contains the name of the announcement file.
        The \"Media Type\" column contains the media type of the announcement file with the possible values:
                WMA - Windows Media Audio file
                WAV - A WAV file
                3GP - A 3GP file
                MOV - A MOV file using a H.263 or H.264 codec.
        The \"File Size\" column contains the file size in kB of the announcement file.
        The \"Announcement File External Id\" column contains the external ID of the announcement file.

        The following columns are populated in AS data mode only:
          \"Announcement File External Id\"

        The response also contains the current total file size (KB) for the user across
        all media types and the maximum total file size (MB) allowed for the user.

    Attributes:

        announcement_table (Optional[OCITable]):

        total_file_size (int):

        max_file_size (int):

    """

    announcement_table: Optional[OCITable] = field(
        default=None, metadata={"alias": "announcementTable"}
    )

    total_file_size: int = field(metadata={"alias": "totalFileSize"})

    max_file_size: int = field(metadata={"alias": "maxFileSize"})


@dataclass(kw_only=True)
class UserAnnouncementFileGetPagedSortedListResponse(OCIDataResponse):
    """Response to UserAnnouncementFileGetPagedSortedListRequest.
        The response contains a table with columns: \"Name\", \"Media Type\", \"File Size\", and \"Announcement File External Id\".
        The \"Name\" column contains the name of the announcement file.
        The \"Media Type\" column contains the media type of the announcement.
        File with the possible values:
                WMA - Windows Media Audio file
                WAV - A WAV file
                3GP - A 3GP file
                MOV - A MOV file using a H.263 or H.264 codec.
        The \"File Size\" column contains the file size (KB) of the announcement file.

    Attributes:

        announcement_table (Optional[OCITable]):

    """

    announcement_table: Optional[OCITable] = field(
        default=None, metadata={"alias": "announcementTable"}
    )


@dataclass(kw_only=True)
class UserAnnouncementFileGetResponse22(OCIDataResponse):
    """Response to UserAnnouncementFileGetRequest22.
        The response contains the file size (KB), uploaded timestamp, description and usage for
        an announcement file in the user announcement repository.
        The usage table has columns \"Service Name\", \"Criteria Name\"
        The \"Service Name\"\" values correspond to string values of the UserService data types.
        With the exception of the string \"Voice Portal\" which is returned when the announcement is being used by Voice Portal Personalized Name.
        For Call Center and Route Point users the \"Instance Name\" column contains the instance id and
        when the announcement is being used by a DNIS, \"Intance Name\" column contans the instance id and the DNIS id.
        For Auto Attendants with submenus and the announcement is used by a submenu the \"Instance Name\" column will contain the submenu name

        The following data elements are only used in AS data mode:
          announcementFileExternalId

    Attributes:

        description (str):

        filesize (int):

        last_uploaded (str):

        user_id (str):

        announcement_file_key (AnnouncementFileKey):

        announcement_file_external_id (Optional[str]):

        usage_table (OCITable):

    """

    description: str = field(metadata={"alias": "description"})

    filesize: int = field(metadata={"alias": "filesize"})

    last_uploaded: str = field(metadata={"alias": "lastUploaded"})

    user_id: str = field(metadata={"alias": "userId"})

    announcement_file_key: AnnouncementFileKey = field(
        metadata={"alias": "announcementFileKey"}
    )

    announcement_file_external_id: Optional[str] = field(
        default=None, metadata={"alias": "announcementFileExternalId"}
    )

    usage_table: OCITable = field(metadata={"alias": "usageTable"})


@dataclass(kw_only=True)
class UserAnnouncementRepositoryGetSettingsResponse(OCIDataResponse):
    """Response to UserAnnouncementRepositoryGetSettingsRequest.
        The response contains the current total file size (KB) for the user across
        all media types and the maximum total file size (MB) allowed for the user.
        It also indicates the maximum file size for individual audio and video files.

    Attributes:

        total_file_size (int):

        max_audio_file_size (int):

        max_video_file_size (int):

        max_file_size (int):

    """

    total_file_size: int = field(metadata={"alias": "totalFileSize"})

    max_audio_file_size: int = field(metadata={"alias": "maxAudioFileSize"})

    max_video_file_size: int = field(metadata={"alias": "maxVideoFileSize"})

    max_file_size: int = field(metadata={"alias": "maxFileSize"})


@dataclass(kw_only=True)
class UserAnonymousCallRejectionGetResponse(OCIDataResponse):
    """Response to UserAnonymousCallRejectionGetRequest.

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserAssignedServicesGetListResponse(OCIDataResponse):
    """Response to UserAssignedServicesGetListRequest.
        A user can have both user services and group services because of music on hold.

    Attributes:

        group_service_entry (Optional[List[AssignedGroupServicesEntry]]):

        user_service_entry (Optional[List[AssignedUserServicesEntry]]):

    """

    group_service_entry: Optional[List[AssignedGroupServicesEntry]] = field(
        default=None, metadata={"alias": "groupServiceEntry"}
    )

    user_service_entry: Optional[List[AssignedUserServicesEntry]] = field(
        default=None, metadata={"alias": "userServiceEntry"}
    )


@dataclass(kw_only=True)
class UserAuthenticationGetResponse(OCIDataResponse):
    """Response to the UserAuthenticationGetRequest.

    Attributes:

        user_name (Optional[str]):

    """

    user_name: Optional[str] = field(default=None, metadata={"alias": "userName"})


@dataclass(kw_only=True)
class UserAutomaticCallbackGetResponse(OCIDataResponse):
    """Response to UserAutomaticCallbackGetRequest.

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserAutomaticCollectCallGetResponse(OCIDataResponse):
    """Response to the UserAutomaticCollectCallGetRequest.
        Returns user Automatic Collect Call service settings.

    Attributes:

        enable_automatic_collect_call (bool):

    """

    enable_automatic_collect_call: bool = field(
        metadata={"alias": "enableAutomaticCollectCall"}
    )


@dataclass(kw_only=True)
class UserAutomaticHoldRetrieveGetResponse(OCIDataResponse):
    """Response to UserAutomaticHoldRetrieveGetRequest.

    Attributes:

        is_active (bool):

        recall_timer_seconds (int):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    recall_timer_seconds: int = field(metadata={"alias": "recallTimerSeconds"})


@dataclass(kw_only=True)
class UserBargeInExemptGetResponse(OCIDataResponse):
    """Response to UserBargeInExemptGetRequest.

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserBasicCallLogsGetListResponse14sp4(OCIDataResponse):
    """Response to UserBasicCallLogsGetListRequest14sp4.

    Attributes:

        placed (Optional[List[CallLogsEntry]]):

        received (Optional[List[CallLogsEntry]]):

        missed (Optional[List[CallLogsEntry]]):

    """

    placed: Optional[List[CallLogsEntry]] = field(
        default=None, metadata={"alias": "placed"}
    )

    received: Optional[List[CallLogsEntry]] = field(
        default=None, metadata={"alias": "received"}
    )

    missed: Optional[List[CallLogsEntry]] = field(
        default=None, metadata={"alias": "missed"}
    )


@dataclass(kw_only=True)
class UserBroadWorksAnywhereGetAvailablePortalListResponse21sp1(OCIDataResponse):
    """Response to the UserBroadWorksAnywhereGetAvailablePortalListRequest21sp1.
        Contains a table with column headings: \"Portal ID\", \"Portal Name\", \"Phone Number\", \"Extension\", \"Language\".

    Attributes:

        portal_table (OCITable):

    """

    portal_table: OCITable = field(metadata={"alias": "portalTable"})


@dataclass(kw_only=True)
class UserBroadWorksAnywhereGetPhoneNumberPagedSortedListResponse(OCIDataResponse):
    """Response to the UserBroadWorksAnywhereGetPhoneNumberPagedSortedListRequest.
        The phoneNumberTable contains columns: \"Phone Number\", \"Description\", \"Activated\"

    Attributes:

        phone_number_table (OCITable):

    """

    phone_number_table: OCITable = field(metadata={"alias": "phoneNumberTable"})


@dataclass(kw_only=True)
class UserBroadWorksAnywhereGetPhoneNumberResponse(OCIDataResponse):
    """Response to the UserBroadWorksAnywhereGetPhoneNumberRequest.
        The criteria table's column headings are: \"Is Active\", \"Criteria Name\", \"Time Schedule\",
        \"Calls From\", \"Blacklisted\", \"Holiday Schedule\", \"Calls To Type\", \"Calls To Number\" and \"Calls To Extension\".
        The following columns are only returned in AS data mode:
          \"Calls To Type\", \"Calls To Number\" and \"Calls To Extension\"

        The possible values for the \"Calls To Type\" column are the following or a combination of them separated by comma:
          - Primary
          - Alternate X (where x is a number between 1 and 10)
          - Mobility
        The possible values for the \"Calls To Number\" column are the following or a combination of them separated by comma:
          - The value of the phone number for the corresponding Calls To Type, when the number is available. i.e. Alternate 1 may have extension, but no number.
          - When no number is available a blank space is provided instead.
        The possible values for the \"Calls To Extension\" column are the following or a caombination of them separated by comma:
          - The value of the extension for the corresponding Calls To Type, when the extension is available. i.e. Primary may have number, but no extension.
          - For Mobility Calls To Type, this is always blank.
          - When no exension is available a blank space is provided instead.

    Attributes:

        description (Optional[str]):

        outbound_alternate_number (Optional[str]):

        is_active (bool):

        broadworks_call_control (bool):

        use_diversion_inhibitor (bool):

        answer_confirmation_required (bool):

        criteria_table (OCITable):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    outbound_alternate_number: Optional[str] = field(
        default=None, metadata={"alias": "outboundAlternateNumber"}
    )

    is_active: bool = field(metadata={"alias": "isActive"})

    broadworks_call_control: bool = field(metadata={"alias": "broadworksCallControl"})

    use_diversion_inhibitor: bool = field(metadata={"alias": "useDiversionInhibitor"})

    answer_confirmation_required: bool = field(
        metadata={"alias": "answerConfirmationRequired"}
    )

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class UserBroadWorksAnywhereGetResponse16sp2(OCIDataResponse):
    """Response to the UserBroadWorksAnywhereGetRequest16sp2.
        The phoneNumberTable contains columns: \"Phone Number\", \"Description\"

    Attributes:

        alert_all_locations_for_click_to_dial_calls (bool):

        alert_all_locations_for_group_paging_calls (bool):

        phone_number_table (OCITable):

    """

    alert_all_locations_for_click_to_dial_calls: bool = field(
        metadata={"alias": "alertAllLocationsForClickToDialCalls"}
    )

    alert_all_locations_for_group_paging_calls: bool = field(
        metadata={"alias": "alertAllLocationsForGroupPagingCalls"}
    )

    phone_number_table: OCITable = field(metadata={"alias": "phoneNumberTable"})


@dataclass(kw_only=True)
class UserBroadWorksAnywhereGetSelectiveCriteriaResponse21(OCIDataResponse):
    """Response to the UserBroadWorksAnywhereGetSelectiveCriteriaRequest21.

    Attributes:

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria (CriteriaFromDn):

        call_to_number (Optional[List[CallToNumber]]):

    """

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria: CriteriaFromDn = field(metadata={"alias": "fromDnCriteria"})

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class UserBroadWorksCommunicatorGetResponse(OCIDataResponse):
    """Response to UserBroadWorksCommunicatorGetRequest.

    Attributes:

        configuration_server_url (Optional[str]):

    """

    configuration_server_url: Optional[str] = field(
        default=None, metadata={"alias": "configurationServerURL"}
    )


@dataclass(kw_only=True)
class UserBroadWorksMobilityGetResponse21sp1(OCIDataResponse):
    """Response to a UserBroadWorksMobilityGetRequest21sp1.
         Columns for the profileIdentityMobileNumberAlerted table are as follows: \"Mobile Number\", \"Country Code\", \"National Prefix\".
         Columns for the mobileIdentity table are as follows: \"Mobile Number\", \"Description\", \"Country Code\", \"National Prefix\", \"Is Primary\", \"Enable Alerting\".

    Attributes:

        is_active (bool):

        use_mobile_identity_call_anchoring (bool):

        prevent_calls_to_own_mobiles (bool):

        profile_identity_devices_to_ring (str):

        profile_identity_include_shared_call_appearance (bool):

        profile_identity_include_broadworks_anywhere (bool):

        profile_identity_include_executive_assistant (bool):

        profile_identity_mobile_number_alerted_table (OCITable):

        mobile_identity_table (OCITable):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    use_mobile_identity_call_anchoring: bool = field(
        metadata={"alias": "useMobileIdentityCallAnchoring"}
    )

    prevent_calls_to_own_mobiles: bool = field(
        metadata={"alias": "preventCallsToOwnMobiles"}
    )

    profile_identity_devices_to_ring: str = field(
        metadata={"alias": "profileIdentityDevicesToRing"}
    )

    profile_identity_include_shared_call_appearance: bool = field(
        metadata={"alias": "profileIdentityIncludeSharedCallAppearance"}
    )

    profile_identity_include_broadworks_anywhere: bool = field(
        metadata={"alias": "profileIdentityIncludeBroadworksAnywhere"}
    )

    profile_identity_include_executive_assistant: bool = field(
        metadata={"alias": "profileIdentityIncludeExecutiveAssistant"}
    )

    profile_identity_mobile_number_alerted_table: OCITable = field(
        metadata={"alias": "profileIdentityMobileNumberAlertedTable"}
    )

    mobile_identity_table: OCITable = field(metadata={"alias": "mobileIdentityTable"})


@dataclass(kw_only=True)
class UserBroadWorksMobilityMobileIdentityGetResponse22V3(OCIDataResponse):
    """Response to a UserBroadWorksMobilityMobileIdentityGetRequest22V3.


         Columns for the mobileNumberAlertedTable are as follows: \"Mobile Number\", \"Country Code\", \"National Prefix\"

    Attributes:

        description (Optional[str]):

        is_primary (bool):

        enable_alerting (bool):

        alert_agent_calls (bool):

        alert_click_to_dial_calls (bool):

        alert_group_paging_calls (bool):

        use_mobility_calling_line_id (bool):

        enable_diversion_inhibitor (bool):

        require_answer_confirmation (bool):

        broadworks_call_control (bool):

        use_setting_level (str):

        deny_call_originations (bool):

        deny_call_terminations (bool):

        effective_enable_location_services (bool):

        effective_enable_msrn_lookup (bool):

        effective_enable_mobile_state_checking (bool):

        effective_enable_announcement_suppression (bool):

        effective_deny_call_originations (bool):

        effective_deny_call_terminations (bool):

        devices_to_ring (str):

        include_shared_call_appearance (bool):

        include_broadworks_anywhere (bool):

        include_executive_assistant (bool):

        enable_call_anchoring (bool):

        time_schedule (Optional[ScheduleGlobalKey]):

        holiday_schedule (Optional[ScheduleGlobalKey]):

        access_device_endpoint (Optional[AccessDeviceEndpointWithPortNumberRead22V2]):

        outbound_alternate_number (Optional[str]):

        enable_direct_routing (bool):

        mark_cdr_as_enterprise_group_calls (bool):

        use_mobility_connected_identity (bool):

        network_translation_index (Optional[str]):

        mobile_number_alerted_table (OCITable):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    is_primary: bool = field(metadata={"alias": "isPrimary"})

    enable_alerting: bool = field(metadata={"alias": "enableAlerting"})

    alert_agent_calls: bool = field(metadata={"alias": "alertAgentCalls"})

    alert_click_to_dial_calls: bool = field(metadata={"alias": "alertClickToDialCalls"})

    alert_group_paging_calls: bool = field(metadata={"alias": "alertGroupPagingCalls"})

    use_mobility_calling_line_id: bool = field(
        metadata={"alias": "useMobilityCallingLineID"}
    )

    enable_diversion_inhibitor: bool = field(
        metadata={"alias": "enableDiversionInhibitor"}
    )

    require_answer_confirmation: bool = field(
        metadata={"alias": "requireAnswerConfirmation"}
    )

    broadworks_call_control: bool = field(metadata={"alias": "broadworksCallControl"})

    use_setting_level: str = field(metadata={"alias": "useSettingLevel"})

    deny_call_originations: bool = field(metadata={"alias": "denyCallOriginations"})

    deny_call_terminations: bool = field(metadata={"alias": "denyCallTerminations"})

    effective_enable_location_services: bool = field(
        metadata={"alias": "effectiveEnableLocationServices"}
    )

    effective_enable_msrn_lookup: bool = field(
        metadata={"alias": "effectiveEnableMSRNLookup"}
    )

    effective_enable_mobile_state_checking: bool = field(
        metadata={"alias": "effectiveEnableMobileStateChecking"}
    )

    effective_enable_announcement_suppression: bool = field(
        metadata={"alias": "effectiveEnableAnnouncementSuppression"}
    )

    effective_deny_call_originations: bool = field(
        metadata={"alias": "effectiveDenyCallOriginations"}
    )

    effective_deny_call_terminations: bool = field(
        metadata={"alias": "effectiveDenyCallTerminations"}
    )

    devices_to_ring: str = field(metadata={"alias": "devicesToRing"})

    include_shared_call_appearance: bool = field(
        metadata={"alias": "includeSharedCallAppearance"}
    )

    include_broadworks_anywhere: bool = field(
        metadata={"alias": "includeBroadworksAnywhere"}
    )

    include_executive_assistant: bool = field(
        metadata={"alias": "includeExecutiveAssistant"}
    )

    enable_call_anchoring: bool = field(metadata={"alias": "enableCallAnchoring"})

    time_schedule: Optional[ScheduleGlobalKey] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[ScheduleGlobalKey] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    access_device_endpoint: Optional[AccessDeviceEndpointWithPortNumberRead22V2] = (
        field(default=None, metadata={"alias": "accessDeviceEndpoint"})
    )

    outbound_alternate_number: Optional[str] = field(
        default=None, metadata={"alias": "outboundAlternateNumber"}
    )

    enable_direct_routing: bool = field(metadata={"alias": "enableDirectRouting"})

    mark_cdr_as_enterprise_group_calls: bool = field(
        metadata={"alias": "markCDRAsEnterpriseGroupCalls"}
    )

    use_mobility_connected_identity: bool = field(
        metadata={"alias": "useMobilityConnectedIdentity"}
    )

    network_translation_index: Optional[str] = field(
        default=None, metadata={"alias": "networkTranslationIndex"}
    )

    mobile_number_alerted_table: OCITable = field(
        metadata={"alias": "mobileNumberAlertedTable"}
    )


@dataclass(kw_only=True)
class UserBroadWorksReceptionistEnterpriseGetAvailableUserListResponse(OCIDataResponse):
    """Response to the UserBroadWorksReceptionistEnterpriseGetAvailableUserListRequest.
        Returns a 12 column table with column headings:
          \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
          \"Group Id\", \"Phone Number\", \"Extension\", \"Mobile\", \"Email Address\", \"Department\", \"IMP Id\", \"Title\",
          \"Receptionist Note\".  The Receptionist Note column is only populated, if the user sending
          the request is the owner of the Receptionist Note and a Note exists.

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class UserBroadWorksReceptionistEnterpriseGetResponse(OCIDataResponse):
    """Response to UserBroadWorksReceptionistEnterpriseGetRequest.
        Returns a 12 column table with column headings:
          \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
          \"Group Id\", \"Phone Number\", \"Extension\", \"Mobile\", \"Email Address\", \"Department\", \"IMP Id\", \"Title\",
          \"Receptionist Note\".
        The Receptionist Note column is only populated, if the user sending the request is the owner
        of the Receptionist Note and a Note exists.

    Attributes:

        monitored_user_table (OCITable):

    """

    monitored_user_table: OCITable = field(metadata={"alias": "monitoredUserTable"})


@dataclass(kw_only=True)
class UserBroadWorksReceptionistEnterpriseNoteGetResponse(OCIDataResponse):
    """Response to UserBroadWorksReceptionistEnterpriseNoteGetRequest.

    Attributes:

        receptionist_note (Optional[str]):

    """

    receptionist_note: Optional[str] = field(
        default=None, metadata={"alias": "receptionistNote"}
    )


@dataclass(kw_only=True)
class UserBroadWorksReceptionistOfficeGetAvailableUserListResponse(OCIDataResponse):
    """Response to the UserBroadWorksReceptionistOfficeGetAvailableUserListRequest.
        Returns a 12 column table with column headings:
          \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
          \"Group Id\", \"Phone Number\", \"Extension\", \"Mobile\", \"Email Address\", \"Department\", \"IMP Id\", \"Title\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class UserBroadWorksReceptionistOfficeGetResponse(OCIDataResponse):
    """Response to UserBroadWorksReceptionistOfficeGetRequest.
        Returns a 11 column table with column headings:
          \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
          \"Group Id\", \"Phone Number\", \"Extension\", \"Mobile\", \"Email Address\", \"Department\", \"IMP Id\", \"Title\".

    Attributes:

        monitored_user_table (OCITable):

    """

    monitored_user_table: OCITable = field(metadata={"alias": "monitoredUserTable"})


@dataclass(kw_only=True)
class UserBroadWorksReceptionistSmallBusinessGetAvailableUserListResponse(
    OCIDataResponse
):
    """Response to the UserBroadWorksReceptionistSmallBusinessGetAvailableUserListRequest.
        Returns a 11 column table with column headings:
          \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
          \"Group Id\", \"Phone Number\", \"Extension\", \"Mobile\", \"Email Address\", \"Department\", \"IMP Id\", \"Title\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class UserBroadWorksReceptionistSmallBusinessGetResponse(OCIDataResponse):
    """Response to UserBroadWorksReceptionistSmallBusinessGetRequest.
        Returns a 12 column table with column headings:
          \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
          \"Group Id\", \"Phone Number\", \"Extension\", \"Mobile\", \"Email Address\", \"Department\", \"IMP Id\", \"Title\".

    Attributes:

        monitored_user_table (OCITable):

    """

    monitored_user_table: OCITable = field(metadata={"alias": "monitoredUserTable"})


@dataclass(kw_only=True)
class UserBusyLampFieldGetAvailableUserListResponse(OCIDataResponse):
    """Response to the BusyLampFieldGetAvailableUserListRequest.
        Returns a table with column headings:
          \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
          \"Phone Number\", \"Extension\", \"Department\", \"Email Address\", \"IMP Id\",
          \"User External Id\", and \"User Place Type\".
        The following columns are supported in AS data mode only:
          \"User External Id\", \"User Place Type\"
        The possible values for \"User Place Type\" are: User, Place.

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class UserBusyLampFieldGetResponse16sp2(OCIDataResponse):
    """Response to UserBusyLampFieldGetRequest16sp2.
        The table has column headings:
          \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
          \"Phone Number\", \"Extension\", \"Department\", \"Email Address\", \"IMP Id\",
          \"User External Id\", and \"User Place Type\".
        The possible values for \"User Place Type\" are: User, Place.

    Attributes:

        list_uri (Optional[str]):

        enable_call_park_notification (bool):

        monitored_user_table (OCITable):

    """

    list_uri: Optional[str] = field(default=None, metadata={"alias": "listURI"})

    enable_call_park_notification: bool = field(
        metadata={"alias": "enableCallParkNotification"}
    )

    monitored_user_table: OCITable = field(metadata={"alias": "monitoredUserTable"})


@dataclass(kw_only=True)
class UserCallCenterAgentDetailsGetResponse(OCIDataResponse):
    """Response to the UserCallCenterAgentDetailsGetRequest.
        Contains the detail information for a Call Center Agent.

    Attributes:

        is_call_center_basic_assigned (bool):

        is_call_center_standard_assigned (bool):

        is_call_center_premium_assigned (bool):

    """

    is_call_center_basic_assigned: bool = field(
        metadata={"alias": "isCallCenterBasicAssigned"}
    )

    is_call_center_standard_assigned: bool = field(
        metadata={"alias": "isCallCenterStandardAssigned"}
    )

    is_call_center_premium_assigned: bool = field(
        metadata={"alias": "isCallCenterPremiumAssigned"}
    )


@dataclass(kw_only=True)
class UserCallCenterAgentSignOutResponse(OCIDataResponse):
    """Response to the UserCallCenterAgentSignOutRequest.
        It contains a list of call centers for which the agent is the last signed-in agent.
        Contains a table with column headings: \"Service User Id\" and \"Call Center Name\".

    Attributes:

        call_center_table (OCITable):

    """

    call_center_table: OCITable = field(metadata={"alias": "callCenterTable"})


@dataclass(kw_only=True)
class UserCallCenterCallDispositionCodeGetAvailableListResponse(OCIDataResponse):
    """Response to the UserCallCenterCallDispositionCodeGetAvailableListRequest.
        This list may include Group/Enterprise level codes in addition to the Call Center level codes,
        depending on the call center disposition codes settings.
        Only active codes are included in the list.
        Contains a table with column headings: \"Code\", \"Description\" and \"Level\".
        Level column can be any of the values in the data type CallDispositionCodeLevel.

    Attributes:

        disposition_codes_table (OCITable):

    """

    disposition_codes_table: OCITable = field(
        metadata={"alias": "dispositionCodesTable"}
    )


@dataclass(kw_only=True)
class UserCallCenterEnhancedReportingReportTemplateParamInfoGetResponse(
    OCIDataResponse
):
    """Response to UserCallCenterEnhancedReportingReportTemplateParamInfoGetRequest.

    Attributes:

        is_realtime_report (bool):

        require_agent_param (bool):

        require_call_center_param (bool):

        require_call_center_dnis_param (bool):

        require_sampling_period_param (bool):

        call_completion_threshold_param (Optional[str]):

        short_duration_threshold_param (Optional[str]):

        service_level_threshold_param (Optional[str]):

        service_level_inclusions_param (Optional[str]):

        service_level_objective_threshold_param (Optional[str]):

        abandoned_call_threshold_param (Optional[str]):

        service_level_threshold_param_number (Optional[int]):

        abandoned_call_threshold_param_number (Optional[int]):

    """

    is_realtime_report: bool = field(metadata={"alias": "isRealtimeReport"})

    require_agent_param: bool = field(metadata={"alias": "requireAgentParam"})

    require_call_center_param: bool = field(
        metadata={"alias": "requireCallCenterParam"}
    )

    require_call_center_dnis_param: bool = field(
        metadata={"alias": "requireCallCenterDnisParam"}
    )

    require_sampling_period_param: bool = field(
        metadata={"alias": "requireSamplingPeriodParam"}
    )

    call_completion_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "callCompletionThresholdParam"}
    )

    short_duration_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "shortDurationThresholdParam"}
    )

    service_level_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelThresholdParam"}
    )

    service_level_inclusions_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelInclusionsParam"}
    )

    service_level_objective_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "serviceLevelObjectiveThresholdParam"}
    )

    abandoned_call_threshold_param: Optional[str] = field(
        default=None, metadata={"alias": "abandonedCallThresholdParam"}
    )

    service_level_threshold_param_number: Optional[int] = field(
        default=None, metadata={"alias": "serviceLevelThresholdParamNumber"}
    )

    abandoned_call_threshold_param_number: Optional[int] = field(
        default=None, metadata={"alias": "abandonedCallThresholdParamNumber"}
    )


@dataclass(kw_only=True)
class UserCallCenterEnhancedReportingScheduledReportGetResponse(OCIDataResponse):
    """Response to UserCallCenterEnhancedReportingScheduledReportGetRequest.

    Attributes:

        description (Optional[str]):

        report_template (CallCenterReportTemplateKey):

        schedule (CallCenterReportSchedule):

        sampling_period (Optional[str]):

        start_day_of_week (Optional[str]):

        report_time_zone (str):

        report_date_format (str):

        report_time_format (str):

        report_interval (CallCenterReportInterval):

        report_format (str):

        agent (Optional[CallCenterScheduledReportAgentSelectionRead]):

        call_center (Optional[CallCenterScheduledReportCallCenterSelection]):

        dnis (Optional[CallCenterScheduledReportDNISSelection]):

        call_completion_threshold_seconds (Optional[int]):

        short_duration_threshold_seconds (Optional[int]):

        service_level_threshold_seconds (Optional[List[int]]):

        service_level_inclusions (Optional[CallCenterScheduledReportServiceLevelInclusions]):

        service_level_objective_percentage (Optional[int]):

        abandoned_call_threshold_seconds (Optional[List[int]]):

        email_address (List[str]):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    report_template: CallCenterReportTemplateKey = field(
        metadata={"alias": "reportTemplate"}
    )

    schedule: CallCenterReportSchedule = field(metadata={"alias": "schedule"})

    sampling_period: Optional[str] = field(
        default=None, metadata={"alias": "samplingPeriod"}
    )

    start_day_of_week: Optional[str] = field(
        default=None, metadata={"alias": "startDayOfWeek"}
    )

    report_time_zone: str = field(metadata={"alias": "reportTimeZone"})

    report_date_format: str = field(metadata={"alias": "reportDateFormat"})

    report_time_format: str = field(metadata={"alias": "reportTimeFormat"})

    report_interval: CallCenterReportInterval = field(
        metadata={"alias": "reportInterval"}
    )

    report_format: str = field(metadata={"alias": "reportFormat"})

    agent: Optional[CallCenterScheduledReportAgentSelectionRead] = field(
        default=None, metadata={"alias": "agent"}
    )

    call_center: Optional[CallCenterScheduledReportCallCenterSelection] = field(
        default=None, metadata={"alias": "callCenter"}
    )

    dnis: Optional[CallCenterScheduledReportDNISSelection] = field(
        default=None, metadata={"alias": "dnis"}
    )

    call_completion_threshold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "callCompletionThresholdSeconds"}
    )

    short_duration_threshold_seconds: Optional[int] = field(
        default=None, metadata={"alias": "shortDurationThresholdSeconds"}
    )

    service_level_threshold_seconds: Optional[List[int]] = field(
        default=None, metadata={"alias": "serviceLevelThresholdSeconds"}
    )

    service_level_inclusions: Optional[
        CallCenterScheduledReportServiceLevelInclusions
    ] = field(default=None, metadata={"alias": "serviceLevelInclusions"})

    service_level_objective_percentage: Optional[int] = field(
        default=None, metadata={"alias": "serviceLevelObjectivePercentage"}
    )

    abandoned_call_threshold_seconds: Optional[List[int]] = field(
        default=None, metadata={"alias": "abandonedCallThresholdSeconds"}
    )

    email_address: List[str] = field(metadata={"alias": "emailAddress"})


@dataclass(kw_only=True)
class UserCallCenterGetAgentSupervisorListResponse(OCIDataResponse):
    """Response to the UserCallCenterGetAgentSupervisorListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\", \"IMP Id\",
                \"Location Code\".

    Attributes:

        supervisor_table (OCITable):

    """

    supervisor_table: OCITable = field(metadata={"alias": "supervisorTable"})


@dataclass(kw_only=True)
class UserCallCenterGetAvailableCallCenterListResponse(OCIDataResponse):
    """Response to the UserCallCenterGetAvailableCallCenterListRequest.
        Contains a table with column heading: \"Service User Id\".

    Attributes:

        call_center_table (OCITable):

    """

    call_center_table: OCITable = field(metadata={"alias": "callCenterTable"})


@dataclass(kw_only=True)
class UserCallCenterGetAvailableCallCenterPagedSortedListResponse(OCIDataResponse):
    """Response to the UserCallCenterGetAvailableCallCenterPagedSortedListRequest.
        Contains a table with column heading: \"Service User Id\".

    Attributes:

        call_center_table (OCITable):

    """

    call_center_table: OCITable = field(metadata={"alias": "callCenterTable"})


@dataclass(kw_only=True)
class UserCallCenterGetAvailableDNISListResponse(OCIDataResponse):
    """Response to UserCallCenterGetAvailableDNISListRequest.
        Contains a list of available DNIS for agent to select.

    Attributes:

        available_dnis (Optional[List[DNISKey]]):

    """

    available_dnis: Optional[List[DNISKey]] = field(
        default=None, metadata={"alias": "availableDNIS"}
    )


@dataclass(kw_only=True)
class UserCallCenterGetResponse23(OCIDataResponse):
    """Response to the UserCallCenterGetRequest23.
        Contains the user's call center settings.
        Indicates whether the agent is current available (logged in) to each call center in the list.
        Contains a table with column headings: \"Service User Id\", \"Phone Number\", \"Extension\", \"Available\", \"Logoff Allowed\", \"Type\",
         \"Priority\",\"Routing Policy\" and \"Skill Level\".
        The valid \"Routing Type\" values are \"Priority Based\" and \"Skill Based\". This column is only populated for Premium Call Centers.
        The valid \"Skill Level\" values are of from 1-20. This column is only populated for Premium Skill Based Call Centers.

        The following elements are only used in AS data mode and not returned in XS data mode:
          agentACDState
          agentThresholdProfileName
          agentUnavailableCode
          useSystemDefaultUnavailableSettings
          forceAgentUnavailableOnDNDActivation
          forceAgentUnavailableOnPersonalCalls
          forceAgentUnavailableOnBouncedCallLimit
          numberConsecutiveBouncedCallsToForceAgentUnavailable
          forceAgentUnavailableOnNotReachable
          makeOutgoingCallsAsCallCenter
          outgoingCallDNIS
          useSystemDefaultWrapUpDestination
          wrapUpDestination

        The following columns are only used in AS data mode and not returned in XS data mode:
          \"Routing Policy\"
          \"Skill Level\"

    Attributes:

        agent_acd_state (Optional[str]):

        agent_threshold_profile_name (Optional[str]):

        agent_unavailable_code (Optional[str]):

        use_default_guard_timer (bool):

        enable_guard_timer (bool):

        guard_timer_seconds (int):

        use_system_default_unavailable_settings (Optional[bool]):

        force_agent_unavailable_on_dnd_activation (Optional[bool]):

        force_agent_unavailable_on_personal_calls (Optional[bool]):

        force_agent_unavailable_on_bounced_call_limit (Optional[bool]):

        number_consecutive_bounced_calls_to_force_agent_unavailable (Optional[int]):

        force_agent_unavailable_on_not_reachable (Optional[bool]):

        make_outgoing_calls_as_call_center (Optional[bool]):

        outgoing_call_dnis (Optional[DNISKey]):

        use_system_default_wrap_up_destination (Optional[bool]):

        wrap_up_destination (Optional[str]):

        call_center_table (OCITable):

    """

    agent_acd_state: Optional[str] = field(
        default=None, metadata={"alias": "agentACDState"}
    )

    agent_threshold_profile_name: Optional[str] = field(
        default=None, metadata={"alias": "agentThresholdProfileName"}
    )

    agent_unavailable_code: Optional[str] = field(
        default=None, metadata={"alias": "agentUnavailableCode"}
    )

    use_default_guard_timer: bool = field(metadata={"alias": "useDefaultGuardTimer"})

    enable_guard_timer: bool = field(metadata={"alias": "enableGuardTimer"})

    guard_timer_seconds: int = field(metadata={"alias": "guardTimerSeconds"})

    use_system_default_unavailable_settings: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemDefaultUnavailableSettings"}
    )

    force_agent_unavailable_on_dnd_activation: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnDNDActivation"}
    )

    force_agent_unavailable_on_personal_calls: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnPersonalCalls"}
    )

    force_agent_unavailable_on_bounced_call_limit: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnBouncedCallLimit"}
    )

    number_consecutive_bounced_calls_to_force_agent_unavailable: Optional[int] = field(
        default=None,
        metadata={"alias": "numberConsecutiveBouncedCallsToForceAgentUnavailable"},
    )

    force_agent_unavailable_on_not_reachable: Optional[bool] = field(
        default=None, metadata={"alias": "forceAgentUnavailableOnNotReachable"}
    )

    make_outgoing_calls_as_call_center: Optional[bool] = field(
        default=None, metadata={"alias": "makeOutgoingCallsAsCallCenter"}
    )

    outgoing_call_dnis: Optional[DNISKey] = field(
        default=None, metadata={"alias": "outgoingCallDNIS"}
    )

    use_system_default_wrap_up_destination: Optional[bool] = field(
        default=None, metadata={"alias": "useSystemDefaultWrapUpDestination"}
    )

    wrap_up_destination: Optional[str] = field(
        default=None, metadata={"alias": "wrapUpDestination"}
    )

    call_center_table: OCITable = field(metadata={"alias": "callCenterTable"})


@dataclass(kw_only=True)
class UserCallCenterGetSupervisedAgentListResponse(OCIDataResponse):
    """Response to the UserCallCenterGetSupervisedAgentListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\", \"Phone Number\", \"Extension\",
        \"Department\", \"Email Address\", \"IMP Id\", \"Location Code\".

    Attributes:

        agent_user_table (OCITable):

    """

    agent_user_table: OCITable = field(metadata={"alias": "agentUserTable"})


@dataclass(kw_only=True)
class UserCallCenterGetSupervisorCallCenterListResponse(OCIDataResponse):
    """Response to the UserCallCenterGetSupervisorCallCenterListRequest.
        Contains a table with column headings: \"Service User Id\", \"Phone Number\",
        \"Extension\", \"Type\" and \"Priority\".

    Attributes:

        call_center_table (OCITable):

    """

    call_center_table: OCITable = field(metadata={"alias": "callCenterTable"})


@dataclass(kw_only=True)
class UserCallCenterMonitoringGetResponse23(OCIDataResponse):
    """Response to UserCallCenterMonitoringGetRequest23.

    Attributes:

        play_tone_to_agent_for_silent_monitoring (bool):

        play_tone_to_agent_for_supervisor_coaching (bool):

    """

    play_tone_to_agent_for_silent_monitoring: bool = field(
        metadata={"alias": "playToneToAgentForSilentMonitoring"}
    )

    play_tone_to_agent_for_supervisor_coaching: bool = field(
        metadata={"alias": "playToneToAgentForSupervisorCoaching"}
    )


@dataclass(kw_only=True)
class UserCallForwardingAlwaysGetResponse(OCIDataResponse):
    """Response to UserCallForwardingAlwaysGetRequest.

    Attributes:

        is_active (bool):

        forward_to_phone_number (Optional[str]):

        is_ring_splash_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    is_ring_splash_active: bool = field(metadata={"alias": "isRingSplashActive"})


@dataclass(kw_only=True)
class UserCallForwardingAlwaysSecondaryGetResponse(OCIDataResponse):
    """Response to UserCallForwardingAlwaysSecondaryGetRequest.

    Attributes:

        is_active (bool):

        forward_to_phone_number (Optional[str]):

        is_ring_splash_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    is_ring_splash_active: bool = field(metadata={"alias": "isRingSplashActive"})


@dataclass(kw_only=True)
class UserCallForwardingBusyGetResponse(OCIDataResponse):
    """Response to UserCallForwardingBusyGetRequest.

    Attributes:

        is_active (bool):

        forward_to_phone_number (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )


@dataclass(kw_only=True)
class UserCallForwardingNoAnswerGetResponse13mp16(OCIDataResponse):
    """Response to UserCallForwardingNoAnswerGetRequest13mp16.

    Attributes:

        is_active (bool):

        forward_to_phone_number (Optional[str]):

        number_of_rings (int):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    number_of_rings: int = field(metadata={"alias": "numberOfRings"})


@dataclass(kw_only=True)
class UserCallForwardingNotReachableGetResponse(OCIDataResponse):
    """Response to UserCallForwardingNotReachableGetRequest.

    Attributes:

        is_active (bool):

        forward_to_phone_number (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )


@dataclass(kw_only=True)
class UserCallForwardingSelectiveGetCriteriaResponse21(OCIDataResponse):
    """Response to the UserCallForwardingSelectiveGetCriteriaRequest21.

    Attributes:

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        forward_to_number_selection (str):

        forward_to_phone_number (Optional[str]):

        from_dn_criteria (CriteriaFromDn):

        call_to_number (Optional[List[CallToNumber]]):

    """

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    forward_to_number_selection: str = field(
        metadata={"alias": "forwardToNumberSelection"}
    )

    forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "forwardToPhoneNumber"}
    )

    from_dn_criteria: CriteriaFromDn = field(metadata={"alias": "fromDnCriteria"})

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class UserCallForwardingSelectiveGetResponse16(OCIDataResponse):
    """Response to the UserCallForwardingSelectiveGetRequest16. The criteria table's column headings are:
        \"Is Active\", \"Criteria Name\", \"Time Schedule\", \"Calls From\", \"Forward To\", \"Blacklisted\", \"Holiday Schedule\", \"Calls To Type\", \"Calls To Number\" and \"Calls To Extension\".
        The following columns are only returned in AS data mode:
          \"Calls To Type\", \"Calls To Number\" and \"Calls To Extension\"

        The possible values for the \"Calls To Type\" column are the following or a combination of them separated by comma:
          - Primary
          - Alternate X (where x is a number between 1 and 10)
          - Mobility
        The possible values for the \"Calls To Number\" column are the following or a combination of them separated by comma:
          - The value of the phone number for the corresponding Calls To Type, when the number is available. i.e. Alternate 1 may have extension, but no number.
          - When no number is available a blank space is provided instead.
        The possible values for the \"Calls To Extension\" column are the following or a combination of them separated by comma:
          - The value of the extension for the corresponding Calls To Type, when the extension is available. i.e. Primary may have number, but no extension.
          - For Mobility Calls To Type, this is always blank.
          - When no extension is available a blank space is provided instead.

    Attributes:

        is_active (bool):

        default_forward_to_phone_number (Optional[str]):

        play_ring_reminder (bool):

        criteria_table (OCITable):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    default_forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "defaultForwardToPhoneNumber"}
    )

    play_ring_reminder: bool = field(metadata={"alias": "playRingReminder"})

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class UserCallMeNowGetCriteriaResponse(OCIDataResponse):
    """Response to the UserCallMeNowGetCriteriaRequest.

    Attributes:

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        reject_call (bool):

        to_dn_criteria (CallMeNowToDnCriteria):

    """

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    reject_call: bool = field(metadata={"alias": "rejectCall"})

    to_dn_criteria: CallMeNowToDnCriteria = field(metadata={"alias": "toDnCriteria"})


@dataclass(kw_only=True)
class UserCallMeNowGetResponse(OCIDataResponse):
    """Response to the UserCallMeNowGetRequest. The criteria table's column headings are:
        \"Is Active\", \"Criteria Name\", \"Time Schedule\", \"Call To\", \"Reject Call\" and \"Holiday Schedule\".

    Attributes:

        is_active (bool):

        answer_confirmation (str):

        criteria_table (OCITable):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    answer_confirmation: str = field(metadata={"alias": "answerConfirmation"})

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class UserCallNotifyGetCriteriaResponse21(OCIDataResponse):
    """Response to the UserCallNotifyGetCriteriaRequest21.

    Attributes:

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria (CriteriaFromDn):

        call_to_number (Optional[List[CallToNumber]]):

    """

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria: CriteriaFromDn = field(metadata={"alias": "fromDnCriteria"})

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class UserCallNotifyGetResponse(OCIDataResponse):
    """Response to the UserCallNotifyGetRequest. The criteria table's column headings are: \"Is Active\",
        \"Criteria Name\", \"Time Schedule\", \"Calls From\", \"Blacklisted\" ,\"Holiday Schedule\", \"Calls To Type\", \"Calls To Number\" and \"Calls To Extension\".
        The following columns are only returned in AS data mode:
          \"Calls To Type\", \"Calls To Number\" and \"Calls To Extension\"

        The possible values for the \"Calls To Type\" column are the following or a combination of them separated by comma:
          - Primary
          - Alternate X (where x is a number between 1 and 10)
          - Mobility
        The possible values for the \"Calls To Number\" column are the following or a combination of them separated by comma:
          - The value of the phone number for the corresponding Calls To Type, when the number is available. i.e. Alternate 1 may have extension, but no number.
          - When no number is available a blank space is provided instead.
        The possible values for the \"Calls To Extension\" column are the following or a combination of them separated by comma:
          - The value of the extension for the corresponding Calls To Type, when the extension is available. i.e. Primary may have number, but no extension.
          - For Mobility Calls To Type, this is always blank.
          - When no extension is available a blank space is provided instead.

    Attributes:

        call_notify_email_address (Optional[str]):

        criteria_table (OCITable):

    """

    call_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "callNotifyEmailAddress"}
    )

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class UserCallParkGetResponse(OCIDataResponse):
    """Response to the UserCallParkGetRequest.
        Identifies which Call Park group the user belongs to and the list of users in the group.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\",
        \"Hiragana First Name\", \"User External Id\", and \"User Place Type\".
        The following columns are supported in AS data mode only:
          \"User External Id\", \"User Place Type\"
        The possible values for \"User Place Type\" are: User, Place.
        The users are in the table in the order they will try to be parked on.

    Attributes:

        name (Optional[str]):

        user_table (OCITable):

    """

    name: Optional[str] = field(default=None, metadata={"alias": "name"})

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class UserCallPickupGetResponse(OCIDataResponse):
    """Response to the UserCallPickupGetRequest.
        Identifies which Call Pickup group the user belongs to and the list of users in the group.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\",
        \"Hiragana First Name\", \"Department\", \"Phone Number\", \"Extension\", \"Email Address\".

    Attributes:

        name (Optional[str]):

        user_table (OCITable):

    """

    name: Optional[str] = field(default=None, metadata={"alias": "name"})

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class UserCallPoliciesGetResponse19sp1(OCIDataResponse):
    """Response to UserCallPoliciesGetRequest19sp1.

    Attributes:

        redirected_calls_colp_privacy (str):

        call_being_forwarded_response_call_type (str):

        calling_line_identity_for_redirected_calls (str):

    """

    redirected_calls_colp_privacy: str = field(
        metadata={"alias": "redirectedCallsCOLPPrivacy"}
    )

    call_being_forwarded_response_call_type: str = field(
        metadata={"alias": "callBeingForwardedResponseCallType"}
    )

    calling_line_identity_for_redirected_calls: str = field(
        metadata={"alias": "callingLineIdentityForRedirectedCalls"}
    )


@dataclass(kw_only=True)
class UserCallProcessingGetPolicyResponse23(OCIDataResponse):
    """Response to UserCallProcessingGetPolicyRequest23.
     The useUserCLIDSetting attribute controls the CLID settings
     (clidPolicy, emergencyClidPolicy, allowAlternateNumbersForRedirectingIdentity, useGroupName, allowConfigurableCLIDForRedirectingIdentity, allowDepartmentCLIDNameOverride)

        The useUserMediaSetting attribute controls the Media settings
        (medisPolicySelection, supportedMediaSetName)

        The useUserCallLimitsSetting attribute controls the Call Limits setting
        (useMaxSimultaneousCalls, maxSimultaneousCalls, useMaxSimultaneousVideoCalls, maxSimultaneousVideoCalls,
        useMaxCallTimeForAnsweredCalls, maxCallTimeForAnsweredCallsMinutes, useMaxCallTimeForUnansweredCalls,
        maxCallTimeForUnansweredCallsMinutes, useMaxConcurrentRedirectedCalls, useMaxFindMeFollowMeDepth,
        maxRedirectionDepth, useMaxConcurrentFindMeFollowMeInvocations, maxConcurrentFindMeFollowMeInvocations,
        useMaxConcurrentTerminatingAlertingRequests, maxConcurrentTerminatingAlertingRequests,
        includeRedirectionsInMaximumNumberOfConcurrentCalls)

        The useUserDCLIDSetting controls the Dialable Caller ID settings (enableDialableCallerID)

        The useUserPhoneListLookupSetting controls whether or not to use the group setting for the Phone List Lookup policy (enablePhoneListLookup)

        The useUserTranslationRoutingSetting attribute controls the routing and translation settings (routeOverrideDomain, routeOverridePrefix)

        The following elements are only used in AS data mode:
         useUserDCLIDSetting
         enableDialableCallerID
         allowConfigurableCLIDForRedirectingIdentity
         allowDepartmentCLIDNameOverride
         useUserPhoneListLookupSetting, value \"false\" is returned in XS data mode.
         enablePhoneListLookup, value \"false\" is returned in XS data mode.
         useMaxConcurrentTerminatingAlertingRequests, value \"false\" is returned in XS data mode.
         maxConcurrentTerminatingAlertingRequests, value \"10\" is returned in XS data mode.
         includeRedirectionsInMaximumNumberOfConcurrentCalls, value \"false\" is returned in XS data mode.
         allowMobileDNForRedirectingIdentity,value \"false\" is returned in XS data mode.
         allowUserSelectionOfExternalCLIDPolicy,value \"false\" is returned in XS data mode.
         allowUserConfigurableCLIDModification,value \"false\" is returned in XS data mode.

        The following elements are only used in XS data mode and ignored in AS data mode:
           routeOverrideDomain
           routeOverridePrefix

        The following elements are only used in XS data mode:
           useUserTranslationRoutingSetting, value \"false\" is returned in AS data mode.

    Attributes:

        use_user_clid_setting (bool):

        use_user_media_setting (bool):

        use_user_call_limits_setting (bool):

        use_user_dclid_setting (bool):

        use_user_translation_routing_setting (Optional[bool]):

        use_max_simultaneous_calls (bool):

        max_simultaneous_calls (int):

        use_max_simultaneous_video_calls (bool):

        max_simultaneous_video_calls (int):

        use_max_call_time_for_answered_calls (bool):

        max_call_time_for_answered_calls_minutes (int):

        use_max_call_time_for_unanswered_calls (bool):

        max_call_time_for_unanswered_calls_minutes (int):

        media_policy_selection (str):

        supported_media_set_name (Optional[str]):

        use_max_concurrent_redirected_calls (bool):

        max_concurrent_redirected_calls (int):

        use_max_find_me_follow_me_depth (bool):

        max_find_me_follow_me_depth (int):

        max_redirection_depth (int):

        use_max_concurrent_find_me_follow_me_invocations (bool):

        max_concurrent_find_me_follow_me_invocations (int):

        clid_policy (str):

        emergency_clid_policy (str):

        allow_alternate_numbers_for_redirecting_identity (bool):

        use_group_name (bool):

        block_calling_name_for_external_calls (bool):

        enable_dialable_caller_id (bool):

        allow_configurable_clid_for_redirecting_identity (bool):

        allow_department_clid_name_override (bool):

        use_user_phone_list_lookup_setting (bool):

        enable_phone_list_lookup (bool):

        use_max_concurrent_terminating_alerting_requests (bool):

        max_concurrent_terminating_alerting_requests (int):

        include_redirections_in_maximum_number_of_concurrent_calls (bool):

        route_override_domain (Optional[str]):

        route_override_prefix (Optional[str]):

        allow_mobile_dn_for_redirecting_identity (bool):

        allow_user_selection_of_external_clid_policy (bool):

        allow_user_configurable_clid_modification (bool):

    """

    use_user_clid_setting: bool = field(metadata={"alias": "useUserCLIDSetting"})

    use_user_media_setting: bool = field(metadata={"alias": "useUserMediaSetting"})

    use_user_call_limits_setting: bool = field(
        metadata={"alias": "useUserCallLimitsSetting"}
    )

    use_user_dclid_setting: bool = field(metadata={"alias": "useUserDCLIDSetting"})

    use_user_translation_routing_setting: Optional[bool] = field(
        default=None, metadata={"alias": "useUserTranslationRoutingSetting"}
    )

    use_max_simultaneous_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousCalls"}
    )

    max_simultaneous_calls: int = field(metadata={"alias": "maxSimultaneousCalls"})

    use_max_simultaneous_video_calls: bool = field(
        metadata={"alias": "useMaxSimultaneousVideoCalls"}
    )

    max_simultaneous_video_calls: int = field(
        metadata={"alias": "maxSimultaneousVideoCalls"}
    )

    use_max_call_time_for_answered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForAnsweredCalls"}
    )

    max_call_time_for_answered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForAnsweredCallsMinutes"}
    )

    use_max_call_time_for_unanswered_calls: bool = field(
        metadata={"alias": "useMaxCallTimeForUnansweredCalls"}
    )

    max_call_time_for_unanswered_calls_minutes: int = field(
        metadata={"alias": "maxCallTimeForUnansweredCallsMinutes"}
    )

    media_policy_selection: str = field(metadata={"alias": "mediaPolicySelection"})

    supported_media_set_name: Optional[str] = field(
        default=None, metadata={"alias": "supportedMediaSetName"}
    )

    use_max_concurrent_redirected_calls: bool = field(
        metadata={"alias": "useMaxConcurrentRedirectedCalls"}
    )

    max_concurrent_redirected_calls: int = field(
        metadata={"alias": "maxConcurrentRedirectedCalls"}
    )

    use_max_find_me_follow_me_depth: bool = field(
        metadata={"alias": "useMaxFindMeFollowMeDepth"}
    )

    max_find_me_follow_me_depth: int = field(
        metadata={"alias": "maxFindMeFollowMeDepth"}
    )

    max_redirection_depth: int = field(metadata={"alias": "maxRedirectionDepth"})

    use_max_concurrent_find_me_follow_me_invocations: bool = field(
        metadata={"alias": "useMaxConcurrentFindMeFollowMeInvocations"}
    )

    max_concurrent_find_me_follow_me_invocations: int = field(
        metadata={"alias": "maxConcurrentFindMeFollowMeInvocations"}
    )

    clid_policy: str = field(metadata={"alias": "clidPolicy"})

    emergency_clid_policy: str = field(metadata={"alias": "emergencyClidPolicy"})

    allow_alternate_numbers_for_redirecting_identity: bool = field(
        metadata={"alias": "allowAlternateNumbersForRedirectingIdentity"}
    )

    use_group_name: bool = field(metadata={"alias": "useGroupName"})

    block_calling_name_for_external_calls: bool = field(
        metadata={"alias": "blockCallingNameForExternalCalls"}
    )

    enable_dialable_caller_id: bool = field(
        metadata={"alias": "enableDialableCallerID"}
    )

    allow_configurable_clid_for_redirecting_identity: bool = field(
        metadata={"alias": "allowConfigurableCLIDForRedirectingIdentity"}
    )

    allow_department_clid_name_override: bool = field(
        metadata={"alias": "allowDepartmentCLIDNameOverride"}
    )

    use_user_phone_list_lookup_setting: bool = field(
        metadata={"alias": "useUserPhoneListLookupSetting"}
    )

    enable_phone_list_lookup: bool = field(metadata={"alias": "enablePhoneListLookup"})

    use_max_concurrent_terminating_alerting_requests: bool = field(
        metadata={"alias": "useMaxConcurrentTerminatingAlertingRequests"}
    )

    max_concurrent_terminating_alerting_requests: int = field(
        metadata={"alias": "maxConcurrentTerminatingAlertingRequests"}
    )

    include_redirections_in_maximum_number_of_concurrent_calls: bool = field(
        metadata={"alias": "includeRedirectionsInMaximumNumberOfConcurrentCalls"}
    )

    route_override_domain: Optional[str] = field(
        default=None, metadata={"alias": "routeOverrideDomain"}
    )

    route_override_prefix: Optional[str] = field(
        default=None, metadata={"alias": "routeOverridePrefix"}
    )

    allow_mobile_dn_for_redirecting_identity: bool = field(
        metadata={"alias": "allowMobileDNForRedirectingIdentity"}
    )

    allow_user_selection_of_external_clid_policy: bool = field(
        metadata={"alias": "allowUserSelectionOfExternalCLIDPolicy"}
    )

    allow_user_configurable_clid_modification: bool = field(
        metadata={"alias": "allowUserConfigurableCLIDModification"}
    )


@dataclass(kw_only=True)
class UserCallRecordingGetResponse23(OCIDataResponse):
    """Response to the UserCallRecordingGetRequest23.
        The response contains the user's Call Recording option information.

        The following parameters are not returned for service instance:
          - pauseResumeNotification
          - enableCallRecordingAnnouncement
          - enableRecordCallRepeatWarningTone
          - recordCallRepeatWarningToneTimerSeconds

        The enableVoiceMailRecording parameter is only returned if the Voice
        Messaging User service is assigned to the user.  This applies to both
        users and service instances.

        The recordingOption and enableCallRecordingAnnouncement which elements can
        only be modified by a System or a Provisioning administrator when
        restrictCallRecordingProvisioningAccess system param is set to true. Both the element
        values will be ignored when group admin or lower runs this.
        The following elements are only used in AS data mode and not returned in XS data mode:
           mediaStream

    Attributes:

        recording_option (str):

        pause_resume_notification (Optional[str]):

        enable_call_recording_announcement (Optional[bool]):

        enable_record_call_repeat_warning_tone (Optional[bool]):

        record_call_repeat_warning_tone_timer_seconds (Optional[int]):

        enable_voice_mail_recording (Optional[bool]):

        media_stream (Optional[str]):

    """

    recording_option: str = field(metadata={"alias": "recordingOption"})

    pause_resume_notification: Optional[str] = field(
        default=None, metadata={"alias": "pauseResumeNotification"}
    )

    enable_call_recording_announcement: Optional[bool] = field(
        default=None, metadata={"alias": "enableCallRecordingAnnouncement"}
    )

    enable_record_call_repeat_warning_tone: Optional[bool] = field(
        default=None, metadata={"alias": "enableRecordCallRepeatWarningTone"}
    )

    record_call_repeat_warning_tone_timer_seconds: Optional[int] = field(
        default=None, metadata={"alias": "recordCallRepeatWarningToneTimerSeconds"}
    )

    enable_voice_mail_recording: Optional[bool] = field(
        default=None, metadata={"alias": "enableVoiceMailRecording"}
    )

    media_stream: Optional[str] = field(default=None, metadata={"alias": "mediaStream"})


@dataclass(kw_only=True)
class UserCallToNumberGetAvailableListResponse(OCIDataResponse):
    """Response to the UserCallToNumberGetAvailableListRequest.
        Contains a list of the user available Call to Numbers\".

    Attributes:

        call_to_number (Optional[List[CallToNumber]]):

    """

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class UserCallTransferGetResponse14sp4(OCIDataResponse):
    """Response to UserCallTransferGetRequest14sp4.

    Attributes:

        is_recall_active (bool):

        recall_number_of_rings (int):

        use_diversion_inhibitor_for_blind_transfer (bool):

        use_diversion_inhibitor_for_consultative_calls (bool):

        enable_busy_camp_on (bool):

        busy_camp_on_seconds (int):

    """

    is_recall_active: bool = field(metadata={"alias": "isRecallActive"})

    recall_number_of_rings: int = field(metadata={"alias": "recallNumberOfRings"})

    use_diversion_inhibitor_for_blind_transfer: bool = field(
        metadata={"alias": "useDiversionInhibitorForBlindTransfer"}
    )

    use_diversion_inhibitor_for_consultative_calls: bool = field(
        metadata={"alias": "useDiversionInhibitorForConsultativeCalls"}
    )

    enable_busy_camp_on: bool = field(metadata={"alias": "enableBusyCampOn"})

    busy_camp_on_seconds: int = field(metadata={"alias": "busyCampOnSeconds"})


@dataclass(kw_only=True)
class UserCallWaitingGetResponse17sp4(OCIDataResponse):
    """Response to UserCallWaitingGetRequest17sp4.

        The following elements are only used in AS data mode:
          disableCallingLineIdDelivery

    Attributes:

        is_active (bool):

        disable_calling_line_id_delivery (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    disable_calling_line_id_delivery: bool = field(
        metadata={"alias": "disableCallingLineIdDelivery"}
    )


@dataclass(kw_only=True)
class UserCallingLineIDBlockingOverrideGetResponse(OCIDataResponse):
    """Response to UserCallingLineIDBlockingOverrideGetRequest.

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserCallingLineIDDeliveryBlockingGetResponse(OCIDataResponse):
    """Response to UserCallingLineIDDeliveryBlockingGetRequest.

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserCallingNameDeliveryGetResponse(OCIDataResponse):
    """Response to UserCallingNameDeliveryGetRequest.

    Attributes:

        is_active_for_external_calls (bool):

        is_active_for_internal_calls (bool):

    """

    is_active_for_external_calls: bool = field(
        metadata={"alias": "isActiveForExternalCalls"}
    )

    is_active_for_internal_calls: bool = field(
        metadata={"alias": "isActiveForInternalCalls"}
    )


@dataclass(kw_only=True)
class UserCallingNameRetrievalGetResponse(OCIDataResponse):
    """Response to UserCallingNameRetrievalGetRequest.

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserCallingNumberDeliveryGetResponse(OCIDataResponse):
    """Response to UserCallingNumberDeliveryGetRequest.

    Attributes:

        is_active_for_external_calls (bool):

        is_active_for_internal_calls (bool):

    """

    is_active_for_external_calls: bool = field(
        metadata={"alias": "isActiveForExternalCalls"}
    )

    is_active_for_internal_calls: bool = field(
        metadata={"alias": "isActiveForInternalCalls"}
    )


@dataclass(kw_only=True)
class UserCallingPartyCategoryGetResponse16(OCIDataResponse):
    """Response to UserCallingPartyCategoryGetRequest16.

    Attributes:

        category (str):

    """

    category: str = field(metadata={"alias": "category"})


@dataclass(kw_only=True)
class UserChargeNumberGetResponse14sp9(OCIDataResponse):
    """Response to UserChargeNumberGetRequest14sp9.

    Attributes:

        phone_number (Optional[str]):

        use_charge_number_for_enhanced_translations (bool):

        send_charge_number_to_network (bool):

    """

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    use_charge_number_for_enhanced_translations: bool = field(
        metadata={"alias": "useChargeNumberForEnhancedTranslations"}
    )

    send_charge_number_to_network: bool = field(
        metadata={"alias": "sendChargeNumberToNetwork"}
    )


@dataclass(kw_only=True)
class UserClassmarkGetResponse(OCIDataResponse):
    """Response to UserClassmarkGetRequest.
        Contains the Class Mark data

    Attributes:

        classmark (Optional[str]):

    """

    classmark: Optional[str] = field(default=None, metadata={"alias": "classmark"})


@dataclass(kw_only=True)
class UserCollaborateBridgeGetResponse20sp1(OCIDataResponse):
    """The system-level collaborate supportOutdial setting is returned in the response when the system-level collaborate supportOutdial setting is disabled.
        Response to UserCollaborateBridgeGetRequest20sp1.

    Attributes:

        bridge_id (str):

        bridge_name (str):

        phone_number (Optional[str]):

        extension (Optional[str]):

        alternate_number_entry (Optional[List[AlternateNumberEntry21]]):

        support_out_dial (bool):

        max_collaborate_room_participants (int):

    """

    bridge_id: str = field(metadata={"alias": "bridgeId"})

    bridge_name: str = field(metadata={"alias": "bridgeName"})

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})

    alternate_number_entry: Optional[List[AlternateNumberEntry21]] = field(
        default=None, metadata={"alias": "alternateNumberEntry"}
    )

    support_out_dial: bool = field(metadata={"alias": "supportOutDial"})

    max_collaborate_room_participants: int = field(
        metadata={"alias": "maxCollaborateRoomParticipants"}
    )


@dataclass(kw_only=True)
class UserCollaborateInstantRoomAddResponse(OCIDataResponse):
    """Response to UserCollaborateInstantRoomAddRequest.

    Attributes:

        room_id (str):

    """

    room_id: str = field(metadata={"alias": "roomId"})


@dataclass(kw_only=True)
class UserCollaborateInstantRoomGetResponse(OCIDataResponse):
    """Response to UserCollaborateInstantRoomGetRequest.

    Attributes:

        room_name (Optional[str]):

        instant_room_start_time (str):

        instant_room_end_time (str):

    """

    room_name: Optional[str] = field(default=None, metadata={"alias": "roomName"})

    instant_room_start_time: str = field(metadata={"alias": "instantRoomStartTime"})

    instant_room_end_time: str = field(metadata={"alias": "instantRoomEndTime"})


@dataclass(kw_only=True)
class UserCollaborateInstantRoomParametersGetResponse(OCIDataResponse):
    """Response to UserCollaborateInstantRoomParametersGetRequest.

    Attributes:

        attendee_notification (str):

        end_collaborate_room_session_on_owner_exit (bool):

        owner_required (bool):

    """

    attendee_notification: str = field(metadata={"alias": "attendeeNotification"})

    end_collaborate_room_session_on_owner_exit: bool = field(
        metadata={"alias": "endCollaborateRoomSessionOnOwnerExit"}
    )

    owner_required: bool = field(metadata={"alias": "ownerRequired"})


@dataclass(kw_only=True)
class UserCollaborateMyRoomGetResponse(OCIDataResponse):
    """Response to UserCollaborateMyRoomGetRequest.

    Attributes:

        room_id (str):

        room_name (str):

        attendee_notification (str):

        end_collaborate_room_session_on_owner_exit (bool):

        owner_required (bool):

    """

    room_id: str = field(metadata={"alias": "roomId"})

    room_name: str = field(metadata={"alias": "roomName"})

    attendee_notification: str = field(metadata={"alias": "attendeeNotification"})

    end_collaborate_room_session_on_owner_exit: bool = field(
        metadata={"alias": "endCollaborateRoomSessionOnOwnerExit"}
    )

    owner_required: bool = field(metadata={"alias": "ownerRequired"})


@dataclass(kw_only=True)
class UserCollaborateProjectRoomAddResponse(OCIDataResponse):
    """Response to UserCollaborateProjectRoomAddRequest.

    Attributes:

        room_id (str):

    """

    room_id: str = field(metadata={"alias": "roomId"})


@dataclass(kw_only=True)
class UserCollaborateProjectRoomGetResponse(OCIDataResponse):
    """Response to UserCollaborateProjectRoomGetRequest.

    Attributes:

        room_name (str):

        attendee_notification (str):

        end_collaborate_room_session_on_owner_exit (bool):

        owner_required (bool):

        room_schedule (CollaborateRoomSchedule):

    """

    room_name: str = field(metadata={"alias": "roomName"})

    attendee_notification: str = field(metadata={"alias": "attendeeNotification"})

    end_collaborate_room_session_on_owner_exit: bool = field(
        metadata={"alias": "endCollaborateRoomSessionOnOwnerExit"}
    )

    owner_required: bool = field(metadata={"alias": "ownerRequired"})

    room_schedule: CollaborateRoomSchedule = field(metadata={"alias": "roomSchedule"})


@dataclass(kw_only=True)
class UserCollaborateRoomGetResponse(OCIDataResponse):
    """Response to UserCollaborateRoomGetRequest.
          The roomType and roomName parameters are returned for all rooms.
          The following parameters are returned for My room and Project Room:
          attendeeNotification, endCollaborateRoomSessionOnOwnerExit and
          ownerRequired. In addition, the roomSchedule is returned for
          Project Room and the instantRoomStartTime and instantRoomEndTime
          are returned for Instant Room.

    Attributes:

        room_type (str):

        room_name (str):

        attendee_notification (Optional[str]):

        end_collaborate_room_session_on_owner_exit (Optional[bool]):

        owner_required (Optional[bool]):

        instant_room_start_time (Optional[str]):

        instant_room_end_time (Optional[str]):

        room_schedule (Optional[CollaborateRoomSchedule]):

    """

    room_type: str = field(metadata={"alias": "roomType"})

    room_name: str = field(metadata={"alias": "roomName"})

    attendee_notification: Optional[str] = field(
        default=None, metadata={"alias": "attendeeNotification"}
    )

    end_collaborate_room_session_on_owner_exit: Optional[bool] = field(
        default=None, metadata={"alias": "endCollaborateRoomSessionOnOwnerExit"}
    )

    owner_required: Optional[bool] = field(
        default=None, metadata={"alias": "ownerRequired"}
    )

    instant_room_start_time: Optional[str] = field(
        default=None, metadata={"alias": "instantRoomStartTime"}
    )

    instant_room_end_time: Optional[str] = field(
        default=None, metadata={"alias": "instantRoomEndTime"}
    )

    room_schedule: Optional[CollaborateRoomSchedule] = field(
        default=None, metadata={"alias": "roomSchedule"}
    )


@dataclass(kw_only=True)
class UserCollaborateRoomIDRegenerateResponse(OCIDataResponse):
    """Response to UserCollaborateRoomIDRegenerateRequest.

    Attributes:

        room_id (str):

    """

    room_id: str = field(metadata={"alias": "roomId"})


@dataclass(kw_only=True)
class UserCollaborateRoomListGetResponse(OCIDataResponse):
    """Response to UserCollaborateRoomListGetRequest.
        Contains a table with column headings :  \"Room Type\", \"Name\", \"Room Id\",
        in a row for each collaborate room instance.
        Possible values for Room Type column are MyRoom, Project Room and
        Instant Room.

    Attributes:

        room_instance_table (OCITable):

    """

    room_instance_table: OCITable = field(metadata={"alias": "roomInstanceTable"})


@dataclass(kw_only=True)
class UserCommPilotExpressGetResponse(OCIDataResponse):
    """Response to the UserCommPilotExpressGetRequest.

    Attributes:

        profile (Optional[str]):

        available_in_office (CommPilotExpressAvailableInOffice):

        available_out_of_office (CommPilotExpressAvailableOutOfOffice):

        busy (CommPilotExpressBusy):

        unavailable (CommPilotExpressUnavailable):

    """

    profile: Optional[str] = field(default=None, metadata={"alias": "profile"})

    available_in_office: CommPilotExpressAvailableInOffice = field(
        metadata={"alias": "availableInOffice"}
    )

    available_out_of_office: CommPilotExpressAvailableOutOfOffice = field(
        metadata={"alias": "availableOutOfOffice"}
    )

    busy: CommPilotExpressBusy = field(metadata={"alias": "busy"})

    unavailable: CommPilotExpressUnavailable = field(metadata={"alias": "unavailable"})


@dataclass(kw_only=True)
class UserCommunicationBarringAuthorizationCodeGetListResponse(OCIDataResponse):
    """Response to UserCommunicationBarringAuthorizationCodeGetListRequest.
        Contains a list of Communication Barring Authorization Codes
        assigned to the user.

    Attributes:

        code (Optional[List[CommunicationBarringAuthorizationCodeEntry]]):

    """

    code: Optional[List[CommunicationBarringAuthorizationCodeEntry]] = field(
        default=None, metadata={"alias": "code"}
    )


@dataclass(kw_only=True)
class UserCommunicationBarringGetResponse(OCIDataResponse):
    """Response to UserCommunicationBarringGetRequest.
        This command only applies to users in an Enterprise.

    Attributes:

        use_group_setting (bool):

        profile_name (Optional[str]):

    """

    use_group_setting: bool = field(metadata={"alias": "useGroupSetting"})

    profile_name: Optional[str] = field(default=None, metadata={"alias": "profileName"})


@dataclass(kw_only=True)
class UserCommunicationBarringUserControlGetResponse(OCIDataResponse):
    """Response to the UserCommunicationBarringUserControlGetRequest.
        Identifies the profiles available to the user and which one if any
        is active as well as the lockout status.
        Contains a table with column headings: \"Name\", \"Code\", \"Activated\" and \"Primary\".

    Attributes:

        lockout_status (bool):

        profile_table (OCITable):

    """

    lockout_status: bool = field(metadata={"alias": "lockoutStatus"})

    profile_table: OCITable = field(metadata={"alias": "profileTable"})


@dataclass(kw_only=True)
class UserConnectedLineIdentificationRestrictionGetResponse(OCIDataResponse):
    """Response to UserConnectedLineIdentificationRestrictionGetRequest.

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserCustomRingbackUserGetCriteriaListResponse(OCIDataResponse):
    """Response to the UserCustomRingbackUserGetCriteriaListRequest.
        The criteria table's column headings are: \"Is Active\", \"Criteria Name\",
        \"Time Schedule\", \"Calls From\", \"Blacklisted\", \"Holiday Schedule\", \"Calls To Type\", \"Calls To Number\" and \"Calls To Extension\".
        The following columns are only returned in AS data mode:
          \"Calls To Type\", \"Calls To Number\" and \"Calls To Extension\"

        The possible values for the \"Calls To Type\" column are the following or a combination of them separated by comma:
          - Primary
          - Alternate X (where x is a number between 1 and 10)
          - Mobility
        The possible values for the \"Calls To Number\" column are the following or a combination of them separated by comma:
          - The value of the phone number for the corresponding Calls To Type, when the number is available. i.e. Alternate 1 may have extension, but no number.
          - When no number is available a blank space is provided instead.
        The possible values for the \"Calls To Extension\" column are the following or a combination of them separated by comma:
          - The value of the extension for the corresponding Calls To Type, when the extension is available. i.e. Primary may have number, but no extension.
          - For Mobility Calls To Type, this is always blank.
          - When no extension is available a blank space is provided instead.

    Attributes:

        criteria_table (OCITable):

    """

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class UserCustomRingbackUserGetCriteriaResponse21(OCIDataResponse):
    """Response to the UserCustomRingbackUserGetCriteriaRequest21.

    Attributes:

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria (CriteriaFromDn):

        call_to_number (Optional[List[CallToNumber]]):

        audio_selection (str):

        audio_file (Optional[AnnouncementFileLevelKey]):

        audio_file_url (Optional[str]):

        video_selection (str):

        video_file (Optional[AnnouncementFileLevelKey]):

        video_file_url (Optional[str]):

        call_waiting_audio_selection (Optional[str]):

        call_waiting_audio_file (Optional[AnnouncementFileLevelKey]):

        call_waiting_audio_file_url (Optional[str]):

        call_waiting_video_selection (Optional[str]):

        call_waiting_video_file (Optional[AnnouncementFileLevelKey]):

        call_waiting_video_file_url (Optional[str]):

    """

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria: CriteriaFromDn = field(metadata={"alias": "fromDnCriteria"})

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )

    audio_selection: str = field(metadata={"alias": "audioSelection"})

    audio_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    audio_file_url: Optional[str] = field(
        default=None, metadata={"alias": "audioFileUrl"}
    )

    video_selection: str = field(metadata={"alias": "videoSelection"})

    video_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    video_file_url: Optional[str] = field(
        default=None, metadata={"alias": "videoFileUrl"}
    )

    call_waiting_audio_selection: Optional[str] = field(
        default=None, metadata={"alias": "callWaitingAudioSelection"}
    )

    call_waiting_audio_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "callWaitingAudioFile"}
    )

    call_waiting_audio_file_url: Optional[str] = field(
        default=None, metadata={"alias": "callWaitingAudioFileUrl"}
    )

    call_waiting_video_selection: Optional[str] = field(
        default=None, metadata={"alias": "callWaitingVideoSelection"}
    )

    call_waiting_video_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "callWaitingVideoFile"}
    )

    call_waiting_video_file_url: Optional[str] = field(
        default=None, metadata={"alias": "callWaitingVideoFileUrl"}
    )


@dataclass(kw_only=True)
class UserDeviceActivationPolicyInEffectGetResponse(OCIDataResponse):
    """Response to UserDeviceActivationPolicyInEffectGetRequest.

    Attributes:

        allow_activation_code_request_by_user (bool):

        send_activation_code_in_email (bool):

    """

    allow_activation_code_request_by_user: bool = field(
        metadata={"alias": "allowActivationCodeRequestByUser"}
    )

    send_activation_code_in_email: bool = field(
        metadata={"alias": "sendActivationCodeInEmail"}
    )


@dataclass(kw_only=True)
class UserDevicePoliciesGetResponse21(OCIDataResponse):
    """Response to UserDevicePoliciesGetRequest21. enableDeviceFeatureSynchronization and
          enableCallDecline are ignored by the application server in Multiple User Shared mode.
        The following element is only used in AS data mode:
          lineMode, value \"Single User Private and Shared\" is returned in XS data mode
        The following elements are only used in AS data mode:
          enableDeviceFeatureSynchronization, value \"false\" is returned in XS data mode
          enableDnd, value \"false\" is returned in XS data mode
          enableCallForwardingAlways, value \"false\" is returned in XS data mode
          enableCallForwardingBusy, value \"false\" is returned in XS data mode
          enableCallForwardingNoAnswer, value \"false\" is returned in XS data mode
          enableAcd, value \"false\" is returned in XS data mode
          enableExecutive, value \"false\" is returned in XS data mode
          enableExecutiveAssistant, value \"false\" is returned in XS data mode
          enableSecurityClassification, value \"false\" is returned in XS data mode
          enableCallRecording, value \"false\" is returned in XS data mode

    Attributes:

        line_mode (str):

        enable_device_feature_synchronization (bool):

        enable_dnd (bool):

        enable_call_forwarding_always (bool):

        enable_call_forwarding_busy (bool):

        enable_call_forwarding_no_answer (bool):

        enable_acd (bool):

        enable_executive (bool):

        enable_executive_assistant (bool):

        enable_security_classification (bool):

        enable_call_recording (bool):

        enable_call_decline (bool):

    """

    line_mode: str = field(metadata={"alias": "lineMode"})

    enable_device_feature_synchronization: bool = field(
        metadata={"alias": "enableDeviceFeatureSynchronization"}
    )

    enable_dnd: bool = field(metadata={"alias": "enableDnd"})

    enable_call_forwarding_always: bool = field(
        metadata={"alias": "enableCallForwardingAlways"}
    )

    enable_call_forwarding_busy: bool = field(
        metadata={"alias": "enableCallForwardingBusy"}
    )

    enable_call_forwarding_no_answer: bool = field(
        metadata={"alias": "enableCallForwardingNoAnswer"}
    )

    enable_acd: bool = field(metadata={"alias": "enableAcd"})

    enable_executive: bool = field(metadata={"alias": "enableExecutive"})

    enable_executive_assistant: bool = field(
        metadata={"alias": "enableExecutiveAssistant"}
    )

    enable_security_classification: bool = field(
        metadata={"alias": "enableSecurityClassification"}
    )

    enable_call_recording: bool = field(metadata={"alias": "enableCallRecording"})

    enable_call_decline: bool = field(metadata={"alias": "enableCallDecline"})


@dataclass(kw_only=True)
class UserDirectRouteGetResponse(OCIDataResponse):
    """Response to UserDirectRouteGetRequest.
        Contains the direct route setting and the list of DTGs/Trunk Identities assigned to a user.

    Attributes:

        outgoing_dtg_policy (str):

        outgoing_trunk_identity_policy (str):

        direct_route_identity_list (Optional[DirectRouteIdentifiers]):

    """

    outgoing_dtg_policy: str = field(metadata={"alias": "outgoingDTGPolicy"})

    outgoing_trunk_identity_policy: str = field(
        metadata={"alias": "outgoingTrunkIdentityPolicy"}
    )

    direct_route_identity_list: Optional[DirectRouteIdentifiers] = field(
        default=None, metadata={"alias": "directRouteIdentityList"}
    )


@dataclass(kw_only=True)
class UserDirectedCallPickupWithBargeInGetResponse14sp7(OCIDataResponse):
    """Response to UserDirectedCallPickupWithBargeInGetRequest14sp7.

    Attributes:

        enable_barge_in_warning_tone (bool):

        enable_automatic_target_selection (bool):

    """

    enable_barge_in_warning_tone: bool = field(
        metadata={"alias": "enableBargeInWarningTone"}
    )

    enable_automatic_target_selection: bool = field(
        metadata={"alias": "enableAutomaticTargetSelection"}
    )


@dataclass(kw_only=True)
class UserDnGetActivationListResponse(OCIDataResponse):
    """Response to UserDnGetActivationListRequest.
        The response contains a table with columns: \"Phone Number\", and \"Activated\".
        The \"Phone Number\" column contains a single DN.
        The \"Activated\" column indicates if the phone number is activated or not.

    Attributes:

        dn_table (OCITable):

    """

    dn_table: OCITable = field(metadata={"alias": "dnTable"})


@dataclass(kw_only=True)
class UserDoNotDisturbGetResponse(OCIDataResponse):
    """Response to UserDoNotDisturbGetRequest.

    Attributes:

        is_active (bool):

        ring_splash (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    ring_splash: bool = field(metadata={"alias": "ringSplash"})


@dataclass(kw_only=True)
class UserEnhancedCallLogsGetListResponse23(OCIDataResponse):
    """Response to UserEnhancedCallLogsGetListRequest23.
        Total numbers of rows is:
        - the total number of retrievable logs of the call log type that was specified in the UserEnhancedCallLogsGetListRequest22,
          if a call log type was specified in the request.
        - the total number of retrievable logs, if no call log type was specified in the request.
        A list of MixedCallLogsEntry will be returned if the call logs are stored on CDS
        A list of ExtendedMixedCallLogsEntry22 will be returned if the call logs are stored on DBS or Couchbase
        The logs are sorted by date/time of the call.

    Attributes:

        total_number_of_rows (int):

        legacy_entry (Optional[object]):

        extended_entry (Optional[object]):

    """

    total_number_of_rows: int = field(metadata={"alias": "totalNumberOfRows"})

    legacy_entry: Optional[object] = field(
        default=None, metadata={"alias": "legacyEntry"}
    )

    extended_entry: Optional[object] = field(
        default=None, metadata={"alias": "extendedEntry"}
    )


@dataclass(kw_only=True)
class UserEnterpriseCommonPhoneListGetPagedSortedListResponse(OCIDataResponse):
    """Response to the UserEnterpriseCommonPhoneListGetPagedSortedListRequest. The response
                                contains the enterprise's common phone list. The response contains a
                                table with column headings: \"Name\" and \"Phone Number\".

    Attributes:

        total_number_of_rows (int):

        enterprise_common_phone_list_table (OCITable):

    """

    total_number_of_rows: int = field(metadata={"alias": "totalNumberOfRows"})

    enterprise_common_phone_list_table: OCITable = field(
        metadata={"alias": "enterpriseCommonPhoneListTable"}
    )


@dataclass(kw_only=True)
class UserExecutiveAssistantGetResponse(OCIDataResponse):
    """Response to the UserExecutiveAssistantGetRequest.
        Contains the executive assistant setting and a table of executives this assistant has been assigned to.
        The criteria table's column headings are: \"User Id\", \"Last Name\", \"First Name\", \", \"Hiragana Last Name\",
        \"Hiragana First Name\", \"Phone Number\", \"Extension\", \"Department\", \"Email Address\",
        \"Assistant Opt-in Status\" and \"Executive Allow Opt-in\".
        The possible values for \"Assistant Opt-in Status\" and \"Executive Allow Opt-in\" columns are \"true\" and \"false\".

    Attributes:

        enable_divert (bool):

        divert_to_phone_number (Optional[str]):

        executive_table (OCITable):

    """

    enable_divert: bool = field(metadata={"alias": "enableDivert"})

    divert_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "divertToPhoneNumber"}
    )

    executive_table: OCITable = field(metadata={"alias": "executiveTable"})


@dataclass(kw_only=True)
class UserExecutiveGetAssistantResponse(OCIDataResponse):
    """Response to the UserExecutiveGetAssistantsRequest.
        Contains the assistant setting and a table of assigned assistants.
        The table has column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\",
        \"Hiragana First Name\", \"Phone Number\", \"Extension\", \"Department\", \"Email Address\", \"Opt-in\",
        \"User External Id\" and \"User Place Type\".
        The possible values for \"Opt-in\" column are \"true\" and \"false\".
        The possible values for \"User Place Type\" are: User, Place.

    Attributes:

        allow_opt_in_out (bool):

        assistant_user_table (OCITable):

    """

    allow_opt_in_out: bool = field(metadata={"alias": "allowOptInOut"})

    assistant_user_table: OCITable = field(metadata={"alias": "assistantUserTable"})


@dataclass(kw_only=True)
class UserExecutiveGetAvailableAssistantListResponse(OCIDataResponse):
    """Response to the UserExecutiveGetAvailableAssistantListResponse.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\",
        \"Hiragana First Name\", \"Phone Number\", \"Extension\", \"Department\", \"Email Address\",
        \"User External Id\" and \"User Place Type\".
        The possible values for \"User Place Type\" are: User, Place.

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class UserExecutiveGetFilteringResponse(OCIDataResponse):
    """Response to the UserExecutiveGetFilteringRequest.
        Contains the filtering setting and a table of filtering criteria.
        The criteria table's column headings are: \"Is Active\", \"Criteria Name\", \"Time Schedule\", \"Calls From\",
        \"Filter\", \"Holiday Schedule\", \"Calls To Type\", \"Calls To Number\" and \"Calls To Extension\".
        The \"Filter\" column can contain \"true\" or \"false\".
        The possible values for the \"Calls To Type\" column are the following or a combination of them separated by comma:
          - Primary
          - Alternate X (where x is a number between 1 and 10)
          - Mobility
        The possible values for the \"Calls To Number\" column are the following or a combination of them separated by comma:
          - The value of the phone number for the corresponding Calls To Type, when the number is available. i.e. Alternate 1 may have extension, but no number.
          - When no number is available a blank space is provided instead.
        The possible values for the \"Calls To Extension\" column are the following or a combination of them separated by comma:
          - The value of the extension for the corresponding Calls To Type, when the extension is available. i.e. Primary may have number, but no extension.
          - For Mobility Calls To Type, this is always blank.
          - When no extension is available a blank space is provided instead.

    Attributes:

        enable_filtering (bool):

        filtering_mode (str):

        simple_filter_type (str):

        criteria_table (OCITable):

    """

    enable_filtering: bool = field(metadata={"alias": "enableFiltering"})

    filtering_mode: str = field(metadata={"alias": "filteringMode"})

    simple_filter_type: str = field(metadata={"alias": "simpleFilterType"})

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class UserExecutiveGetFilteringSelectiveCriteriaResponse21(OCIDataResponse):
    """Response to the UserExecutiveGetFilteringSelectiveCriteriaRequest21.

    Attributes:

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        filter (bool):

        from_dn_criteria (ExecutiveCallFilteringCriteriaFromDn):

        call_to_number (Optional[List[CallToNumber]]):

    """

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    filter: bool = field(metadata={"alias": "filter"})

    from_dn_criteria: ExecutiveCallFilteringCriteriaFromDn = field(
        metadata={"alias": "fromDnCriteria"}
    )

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class UserExecutiveGetScreeningAlertingResponse(OCIDataResponse):
    """Response to the UserExecutiveGetScreeningAlertingRequest.
        Contains the screening and alerting settings for an executive.

    Attributes:

        enable_screening (bool):

        screening_alert_type (str):

        alert_broad_works_mobility_location (bool):

        alert_broad_works_anywhere_locations (bool):

        alert_shared_call_appearance_locations (bool):

        alerting_mode (str):

        alerting_calling_line_id_name_mode (str):

        alerting_custom_calling_line_id_name (Optional[str]):

        unicode_alerting_custom_calling_line_id_name (Optional[str]):

        alerting_calling_line_id_phone_number_mode (str):

        alerting_custom_calling_line_id_phone_number (Optional[str]):

        call_push_recall_number_of_rings (int):

        next_assistant_number_of_rings (int):

        enable_rollover (bool):

        rollover_wait_time_seconds (Optional[int]):

        rollover_action (str):

        rollover_forward_to_phone_number (Optional[str]):

    """

    enable_screening: bool = field(metadata={"alias": "enableScreening"})

    screening_alert_type: str = field(metadata={"alias": "screeningAlertType"})

    alert_broad_works_mobility_location: bool = field(
        metadata={"alias": "alertBroadWorksMobilityLocation"}
    )

    alert_broad_works_anywhere_locations: bool = field(
        metadata={"alias": "alertBroadWorksAnywhereLocations"}
    )

    alert_shared_call_appearance_locations: bool = field(
        metadata={"alias": "alertSharedCallAppearanceLocations"}
    )

    alerting_mode: str = field(metadata={"alias": "alertingMode"})

    alerting_calling_line_id_name_mode: str = field(
        metadata={"alias": "alertingCallingLineIdNameMode"}
    )

    alerting_custom_calling_line_id_name: Optional[str] = field(
        default=None, metadata={"alias": "alertingCustomCallingLineIdName"}
    )

    unicode_alerting_custom_calling_line_id_name: Optional[str] = field(
        default=None, metadata={"alias": "unicodeAlertingCustomCallingLineIdName"}
    )

    alerting_calling_line_id_phone_number_mode: str = field(
        metadata={"alias": "alertingCallingLineIdPhoneNumberMode"}
    )

    alerting_custom_calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "alertingCustomCallingLineIdPhoneNumber"}
    )

    call_push_recall_number_of_rings: int = field(
        metadata={"alias": "callPushRecallNumberOfRings"}
    )

    next_assistant_number_of_rings: int = field(
        metadata={"alias": "nextAssistantNumberOfRings"}
    )

    enable_rollover: bool = field(metadata={"alias": "enableRollover"})

    rollover_wait_time_seconds: Optional[int] = field(
        default=None, metadata={"alias": "rolloverWaitTimeSeconds"}
    )

    rollover_action: str = field(metadata={"alias": "rolloverAction"})

    rollover_forward_to_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "rolloverForwardToPhoneNumber"}
    )


@dataclass(kw_only=True)
class UserExternalCallingLineIDDeliveryGetResponse(OCIDataResponse):
    """Response to UserExternalCallingLineIDDeliveryGetRequest.

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserExternalCustomRingbackGetResponse(OCIDataResponse):
    """Response to UserExternalCustomRingbackGetRequest.

    Attributes:

        is_active (bool):

        use_setting_level (str):

        sip_request_uri (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    use_setting_level: str = field(metadata={"alias": "useSettingLevel"})

    sip_request_uri: Optional[str] = field(
        default=None, metadata={"alias": "sipRequestURI"}
    )


@dataclass(kw_only=True)
class UserFaxMessagingGetResponse17sp1(OCIDataResponse):
    """Response to UserFaxMessagingGetRequest17sp1.

    Attributes:

        is_active (bool):

        phone_number (Optional[str]):

        extension (Optional[str]):

        alias (Optional[List[str]]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})

    alias: Optional[List[str]] = field(default=None, metadata={"alias": "alias"})


@dataclass(kw_only=True)
class UserFeatureAccessCodeGetListResponse21(OCIDataResponse):
    """Response to the UserFeatureAccessCodeGetListRequest21.

        In release 20 the \"Call Recording\" FAC name is changed to
        \"Call Recording Start\".

    Attributes:

        feature_access_code (Optional[List[FeatureAccessCodeReadEntry]]):

    """

    feature_access_code: Optional[List[FeatureAccessCodeReadEntry]] = field(
        default=None, metadata={"alias": "featureAccessCode"}
    )


@dataclass(kw_only=True)
class UserFlexibleSeatingGuestGetAvailableHostListResponse(OCIDataResponse):
    """Response to the UserFlexibleSeatingGuestGetAvailableHostListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\", \"Association Limit Hours\", \"Enable Association Limit\",

    Attributes:

        host_user_table (OCITable):

    """

    host_user_table: OCITable = field(metadata={"alias": "hostUserTable"})


@dataclass(kw_only=True)
class UserFlexibleSeatingGuestGetResponse22(OCIDataResponse):
    """Response to UserFlexibleSeatingGuestGetRequest22.

    Attributes:

        is_active (bool):

        enable_association_limit (bool):

        association_limit_hours (int):

        unlock_phone_pin_code (Optional[str]):

        access_device_endpoint (Optional[AccessDeviceMultipleContactEndpointRead22]):

        host_user_id (Optional[str]):

        host_last_name (Optional[str]):

        host_first_name (Optional[str]):

        host_association_date_time (Optional[str]):

        host_enforces_association_limit (Optional[bool]):

        host_association_limit_hours (Optional[int]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    enable_association_limit: bool = field(metadata={"alias": "enableAssociationLimit"})

    association_limit_hours: int = field(metadata={"alias": "associationLimitHours"})

    unlock_phone_pin_code: Optional[str] = field(
        default=None, metadata={"alias": "unlockPhonePINCode"}
    )

    access_device_endpoint: Optional[AccessDeviceMultipleContactEndpointRead22] = field(
        default=None, metadata={"alias": "accessDeviceEndpoint"}
    )

    host_user_id: Optional[str] = field(default=None, metadata={"alias": "hostUserId"})

    host_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hostLastName"}
    )

    host_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hostFirstName"}
    )

    host_association_date_time: Optional[str] = field(
        default=None, metadata={"alias": "hostAssociationDateTime"}
    )

    host_enforces_association_limit: Optional[bool] = field(
        default=None, metadata={"alias": "hostEnforcesAssociationLimit"}
    )

    host_association_limit_hours: Optional[int] = field(
        default=None, metadata={"alias": "hostAssociationLimitHours"}
    )


@dataclass(kw_only=True)
class UserGetListInGroupPagedSortedListResponse(OCIDataResponse):
    """Response to UserGetListInGroupPagedSortedListRequest.
        Contains a table with column headings : \"User Id\",
        \"Last Name\", \"First Name\", \"Department\", \"Department Type\",
        \"Parent Department\",\"Parent Department Type\", \"Phone Number\",
        \"Phone Number Activated\", \"Email Address\",  \"Hiragana Last Name\",
        \"Hiragana First Name\", \"In Trunk Group\", \"Extension\", \"Country Code\",
        \"National Prefix\", \"User External Id\" in a row for each user.

        The \"Department Type\" and \"Parent Department Type\" columns
        will contain the values \"Enterprise\" or \"Group\".

        The following columns are only populated in AS data mode:
          \"Country Code\", \"National Prefix\", \"User External Id\"

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class UserGetListInGroupResponse(OCIDataResponse):
    """Response to UserGetListInGroupRequest.
        Contains a table with column headings : \"User Id\",
        \"Last Name\", \"First Name\", \"Department\", \"Phone Number\", \"Phone Number Activated\", \"Email Address\",  \"Hiragana Last Name\", \"Hiragana First Name\", \"In Trunk Group\", \"Extension\", \"Country Code\", \"National Prefix\"
        in a row for each user.

        The following columns are only returned in AS data mode:
          \"Country Code\", \"National Prefix

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class UserGetListInServiceProviderResponse(OCIDataResponse):
    """Response to UserGetListInServiceProviderRequest.
        Contains a table with column headings : \"User Id\", \"Group Id\",
        \"Last Name\", \"First Name\", \"Department\", \"Phone Number\", \"Phone Number Activated\", \"Email Address\", \"Hiragana Last Name\", \"Hiragana First Name\", \"In Trunk Group\", \"Extension\", \"User External Id\"
        in a row for each user.
        The following columns are populated in AS data mode only:
          \"User External Id\"

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class UserGetListInSystemResponse(OCIDataResponse):
    """Response to UserGetListInSystemRequest.
        Contains a table with column headings : \"User Id\", \"Group Id\", \"Service Provider Id\", \"Last Name\", \"First Name\",
        \"Department\", \"Phone Number\", \"Phone Number Activated\", \"Email Address\",  \"Hiragana Last Name\", \"Hiragana First Name\", \"In Trunk Group\", \"Extension\", \"Reseller Id\", \"User External Id\"
        in a row for each user.

        The following columns are only returned in AS data mode:
          \"Reseller Id\"
          \"User External Id\"

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class UserGetLoginInfoResponseRI(OCIDataResponse):
    """Response to UserGetLoginInfoRequestRI

        The following data elements are only used in AS data mode:
          resellerId
          lockoutPeriodExpiry

        If a phoneNumber is returned, it will be the primary DN of the user
        The parameter
         tokenRevocationTime is represented in the number of milliseconds
        since January 1, 1970, 00:00:00 GMT, and it is set to the more current time between
        the system level token revocation time and user level token revocation time.

        The parameter lockoutPeriodExpiry represents the time remaining (in minutes) to re-enable the locked user.

    Attributes:

        login_type (str):

        locale (str):

        encoding (str):

        group_id (Optional[str]):

        service_provider_id (Optional[str]):

        is_enterprise (bool):

        password_expires_days (Optional[int]):

        last_name (Optional[str]):

        first_name (Optional[str]):

        user_id (str):

        phone_number (Optional[str]):

        reseller_id (Optional[str]):

        token_revocation_time (Optional[int]):

        lockout_period_expiry (Optional[int]):

    """

    login_type: str = field(metadata={"alias": "loginType"})

    locale: str = field(metadata={"alias": "locale"})

    encoding: str = field(metadata={"alias": "encoding"})

    group_id: Optional[str] = field(default=None, metadata={"alias": "groupId"})

    service_provider_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderId"}
    )

    is_enterprise: bool = field(metadata={"alias": "isEnterprise"})

    password_expires_days: Optional[int] = field(
        default=None, metadata={"alias": "passwordExpiresDays"}
    )

    last_name: Optional[str] = field(default=None, metadata={"alias": "lastName"})

    first_name: Optional[str] = field(default=None, metadata={"alias": "firstName"})

    user_id: str = field(metadata={"alias": "userId"})

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    token_revocation_time: Optional[int] = field(
        default=None, metadata={"alias": "tokenRevocationTime"}
    )

    lockout_period_expiry: Optional[int] = field(
        default=None, metadata={"alias": "lockoutPeriodExpiry"}
    )


@dataclass(kw_only=True)
class UserGetRegistrationListResponse(OCIDataResponse):
    """Response to UserGetRegistrationListRequest.

        The registrationTable table column headings are:
          \"Device Level\", \"Device Name\", \"Order\", \"URI\", \"Expiration\", \"Line/Port\", \"Endpoint Type\", \"Public Net Address\", \"Public Port\", \"Private Net Address\", \"Private Port\", \"User Agent\", \"Lockout Started\", \"Lockout Expires\", \"Lockout Count\", \"Access Info\",
          \"Private Identity\", \"SIP Instance ID\", \"Supports Only CS Media\", \"Feature Parameters\", \"Supports Voice Over PS\", \"Path Header\", \"Registration Active\", \"P-Access-Network-Info\"
        The following columns are only used in AS data mode:
          \"Order\", \"Public Net Address\", \"Public Port\", \"Private Net Address\", \"Private Port\", \"Lockout Started\", \"Lockout Expires\", \"Lockout Count\", \"Path Header\", \"P-Access-Network-Info\".
        The following columns are only used in XS data mode:
          \"Private Identity\", \"SIP Instance ID\", \"Supports Only CS Media\", \"Feature Parameters\", \"Supports Voice Over PS\".
        The following columns are only used in AS data mode:
          \"Registration Active\".
        The \"Device Level\" column contains one of the AccessDeviceLevel enumerated constants.
        The expiration column will be empty when the registration is static. In XS data mode, its value will be 0 when the registration is dynamic regardless of the registration's actual expiration date.
        The Endpoint Type column contains one of the enumerated EndpointType values.
        The Endpoint Type is empty when the registration is against a TELURI.
        The table is sorted by: telURI (after SIPURI), Line/Port, static (after dynamic), order.
        Lockout times are shown in GMT offset. When a permanent lockout is shown, the \"Lockout Expires\" column is empty and the \"Lockout Count\" column contains the word Permanent.

    Attributes:

        registration_table (OCITable):

    """

    registration_table: OCITable = field(metadata={"alias": "registrationTable"})


@dataclass(kw_only=True)
class UserGetResponse23V2(OCIDataResponse):
    """Response to UserGetRequest23V2.
        It is possible that the TrunkAddressingRead element is present with nothing populated in it which means the user is a trunk user.

        The following data elements are only used in AS data mode and not returned in XS data mode:
          contact[2]-contact[5]
          userId
          nameDialingName
          alternateUserId
          resellerId
          serviceProviderExternalId
          groupExternalId
          userExternalId
          userPersonId
          isPlace
          locationDialingCode

        The following data elements are only used in XS data mode:
          alternateTrunkIdentityDomain

        The following data elements are only used in AS data mode:
          userId
          resellerId

        The following data elements are only used in XS data mode:
          alternateTrunkIdentityDomain
          allowVideo, value \"true\" is returned in AS data mode.

        The userId returned in this response is the user's primary userId and may not be the userId passed in the request.

        The country code (countryCode) included is the user's phone number country code when the user has a phone number assigned, or the
        user's Group associated country code when the user does not have a phone number assigned, or the system default country code when the
        user's Group does not have an associated country code.

        The nationalPrefix in this response is the one associated to the included countryCode.

        The callingLineIdPhoneNumber is no longer being formatted for display purpose. The value is returned exactly the same as being stored.

    Attributes:

        service_provider_id (str):

        group_id (str):

        user_id (str):

        last_name (str):

        first_name (str):

        calling_line_id_last_name (str):

        calling_line_id_first_name (str):

        name_dialing_name (Optional[NameDialingName]):

        hiragana_last_name (Optional[str]):

        hiragana_first_name (Optional[str]):

        phone_number (Optional[str]):

        extension (Optional[str]):

        calling_line_id_phone_number (Optional[str]):

        department (Optional[DepartmentKey]):

        department_full_path (Optional[str]):

        language (str):

        time_zone (str):

        time_zone_display_name (str):

        default_alias (str):

        alias (Optional[List[str]]):

        access_device_endpoint (Optional[AccessDeviceMultipleIdentityAndContactEndpointRead22V2]):

        trunk_addressing (Optional[TrunkAddressingMultipleContactRead22]):

        title (Optional[str]):

        pager_phone_number (Optional[str]):

        mobile_phone_number (Optional[str]):

        email_address (Optional[str]):

        yahoo_id (Optional[str]):

        address_location (Optional[str]):

        address (Optional[StreetAddress]):

        country_code (str):

        national_prefix (Optional[str]):

        network_class_of_service (Optional[str]):

        office_zone_name (Optional[str]):

        primary_zone_name (Optional[str]):

        imp_id (Optional[str]):

        alternate_user_id (Optional[List[AlternateUserIdEntry]]):

        allow_video (bool):

        reseller_id (Optional[str]):

        service_provider_external_id (Optional[str]):

        group_external_id (Optional[str]):

        user_external_id (Optional[str]):

        user_person_id (Optional[str]):

        is_place (Optional[bool]):

        location_dialing_code (Optional[str]):

    """

    service_provider_id: str = field(metadata={"alias": "serviceProviderId"})

    group_id: str = field(metadata={"alias": "groupId"})

    user_id: str = field(metadata={"alias": "userId"})

    last_name: str = field(metadata={"alias": "lastName"})

    first_name: str = field(metadata={"alias": "firstName"})

    calling_line_id_last_name: str = field(metadata={"alias": "callingLineIdLastName"})

    calling_line_id_first_name: str = field(
        metadata={"alias": "callingLineIdFirstName"}
    )

    name_dialing_name: Optional[NameDialingName] = field(
        default=None, metadata={"alias": "nameDialingName"}
    )

    hiragana_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaLastName"}
    )

    hiragana_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hiraganaFirstName"}
    )

    phone_number: Optional[str] = field(default=None, metadata={"alias": "phoneNumber"})

    extension: Optional[str] = field(default=None, metadata={"alias": "extension"})

    calling_line_id_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "callingLineIdPhoneNumber"}
    )

    department: Optional[DepartmentKey] = field(
        default=None, metadata={"alias": "department"}
    )

    department_full_path: Optional[str] = field(
        default=None, metadata={"alias": "departmentFullPath"}
    )

    language: str = field(metadata={"alias": "language"})

    time_zone: str = field(metadata={"alias": "timeZone"})

    time_zone_display_name: str = field(metadata={"alias": "timeZoneDisplayName"})

    default_alias: str = field(metadata={"alias": "defaultAlias"})

    alias: Optional[List[str]] = field(default=None, metadata={"alias": "alias"})

    access_device_endpoint: Optional[
        AccessDeviceMultipleIdentityAndContactEndpointRead22V2
    ] = field(default=None, metadata={"alias": "accessDeviceEndpoint"})

    trunk_addressing: Optional[TrunkAddressingMultipleContactRead22] = field(
        default=None, metadata={"alias": "trunkAddressing"}
    )

    title: Optional[str] = field(default=None, metadata={"alias": "title"})

    pager_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "pagerPhoneNumber"}
    )

    mobile_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "mobilePhoneNumber"}
    )

    email_address: Optional[str] = field(
        default=None, metadata={"alias": "emailAddress"}
    )

    yahoo_id: Optional[str] = field(default=None, metadata={"alias": "yahooId"})

    address_location: Optional[str] = field(
        default=None, metadata={"alias": "addressLocation"}
    )

    address: Optional[StreetAddress] = field(
        default=None, metadata={"alias": "address"}
    )

    country_code: str = field(metadata={"alias": "countryCode"})

    national_prefix: Optional[str] = field(
        default=None, metadata={"alias": "nationalPrefix"}
    )

    network_class_of_service: Optional[str] = field(
        default=None, metadata={"alias": "networkClassOfService"}
    )

    office_zone_name: Optional[str] = field(
        default=None, metadata={"alias": "officeZoneName"}
    )

    primary_zone_name: Optional[str] = field(
        default=None, metadata={"alias": "primaryZoneName"}
    )

    imp_id: Optional[str] = field(default=None, metadata={"alias": "impId"})

    alternate_user_id: Optional[List[AlternateUserIdEntry]] = field(
        default=None, metadata={"alias": "alternateUserId"}
    )

    allow_video: bool = field(metadata={"alias": "allowVideo"})

    reseller_id: Optional[str] = field(default=None, metadata={"alias": "resellerId"})

    service_provider_external_id: Optional[str] = field(
        default=None, metadata={"alias": "serviceProviderExternalId"}
    )

    group_external_id: Optional[str] = field(
        default=None, metadata={"alias": "groupExternalId"}
    )

    user_external_id: Optional[str] = field(
        default=None, metadata={"alias": "userExternalId"}
    )

    user_person_id: Optional[str] = field(
        default=None, metadata={"alias": "userPersonId"}
    )

    is_place: Optional[bool] = field(default=None, metadata={"alias": "isPlace"})

    location_dialing_code: Optional[str] = field(
        default=None, metadata={"alias": "locationDialingCode"}
    )


@dataclass(kw_only=True)
class UserGetServiceInstanceListInServiceProviderResponse(OCIDataResponse):
    """Response to UserGetServiceInstanceListInServiceProviderRequest.
        Contains a table with column headings :  \"User Id\", \"Group Id\", \"Service Type\",
        \"Name\", \"Phone Number\", \"Extension\", \"Department\" in a row for each Service Instance.  Possible values for Service Type column are ServiceType enums.

    Attributes:

        service_instance_table (OCITable):

    """

    service_instance_table: OCITable = field(metadata={"alias": "serviceInstanceTable"})


@dataclass(kw_only=True)
class UserGetServiceInstanceListInSystemResponse(OCIDataResponse):
    """Response to UserGetServiceInstanceListInSystemRequest.
        Contains a table with column headings : \"User Id\", \"Group Id\", \"Service Provider Id\", \"Service Type\", \"Name\", \"Phone Number\",
        \"Extension\", \"Reseller Id\" in a row for each Service Instance. Possible values for Service Type column are ServiceType enums.
        The following columns are only returned in AS data mode:
          \"Reseller Id\"

    Attributes:

        service_instance_table (OCITable):

    """

    service_instance_table: OCITable = field(metadata={"alias": "serviceInstanceTable"})


@dataclass(kw_only=True)
class UserGroupCommonPhoneListGetPagedSortedListResponse(OCIDataResponse):
    """Response to the UserGroupCommonPhoneListGetPagedSortedListRequest.
                                The response contains the group's common phone list. The response
                                contains a table with column headings: \"Name\" and \"Phone Number\".

    Attributes:

        total_number_of_rows (int):

        group_common_phone_list_table (OCITable):

    """

    total_number_of_rows: int = field(metadata={"alias": "totalNumberOfRows"})

    group_common_phone_list_table: OCITable = field(
        metadata={"alias": "groupCommonPhoneListTable"}
    )


@dataclass(kw_only=True)
class UserGroupCustomContactDirectoryGetPagedSortedListResponse(OCIDataResponse):
    """Response to the UserGroupCustomContactDirectoryGetPagedSortedListRequest.

                                Returns the number of entries that would be returned if the response
                                Was not page size restricted.

                                The response contains all the contacts in the group's given custom
                                contact directory. Contains a table with column headings: \"User Id\",
                                \"Last Name\", \"First Name\", \"Hiragana Last Name\",
                                \"Hiragana First Name\", \"Virtual On-Net Phone Number\", \"Group Id\",
                                \"Is Virtual On-Net User\", \"Department\", \"Phone Number\", \"Extension\",
                                \"Mobile\", \"Email Address\", \"Yahoo Id\", \"Title\", \"IMP Id\", \"Receptionist Note\".
                                If the entry represents a Virtual On-Net user then \"User Id\" is blank,
                                the \"Virtual On-Net Phone Number\" contains the phone Number of the
                                Virtual On-Net user, the \"Group Id\" contains the Virtual On-Net
                                user's
                                group and the \"Is Virtual On-Net User\" contains true.
                                If the entry represents a BroadWorks user then the \"User Id\" contains
                                his BroadWorks userId, the \"Virtual On-Net Phone Number\" and
                                \"Group Id\" fields are field is blank and the \"Is Virtual On-Net User\"
                                contains false.  The Receptionist Note column is only populated, if the
        user sending the request is the owner of this Receptionist Note and a
        Note exists.

    Attributes:

        total_number_of_rows (int):

        user_table (OCITable):

    """

    total_number_of_rows: int = field(metadata={"alias": "totalNumberOfRows"})

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class UserGroupNightForwardingGetResponse(OCIDataResponse):
    """Response to UserGroupNightForwardingGetRequest.
        businessHours and holidaySchedule are returned in the response only when groupNightForwarding is ‘Auto On’.

    Attributes:

        night_forwarding (str):

        group_night_forwarding (str):

        business_hours (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

    """

    night_forwarding: str = field(metadata={"alias": "nightForwarding"})

    group_night_forwarding: str = field(metadata={"alias": "groupNightForwarding"})

    business_hours: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "businessHours"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )


@dataclass(kw_only=True)
class UserGroupPagingGetListResponse(OCIDataResponse):
    """Response to the UserGroupPagingGetListRequest.
        The groupPagingTable contains columns: \"Name\", \"Phone Number\", \"Extension\" and \"Is Active\"
        The column value for \"Is Active\" can either be true, or false.

    Attributes:

        paging_group_table (OCITable):

    """

    paging_group_table: OCITable = field(metadata={"alias": "pagingGroupTable"})


@dataclass(kw_only=True)
class UserHotelingGuestGetAvailableUserListResponse(OCIDataResponse):
    """Response to the UserHotelingGuestGetAvailableUserListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\", \"Association Limit Hours\", \"Enable Association Limit\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\".

    Attributes:

        host_user_table (OCITable):

    """

    host_user_table: OCITable = field(metadata={"alias": "hostUserTable"})


@dataclass(kw_only=True)
class UserHotelingGuestGetResponse14sp4(OCIDataResponse):
    """Response to UserHotelingGuestGetRequest14sp4

    Attributes:

        is_active (bool):

        enable_association_limit (bool):

        association_limit_hours (int):

        host_user_id (Optional[str]):

        host_last_name (Optional[str]):

        host_first_name (Optional[str]):

        host_association_date_time (Optional[str]):

        host_enforces_association_limit (Optional[bool]):

        host_association_limit_hours (Optional[int]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    enable_association_limit: bool = field(metadata={"alias": "enableAssociationLimit"})

    association_limit_hours: int = field(metadata={"alias": "associationLimitHours"})

    host_user_id: Optional[str] = field(default=None, metadata={"alias": "hostUserId"})

    host_last_name: Optional[str] = field(
        default=None, metadata={"alias": "hostLastName"}
    )

    host_first_name: Optional[str] = field(
        default=None, metadata={"alias": "hostFirstName"}
    )

    host_association_date_time: Optional[str] = field(
        default=None, metadata={"alias": "hostAssociationDateTime"}
    )

    host_enforces_association_limit: Optional[bool] = field(
        default=None, metadata={"alias": "hostEnforcesAssociationLimit"}
    )

    host_association_limit_hours: Optional[int] = field(
        default=None, metadata={"alias": "hostAssociationLimitHours"}
    )


@dataclass(kw_only=True)
class UserHotelingHostGetResponse17(OCIDataResponse):
    """Response to UserHotelingHostGetRequest17.

    Attributes:

        is_active (bool):

        enforce_association_limit (bool):

        association_limit_hours (int):

        access_level (str):

        guest_last_name (Optional[str]):

        guest_first_name (Optional[str]):

        guest_phone_number (Optional[str]):

        guest_extension (Optional[str]):

        guest_location_dialing_code (Optional[str]):

        guest_association_date_time (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    enforce_association_limit: bool = field(
        metadata={"alias": "enforceAssociationLimit"}
    )

    association_limit_hours: int = field(metadata={"alias": "associationLimitHours"})

    access_level: str = field(metadata={"alias": "accessLevel"})

    guest_last_name: Optional[str] = field(
        default=None, metadata={"alias": "guestLastName"}
    )

    guest_first_name: Optional[str] = field(
        default=None, metadata={"alias": "guestFirstName"}
    )

    guest_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "guestPhoneNumber"}
    )

    guest_extension: Optional[str] = field(
        default=None, metadata={"alias": "guestExtension"}
    )

    guest_location_dialing_code: Optional[str] = field(
        default=None, metadata={"alias": "guestLocationDialingCode"}
    )

    guest_association_date_time: Optional[str] = field(
        default=None, metadata={"alias": "guestAssociationDateTime"}
    )


@dataclass(kw_only=True)
class UserINIntegrationGetResponse(OCIDataResponse):
    """Response to UserINIntegrationGetRequest

    Attributes:

        originating_service_key (Optional[int]):

        terminating_service_key (Optional[int]):

    """

    originating_service_key: Optional[int] = field(
        default=None, metadata={"alias": "originatingServiceKey"}
    )

    terminating_service_key: Optional[int] = field(
        default=None, metadata={"alias": "terminatingServiceKey"}
    )


@dataclass(kw_only=True)
class UserInCallServiceActivationGetResponse(OCIDataResponse):
    """Response to UserInCallServiceActivationGetRequest.

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserIncomingCallingPlanGetResponse(OCIDataResponse):
    """Response to UserIncomingCallingPlanGetRequest.

    Attributes:

        use_custom_settings (bool):

        user_permissions (IncomingCallingPlanPermissions):

    """

    use_custom_settings: bool = field(metadata={"alias": "useCustomSettings"})

    user_permissions: IncomingCallingPlanPermissions = field(
        metadata={"alias": "userPermissions"}
    )


@dataclass(kw_only=True)
class UserIntegratedIMPGetResponse21sp1(OCIDataResponse):
    """Response to the UserIntegratedIMPGetRequest21sp1.
        The response contains the Integrated IMP specific service attributes for the user.
        The following elements are only used in AS data mode and not returned in XS data mode:
          impId
          isAlternateImpId

    Attributes:

        is_active (bool):

        imp_id (Optional[str]):

        is_alternate_imp_id (Optional[bool]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    imp_id: Optional[str] = field(default=None, metadata={"alias": "impId"})

    is_alternate_imp_id: Optional[bool] = field(
        default=None, metadata={"alias": "isAlternateImpId"}
    )


@dataclass(kw_only=True)
class UserInterceptUserGetResponse21sp1(OCIDataResponse):
    """Response to the UserInterceptUserGetRequest21sp1.

        The following elements are only used in AS data mode:
          exemptInboundMobilityCalls
          exemptOutboundMobilityCalls
          disableParallelRingingToNetworkLocations

    Attributes:

        is_active (bool):

        announcement_selection (str):

        audio_file_description (Optional[str]):

        audio_media_type (Optional[str]):

        video_file_description (Optional[str]):

        video_media_type (Optional[str]):

        inbound_call_mode (str):

        alternate_blocking_announcement (bool):

        exempt_inbound_mobility_calls (bool):

        disable_parallel_ringing_to_network_locations (bool):

        route_to_voice_mail (bool):

        play_new_phone_number (bool):

        new_phone_number (Optional[str]):

        transfer_on_zero_to_phone_number (bool):

        transfer_phone_number (Optional[str]):

        outbound_call_mode (str):

        exempt_outbound_mobility_calls (bool):

        reroute_outbound_calls (bool):

        outbound_reroute_phone_number (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    announcement_selection: str = field(metadata={"alias": "announcementSelection"})

    audio_file_description: Optional[str] = field(
        default=None, metadata={"alias": "audioFileDescription"}
    )

    audio_media_type: Optional[str] = field(
        default=None, metadata={"alias": "audioMediaType"}
    )

    video_file_description: Optional[str] = field(
        default=None, metadata={"alias": "videoFileDescription"}
    )

    video_media_type: Optional[str] = field(
        default=None, metadata={"alias": "videoMediaType"}
    )

    inbound_call_mode: str = field(metadata={"alias": "inboundCallMode"})

    alternate_blocking_announcement: bool = field(
        metadata={"alias": "alternateBlockingAnnouncement"}
    )

    exempt_inbound_mobility_calls: bool = field(
        metadata={"alias": "exemptInboundMobilityCalls"}
    )

    disable_parallel_ringing_to_network_locations: bool = field(
        metadata={"alias": "disableParallelRingingToNetworkLocations"}
    )

    route_to_voice_mail: bool = field(metadata={"alias": "routeToVoiceMail"})

    play_new_phone_number: bool = field(metadata={"alias": "playNewPhoneNumber"})

    new_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "newPhoneNumber"}
    )

    transfer_on_zero_to_phone_number: bool = field(
        metadata={"alias": "transferOnZeroToPhoneNumber"}
    )

    transfer_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    outbound_call_mode: str = field(metadata={"alias": "outboundCallMode"})

    exempt_outbound_mobility_calls: bool = field(
        metadata={"alias": "exemptOutboundMobilityCalls"}
    )

    reroute_outbound_calls: bool = field(metadata={"alias": "rerouteOutboundCalls"})

    outbound_reroute_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "outboundReroutePhoneNumber"}
    )


@dataclass(kw_only=True)
class UserInternalCallingLineIDDeliveryGetResponse(OCIDataResponse):
    """Response to UserInternalCallingLineIDDeliveryGetRequest.

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserLegacyAutomaticCallbackGetResponse(OCIDataResponse):
    """Response to UserLegacyAutomaticCallbackGetRequest.

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserLinePortGetListResponse(OCIDataResponse):
    """Response to UserLinePortGetListRequest.
          Contains a table of line ports configured for a user
          The column headings are: \"Line Port\", \"Line Port Type\", \"In Trunk Group\",
          \"Contact\", \"Contact2\", \"Contact3\", \"Contact4\", \"Contact5\", \"Authentication Mode\",
          and \"Auto-Config Soft Client\".

    Attributes:

        line_port_table (OCITable):

    """

    line_port_table: OCITable = field(metadata={"alias": "linePortTable"})


@dataclass(kw_only=True)
class UserMWIDeliveryToMobileEndpointGetResponse23(OCIDataResponse):
    """Response to UserMWIDeliveryToMobileEndpointGetRequest23.

    Attributes:

        is_active (bool):

        mobile_phone_number (Optional[str]):

        send_missed_call_alert (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    mobile_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "mobilePhoneNumber"}
    )

    send_missed_call_alert: bool = field(metadata={"alias": "sendMissedCallAlert"})


@dataclass(kw_only=True)
class UserMaliciousCallTraceGetResponse(OCIDataResponse):
    """Response to UserMaliciousCallTraceGetRequest.

    Attributes:

        is_active (bool):

        trace_type_selection (str):

        trace_for_time_period (bool):

        trace_time_period (Optional[MaliciousCallTraceTimePeriod]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    trace_type_selection: str = field(metadata={"alias": "traceTypeSelection"})

    trace_for_time_period: bool = field(metadata={"alias": "traceForTimePeriod"})

    trace_time_period: Optional[MaliciousCallTraceTimePeriod] = field(
        default=None, metadata={"alias": "traceTimePeriod"}
    )


@dataclass(kw_only=True)
class UserMeetMeConferencingAddConferenceResponse23(OCIDataResponse):
    """Response to UserMeetMeConferencingAddConferenceRequest23.
        Contains the information of a conference.

    Attributes:

        conference_id (str):

        moderator_pin (str):

        security_pin (Optional[str]):

    """

    conference_id: str = field(metadata={"alias": "conferenceId"})

    moderator_pin: str = field(metadata={"alias": "moderatorPin"})

    security_pin: Optional[str] = field(default=None, metadata={"alias": "securityPin"})


@dataclass(kw_only=True)
class UserMeetMeConferencingGetAvailableDelegateListResponse(OCIDataResponse):
    """Response to UserMeetMeConferencingGetAvailableDelegateListRequest.
        Contains all hosts assigned on a bridge.
        The table has column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\", \"Phone Number\", \"Extension\", \"Department\" and \"Email Address\".

    Attributes:

        conference_delegate_user_table (OCITable):

    """

    conference_delegate_user_table: OCITable = field(
        metadata={"alias": "conferenceDelegateUserTable"}
    )


@dataclass(kw_only=True)
class UserMeetMeConferencingGetBridgeListResponse(OCIDataResponse):
    """Response to the UserMeetMeConferencingGetBridgeListRequest.
        Contains a table with column headings: \"Bridge Id\", \"Name\", \"Phone Number\", \"Extension\", \"Ports\", \"Is Active\",
        \"Allow Individual OutDial\", \"Country Code\", and \"National Prefix\".
        The column values for \"Is Active\" can either be true, or false.

    Attributes:

        conference_bridge_table (OCITable):

    """

    conference_bridge_table: OCITable = field(
        metadata={"alias": "conferenceBridgeTable"}
    )


@dataclass(kw_only=True)
class UserMeetMeConferencingGetConferenceDelegateListResponse(OCIDataResponse):
    """Response to UserMeetMeConferencingGetConferenceDelegateListRequest.
        Contains a table with table heading:\"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\",
        \"Hiragana First Name\",\"Phone Number\", \"Extension\", \"Department\" and \"Email Address\".

    Attributes:

        conference_delegate_user_table (OCITable):

    """

    conference_delegate_user_table: OCITable = field(
        metadata={"alias": "conferenceDelegateUserTable"}
    )


@dataclass(kw_only=True)
class UserMeetMeConferencingGetConferenceGreetingResponse20(OCIDataResponse):
    """Response to UserMeetMeConferencingGetConferenceGreetingRequest20.
        Contains the information of a conference custom greeting.

    Attributes:

        play_entrance_greeting (bool):

        entrance_greeting_file (Optional[AnnouncementFileKey]):

    """

    play_entrance_greeting: bool = field(metadata={"alias": "playEntranceGreeting"})

    entrance_greeting_file: Optional[AnnouncementFileKey] = field(
        default=None, metadata={"alias": "entranceGreetingFile"}
    )


@dataclass(kw_only=True)
class UserMeetMeConferencingGetConferenceListResponse(OCIDataResponse):
    """Response to the UserMeetMeConferencingGetConferenceListRequest.
        Contains a table with column headings: \"Bridge Id\", \"Conference Id\", \"Title\", \"Bridge Name\", \"Status\", \"Type\", \"Start Time\", \"Host Last Name\", \"Host First Name\" and \"Host\".
        The column values for \"Status\" can be Active, Inactive, or Expired.
        The column values for \"Type\" can be Reservationless, One Time, Recurring Daily, Recurring Weekly, Recurring Monthly, or Recurring Yearly.
        Start Time is in the format \"yyyy-MM-dd'T'HH:mm:ss:SSSZ\". Example: 2010-10-01T09:30:00:000-0400.

    Attributes:

        conference_table (OCITable):

    """

    conference_table: OCITable = field(metadata={"alias": "conferenceTable"})


@dataclass(kw_only=True)
class UserMeetMeConferencingGetConferenceRecordingListResponse(OCIDataResponse):
    """Response to the UserMeetMeConferencingGetConferenceRecordingListRequest.
        Contains a table with column headings: \"Bridge Id\", \"Conference Id\", \"Conference Title\", \"Bridge Name\", \"Start Time\", \"File Size\", and \"URL\".
        Start Time is in the format \"yyyy-MM-dd'T'HH:mm:ss:SSSZ\". Example: 2010-10-01T09:30:00:000-0400.

    Attributes:

        conference_recording_table (OCITable):

    """

    conference_recording_table: OCITable = field(
        metadata={"alias": "conferenceRecordingTable"}
    )


@dataclass(kw_only=True)
class UserMeetMeConferencingGetConferenceResponse23(OCIDataResponse):
    """Response to UserMeetMeConferencingGetConferenceRequest23.
        Contains the information of a conference.

    Attributes:

        title (str):

        estimated_participants (Optional[int]):

        restrict_participants (Optional[bool]):

        max_participants (Optional[int]):

        account_code (Optional[str]):

        mute_all_attendees_on_entry (bool):

        end_conference_on_moderator_exit (bool):

        moderator_required (bool):

        require_security_pin (bool):

        security_pin (Optional[str]):

        allow_unique_identifier (bool):

        attendee_notification (str):

        conference_schedule (MeetMeConferencingConferenceSchedule):

        moderator_pin (str):

        host_time_zone (str):

        allow_participant_unmute_in_auto_lecture_mode (bool):

    """

    title: str = field(metadata={"alias": "title"})

    estimated_participants: Optional[int] = field(
        default=None, metadata={"alias": "estimatedParticipants"}
    )

    restrict_participants: Optional[bool] = field(
        default=None, metadata={"alias": "restrictParticipants"}
    )

    max_participants: Optional[int] = field(
        default=None, metadata={"alias": "maxParticipants"}
    )

    account_code: Optional[str] = field(default=None, metadata={"alias": "accountCode"})

    mute_all_attendees_on_entry: bool = field(
        metadata={"alias": "muteAllAttendeesOnEntry"}
    )

    end_conference_on_moderator_exit: bool = field(
        metadata={"alias": "endConferenceOnModeratorExit"}
    )

    moderator_required: bool = field(metadata={"alias": "moderatorRequired"})

    require_security_pin: bool = field(metadata={"alias": "requireSecurityPin"})

    security_pin: Optional[str] = field(default=None, metadata={"alias": "securityPin"})

    allow_unique_identifier: bool = field(metadata={"alias": "allowUniqueIdentifier"})

    attendee_notification: str = field(metadata={"alias": "attendeeNotification"})

    conference_schedule: MeetMeConferencingConferenceSchedule = field(
        metadata={"alias": "conferenceSchedule"}
    )

    moderator_pin: str = field(metadata={"alias": "moderatorPin"})

    host_time_zone: str = field(metadata={"alias": "hostTimeZone"})

    allow_participant_unmute_in_auto_lecture_mode: bool = field(
        metadata={"alias": "allowParticipantUnmuteInAutoLectureMode"}
    )


@dataclass(kw_only=True)
class UserModifyGroupIdResponse(OCIDataResponse):
    """Response to UserModifyGroupIdRequest.
        error indicates the failing conditions preventing the user move.
        impact indicates any change to user and group as the result of a user move.

    Attributes:

        error (Optional[List[UserMoveMessage]]):

        impact (Optional[List[UserMoveMessage]]):

    """

    error: Optional[List[UserMoveMessage]] = field(
        default=None, metadata={"alias": "error"}
    )

    impact: Optional[List[UserMoveMessage]] = field(
        default=None, metadata={"alias": "impact"}
    )


@dataclass(kw_only=True)
class UserMusicOnHoldGetResponse(OCIDataResponse):
    """Response to UserMusicOnHoldGetRequest.

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserMusicOnHoldUserGetResponse20(OCIDataResponse):
    """Response to UserMusicOnHoldUserGetRequest20.

    Attributes:

        enable_video (bool):

        source (MusicOnHoldUserSourceRead20):

        use_alternate_source_for_internal_calls (bool):

        internal_source (Optional[MusicOnHoldUserSourceRead20]):

    """

    enable_video: bool = field(metadata={"alias": "enableVideo"})

    source: MusicOnHoldUserSourceRead20 = field(metadata={"alias": "source"})

    use_alternate_source_for_internal_calls: bool = field(
        metadata={"alias": "useAlternateSourceForInternalCalls"}
    )

    internal_source: Optional[MusicOnHoldUserSourceRead20] = field(
        default=None, metadata={"alias": "internalSource"}
    )


@dataclass(kw_only=True)
class UserNetworkConferencingGetResponse(OCIDataResponse):
    """Response to UserNetworkConferencingGetRequest.

    Attributes:

        conference_uri (Optional[str]):

        max_conference_parties (int):

    """

    conference_uri: Optional[str] = field(
        default=None, metadata={"alias": "conferenceURI"}
    )

    max_conference_parties: int = field(metadata={"alias": "maxConferenceParties"})


@dataclass(kw_only=True)
class UserNumberPortabilityAnnouncementGetResponse(OCIDataResponse):
    """Response to the UserNumberPortabilityAnnouncementGetRequest.
        The response contains the user Number Portability attributes.

    Attributes:

        enable (bool):

    """

    enable: bool = field(metadata={"alias": "enable"})


@dataclass(kw_only=True)
class UserOCICallControlApplicationGetListResponse(OCIDataResponse):
    """Response to UserOCICallControlApplicationGetListRequest.

    Attributes:

        application_id (Optional[List[str]]):

    """

    application_id: Optional[List[str]] = field(
        default=None, metadata={"alias": "applicationId"}
    )


@dataclass(kw_only=True)
class UserOutgoingCallingPlanAuthorizationCodeGetListResponse(OCIDataResponse):
    """Response to UserOutgoingCallingPlanAuthorizationCodeGetListRequest.

    Attributes:

        code_entry (Optional[List[OutgoingCallingPlanAuthorizationCodeEntry]]):

    """

    code_entry: Optional[List[OutgoingCallingPlanAuthorizationCodeEntry]] = field(
        default=None, metadata={"alias": "codeEntry"}
    )


@dataclass(kw_only=True)
class UserOutgoingCallingPlanAuthorizationCodeGetResponse(OCIDataResponse):
    """Response to UserOutgoingCallingPlanAuthorizationCodeGetRequest.

    Attributes:

        use_custom_settings (bool):

    """

    use_custom_settings: bool = field(metadata={"alias": "useCustomSettings"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanCallMeNowGetResponse(OCIDataResponse):
    """Response to UserOutgoingCallingPlanCallMeNowGetRequest.

    Attributes:

        use_custom_settings (bool):

        user_permissions (OutgoingCallingPlanCallMeNowPermissions):

    """

    use_custom_settings: bool = field(metadata={"alias": "useCustomSettings"})

    user_permissions: OutgoingCallingPlanCallMeNowPermissions = field(
        metadata={"alias": "userPermissions"}
    )


@dataclass(kw_only=True)
class UserOutgoingCallingPlanDigitPlanCallMeNowGetResponse(OCIDataResponse):
    """Response to UserOutgoingCallingPlanDigitPlanCallMeNowGetRequest.

    Attributes:

        use_custom_settings (bool):

        user_permissions (Optional[OutgoingCallingPlanDigitPatternCallMeNowPermissions]):

    """

    use_custom_settings: bool = field(metadata={"alias": "useCustomSettings"})

    user_permissions: Optional[OutgoingCallingPlanDigitPatternCallMeNowPermissions] = (
        field(default=None, metadata={"alias": "userPermissions"})
    )


@dataclass(kw_only=True)
class UserOutgoingCallingPlanDigitPlanOriginatingGetResponse(OCIDataResponse):
    """Response to UserOutgoingCallingPlanDigitPlanOriginatingGetRequest.

    Attributes:

        use_custom_settings (bool):

        user_permissions (Optional[OutgoingCallingPlanDigitPatternOriginatingPermissions]):

    """

    use_custom_settings: bool = field(metadata={"alias": "useCustomSettings"})

    user_permissions: Optional[
        OutgoingCallingPlanDigitPatternOriginatingPermissions
    ] = field(default=None, metadata={"alias": "userPermissions"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanDigitPlanRedirectingGetResponse(OCIDataResponse):
    """Response to UserOutgoingCallingPlanDigitPlanRedirectingGetRequest.

    Attributes:

        use_custom_settings (bool):

        user_permissions (Optional[OutgoingCallingPlanDigitPatternRedirectingPermissions]):

    """

    use_custom_settings: bool = field(metadata={"alias": "useCustomSettings"})

    user_permissions: Optional[
        OutgoingCallingPlanDigitPatternRedirectingPermissions
    ] = field(default=None, metadata={"alias": "userPermissions"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanOriginatingGetResponse(OCIDataResponse):
    """Response to UserOutgoingCallingPlanOriginatingGetRequest.

    Attributes:

        use_custom_settings (bool):

        user_permissions (OutgoingCallingPlanOriginatingPermissions):

    """

    use_custom_settings: bool = field(metadata={"alias": "useCustomSettings"})

    user_permissions: OutgoingCallingPlanOriginatingPermissions = field(
        metadata={"alias": "userPermissions"}
    )


@dataclass(kw_only=True)
class UserOutgoingCallingPlanPinholeDigitPlanCallMeNowGetResponse(OCIDataResponse):
    """Response to UserOutgoingCallingPlanPinholeDigitPlanCallMeNowGetRequest.

    Attributes:

        use_custom_settings (bool):

        user_permissions (Optional[OutgoingPinholeDigitPlanDigitPatternCallMeNowPermissions]):

    """

    use_custom_settings: bool = field(metadata={"alias": "useCustomSettings"})

    user_permissions: Optional[
        OutgoingPinholeDigitPlanDigitPatternCallMeNowPermissions
    ] = field(default=None, metadata={"alias": "userPermissions"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanPinholeDigitPlanOriginatingGetResponse(OCIDataResponse):
    """Response to UserOutgoingCallingPlanPinholeDigitPlanOriginatingGetRequest.

    Attributes:

        use_custom_settings (bool):

        user_permissions (Optional[OutgoingPinholeDigitPlanDigitPatternOriginatingPermissions]):

    """

    use_custom_settings: bool = field(metadata={"alias": "useCustomSettings"})

    user_permissions: Optional[
        OutgoingPinholeDigitPlanDigitPatternOriginatingPermissions
    ] = field(default=None, metadata={"alias": "userPermissions"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanPinholeDigitPlanRedirectingGetResponse(OCIDataResponse):
    """Response to UserOutgoingCallingPlanPinholeDigitPlanRedirectingGetRequest.

    Attributes:

        use_custom_settings (bool):

        user_permissions (Optional[OutgoingPinholeDigitPlanDigitPatternRedirectingPermissions]):

    """

    use_custom_settings: bool = field(metadata={"alias": "useCustomSettings"})

    user_permissions: Optional[
        OutgoingPinholeDigitPlanDigitPatternRedirectingPermissions
    ] = field(default=None, metadata={"alias": "userPermissions"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanRedirectedGetResponse(OCIDataResponse):
    """Response to UserOutgoingCallingPlanRedirectedGetRequest.

    Attributes:

        use_custom_settings (bool):

        user_permissions (OutgoingCallingPlanRedirectedPermissions):

    """

    use_custom_settings: bool = field(metadata={"alias": "useCustomSettings"})

    user_permissions: OutgoingCallingPlanRedirectedPermissions = field(
        metadata={"alias": "userPermissions"}
    )


@dataclass(kw_only=True)
class UserOutgoingCallingPlanRedirectingGetResponse(OCIDataResponse):
    """Response to UserOutgoingCallingPlanRedirectingGetRequest.

    Attributes:

        use_custom_settings (bool):

        user_permissions (OutgoingCallingPlanRedirectingPermissions):

    """

    use_custom_settings: bool = field(metadata={"alias": "useCustomSettings"})

    user_permissions: OutgoingCallingPlanRedirectingPermissions = field(
        metadata={"alias": "userPermissions"}
    )


@dataclass(kw_only=True)
class UserOutgoingCallingPlanSustainedAuthorizationCodeGetResponse(OCIDataResponse):
    """Response to UserOutgoingCallingPlanAuthorizationCodeGetRequest.

    Attributes:

        code (Optional[str]):

    """

    code: Optional[str] = field(default=None, metadata={"alias": "code"})


@dataclass(kw_only=True)
class UserOutgoingCallingPlanTransferNumbersGetResponse(OCIDataResponse):
    """Response to UserOutgoingCallingPlanTransferNumbersGetRequest.

    Attributes:

        use_custom_settings (bool):

        user_numbers (OutgoingCallingPlanTransferNumbers):

    """

    use_custom_settings: bool = field(metadata={"alias": "useCustomSettings"})

    user_numbers: OutgoingCallingPlanTransferNumbers = field(
        metadata={"alias": "userNumbers"}
    )


@dataclass(kw_only=True)
class UserPBXIntegrationGetResponse(OCIDataResponse):
    """Response to UserPBXIntegrationGetRequest.

    Attributes:

        proxy_to_header_from_network (bool):

    """

    proxy_to_header_from_network: bool = field(
        metadata={"alias": "proxyToHeaderFromNetwork"}
    )


@dataclass(kw_only=True)
class UserPasswordInfoGetResponse22(OCIDataResponse):
    """Response to UserPasswordInfoGetRequest22.

        The following elements are only used in AS data mode and ignored in XS data mode.
        hasPassword

    Attributes:

        is_login_disabled (bool):

        expiration_days (Optional[int]):

        does_not_expire (Optional[bool]):

        has_password (bool):

    """

    is_login_disabled: bool = field(metadata={"alias": "isLoginDisabled"})

    expiration_days: Optional[int] = field(
        default=None, metadata={"alias": "expirationDays"}
    )

    does_not_expire: Optional[bool] = field(
        default=None, metadata={"alias": "doesNotExpire"}
    )

    has_password: bool = field(metadata={"alias": "hasPassword"})


@dataclass(kw_only=True)
class UserPersonalAssistantCallToNumberGetListResponse(OCIDataResponse):
    """Response to the UserPersonalAssistantCallToNumberGetListRequest.
        Contains a list of assigned Call to Numbers\".

    Attributes:

        call_to_number (Optional[List[CallToNumber]]):

    """

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class UserPersonalAssistantExclusionNumberGetListResponse(OCIDataResponse):
    """Response to the UserPersonalAssistantExclusionNumberGetListRequest.
        Contains a table with column headings:
        \"Number\", \"Description\".

    Attributes:

        exclusion_number_table (OCITable):

    """

    exclusion_number_table: OCITable = field(metadata={"alias": "exclusionNumberTable"})


@dataclass(kw_only=True)
class UserPersonalAssistantExclusionNumberGetResponse(OCIDataResponse):
    """Response to the UserPersonalAssistantExclusionNumberGetRequest

    Attributes:

        description (Optional[Nillable[str]]):

    """

    description: Optional[Nillable[str]] = field(
        default=None, metadata={"alias": "description"}
    )

    def __post_init__(self):
        nillable_fields = ["description"]
        for field_name in nillable_fields:
            value = getattr(self, field_name)
            if value == "" or value == "None":
                object.__setattr__(self, field_name, OCINil)


@dataclass(kw_only=True)
class UserPersonalAssistantGetCriteriaResponse(OCIDataResponse):
    """Response to the UserPersonalAssistantGetCriteriaRequest.

    Attributes:

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        presence (str):

        enable_transfer_to_attendant (bool):

        attendant_number (Optional[str]):

        enable_ring_splash (bool):

        alert_me_first (bool):

        alert_me_first_number_of_rings (int):

    """

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    presence: str = field(metadata={"alias": "presence"})

    enable_transfer_to_attendant: bool = field(
        metadata={"alias": "enableTransferToAttendant"}
    )

    attendant_number: Optional[str] = field(
        default=None, metadata={"alias": "attendantNumber"}
    )

    enable_ring_splash: bool = field(metadata={"alias": "enableRingSplash"})

    alert_me_first: bool = field(metadata={"alias": "alertMeFirst"})

    alert_me_first_number_of_rings: int = field(
        metadata={"alias": "alertMeFirstNumberOfRings"}
    )


@dataclass(kw_only=True)
class UserPersonalAssistantGetResponse24(OCIDataResponse):
    """Response to the UserPersonalAssistantGetRequest24.
        The response contains the user Personal Assistant information and a table of Schedule Selective Criteria entries.
        The schedule table's column headings are: \"Is Active\", \"Criteria Name\", \"Time Schedule\", \"Holiday Schedule\",
        \"Presence\", \"Transfer to Attendant\", \"Attendant Number\", \"Play Ring Splash\", \"Alert Me First\", \"Number of Rings\".

    Attributes:

        presence (str):

        enable_transfer_to_attendant (bool):

        attendant_number (Optional[str]):

        enable_ring_splash (bool):

        enable_expiration_time (bool):

        expiration_time (Optional[str]):

        alert_me_first (bool):

        alert_me_first_number_of_rings (int):

        schedule_table (Optional[OCITable]):

    """

    presence: str = field(metadata={"alias": "presence"})

    enable_transfer_to_attendant: bool = field(
        metadata={"alias": "enableTransferToAttendant"}
    )

    attendant_number: Optional[str] = field(
        default=None, metadata={"alias": "attendantNumber"}
    )

    enable_ring_splash: bool = field(metadata={"alias": "enableRingSplash"})

    enable_expiration_time: bool = field(metadata={"alias": "enableExpirationTime"})

    expiration_time: Optional[str] = field(
        default=None, metadata={"alias": "expirationTime"}
    )

    alert_me_first: bool = field(metadata={"alias": "alertMeFirst"})

    alert_me_first_number_of_rings: int = field(
        metadata={"alias": "alertMeFirstNumberOfRings"}
    )

    schedule_table: Optional[OCITable] = field(
        default=None, metadata={"alias": "scheduleTable"}
    )


@dataclass(kw_only=True)
class UserPersonalPhoneListGetListResponse(OCIDataResponse):
    """Response to the UserPersonalPhoneListGetListRequest.
        The response contains a user's personal phone list.

    Attributes:

        entry (Optional[List[PhoneListEntry]]):

    """

    entry: Optional[List[PhoneListEntry]] = field(
        default=None, metadata={"alias": "entry"}
    )


@dataclass(kw_only=True)
class UserPersonalPhoneListGetPagedSortedListResponse(OCIDataResponse):
    """Response to the UserPersonalPhoneListGetPagedSortedListRequest.
                                The response contains a user's personal phone list. The response
                                contains a table with column headings: \"Name\" and \"Phone Number\".

    Attributes:

        total_number_of_rows (int):

        personal_phone_list_table (OCITable):

    """

    total_number_of_rows: int = field(metadata={"alias": "totalNumberOfRows"})

    personal_phone_list_table: OCITable = field(
        metadata={"alias": "personalPhoneListTable"}
    )


@dataclass(kw_only=True)
class UserPhoneDirectoryGetListResponse(OCIDataResponse):
    """Response to UserPhoneDirectoryGetListRequest.
        The \"My Room Room Id\" and \"My Room Bridge Id\" are only populated for users assigned the \"Collaborate-Audio\" service.
        Contains a table with  a row for each phone number and column headings :
        \"Name\", \"Number\", \"Extension\", \"Mobile\", \"Email Address\", \"Department\", \"First Name\", \"Last Name\",
        \"User Id\", \"Title\", \"IMP Id\", \"My Room Room Id\", \"My Room Bridge Id\", \"Service Name\".
        The Service Name represents the localized service name for service instances. The localized values are taken from the BroadworksLabel.properties file.
        Service Name is currently supporting:
        AutoAttendant, AutoAttendantStandard, AutoAttendantVideo, CallCenter, CallCenterStandard, CallCenterPremium
        HuntGroup, InstantGroupCall, VoiceMessagingGroup, RoutePoint, BroadWorksAnywhere, GroupPaging, FindmeFollowme,
        VoiceXML, FlexibleSeatingGuest, CollaborateAudio, MeetMeConferencing.
        For a Regular User or a Virtual On Network Enterprise Extensions, the Service Name is empty.

        The following columns are only returned in AS data mode:
          \"My Room Room Id\", \"My Room Bridge Id\", \"Service Name\"

    Attributes:

        directory_table (OCITable):

    """

    directory_table: OCITable = field(metadata={"alias": "directoryTable"})


@dataclass(kw_only=True)
class UserPhoneDirectoryGetPagedListResponse(OCIDataResponse):
    """Response to UserPhoneDirectoryGetPagedListRequest.
        Returns the number of entries that would be returned if the response
        Was not page size restricted.
        The \"My Room Room Id\" and \"My Room Bridge Id\" are only populated for
              users assigned the \"Collaborate-Audio\" service.
        Contains a table with a row for each user and column headings:
        \"User Id\", \"First Name\", \"Last Name\", \"First Name Unicode\",
        \"Last Name Unicode\", \"Hiragana First Name\", \"Hiragana Last Name\",
        \"Title\", \"Phone Number\", \"Extension\", \"Mobile\", \"Pager\",
        \"Email Address\", \"Yahoo Id\", \"Department\", \"Group Id\", \"Location\",
        \"Address Line 1\", \"Address Line 2\", \"City\", \"State\", \"Zip\", \"Country\",
        \"IMP Id\", \"Location Code\", \"My Room Room Id\", \"My Room Bridge Id\", \"Service Name\",
        and \"Receptionist Note\".
        The Service Name represents the localized service name for service instances. The localized values are taken from the BroadworksLabel.properties file.
        Service Name is currently supporting:
        AutoAttendant, AutoAttendantStandard, AutoAttendantVideo, CallCenter, CallCenterStandard, CallCenterPremium
        HuntGroup, InstantGroupCall, VoiceMessagingGroup, RoutePoint, BroadWorksAnywhere, GroupPaging, FindmeFollowme,
        VoiceXML, FlexibleSeatingGuest, CollaborateAudio, MeetMeConferencing.
        For a Regular User or a Virtual On Network Enterprise Extensions, the Service Name is empty.
        The response entries are sorted by \"Last Name Unicode\" first and
        \"First Name unicode\" secondarily.

        The following columns are only returned in AS data mode:
        \"Location Code\", \"My Room Room Id\", \"My Room Bridge Id\", \"Service Name\", \"Receptionist Note\"
        The Receptionist Note column is only populated, if the user sending
        the request is the owner of the Receptionist Note and a Note exists.

    Attributes:

        total_number_of_rows (int):

        directory_table (OCITable):

    """

    total_number_of_rows: int = field(metadata={"alias": "totalNumberOfRows"})

    directory_table: OCITable = field(metadata={"alias": "directoryTable"})


@dataclass(kw_only=True)
class UserPhoneDirectoryGetPagedSortedListResponse(OCIDataResponse):
    """Response to UserPhoneDirectoryGetPagedSortedListRequest.
    Returns the number of entries that would be returned if the response
    Was not page size restricted.
    The \"My Room Room Id\" and \"My Room Bridge Id\" are only populated for
    users assigned the \"Collaborate-Audio\" service.
    Contains a table with a row for each user and column headings:
    \"User Id\", \"CLID First Name\", \"CLID Last Name\", \"First Name\",
    \"Last Name\", \"Hiragana First Name\", \"Hiragana Last Name\",
    \"Title\", \"Phone Number\", \"Extension\", \"Mobile\", \"Pager\",
    \"Email Address\", \"Yahoo Id\", \"Department\", \"Group Id\", \"Location\",
    \"Address Line 1\", \"Address Line 2\", \"City\", \"State\", \"Zip\",
    \"Country\", \"IMP Id\", \"Location Code\", \"My Room Room Id\",
    \"My Room Bridge Id\", \"Service Name\", \"Receptionist Note\",
    \"User External Id\", and \"User Place Type\".
    The Service Name represents the localized service name for service instances.
    The localized values are taken from the BroadworksLabel.properties file.
    Service Name is currently supporting:
    AutoAttendant, AutoAttendantStandard, AutoAttendantVideo, CallCenter,
    CallCenterStandard, CallCenterPremium, HuntGroup, InstantGroupCall,
    VoiceMessagingGroup, RoutePoint, BroadWorksAnywhere, GroupPaging, FindmeFollowme,
    VoiceXML, FlexibleSeatingGuest, CollaborateAudio, MeetMeConferencing.
    For a Regular User or a Virtual On Network Enterprise Extensions, the
    Service Name is empty.
    The Receptionist Note column is only populated, if the user sending
    the request is the owner of the Receptionist Note and a Note exists.

    The following columns are returned in AS data mode only:
      \"Service Name\", \"Receptionist Notes\", \"User External Id\", \"User Place Type\".

      Attributes:

          total_number_of_rows (int):

          directory_table (OCITable):

    """

    total_number_of_rows: int = field(metadata={"alias": "totalNumberOfRows"})

    directory_table: OCITable = field(metadata={"alias": "directoryTable"})


@dataclass(kw_only=True)
class UserPhoneDirectoryGetSearchedListResponse(OCIDataResponse):
    """Response to UserPhoneDirectoryGetSearchedListRequest.
        The \"My Room Room Id\" and \"My Room Bridge Id\" are only populated for
            users assigned the \"Collaborate-Audio\" service.
        Contains a table with  a row for each phone number and column headings :
        \"Name\", \"Number\", \"Extension\", \"Mobile\", \"Email Address\", \"Department\",
        \"Hiragana Name\", \"Group Id\", \"Yahoo Id\", \"User Id\", \"IMP Id\", \"First Name\", \"Last Name\",
        \"My Room Room Id\", \"My Room Bridge Id\", \"Service Name\".
        The Service Name represents the localized service name for service instances. The localized values are taken from the BroadworksLabel.properties file.
        Service Name is currently supporting:
        AutoAttendant, AutoAttendantStandard, AutoAttendantVideo, CallCenter, CallCenterStandard, CallCenterPremium
        HuntGroup, InstantGroupCall, VoiceMessagingGroup, RoutePoint, BroadWorksAnywhere, GroupPaging, FindmeFollowme,
        VoiceXML, FlexibleSeatingGuest, CollaborateAudio, MeetMeConferencing.
        For a Regular User or a Virtual On Network Enterprise Extensions, the Service Name is empty.

        The following columns are only returned in AS data mode:
          \"My Room Room Id\", \"My Room Bridge Id\", \"Service Name\"

    Attributes:

        directory_table (OCITable):

    """

    directory_table: OCITable = field(metadata={"alias": "directoryTable"})


@dataclass(kw_only=True)
class UserPhysicalLocationGetResponse(OCIDataResponse):
    """Response to UserPhysicalLocationGetRequest.

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserPolycomPhoneServicesGetPrimaryEndpointListResponse(OCIDataResponse):
    """Response to UserPolycomPhoneServicesGetPrimaryEndpointListRequest.
        The column headings for the deviceUserTable are: \"Device Level\", \"Device Name\", \"Line/Port\".

    Attributes:

        device_user_table (OCITable):

    """

    device_user_table: OCITable = field(metadata={"alias": "deviceUserTable"})


@dataclass(kw_only=True)
class UserPolycomPhoneServicesGetResponse(OCIDataResponse):
    """Response to UserPolycomPhoneServicesGetRequest.

    Attributes:

        integrate_phone_directory_with_broad_works (bool):

        include_user_personal_phone_list_in_directory (bool):

        include_group_custom_contact_directory_in_directory (bool):

        group_custom_contact_directory (Optional[str]):

    """

    integrate_phone_directory_with_broad_works: bool = field(
        metadata={"alias": "integratePhoneDirectoryWithBroadWorks"}
    )

    include_user_personal_phone_list_in_directory: bool = field(
        metadata={"alias": "includeUserPersonalPhoneListInDirectory"}
    )

    include_group_custom_contact_directory_in_directory: bool = field(
        metadata={"alias": "includeGroupCustomContactDirectoryInDirectory"}
    )

    group_custom_contact_directory: Optional[str] = field(
        default=None, metadata={"alias": "groupCustomContactDirectory"}
    )


@dataclass(kw_only=True)
class UserPortalPasscodeGetInfoResponse(OCIDataResponse):
    """Response to UserPortalPasscodeGetInfoRequest.

    Attributes:

        is_login_disabled (bool):

        expiration_days (Optional[int]):

        does_not_expire (Optional[bool]):

        passcode (str):

    """

    is_login_disabled: bool = field(metadata={"alias": "isLoginDisabled"})

    expiration_days: Optional[int] = field(
        default=None, metadata={"alias": "expirationDays"}
    )

    does_not_expire: Optional[bool] = field(
        default=None, metadata={"alias": "doesNotExpire"}
    )

    passcode: str = field(metadata={"alias": "passcode"})


@dataclass(kw_only=True)
class UserPortalPasscodeRulesGetResponse(OCIDataResponse):
    """Response to UserPortalPasscodeRulesGetRequest.

    Attributes:

        disallow_repeated_digits (bool):

        number_of_repeated_digits (int):

        disallow_repeated_patterns (bool):

        disallow_contiguous_sequences (bool):

        number_of_ascending_digits (int):

        number_of_descending_digits (int):

        disallow_user_number (bool):

        disallow_reversed_user_number (bool):

        disallow_old_passcode (bool):

        number_of_previous_passcodes (int):

        disallow_reversed_old_passcode (bool):

        min_code_length (int):

        max_code_length (int):

        disable_login_after_max_failed_login_attempts (bool):

        max_failed_login_attempts (Optional[int]):

        expire_password (bool):

        passcode_expires_days (Optional[int]):

        send_login_disabled_notify_email (bool):

        login_disabled_notify_email_address (Optional[str]):

    """

    disallow_repeated_digits: bool = field(metadata={"alias": "disallowRepeatedDigits"})

    number_of_repeated_digits: int = field(metadata={"alias": "numberOfRepeatedDigits"})

    disallow_repeated_patterns: bool = field(
        metadata={"alias": "disallowRepeatedPatterns"}
    )

    disallow_contiguous_sequences: bool = field(
        metadata={"alias": "disallowContiguousSequences"}
    )

    number_of_ascending_digits: int = field(
        metadata={"alias": "numberOfAscendingDigits"}
    )

    number_of_descending_digits: int = field(
        metadata={"alias": "numberOfDescendingDigits"}
    )

    disallow_user_number: bool = field(metadata={"alias": "disallowUserNumber"})

    disallow_reversed_user_number: bool = field(
        metadata={"alias": "disallowReversedUserNumber"}
    )

    disallow_old_passcode: bool = field(metadata={"alias": "disallowOldPasscode"})

    number_of_previous_passcodes: int = field(
        metadata={"alias": "numberOfPreviousPasscodes"}
    )

    disallow_reversed_old_passcode: bool = field(
        metadata={"alias": "disallowReversedOldPasscode"}
    )

    min_code_length: int = field(metadata={"alias": "minCodeLength"})

    max_code_length: int = field(metadata={"alias": "maxCodeLength"})

    disable_login_after_max_failed_login_attempts: bool = field(
        metadata={"alias": "disableLoginAfterMaxFailedLoginAttempts"}
    )

    max_failed_login_attempts: Optional[int] = field(
        default=None, metadata={"alias": "maxFailedLoginAttempts"}
    )

    expire_password: bool = field(metadata={"alias": "expirePassword"})

    passcode_expires_days: Optional[int] = field(
        default=None, metadata={"alias": "passcodeExpiresDays"}
    )

    send_login_disabled_notify_email: bool = field(
        metadata={"alias": "sendLoginDisabledNotifyEmail"}
    )

    login_disabled_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "loginDisabledNotifyEmailAddress"}
    )


@dataclass(kw_only=True)
class UserPreAlertingAnnouncementGetCriteriaResponse21(OCIDataResponse):
    """Response to the UserPreAlertingAnnouncementGetCriteriaRequest21.

    Attributes:

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria (CriteriaFromDn):

        call_to_number (Optional[List[CallToNumber]]):

    """

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria: CriteriaFromDn = field(metadata={"alias": "fromDnCriteria"})

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class UserPreAlertingAnnouncementGetResponse20(OCIDataResponse):
    """Response to a UserPreAlertingAnnouncementGetRequest20.
         The criteria table's column headings are: \"Is Active\", \"Criteria Name\", \"Blacklisted\", \"Calls From\", \"Calls To Type\", \"Calls To Number\" and \"Calls To Extension\".
       The possible values for the \"Calls To Type\" column are the following or a combination of them separated by comma:
          - Primary
          - Alternate X (where x is a number between 1 and 10)
          - Mobility
        The possible values for the \"Calls To Number\" column are the following or a combination of them separated by comma:
          - The value of the phone number for the corresponding Calls To Type, when the number is available. i.e. Alternate 1 may have extension, but no number.
          - When no number is available a blank space is provided instead.
        The possible values for the \"Calls To Extension\" column are the following or a combination of them separated by comma:
          - The value of the extension for the corresponding Calls To Type, when the extension is available. i.e. Primary may have number, but no extension.
          - For Mobility Calls To Type, this is always blank.
          - When no extension is available a blank space is provided instead.

    Attributes:

        is_active (bool):

        audio_selection (str):

        audio_file (Optional[AnnouncementFileLevelKey]):

        audio_file_url (Optional[str]):

        video_selection (str):

        video_file (Optional[AnnouncementFileLevelKey]):

        video_file_url (Optional[str]):

        criteria_table (OCITable):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    audio_selection: str = field(metadata={"alias": "audioSelection"})

    audio_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "audioFile"}
    )

    audio_file_url: Optional[str] = field(
        default=None, metadata={"alias": "audioFileUrl"}
    )

    video_selection: str = field(metadata={"alias": "videoSelection"})

    video_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "videoFile"}
    )

    video_file_url: Optional[str] = field(
        default=None, metadata={"alias": "videoFileUrl"}
    )

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class UserPreferredAnswerEndpointGetListResponse(OCIDataResponse):
    """Response to UserPreferredAnswerEndpointGetListRequest.
        Contains a table of devices associated to a user that can be configured
        as Preferred Answer Endpoint.
        The column headings are: \"Line Port\", \"Endpoint Type\", \"Is Preferred Answer Endpoint\", \"Device Name\", \"Device Level\", \"Device Type\".
        The value of the \"Endpoint Type\" column is either Primary, Shared Call Appearance or Flexible Seating Guest.

    Attributes:

        access_device_table (OCITable):

    """

    access_device_table: OCITable = field(metadata={"alias": "accessDeviceTable"})


@dataclass(kw_only=True)
class UserPreferredCarrierUserGetResponse(OCIDataResponse):
    """Response to a UserPreferredCarrierUserGetRequest.

    Attributes:

        intra_lata_carrier (UserPreferredCarrierName):

        inter_lata_carrier (UserPreferredCarrierName):

        international_carrier (UserPreferredCarrierName):

    """

    intra_lata_carrier: UserPreferredCarrierName = field(
        metadata={"alias": "intraLataCarrier"}
    )

    inter_lata_carrier: UserPreferredCarrierName = field(
        metadata={"alias": "interLataCarrier"}
    )

    international_carrier: UserPreferredCarrierName = field(
        metadata={"alias": "internationalCarrier"}
    )


@dataclass(kw_only=True)
class UserPrepaidGetResponse(OCIDataResponse):
    """Response to UserPrepaidGetRequest.

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserPrimaryEndpointAdvancedSettingGetResponse(OCIDataResponse):
    """Response to the UserPrimaryEndpointAdvancedSettingGetRequest.

    Attributes:

        allow_origination (bool):

        allow_termination (bool):

    """

    allow_origination: bool = field(metadata={"alias": "allowOrigination"})

    allow_termination: bool = field(metadata={"alias": "allowTermination"})


@dataclass(kw_only=True)
class UserPriorityAlertGetCriteriaListResponse(OCIDataResponse):
    """Response to the UserPriorityAlertGetCriteriaListRequest. The criteria table's column headings are:
        \"Is Active\", \"Criteria Name\", \"Time Schedule\", \"Calls From\", \"Blacklisted\", \"Holiday Schedule\", \"Calls To Type\", \"Calls To Number\" and \"Calls To Extension\".
        The following columns are only returned in AS data mode:
          \"Calls To Type\", \"Calls To Number\" and \"Calls To Extension\"

        The possible values for the \"Calls To Type\" column are the following or a combination of them separated by comma:
          - Primary
          - Alternate X (where x is a number between 1 and 10)
          - Mobility
        The possible values for the \"Calls To Number\" column are the following or a combination of them separated by comma:
          - The value of the phone number for the corresponding Calls To Type, when the number is available. i.e. Alternate 1 may have extension, but no number.
          - When no number is available a blank space is provided instead.
        The possible values for the \"Calls To Extension\" column are the following or a combination of them separated by comma:
          - The value of the extension for the corresponding Calls To Type, when the extension is available. i.e. Primary may have number, but no extension.
          - For Mobility Calls To Type, this is always blank.
          - When no extension is available a blank space is provided instead.

    Attributes:

        criteria_table (OCITable):

    """

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class UserPriorityAlertGetCriteriaResponse21(OCIDataResponse):
    """Response to the UserPriorityAlertGetCriteriaRequest21.

    Attributes:

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria (PriorityAlertCriteriaFromDn):

        call_to_number (Optional[List[CallToNumber]]):

    """

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria: PriorityAlertCriteriaFromDn = field(
        metadata={"alias": "fromDnCriteria"}
    )

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class UserPrivacyGetAvailableMonitorsUserListResponse(OCIDataResponse):
    """Response to the UserPrivacyGetAvailableMonitorsUserListRequest.
        Returns a 10 column table with column headings:
        \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\",
        \"Hiragana First Name\", \"Phone Number\", \"Extension\", \"Department\", \"Email Address\", \"IMP Id\".

    Attributes:

        available_monitors_table (OCITable):

    """

    available_monitors_table: OCITable = field(
        metadata={"alias": "availableMonitorsTable"}
    )


@dataclass(kw_only=True)
class UserPrivacyGetResponse13mp17(OCIDataResponse):
    """Response to UserPrivacyGetRequest13mp17.  The
        permittedMonitorUserIdTable contains the members of
        the enterprise or group allowed to monitor the phone
        status of the user specified in the request.  Members
        of this table are allowed to monitor the user even if
        enablePhoneStatusPrivacy is set to true.  The table
        contains column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\", \"IMP Id\".

    Attributes:

        enable_directory_privacy (bool):

        enable_auto_attendant_extension_dialing_privacy (bool):

        enable_auto_attendant_name_dialing_privacy (bool):

        enable_phone_status_privacy (bool):

        permitted_monitor_user_id_table (OCITable):

    """

    enable_directory_privacy: bool = field(metadata={"alias": "enableDirectoryPrivacy"})

    enable_auto_attendant_extension_dialing_privacy: bool = field(
        metadata={"alias": "enableAutoAttendantExtensionDialingPrivacy"}
    )

    enable_auto_attendant_name_dialing_privacy: bool = field(
        metadata={"alias": "enableAutoAttendantNameDialingPrivacy"}
    )

    enable_phone_status_privacy: bool = field(
        metadata={"alias": "enablePhoneStatusPrivacy"}
    )

    permitted_monitor_user_id_table: OCITable = field(
        metadata={"alias": "permittedMonitorUserIdTable"}
    )


@dataclass(kw_only=True)
class UserPushNotificationGetResponse24(OCIDataResponse):
    """Response to UserPushNotificationGetRequest24.

    Attributes:

        send_push_notification_for_click_to_dial (bool):

        send_push_notification_for_group_paging (bool):

    """

    send_push_notification_for_click_to_dial: bool = field(
        metadata={"alias": "sendPushNotificationForClickToDial"}
    )

    send_push_notification_for_group_paging: bool = field(
        metadata={"alias": "sendPushNotificationForGroupPaging"}
    )


@dataclass(kw_only=True)
class UserPushNotificationRegistrationGetListResponse23(OCIDataResponse):
    """Response to UserPushNotificationRegistrationGetListRequest23.

        A registration has more than one row in the response when the registration includes more than one token
        and/or one or more event.  There can be one more tokens per registration ID and there can be one or more
        events per token.

        Registration Date uses the format \"yyyy-MM-dd'T'HH:mm:ss.SSSZ\" in the time zone of the requested user.
        Example: 2010-10-01T09:30:00:000-0400.

    Attributes:

        user_id (str):

        push_notification_registration_data (Optional[List[PushNotificationRegistrationData23]]):

    """

    user_id: str = field(metadata={"alias": "userId"})

    push_notification_registration_data: Optional[
        List[PushNotificationRegistrationData23]
    ] = field(default=None, metadata={"alias": "pushNotificationRegistrationData"})


@dataclass(kw_only=True)
class UserPushToTalkGetAvailableUserListResponse(OCIDataResponse):
    """Response to the UserPushToTalkGetAvailableUserListRequest.
        Returns a 10 column table with column headings:
          \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
          \"Phone Number\", \"Extension\", \"Department\", \"Email Address\", \"IMP Id\".

    Attributes:

        user_table (OCITable):

    """

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class UserPushToTalkGetResponse(OCIDataResponse):
    """Response to UserPushToTalkGetRequest.  It returns the service settings and a
        9 column selected user table with the following column headings:
          \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
          \"Phone Number\", \"Extension\", \"Department\", \"Email Address\", \"IMP Id\".

    Attributes:

        allow_auto_answer (bool):

        outgoing_connection_selection (str):

        access_list_selection (str):

        selected_user_table (OCITable):

    """

    allow_auto_answer: bool = field(metadata={"alias": "allowAutoAnswer"})

    outgoing_connection_selection: str = field(
        metadata={"alias": "outgoingConnectionSelection"}
    )

    access_list_selection: str = field(metadata={"alias": "accessListSelection"})

    selected_user_table: OCITable = field(metadata={"alias": "selectedUserTable"})


@dataclass(kw_only=True)
class UserRemoteOfficeGetResponse(OCIDataResponse):
    """Response to UserRemoteOfficeGetRequest.

    Attributes:

        is_active (bool):

        remote_office_phone_number (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    remote_office_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "remoteOfficePhoneNumber"}
    )


@dataclass(kw_only=True)
class UserResourcePriorityGetResponse(OCIDataResponse):
    """Response to UserResourcePriorityGetRequest.
        Contains the Resource Priority settings of a user.
        If useDefaultResourcePriority is true, parameter resourcePriority will not be returned.

    Attributes:

        use_default_resource_priority (bool):

        default_resource_priority (str):

        user_resource_priority (str):

    """

    use_default_resource_priority: bool = field(
        metadata={"alias": "useDefaultResourcePriority"}
    )

    default_resource_priority: str = field(
        metadata={"alias": "defaultResourcePriority"}
    )

    user_resource_priority: str = field(metadata={"alias": "userResourcePriority"})


@dataclass(kw_only=True)
class UserRouteListGetResponse24(OCIDataResponse):
    """Response to UserRouteListGetRequest24.
        Contains the route list setting and a list of assigned number ranges and number prefixes.
        The column headings for assignedNumberRangeTable are \"Number Range Start\", \"Number Range End\", \"Is Active\" and \"Extension Length\".
        The column headings for assignedNumberPrefixTable are \"Number Prefix\" \",\"Is Active\", \"Extension Range Start\" and \"Extension Range End\".

    Attributes:

        treat_originations_and_pbx_redirections_as_screened (bool):

        use_route_list_identity_for_non_emergency_calls (bool):

        use_route_list_identity_for_emergency_calls (bool):

        ignore_calling_name_for_call_processing (bool):

        assigned_number_range_table (OCITable):

        assigned_number_prefix_table (OCITable):

    """

    treat_originations_and_pbx_redirections_as_screened: bool = field(
        metadata={"alias": "treatOriginationsAndPBXRedirectionsAsScreened"}
    )

    use_route_list_identity_for_non_emergency_calls: bool = field(
        metadata={"alias": "useRouteListIdentityForNonEmergencyCalls"}
    )

    use_route_list_identity_for_emergency_calls: bool = field(
        metadata={"alias": "useRouteListIdentityForEmergencyCalls"}
    )

    ignore_calling_name_for_call_processing: bool = field(
        metadata={"alias": "ignoreCallingNameForCallProcessing"}
    )

    assigned_number_range_table: OCITable = field(
        metadata={"alias": "assignedNumberRangeTable"}
    )

    assigned_number_prefix_table: OCITable = field(
        metadata={"alias": "assignedNumberPrefixTable"}
    )


@dataclass(kw_only=True)
class UserRoutePointCallDispositionCodeGetAvailableListResponse(OCIDataResponse):
    """Response to the UserRoutePointCallDispositionCodeGetAvailableListRequest.
        This list may include Group/Enterprise level codes in addition to the Route Point level codes,
        depending on the call center disposition codes settings.
        Only active codes are included in the list.
        Contains a table with column headings: \"Code\", \"Description\" and \"Level\".
        Level column can be any of the values in the data type CallDispositionCodeLevel.

    Attributes:

        disposition_codes_table (OCITable):

    """

    disposition_codes_table: OCITable = field(
        metadata={"alias": "dispositionCodesTable"}
    )


@dataclass(kw_only=True)
class UserRoutePointSupervisorGetListResponse(OCIDataResponse):
    """Response to the UserRoutePointSupervisorGetListRequest.
        Contains a table with column headings: \"User Id\", \"Last Name\",
        \"First Name\", \"Hiragana Last Name\", \"Hiragana First Name\",
        \"Phone Number\", \"Extension\", \"Department\", \"Email Address\",
                \"Location Code\".

    Attributes:

        supervisor_table (OCITable):

    """

    supervisor_table: OCITable = field(metadata={"alias": "supervisorTable"})


@dataclass(kw_only=True)
class UserSMDIMessageDeskGetResponse(OCIDataResponse):
    """Response to the UserSMDIMessageDeskGetRequest.

    Attributes:

        is_active (bool):

        message_desk_number (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    message_desk_number: Optional[str] = field(
        default=None, metadata={"alias": "messageDeskNumber"}
    )


@dataclass(kw_only=True)
class UserSMDIMessageDeskGetServerListResponse(OCIDataResponse):
    """Response to the UserSMDIMessageDeskGetServerListRequest.
        The SMDI Server table column headings are: \"Device Name\", \"Net Address\", \"Port\".

    Attributes:

        smdi_server_table (OCITable):

    """

    smdi_server_table: OCITable = field(metadata={"alias": "smdiServerTable"})


@dataclass(kw_only=True)
class UserScheduleGetEventDetailListResponse(OCIDataResponse):
    """Response to UserScheduleGetEventRequest.
        The response contains collection of event details of a requested schedule.

    Attributes:

        schedule_events (Optional[List[ScheduleEvents]]):

    """

    schedule_events: Optional[List[ScheduleEvents]] = field(
        default=None, metadata={"alias": "scheduleEvents"}
    )


@dataclass(kw_only=True)
class UserScheduleGetEventListResponse(OCIDataResponse):
    """Response to UserScheduleGetEventListRequest.
        The response contains a list of events.

    Attributes:

        event_name (Optional[List[str]]):

    """

    event_name: Optional[List[str]] = field(
        default=None, metadata={"alias": "eventName"}
    )


@dataclass(kw_only=True)
class UserScheduleGetEventResponse(OCIDataResponse):
    """Response to UserScheduleGetEventRequest.
        The response contains the event of the user schedule.

    Attributes:

        start_date (int):

        all_day_event (Optional[bool]):

        start_time (Optional[HourMinute]):

        end_time (Optional[HourMinute]):

        end_date (int):

        recurrence (Optional[Recurrence]):

    """

    start_date: int = field(metadata={"alias": "startDate"})

    all_day_event: Optional[bool] = field(
        default=None, metadata={"alias": "allDayEvent"}
    )

    start_time: Optional[HourMinute] = field(
        default=None, metadata={"alias": "startTime"}
    )

    end_time: Optional[HourMinute] = field(default=None, metadata={"alias": "endTime"})

    end_date: int = field(metadata={"alias": "endDate"})

    recurrence: Optional[Recurrence] = field(
        default=None, metadata={"alias": "recurrence"}
    )


@dataclass(kw_only=True)
class UserScheduleGetListResponse17sp1(OCIDataResponse):
    """Response to UserScheduleGetListRequest17sp1.
        The response contains a list of schedules viewable by the user. It contains the schedules
        defined for the user and the group the user belongs to. If the user belongs to an enterprise,
        the list also contains the schedules defined for the enterprise.

    Attributes:

        schedule_global_key (Optional[List[ScheduleGlobalKey]]):

    """

    schedule_global_key: Optional[List[ScheduleGlobalKey]] = field(
        default=None, metadata={"alias": "scheduleGlobalKey"}
    )


@dataclass(kw_only=True)
class UserScheduleGetPagedSortedListResponse(OCIDataResponse):
    """Response to UserScheduleGetPagedSortedListRequest.
        Contains a 3 column table with column headings: \"Name\", \"Type\", \"Level\"
        and a row for each schedule.

    Attributes:

        schedule_table (OCITable):

    """

    schedule_table: OCITable = field(metadata={"alias": "scheduleTable"})


@dataclass(kw_only=True)
class UserSecurityClassificationGetResponse22(OCIDataResponse):
    """Response to the UserSecurityClassificationGetRequest22.
        The following elements are not returned in AS and XS data mode:
          customizedSecurityClassification

    Attributes:

        security_classification (Optional[str]):

        customized_security_classification (Optional[str]):

    """

    security_classification: Optional[str] = field(
        default=None, metadata={"alias": "securityClassification"}
    )

    customized_security_classification: Optional[str] = field(
        default=None, metadata={"alias": "customizedSecurityClassification"}
    )


@dataclass(kw_only=True)
class UserSelectiveCallAcceptanceGetCriteriaListResponse(OCIDataResponse):
    """Response to the UserSelectiveCallAcceptanceGetCriteriaListRequest.
        The criteria table's column headings are:
        \"Is Active\", \"Criteria Name\", \"Time Schedule\", \"Calls From\", \"Blacklisted\", \"Holiday Schedule\", \"Calls To Type\", \"Calls To Number\" and \"Calls To Extension\".
        The following columns are only returned in AS data mode:
          \"Calls To Type\", \"Calls To Number\" and \"Calls To Extension\"

        The possible values for the \"Calls To Type\" column are the following or a combination of them separated by comma:
          - Primary
          - Alternate X (where x is a number between 1 and 10)
          - Mobility
        The possible values for the \"Calls To Number\" column are the following or a combination of them separated by comma:
          - The value of the phone number for the corresponding Calls To Type, when the number is available. i.e. Alternate 1 may have extension, but no number.
          - When no number is available a blank space is provided instead.
        The possible values for the \"Calls To Extension\" column are the following or a combination of them separated by comma:
          - The value of the extension for the corresponding Calls To Type, when the extension is available. i.e. Primary may have number, but no extension.
          - For Mobility Calls To Type, this is always blank.
          - When no extension is available a blank space is provided instead.

    Attributes:

        criteria_table (OCITable):

    """

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class UserSelectiveCallAcceptanceGetCriteriaResponse21(OCIDataResponse):
    """Response to the UserSelectiveCallAcceptanceGetCriteriaRequest21.

    Attributes:

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria (CriteriaFromDn):

        call_to_number (Optional[List[CallToNumber]]):

    """

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria: CriteriaFromDn = field(metadata={"alias": "fromDnCriteria"})

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class UserSelectiveCallRejectionGetCriteriaListResponse(OCIDataResponse):
    """Response to the UserSelectiveCallRejectionGetCriteriaListRequest.
        The criteria table's column headings are:
        \"Is Active\", \"Criteria Name\", \"Time Schedule\", \"Calls From\", \"Blacklisted\", \"Holiday Schedule\", \"Calls To Type\", \"Calls To Number\" and \"Calls To Extension\".
        The following columns are only returned in AS data mode:
          \"Calls To Type\", \"Calls To Number\" and \"Calls To Extension\"

        The possible values for the \"Calls To Type\" column are the following or a combination of them separated by comma:
          - Primary
          - Alternate X (where x is a number between 1 and 10)
          - Mobility
        The possible values for the \"Calls To Number\" column are the following or a combination of them separated by comma:
          - The value of the phone number for the corresponding Calls To Type, when the number is available. i.e. Alternate 1 may have extension, but no number.
          - When no number is available a blank space is provided instead.
        The possible values for the \"Calls To Extension\" column are the following or a combination of them separated by comma:
          - The value of the extension for the corresponding Calls To Type, when the extension is available. i.e. Primary may have number, but no extension.
          - For Mobility Calls To Type, this is always blank.
          - When no extension is available a blank space is provided instead.

    Attributes:

        criteria_table (OCITable):

    """

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class UserSelectiveCallRejectionGetCriteriaResponse21(OCIDataResponse):
    """Response to the UserSelectiveCallRejectionGetCriteriaRequest21.
        Private Phone Numbers are omitted from the fromDnCriteria.

    Attributes:

        time_schedule (Optional[TimeSchedule]):

        from_dn_criteria (SelectiveCallRejectionCriteriaCallType):

        blacklisted (bool):

        holiday_schedule (Optional[HolidaySchedule]):

        private (bool):

        call_to_number (Optional[List[CallToNumber]]):

    """

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    from_dn_criteria: SelectiveCallRejectionCriteriaCallType = field(
        metadata={"alias": "fromDnCriteria"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    private: bool = field(metadata={"alias": "private"})

    call_to_number: Optional[List[CallToNumber]] = field(
        default=None, metadata={"alias": "callToNumber"}
    )


@dataclass(kw_only=True)
class UserSequentialRingGetCriteriaResponse23(OCIDataResponse):
    """Response to the UserSequentialRingGetCriteriaRequest23.

    Attributes:

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria23 (CriteriaFromDn23):

    """

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria23: CriteriaFromDn23 = field(metadata={"alias": "fromDnCriteria23"})


@dataclass(kw_only=True)
class UserSequentialRingGetResponse14sp4(OCIDataResponse):
    """Response to the UserSequentialRingGetRequest14sp4. The criteria table's column headings are:
        \"Is Active\", \"Criteria Name\", \"Time Schedule\", \"Calls From\", \"Blacklisted\" and \"Holiday Schedule\".

    Attributes:

        ring_base_location_first (bool):

        base_location_number_of_rings (int):

        continue_if_base_location_is_busy (bool):

        caller_may_stop_search (bool):

        location01 (SequentialRingLocation14sp4):

        location02 (SequentialRingLocation14sp4):

        location03 (SequentialRingLocation14sp4):

        location04 (SequentialRingLocation14sp4):

        location05 (SequentialRingLocation14sp4):

        criteria_table (OCITable):

    """

    ring_base_location_first: bool = field(metadata={"alias": "ringBaseLocationFirst"})

    base_location_number_of_rings: int = field(
        metadata={"alias": "baseLocationNumberOfRings"}
    )

    continue_if_base_location_is_busy: bool = field(
        metadata={"alias": "continueIfBaseLocationIsBusy"}
    )

    caller_may_stop_search: bool = field(metadata={"alias": "callerMayStopSearch"})

    location01: SequentialRingLocation14sp4 = field(metadata={"alias": "Location01"})

    location02: SequentialRingLocation14sp4 = field(metadata={"alias": "Location02"})

    location03: SequentialRingLocation14sp4 = field(metadata={"alias": "Location03"})

    location04: SequentialRingLocation14sp4 = field(metadata={"alias": "Location04"})

    location05: SequentialRingLocation14sp4 = field(metadata={"alias": "Location05"})

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class UserSeriesCompletionGetResponse(OCIDataResponse):
    """Response to the UserSeriesCompletionGetRequest.
        Identifies which Series Completion group the user belongs to and the list of users in the group.
        Contains a table with column headings: \"User Id\", \"Last Name\", \"First Name\", \"Hiragana Last Name\",
        \"Hiragana First Name\", \"Department\", \"Phone Number\", \"Extension\", \"Email Address\".

    Attributes:

        name (Optional[str]):

        user_table (OCITable):

    """

    name: Optional[str] = field(default=None, metadata={"alias": "name"})

    user_table: OCITable = field(metadata={"alias": "userTable"})


@dataclass(kw_only=True)
class UserServiceGetAssignmentListResponse(OCIDataResponse):
    """Response to UserServiceGetAssignmentListRequest.
        Contains two tables, one for the service packs, and one for the user services.
        The user table has the column headings: \"Service Name\", \"Assigned\",
        The service pack table's column headings are: \"Service Pack Name\", \"Assigned\", \"Description\".
        The \"Assigned\" column has either a true or false value

    Attributes:

        service_packs_assignment_table (OCITable):

        user_services_assignment_table (OCITable):

    """

    service_packs_assignment_table: OCITable = field(
        metadata={"alias": "servicePacksAssignmentTable"}
    )

    user_services_assignment_table: OCITable = field(
        metadata={"alias": "userServicesAssignmentTable"}
    )


@dataclass(kw_only=True)
class UserServiceIsAssignedResponse(OCIDataResponse):
    """Returns true if the UserService or service pack is assigned, otherwise false.

    Attributes:

        is_assigned (bool):

    """

    is_assigned: bool = field(metadata={"alias": "isAssigned"})


@dataclass(kw_only=True)
class UserShInterfaceGetPublicIdDataResponse21sp1(OCIDataResponse):
    """Response to the UserShInterfaceGetPublicIdDataRequest21sp1.
        The response contains the Sh non-transparent data for the specified Public User Identity.
        The data also includes a userId, userType, and endpointType.
        The value Mobility in Endpoint Type is only applicable in AS data mode.

    Attributes:

        user_id (str):

        user_type (str):

        endpoint_type (str):

        scscf_name (Optional[str]):

        ims_user_state (str):

    """

    user_id: str = field(metadata={"alias": "userId"})

    user_type: str = field(metadata={"alias": "userType"})

    endpoint_type: str = field(metadata={"alias": "endpointType"})

    scscf_name: Optional[str] = field(default=None, metadata={"alias": "SCSCFName"})

    ims_user_state: str = field(metadata={"alias": "IMSUserState"})


@dataclass(kw_only=True)
class UserShInterfaceGetUserIdDataResponse21sp1(OCIDataResponse):
    """Response to the UserShInterfaceGetUserIdDataRequest21sp1.
        The response contains the Sh non-transparent data for the specified userId.
        The data also includes a userType, publicUserIdentity and endpointType.
        The value Mobility in Endpoint Type is only applicable in AS data mode.

    Attributes:

        entry (Optional[List[ShInterfaceUserIdDataEntry21sp1]]):

    """

    entry: Optional[List[ShInterfaceUserIdDataEntry21sp1]] = field(
        default=None, metadata={"alias": "entry"}
    )


@dataclass(kw_only=True)
class UserSharedCallAppearanceGetEndpointResponse22(OCIDataResponse):
    """Response to the UserSharedCallAppearanceGetEndpointRequest.

        The following elements are only used in AS data mode and not returned in XS data mode:
          hotlineContact

        The following elements are only used in AS data mode and a value false is returned in the XS mode:
          useHotline

    Attributes:

        is_active (bool):

        allow_origination (bool):

        allow_termination (bool):

        use_hotline (bool):

        hotline_contact (Optional[str]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    allow_origination: bool = field(metadata={"alias": "allowOrigination"})

    allow_termination: bool = field(metadata={"alias": "allowTermination"})

    use_hotline: bool = field(metadata={"alias": "useHotline"})

    hotline_contact: Optional[str] = field(
        default=None, metadata={"alias": "hotlineContact"}
    )


@dataclass(kw_only=True)
class UserSharedCallAppearanceGetResponse21sp1(OCIDataResponse):
    """Response to the UserSharedCallAppearanceGetRequest21sp1.
        The endpointTable contains columns:
          \"Device Level\", \"Device Name\", \"Device Type\", \"Line/Port\", \"SIP Contact\", \"Port Number\", \"Device Support Visual Device Management\", \"Is Active\", \"Allow Origination\", \"Allow Termination\", \"Mac Address\", \"Path Header\".
        The \"Device Level\" column contains one of the AccessDeviceLevel enumerated constants.
        The \"SIP Contact\" column does not contain \"sip:\" in 21sp1.
        Port numbers are only used by devices with static line ordering.

    Attributes:

        alert_all_appearances_for_click_to_dial_calls (bool):

        alert_all_appearances_for_group_paging_calls (bool):

        max_appearances (int):

        allow_sca_call_retrieve (bool):

        enable_multiple_call_arrangement (bool):

        multiple_call_arrangement_is_active (bool):

        endpoint_table (OCITable):

        allow_bridging_between_locations (bool):

        bridge_warning_tone (str):

        enable_call_park_notification (bool):

    """

    alert_all_appearances_for_click_to_dial_calls: bool = field(
        metadata={"alias": "alertAllAppearancesForClickToDialCalls"}
    )

    alert_all_appearances_for_group_paging_calls: bool = field(
        metadata={"alias": "alertAllAppearancesForGroupPagingCalls"}
    )

    max_appearances: int = field(metadata={"alias": "maxAppearances"})

    allow_sca_call_retrieve: bool = field(metadata={"alias": "allowSCACallRetrieve"})

    enable_multiple_call_arrangement: bool = field(
        metadata={"alias": "enableMultipleCallArrangement"}
    )

    multiple_call_arrangement_is_active: bool = field(
        metadata={"alias": "multipleCallArrangementIsActive"}
    )

    endpoint_table: OCITable = field(metadata={"alias": "endpointTable"})

    allow_bridging_between_locations: bool = field(
        metadata={"alias": "allowBridgingBetweenLocations"}
    )

    bridge_warning_tone: str = field(metadata={"alias": "bridgeWarningTone"})

    enable_call_park_notification: bool = field(
        metadata={"alias": "enableCallParkNotification"}
    )


@dataclass(kw_only=True)
class UserSilentAlertingGetResponse(OCIDataResponse):
    """Response to UserSilentAlertingGetRequest.

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserSimultaneousRingFamilyGetCriteriaResponse(OCIDataResponse):
    """Response to the UserSimultaneousRingFamilyGetCriteriaRequest.

    Attributes:

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria (CriteriaFromDn):

    """

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria: CriteriaFromDn = field(metadata={"alias": "fromDnCriteria"})


@dataclass(kw_only=True)
class UserSimultaneousRingFamilyGetResponse17(OCIDataResponse):
    """Response to the UserSimultaneousRingFamilyGetRequest17.
        Contains a criteria table wich column heading: \"Is Active\", \"Criteria Name\", \"Time Schedule\", \"Holiday Schedule\", \"Calls From\" and \"Blacklisted\".

    Attributes:

        is_active (bool):

        do_not_ring_if_on_call (bool):

        simultaneous_ring_number (Optional[List[SimultaneousRingNumber]]):

        criteria_table (OCITable):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    do_not_ring_if_on_call: bool = field(metadata={"alias": "doNotRingIfOnCall"})

    simultaneous_ring_number: Optional[List[SimultaneousRingNumber]] = field(
        default=None, metadata={"alias": "simultaneousRingNumber"}
    )

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class UserSimultaneousRingPersonalGetCriteriaResponse(OCIDataResponse):
    """Response to the UserSimultaneousRingPersonalGetCriteriaRequest.

    Attributes:

        time_schedule (Optional[TimeSchedule]):

        holiday_schedule (Optional[HolidaySchedule]):

        blacklisted (bool):

        from_dn_criteria (CriteriaFromDn):

    """

    time_schedule: Optional[TimeSchedule] = field(
        default=None, metadata={"alias": "timeSchedule"}
    )

    holiday_schedule: Optional[HolidaySchedule] = field(
        default=None, metadata={"alias": "holidaySchedule"}
    )

    blacklisted: bool = field(metadata={"alias": "blacklisted"})

    from_dn_criteria: CriteriaFromDn = field(metadata={"alias": "fromDnCriteria"})


@dataclass(kw_only=True)
class UserSimultaneousRingPersonalGetResponse17(OCIDataResponse):
    """Response to the UserSimultaneousRingPersonalGetRequest17.
        Contains a criteria table with column heading: \"Is Active\", \"Criteria Name\", \"Time Schedule\", \"Holiday Schedule\", \"Calls From\" and \"Blacklisted\".

    Attributes:

        is_active (bool):

        do_not_ring_if_on_call (bool):

        simultaneous_ring_number (Optional[List[SimultaneousRingNumber]]):

        criteria_table (OCITable):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    do_not_ring_if_on_call: bool = field(metadata={"alias": "doNotRingIfOnCall"})

    simultaneous_ring_number: Optional[List[SimultaneousRingNumber]] = field(
        default=None, metadata={"alias": "simultaneousRingNumber"}
    )

    criteria_table: OCITable = field(metadata={"alias": "criteriaTable"})


@dataclass(kw_only=True)
class UserSingleSignOnCreateDeviceTokenResponse(OCIDataResponse):
    """Response to UserSingleSignOnCreateDeviceTokenRequest.

    Attributes:

        device_token (str):

    """

    device_token: str = field(metadata={"alias": "deviceToken"})


@dataclass(kw_only=True)
class UserSpeedDial100GetListResponse17sp1(OCIDataResponse):
    """Response to the UserSpeedDial100GetListRequest17sp1.

    Attributes:

        prefix (Optional[str]):

        speed_dial_entry (Optional[List[SpeedDial100Entry]]):

    """

    prefix: Optional[str] = field(default=None, metadata={"alias": "prefix"})

    speed_dial_entry: Optional[List[SpeedDial100Entry]] = field(
        default=None, metadata={"alias": "speedDialEntry"}
    )


@dataclass(kw_only=True)
class UserSpeedDial100GetResponse(OCIDataResponse):
    """Response to the UserSpeedDial100GetRequest.

    Attributes:

        phone_number (str):

        description (Optional[str]):

    """

    phone_number: str = field(metadata={"alias": "phoneNumber"})

    description: Optional[str] = field(default=None, metadata={"alias": "description"})


@dataclass(kw_only=True)
class UserSpeedDial8GetListResponse(OCIDataResponse):
    """Response to the UserSpeedDial8GetListRequest.

    Attributes:

        speed_dial_entry (List[SpeedDial8Entry]):

    """

    speed_dial_entry: List[SpeedDial8Entry] = field(
        metadata={"alias": "speedDialEntry"}
    )


@dataclass(kw_only=True)
class UserTerminatingAlternateTrunkIdentityGetResponse(OCIDataResponse):
    """Response to UserTerminatingAlternateTrunkIdentityGetRequest.

    Attributes:

        terminating_trunk_identity (Optional[str]):

    """

    terminating_trunk_identity: Optional[str] = field(
        default=None, metadata={"alias": "terminatingTrunkIdentity"}
    )


@dataclass(kw_only=True)
class UserTerminatingClosedUserGroupGetResponse(OCIDataResponse):
    """Response to the UserTerminatingClosedUserGroupGetRequest.
        Returns user Terminating CUG service settings.

    Attributes:

        user_interlock_code (Optional[str]):

    """

    user_interlock_code: Optional[str] = field(
        default=None, metadata={"alias": "userInterlockCode"}
    )


@dataclass(kw_only=True)
class UserThirdPartyVoiceMailSupportGetResponse17(OCIDataResponse):
    """Response to UserThirdPartyVoiceMailSupportGetRequest17.

    Attributes:

        is_active (bool):

        busy_redirect_to_voice_mail (bool):

        no_answer_redirect_to_voice_mail (bool):

        server_selection (str):

        user_server (Optional[str]):

        mailbox_id_type (str):

        mailbox_url (Optional[str]):

        no_answer_number_of_rings (int):

        always_redirect_to_voice_mail (bool):

        out_of_primary_zone_redirect_to_voice_mail (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    busy_redirect_to_voice_mail: bool = field(
        metadata={"alias": "busyRedirectToVoiceMail"}
    )

    no_answer_redirect_to_voice_mail: bool = field(
        metadata={"alias": "noAnswerRedirectToVoiceMail"}
    )

    server_selection: str = field(metadata={"alias": "serverSelection"})

    user_server: Optional[str] = field(default=None, metadata={"alias": "userServer"})

    mailbox_id_type: str = field(metadata={"alias": "mailboxIdType"})

    mailbox_url: Optional[str] = field(default=None, metadata={"alias": "mailboxURL"})

    no_answer_number_of_rings: int = field(metadata={"alias": "noAnswerNumberOfRings"})

    always_redirect_to_voice_mail: bool = field(
        metadata={"alias": "alwaysRedirectToVoiceMail"}
    )

    out_of_primary_zone_redirect_to_voice_mail: bool = field(
        metadata={"alias": "outOfPrimaryZoneRedirectToVoiceMail"}
    )


@dataclass(kw_only=True)
class UserTwoStageDialingGetResponse13Mp20(OCIDataResponse):
    """Response to UserTwoStageDialingGetRequest13Mp20.

    Attributes:

        is_active (bool):

        allow_activation_with_user_addresses (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    allow_activation_with_user_addresses: bool = field(
        metadata={"alias": "allowActivationWithUserAddresses"}
    )


@dataclass(kw_only=True)
class UserVideoAddOnGetResponse22(OCIDataResponse):
    """Response to the UserVideoAddOnGetRequest22.

    Attributes:

        is_active (bool):

        max_originating_call_delay_seconds (int):

        access_device_endpoint (Optional[AccessDeviceEndpointWithPortNumberRead22]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    max_originating_call_delay_seconds: int = field(
        metadata={"alias": "maxOriginatingCallDelaySeconds"}
    )

    access_device_endpoint: Optional[AccessDeviceEndpointWithPortNumberRead22] = field(
        default=None, metadata={"alias": "accessDeviceEndpoint"}
    )


@dataclass(kw_only=True)
class UserVoiceMessagingUserGetAdvancedVoiceManagementResponse14sp3(OCIDataResponse):
    """Response to the UserVoiceMessagingUserGetAdvancedVoiceManagementRequest14sp3.

    Attributes:

        mail_server_selection (str):

        group_mail_server_email_address (Optional[str]):

        group_mail_server_user_id (Optional[str]):

        use_group_default_mail_server_full_mailbox_limit (Optional[bool]):

        group_mail_server_full_mailbox_limit (Optional[int]):

        personal_mail_server_net_address (Optional[str]):

        personal_mail_server_protocol (str):

        personal_mail_server_real_delete_for_imap (bool):

        personal_mail_server_email_address (Optional[str]):

        personal_mail_server_user_id (Optional[str]):

    """

    mail_server_selection: str = field(metadata={"alias": "mailServerSelection"})

    group_mail_server_email_address: Optional[str] = field(
        default=None, metadata={"alias": "groupMailServerEmailAddress"}
    )

    group_mail_server_user_id: Optional[str] = field(
        default=None, metadata={"alias": "groupMailServerUserId"}
    )

    use_group_default_mail_server_full_mailbox_limit: Optional[bool] = field(
        default=None, metadata={"alias": "useGroupDefaultMailServerFullMailboxLimit"}
    )

    group_mail_server_full_mailbox_limit: Optional[int] = field(
        default=None, metadata={"alias": "groupMailServerFullMailboxLimit"}
    )

    personal_mail_server_net_address: Optional[str] = field(
        default=None, metadata={"alias": "personalMailServerNetAddress"}
    )

    personal_mail_server_protocol: str = field(
        metadata={"alias": "personalMailServerProtocol"}
    )

    personal_mail_server_real_delete_for_imap: bool = field(
        metadata={"alias": "personalMailServerRealDeleteForImap"}
    )

    personal_mail_server_email_address: Optional[str] = field(
        default=None, metadata={"alias": "personalMailServerEmailAddress"}
    )

    personal_mail_server_user_id: Optional[str] = field(
        default=None, metadata={"alias": "personalMailServerUserId"}
    )


@dataclass(kw_only=True)
class UserVoiceMessagingUserGetAliasListResponse(OCIDataResponse):
    """Response to UserVoiceMessagingUserGetAliasListRequest.

    Attributes:

        phone_number (Optional[List[str]]):

    """

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )


@dataclass(kw_only=True)
class UserVoiceMessagingUserGetDistributionListResponse(OCIDataResponse):
    """Response to UserVoiceMessagingUserGetDistributionListRequest.

    Attributes:

        description (Optional[str]):

        phone_number (Optional[List[str]]):

    """

    description: Optional[str] = field(default=None, metadata={"alias": "description"})

    phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "phoneNumber"}
    )


@dataclass(kw_only=True)
class UserVoiceMessagingUserGetGreetingResponse20(OCIDataResponse):
    """Response to UserVoiceMessagingUserGetGreetingRequest20.
        Contains the greeting configuration for a user's voice messaging.
        The following elements are only used in AS data mode:
          disableMessageDeposit
          disableMessageDepositAction
          greetingOnlyForwardDestination
          extendedAwayEnabled
          extendedAwayDisableMessageDeposit
          extendedAwayAudioFile
          extendedAwayAudioMediaType
          extendedAwayVideoFile
          extendedAwayVideoMediaTyp

    Attributes:

        busy_announcement_selection (str):

        busy_personal_audio_file (Optional[AnnouncementFileLevelKey]):

        busy_personal_video_file (Optional[AnnouncementFileLevelKey]):

        no_answer_announcement_selection (str):

        no_answer_personal_audio_file (Optional[AnnouncementFileLevelKey]):

        no_answer_personal_video_file (Optional[AnnouncementFileLevelKey]):

        no_answer_alternate_greeting01 (Optional[VoiceMessagingAlternateNoAnswerGreetingRead20]):

        no_answer_alternate_greeting02 (Optional[VoiceMessagingAlternateNoAnswerGreetingRead20]):

        no_answer_alternate_greeting03 (Optional[VoiceMessagingAlternateNoAnswerGreetingRead20]):

        extended_away_enabled (bool):

        extended_away_disable_message_deposit (bool):

        extended_away_audio_file (Optional[AnnouncementFileLevelKey]):

        extended_away_video_file (Optional[AnnouncementFileLevelKey]):

        no_answer_number_of_rings (int):

        disable_message_deposit (bool):

        disable_message_deposit_action (str):

        greeting_only_forward_destination (Optional[str]):

    """

    busy_announcement_selection: str = field(
        metadata={"alias": "busyAnnouncementSelection"}
    )

    busy_personal_audio_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "busyPersonalAudioFile"}
    )

    busy_personal_video_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "busyPersonalVideoFile"}
    )

    no_answer_announcement_selection: str = field(
        metadata={"alias": "noAnswerAnnouncementSelection"}
    )

    no_answer_personal_audio_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "noAnswerPersonalAudioFile"}
    )

    no_answer_personal_video_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "noAnswerPersonalVideoFile"}
    )

    no_answer_alternate_greeting01: Optional[
        VoiceMessagingAlternateNoAnswerGreetingRead20
    ] = field(default=None, metadata={"alias": "noAnswerAlternateGreeting01"})

    no_answer_alternate_greeting02: Optional[
        VoiceMessagingAlternateNoAnswerGreetingRead20
    ] = field(default=None, metadata={"alias": "noAnswerAlternateGreeting02"})

    no_answer_alternate_greeting03: Optional[
        VoiceMessagingAlternateNoAnswerGreetingRead20
    ] = field(default=None, metadata={"alias": "noAnswerAlternateGreeting03"})

    extended_away_enabled: bool = field(metadata={"alias": "extendedAwayEnabled"})

    extended_away_disable_message_deposit: bool = field(
        metadata={"alias": "extendedAwayDisableMessageDeposit"}
    )

    extended_away_audio_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "extendedAwayAudioFile"}
    )

    extended_away_video_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "extendedAwayVideoFile"}
    )

    no_answer_number_of_rings: int = field(metadata={"alias": "noAnswerNumberOfRings"})

    disable_message_deposit: bool = field(metadata={"alias": "disableMessageDeposit"})

    disable_message_deposit_action: str = field(
        metadata={"alias": "disableMessageDepositAction"}
    )

    greeting_only_forward_destination: Optional[str] = field(
        default=None, metadata={"alias": "greetingOnlyForwardDestination"}
    )


@dataclass(kw_only=True)
class UserVoiceMessagingUserGetOutgoingSMDIMWIResponse(OCIDataResponse):
    """Response to the UserVoiceMessagingUserGetOutgoingSMDIMWIRequest.

    Attributes:

        is_active (bool):

        outgoing_smdimwi_phone_number (Optional[List[str]]):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    outgoing_smdimwi_phone_number: Optional[List[str]] = field(
        default=None, metadata={"alias": "outgoingSMDIMWIPhoneNumber"}
    )


@dataclass(kw_only=True)
class UserVoiceMessagingUserGetVoiceManagementResponse23(OCIDataResponse):
    """Response to the UserVoiceMessagingUserGetVoiceManagementRequest23.

    Attributes:

        is_active (bool):

        processing (str):

        voice_message_delivery_email_address (Optional[EmailAddressList]):

        use_phone_message_waiting_indicator (bool):

        send_voice_message_notify_email (bool):

        voice_message_notify_email_address (Optional[str]):

        send_carbon_copy_voice_message (bool):

        voice_message_carbon_copy_email_address (Optional[str]):

        transfer_on_zero_to_phone_number (bool):

        transfer_phone_number (Optional[str]):

        always_redirect_to_voice_mail (bool):

        busy_redirect_to_voice_mail (bool):

        no_answer_redirect_to_voice_mail (bool):

        out_of_primary_zone_redirect_to_voice_mail (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})

    processing: str = field(metadata={"alias": "processing"})

    voice_message_delivery_email_address: Optional[EmailAddressList] = field(
        default=None, metadata={"alias": "voiceMessageDeliveryEmailAddress"}
    )

    use_phone_message_waiting_indicator: bool = field(
        metadata={"alias": "usePhoneMessageWaitingIndicator"}
    )

    send_voice_message_notify_email: bool = field(
        metadata={"alias": "sendVoiceMessageNotifyEmail"}
    )

    voice_message_notify_email_address: Optional[str] = field(
        default=None, metadata={"alias": "voiceMessageNotifyEmailAddress"}
    )

    send_carbon_copy_voice_message: bool = field(
        metadata={"alias": "sendCarbonCopyVoiceMessage"}
    )

    voice_message_carbon_copy_email_address: Optional[str] = field(
        default=None, metadata={"alias": "voiceMessageCarbonCopyEmailAddress"}
    )

    transfer_on_zero_to_phone_number: bool = field(
        metadata={"alias": "transferOnZeroToPhoneNumber"}
    )

    transfer_phone_number: Optional[str] = field(
        default=None, metadata={"alias": "transferPhoneNumber"}
    )

    always_redirect_to_voice_mail: bool = field(
        metadata={"alias": "alwaysRedirectToVoiceMail"}
    )

    busy_redirect_to_voice_mail: bool = field(
        metadata={"alias": "busyRedirectToVoiceMail"}
    )

    no_answer_redirect_to_voice_mail: bool = field(
        metadata={"alias": "noAnswerRedirectToVoiceMail"}
    )

    out_of_primary_zone_redirect_to_voice_mail: bool = field(
        metadata={"alias": "outOfPrimaryZoneRedirectToVoiceMail"}
    )


@dataclass(kw_only=True)
class UserVoiceMessagingUserGetVoicePortalResponse20(OCIDataResponse):
    """Response to UserVoiceMessagingUserGetVoicePortalRequest20.

    Attributes:

        use_personalized_name (bool):

        voice_portal_auto_login (bool):

        personalized_name_audio_file (Optional[AnnouncementFileLevelKey]):

    """

    use_personalized_name: bool = field(metadata={"alias": "usePersonalizedName"})

    voice_portal_auto_login: bool = field(metadata={"alias": "voicePortalAutoLogin"})

    personalized_name_audio_file: Optional[AnnouncementFileLevelKey] = field(
        default=None, metadata={"alias": "personalizedNameAudioFile"}
    )


@dataclass(kw_only=True)
class UserVoicePortalCallingGetResponse(OCIDataResponse):
    """Response to UserVoicePortalCallingGetRequest.

    Attributes:

        is_active (bool):

    """

    is_active: bool = field(metadata={"alias": "isActive"})


@dataclass(kw_only=True)
class UserXsiPolicyProfileGetResponse(OCIDataResponse):
    """Response to UserXsiPolicyProfileGetRequest.

    Attributes:

        xsi_policy_profile (str):

    """

    xsi_policy_profile: str = field(metadata={"alias": "xsiPolicyProfile"})


@dataclass(kw_only=True)
class UserZoneCallingRestrictionsGetResponse(OCIDataResponse):
    """Gets the home zone for a user
        Response to a UserZoneCallingRestrictionsGetRequest

    Attributes:

        home_zone_name (Optional[str]):

    """

    home_zone_name: Optional[str] = field(
        default=None, metadata={"alias": "homeZoneName"}
    )
